电子说
电路图
图1. 教程电路
什么是MQTT?
消息队列遥测传输(MQTT)是一种消息传递协议,可在任何具有Internet连接的设备上运行,使其成为物联网中最常用的协议之一项目。它被设计用于具有低带宽限制的系统,因此非常适用于家庭自动化或任何物联网(IoT)应用。
MQTT的优势包括其低带宽,简单的实现,它适用于不可靠的连接。
图2. 基于MQTT的系统
MQTT需要使用“代理” - 一个接收和发送MQTT消息的应用程序。在本教程中,我们的代理是Mosquitto,它将安装在Raspberry Pi上。 MQTT系统的第二个组件是“客户端”,它连接到中央代理并可以发布或订阅MQTT消息。
MQTT消息由主题标识,该主题是消息的一部分。在本教程中,我们将发布和订阅“makerpro/mqtt_tutorial/light”主题。
在Raspberry Pi上安装Mosquitto Broker
我建议的第一步是更新Raspberry Pi上的软件。打开终端并输入以下命令:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
一旦你的Pi重新启动,你可以再次在终端类型中安装我们的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“在第一个终端上,如图3所示。
图3. Raspberry Pi Mosquitto测试
在您的Raspberry Pi上成功测试了Mosquitto,您需要通过输入命令 hostname -I 找到其IP地址。
hostname -I
这将返回一个像192.168.0.47这样的数字,如图4所示。你的Pi可能会给你一个稍微不同的数字。
重要你把这个数字写在安全的地方。 NodeMCU需要它才能连接到我们的Mosquitto服务器。
图4. Raspberry Pi IP地址
构建电路
本教程的电路(如图5所示)包含LDR,10K电阻和我们的电路NodeMCU开发板。
图5. 面包板电路
LDR和电阻形成一个分压器,NodeMCU的模拟输入读取他们之间的电压。当LDR的电阻随照度变化时,LDR和电阻之间的电压电平发生变化,如表1所示。
表1 。照明/电压/ADC电平
安装Arduino IDE和PubSubClient您计算机上的库
您将使用Arduino IDE对NodeMCU开发板进行编程和闪存。在我们进入编程之前,需要安装各种步骤。
下载并安装IDE
运行Arduino并从“文件”菜单中显示“首选项”对话框
在“其他板管理器URL”文本框中粘贴以下内容文本:http://arduino.esp8266.com/stable/package_esp8266com_index.json
单击确定
从工具/板菜单中选择“Board Manager”
在搜索框中键入“esp8266”,然后安装“esp8266 by ESP8266 Community”,
从工具/主板中选择“通用ESP8266模块”
通过工具/打开库管理器管理图书馆。..
搜索“PubSubClient”,然后安装Nick O‘Leary的PubSubClient
图6。 PubSubClient
调整并将软件上传到NodeMCU
首先,下载副本来自Github的NodeMCU软件。
在将代码上传到你的主板之前,你需要做一些更改文件顶部的Wi-Fi和代理地址。
const char *WIFI_NETWORK_NAME = “********”;
const char *WIFI_PASSWORD = “*********”;
const char *MQTT_BROKER = “192.168.0.47”;
将WIFI_NETWORK_NAME和WIFI_PASSWORD更改为您的家庭网络登录详细信息。例如,如果您的Wi-Fi网络名为myWifi,则顶行如下所示:
const char *WIFI_NETWORK_NAME = “myWifi”;
将变量MQTT_BROKER更新为Raspberry Pi的IP地址(您创建了一个早期的说明)。
实施
将NodeMCU和Raspberry Pi连接到同一网络非常重要。请注意,如果重新启动Raspberry Pi,它可能会更改其IP地址,这也意味着更改NodeMSC的代码。
一旦启动,NodeMCU上的软件将定期读取其ADC,然后发送MQTT消息到存储在Raspberry Pi上的代理。然后,代理将消息重新分发给订阅该主题的任何客户端。
NodeMCU代码利用串行端口输出调试消息。如果连接Arduino IDE的串行监视器,您应该看到类似于图7中的消息的输出。
图7. NodeMCU的串行输出
您应该开始在您的经纪人处接收MQTT消息,您可以通过打开Pi上的终端窗口并输入以下内容来确认:
mosquitto_sub -v -t makerpro/mqtt_tutorial/light
这将允许您在控制台中接收常规消息,如图8所示。
图8. 订阅makerpro/mqtt_tutorial/light主题。
全部0条评论
快来发表一下你的评论吧 !