0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣從中傳輸MQTT消息ESP8266/NodeMCU到運行MQTT代理的樹莓派

454398 ? 來源:工程師吳畏 ? 2019-07-30 09:31 ? 次閱讀

電路圖

怎樣從中傳輸MQTT消息ESP8266/NodeMCU到運行MQTT代理的樹莓派

圖1. 教程電路

什么是MQTT?

消息隊列遙測傳輸(MQTT)是一種消息傳遞協(xié)議,可在任何具有Internet連接的設備上運行,使其成為物聯(lián)網中最常用的協(xié)議之一項目。它被設計用于具有低帶寬限制的系統(tǒng),因此非常適用于家庭自動化或任何物聯(lián)網(IoT)應用。

MQTT的優(yōu)勢包括其低帶寬,簡單的實現(xiàn),它適用于不可靠的連接。

圖2. 基于MQTT的系統(tǒng)

MQTT需要使用“代理” - 一個接收和發(fā)送MQTT消息的應用程序。在本教程中,我們的代理是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。在一個終端輸入以下內容:

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服務器。

圖4. Raspberry Pi IP地址

構建電路

本教程的電路(如圖5所示)包含LDR,10K電阻和我們的電路NodeMCU開發(fā)板。

圖5. 面包板電路

LDR和電阻形成一個分壓器,NodeMCU的模擬輸入讀取他們之間的電壓。當LDR的電阻隨照度變化時,LDR和電阻之間的電壓電平發(fā)生變化,如表1所示。

表1 。照明/電壓/ADC電平

安裝Arduino IDE和PubSubClient您計算機上的庫

您將使用Arduino IDE對NodeMCU開發(fā)板進行編程和閃存。在我們進入編程之前,需要安裝各種步驟。

下載并安裝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地址(您創(chuàng)建了一個早期的說明)。

實施

將NodeMCU和Raspberry Pi連接到同一網絡非常重要。請注意,如果重新啟動Raspberry Pi,它可能會更改其IP地址,這也意味著更改NodeMSC的代碼。

一旦啟動,NodeMCU上的軟件將定期讀取其ADC,然后發(fā)送MQTT消息到存儲在Raspberry Pi上的代理。然后,代理將消息重新分發(fā)給訂閱該主題的任何客戶端。

NodeMCU代碼利用串行端口輸出調試消息。如果連接Arduino IDE的串行監(jiān)視器,您應該看到類似于圖7中的消息的輸出。

圖7. NodeMCU的串行輸出

您應該開始在您的經紀人處接收MQTT消息,您可以通過打開Pi上的終端窗口并輸入以下內容來確認:

mosquitto_sub -v -t makerpro/mqtt_tutorial/light

這將允許您在控制臺中接收常規(guī)消息,如圖8所示。

圖8. 訂閱makerpro/mqtt_tutorial/light主題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 樹莓派
    +關注

    關注

    116

    文章

    1679

    瀏覽量

    105256
  • ESP8266
    +關注

    關注

    50

    文章

    959

    瀏覽量

    44545
  • NODEMCU
    +關注

    關注

    13

    文章

    289

    瀏覽量

    21187
  • MQTT
    +關注

    關注

    5

    文章

    629

    瀏覽量

    22286
收藏 人收藏

    評論

    相關推薦

    esp8266esp32區(qū)別是什么

    Xtensa? 32-bit LX6 CPU,主頻可達240MHz,具有更強大的處理能力。 內存 : ESP8266 :通常有64KB512KB的RAM,以及1MB4MB的閃存。 ESP
    的頭像 發(fā)表于 08-19 18:16 ?1444次閱讀

    esp8266不燒錄可以使用嗎

    ESP8266是一款非常流行的Wi-Fi模塊,廣泛應用于物聯(lián)網項目中。然而,如果不進行燒錄,ESP8266將無法正常工作。 1. ESP8266簡介 ESP8266是一款由Espres
    的頭像 發(fā)表于 08-19 17:28 ?358次閱讀

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示
    的頭像 發(fā)表于 08-13 18:04 ?617次閱讀
    Arduino Nano 和 <b class='flag-5'>NodeMCU</b> <b class='flag-5'>ESP8266</b> 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    esp8266的脈沖計數(shù)問題求解

    我正在編寫 nodemcu esp8266 的代碼,它涉及脈沖計數(shù)、存儲和返回 nodemcu,使用 raspberry pi 作為服務器。為此,我使用了 3 個 nodemcu
    發(fā)表于 07-10 06:49

    esp8266運行REMOTE_OTA_TASK出錯的原因?

    官方整合阿里云物聯(lián)網套件的程序,然后在樂鑫官網下載了RTOS,放到了esp8266-rtos-sdk 目錄下,修改了阿里云套件的三元組,產品KEY、設備名、設備密鑰。使用MQTT_TASK任務運行
    發(fā)表于 07-10 06:32

    esp8266無法收到usb-ttl發(fā)過來的串口數(shù)據(jù)如何解決?

    usb-ttl和esp8266都通過usb連接到同一電腦的usb口。用sscom測試 兩邊的波特率115200 AT固件:安信可的出廠固件,mqtt固件都試過了.測試AT指令正常。 實驗目的:驗證
    發(fā)表于 07-09 06:43

    求助,請問如何在RTOS SDK 1.5的PlatformIO IDE ESP8266實現(xiàn)MQTT

    ESP8266設備連接到 mqtt 代理。但 PlatformIO IDE 內置的 RTOS SDK 1.5 版本不支持 mqtt。此 SDK 沒有
    發(fā)表于 07-08 06:22

    STM32、ESP8266MQTT連接阿里云物聯(lián)網的串口通信異常解析

    STM32、ESP8266MQTT協(xié)議連接阿里云物聯(lián)網平臺時常見的串口通信異常介紹 在構建物聯(lián)網應用時,STM32、ESP8266MQTT協(xié)議的結合是實現(xiàn)設備與網絡間穩(wěn)定通信的關鍵
    的頭像 發(fā)表于 04-19 17:19 ?1120次閱讀

    淺析ESP32運行MQTT客戶端進行主題的發(fā)布和訂閱的方法

    ESP32 MQTT的庫有很多,凌順實驗室(lingshunlab.com)這次主要使用AsyncMQTT_ESP32,以后有機會再更多的MQTT其他庫的使用方法。
    的頭像 發(fā)表于 03-18 10:05 ?2877次閱讀
    淺析<b class='flag-5'>ESP</b>32<b class='flag-5'>運行</b><b class='flag-5'>MQTT</b>客戶端進行主題的發(fā)布和訂閱的方法

    如何通過mqtt實現(xiàn)光自動化?

    一個樹莓,我想用它來與 20 esp 01bords 進行通信。我決定使用 MQTT 協(xié)議進行 raspberry Pi 和 esp 01
    發(fā)表于 01-31 08:30

    宏集方案 | 如何用工業(yè)樹莓MQTT平臺打通OT和IT?

    如何用工業(yè)樹莓MQTT平臺打通OT和IT?
    的頭像 發(fā)表于 01-05 11:01 ?297次閱讀
    宏集方案 | 如何用工業(yè)<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>和<b class='flag-5'>MQTT</b>平臺打通OT和IT?

    MQTT是什么 MQTT特點

    很簡單,易于學習和使用。 ?可靠性高:MQTT 使用了 TCP 協(xié)議進行傳輸,具有較高的可靠性。 ?低延遲:MQTT 使用了發(fā)布/訂閱模式,可以減少消息傳遞的延遲。 在機器人應用中,MQTT
    的頭像 發(fā)表于 11-09 15:20 ?2140次閱讀

    如何使用ESP8266搭建MQTT客戶端?

    手頭有一塊ESP8266的板子,想搭建一個MQTT客戶端,該如何實現(xiàn)呢?
    發(fā)表于 11-07 06:36

    服務器怎么連接到設備,MQTT和TCP的通訊方式有什么不同?

    采用ESP8266進行開發(fā),服務器怎么連接到設備的,MQTT 和TCP的通訊方式有什么不用呢
    發(fā)表于 11-02 08:34

    nodemcuesp8266是什么關系?

    nodemcuesp8266是什么關系 nodemcuesp8266是什么關系?通俗理解就是nodemcu是一個開發(fā)板,基于
    的頭像 發(fā)表于 10-20 14:53 ?3317次閱讀
    <b class='flag-5'>nodemcu</b>和<b class='flag-5'>esp8266</b>是什么關系?