设计一款具有MQTT协议的WiFi模数传感器模块

MQTT协议是物联网开发设计过程中比较重要的一个协议,同时也是应用最为广泛的协议。ESP8266模块为家庭物联网应用中比较常见的模块,非常适合创客对家庭中的设备进行改造。

当我们需要做一个自动浇水的装置,内部需要进行水位的检测,需要添加一个水位传感器。用雨桶内部的水进行浇花。我希望通过时间跟踪水位,在浇水时启动泵,如果水桶里面没有水,则需要把水桶充满水。可以使用ESP8266 Wifi微控制器,就可以用到今天做的eps8266的模数转换器。ESP8266 ESP-12版本(图1a)。

ESP8266是一款非常小巧的WIFI微控制器。我们可以使用制造商(Espressif)软件开发套件(SDK)对其进行编程,从而实现我们所需要的功能。但它也可以使用NodeMCU SDK在LUA中编程。 LUA是一种在游戏行业广泛使用的脚本语言,我选择它来编程ESP8266,因为它编写起来非常紧凑,非常高效快速的完成我们的原型设计。 ESP8266充当接入点和/或WIFI站,因此一旦配置它就会获取IP地址,然后您可以通过Web浏览器或TCP连接(手机,平板电脑,计算机等)与其通信。

ESP-12有9个GPIO和一个模拟数字转换器(ADC)。我们这个模块只使用ADC和一个GPIO,所以这个模块的资源足够满足我们的需要。

我们需要把模块的串口引出来,便于我们进行通信和程序的编写。与8266模块进行串行通信,需要做一些脚本编程来实现通信。对于USB转串口,任何基于FTDI232的模块都可以工作,但要小心,因为它们是虚拟的FTDI232,它们可能会变得无用,确保你获得的是真实的。您需要选择一个串行终端向串行模块发送命令,该命令将命令发送到ESP8266。SSCOM32就可以我们调试的要求。此外,当您开始将LUA代码复制到模块中时,CoolTerm做得非常好。通过对ESP8266的简要介绍,您可以获得各种有趣的WIFI物联网开发设计项目的原型设计。

显示了ESP8266 ESP-12上的引脚和连接:

VCC:3.3
VPS CH_PD:模块使能,连接到VCC
RST:当拉至GND时复位模块
UTXD:串行发送
URXD:串行接收
GPIO:通用IO
ADC:模拟数字转换器
GND:接地

模拟/数字传感器模块通过其2个输入端子读取模拟数据和数字数据。
输入模拟数据限值为0~3.3v,并映射为0至1024的输出值。
输入数字数据限制为0,数字0,3.3v,数字1。
模块每隔Interval毫秒周期性地发送测量的模拟数据的值,并且当它从0变为1或从1变为0时,它发送测量的数字数据的值。用户还可以请求模块发送测量值通过发布特定的MQTT主题随时获得模拟和/或数字数据; 稍后会详细介绍。
只要数字数据发生变化,模块就会提供触发信号(下图)。
当模拟信号小于预设值或大于预设值时,模块提供触发信号(下图)。

使用Web浏览器设置模块:
– 连接5V电源
– 按下电路板重置按钮
– 在计算机上,检查可用的无线网络并连接到名称
格式为ESP_STATION_xxxxxxx 的网络
– 出现提示时,输入ESP_STATION的密码。预设密码为’espadmin’
– 等待您的计算机成功连接到ESP_STATION_xxxxxxx
– 从您的网络浏览器连接到工作站后,输入以下地址和WIFI
网络SSID和密码:192.168.4.1/? SSID = Your_SSID

 

其中:
SSID =您的WIFI路由器SSID
密码=您的WIFI路由器密码
服务器=连接到
端口的MQTT服务器的IP地址= MQTT服务器端口(def = 1883)
间隔=间隔(以整数毫秒为单位)将模拟数据发送到MQTT服务器(def = 5000 ms)
MinAnlg =当模拟信号小于min_analog_trigger时,LED 1接通且端子引脚1接通(def = 300)
MaxAnlg =当模拟信号大于max_analog_trigger时,LED 2打开,端子引脚2打开(def = 800)
Interval =将模拟数据发送到服务器的间隔(以整数秒为单位)
– 重置电路板

典型的MQTT指令进行简单的介绍:
MQTT主题和消息
RANL chipid:该主题指示模块读取模拟数据的样本并通过MQTT主题和消息将其发回。响应中的模块发送主题和值,如下所示:
DANLchipid值; 您可以通过订阅主题DANLchipid并从消息
RDIG chipid获取值来获取模拟值:该主题指示模块读取数字数据的样本并通过MQTT主题将其作为消息发送回来。响应中的模块发送主题和值,
如下所示:
RANL芯片价值; 您可以通过订阅主题RANLchipid并从消息
MANL chipid min_analog_trigger(min 0,max 1024,def 300)获取值来获取数字值:该主题允许用户设置模块用于触发LED的最小模拟值和信号。这一变化立即生效。
XANL chipid max_analog_trigger(min 0,max 1024,def 800)::本主题允许用户设置模块用于触发LED和信号的最大模拟值。这一变化立即生效。
INTE 芯片Interval_in_milliseconds(最小500毫秒,最大240000毫秒,默认5000毫秒):该主题允许用户设置接收模拟数据的新间隔(以毫秒为单位)。这一变化立即生效。
REST 芯片:此主题允许用户远程重置模块。

以上是物联网开发设计中一个小小的应用,感兴趣的创客们可以尝试一下,如果有任何疑问可以联系我们。

留下评论

咨询