我们学习如何将MQTT消息从ESP8266 / NodeMCU传输到运行MQTT代理的树莓派。我们的NodeMCU将通过光敏电阻(LDR)读取光照水平,然后通过Wi-Fi上的MQTT将此信息传输到树莓派。
NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了可以运行在esp8266Wi-FiSoC芯片之上的固件,以及基于ESP-12模组的硬件。
电路原理图
1.什么是MQTT?
消息队列遥测传输(MQTT)是一种消息传递协议,可在任何具有Internet连接的设备上运行,使其成为物联网项目中最常用的协议之一。它被设计用于具有低带宽限制的系统,因此是家庭自动化或任何物联网(IoT)应用的理想选择。MQTT的优点包括其带宽低,实现简单,适用于不可靠的连接。
MQTT需要使用”代理“接收和传输MQTT消息的应用程序。在本案例中,我们的代理是Mosquitto,它将安装在树莓派 Pi上。MQTT系统的第二个组件是“客户端”,它连接到中央代理并可以发布或订阅MQTT消息。MQTT消息由主题标识,该主题是消息的一部分。下面我们就尝试发布和订阅“makerpro / mqtt_tutorial / light”主题。
2.在Raspberry Pi上安装Mosquitto Broker
在终端中使用如下命令安装MQTT代理Mosquitto:
sudo
apt install -y mosquitto mosquitto-clients
通过创建终端的两个新实例来测试Mosquitto。在一个终端输入以下内容:
mosquitto_sub -v -t makerpro/mqtt_tutorial/light
在另一个新终端输入:
mosquitto_pub -t makerpro/mqtt_tutorial/light -m
'helloWorld'
在第二个终端上按Enter后,您应该在第一个终端上看到消息“makerpro / mqtt_tutorial / light helloWorld”,如图所示:
这样就表示Mosquitto在树莓派上测试成功,然后只需要通过键入命令hostname -I 找到其IP地址。
hostname -I
在终端输出192.168.0.47,这个就是它的IP地址,NodeMCU需要通过这个IP才能连接到我们的Mosquitto服务器。
3.建立电路
在这儿需要一个面包板,一个LDR,杜邦线,一个10K电阻和我们的NodeMCU开发板。接线方式如图:
LDR和电阻形成分压器,NodeMCU的模拟输入读取它们之间的电压。随着LDR的电阻随照明变化,LDR和电阻之间的电压电平发生变化。如此可将数据通过mqtt,发送到树莓派,接收数据从而进行分析,健康检查,监控等一系列操作。
关注一下,更多精彩,不容错过!
???