電路圖
圖1. 教程電路
什么是MQTT?
消息隊列遙測傳輸(MQTT)是一種消息傳遞協(xié)議,可在任何具有Internet連接的設(shè)備上運行,使其成為物聯(lián)網(wǎng)中最常用的協(xié)議之一項目。它被設(shè)計用于具有低帶寬限制的系統(tǒng),因此非常適用于家庭自動化或任何物聯(lián)網(wǎng)(IoT)應(yīng)用。
MQTT的優(yōu)勢包括其低帶寬,簡單的實現(xiàn),它適用于不可靠的連接。
圖2. 基于MQTT的系統(tǒng)
MQTT需要使用“代理” - 一個接收和發(fā)送MQTT消息的應(yīng)用程序。在本教程中,我們的代理是Mosquitto,它將安裝在Raspberry Pi上。 MQTT系統(tǒng)的第二個組件是“客戶端”,它連接到中央代理并可以發(fā)布或訂閱MQTT消息。
MQTT消息由主題標識,該主題是消息的一部分。在本教程中,我們將發(fā)布和訂閱“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
通過創(chuàng)建終端的兩個新實例來測試Mosquitto。在一個終端輸入以下內(nèi)容:
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這樣的數(shù)字,如圖4所示。你的Pi可能會給你一個稍微不同的數(shù)字。
重要你把這個數(shù)字寫在安全的地方。 NodeMCU需要它才能連接到我們的Mosquitto服務(wù)器。
圖4. Raspberry Pi IP地址
構(gòu)建電路
本教程的電路(如圖5所示)包含LDR,10K電阻和我們的電路NodeMCU開發(fā)板。
圖5. 面包板電路
LDR和電阻形成一個分壓器,NodeMCU的模擬輸入讀取他們之間的電壓。當LDR的電阻隨照度變化時,LDR和電阻之間的電壓電平發(fā)生變化,如表1所示。
表1 。照明/電壓/ADC電平
安裝Arduino IDE和PubSubClient您計算機上的庫
您將使用Arduino IDE對NodeMCU開發(fā)板進行編程和閃存。在我們進入編程之前,需要安裝各種步驟。
下載并安裝IDE
運行Arduino并從“文件”菜單中顯示“首選項”對話框
在“其他板管理器URL”文本框中粘貼以下內(nèi)容文本:http://arduino.esp8266.com/stable/package_esp8266com_index.json
單擊確定
從工具/板菜單中選擇“Board Manager”
在搜索框中鍵入“esp8266”,然后安裝“esp8266 by ESP8266 Community”,
從工具/主板中選擇“通用ESP8266模塊”
通過工具/打開庫管理器管理圖書館。..
搜索“PubSubClient”,然后安裝Nick O‘Leary的PubSubClient
圖6。 PubSubClient
調(diào)整并將軟件上傳到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更改為您的家庭網(wǎng)絡(luò)登錄詳細信息。例如,如果您的Wi-Fi網(wǎng)絡(luò)名為myWifi,則頂行如下所示:
const char *WIFI_NETWORK_NAME = “myWifi”;
將變量MQTT_BROKER更新為Raspberry Pi的IP地址(您創(chuàng)建了一個早期的說明)。
實施
將NodeMCU和Raspberry Pi連接到同一網(wǎng)絡(luò)非常重要。請注意,如果重新啟動Raspberry Pi,它可能會更改其IP地址,這也意味著更改NodeMSC的代碼。
一旦啟動,NodeMCU上的軟件將定期讀取其ADC,然后發(fā)送MQTT消息到存儲在Raspberry Pi上的代理。然后,代理將消息重新分發(fā)給訂閱該主題的任何客戶端。
NodeMCU代碼利用串行端口輸出調(diào)試消息。如果連接Arduino IDE的串行監(jiān)視器,您應(yīng)該看到類似于圖7中的消息的輸出。
圖7. NodeMCU的串行輸出
您應(yīng)該開始在您的經(jīng)紀人處接收MQTT消息,您可以通過打開Pi上的終端窗口并輸入以下內(nèi)容來確認:
mosquitto_sub -v -t makerpro/mqtt_tutorial/light
這將允許您在控制臺中接收常規(guī)消息,如圖8所示。
圖8. 訂閱makerpro/mqtt_tutorial/light主題。
-
樹莓派
+關(guān)注
關(guān)注
117文章
1708瀏覽量
105704 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45111 -
NODEMCU
+關(guān)注
關(guān)注
13文章
289瀏覽量
21458 -
MQTT
+關(guān)注
關(guān)注
5文章
651瀏覽量
22541
發(fā)布評論請先 登錄
相關(guān)推薦
評論