文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【Tutorial】運用ESP8266及MQTT 完成IoT數據傳輸

作者:Regis Hsu

ESP8266是一款具備WiFi與32bit MCU的高C/P值SoC (System on Chip),同好們似乎拿來做IoT系統居多;另外,以目前普遍的IoT架構來說,MQTT是傳遞訊息資料最常見的protocol運用,本篇將紀錄如何運用NodeMCU(ESP8266)及MQTT進行數據傳輸,以便完成物聯網應用開發,筆者以此文做為詳細的研究記錄,除避免日後忘記,也可以分享同好,剛好沾沾IoT的潮流。

MQTT環境設置

MQTT主要精神如圖所示:

MQTT的主要精神

MQTT的主要精神

為了讓學習順利,我規劃用區域網路的封閉環境,來模擬MQTT的環境如下:

  1.  Topic: 由Macbook的Mosquitto來扮演broker
  2. Publisher: ESP-01和Mac終端機都可以送message
  3. Subscriber:ESP-01和Mac終端機都可以收message

使用Mosquitto,是由於它除了是Open Source之外,LASS也是用這個工具來傳送感測器所量測的資訊。

首先,下載安裝Mosquitto,在Mac環境下建議用BREW的方式比較簡單容易。

直接在終端機內輸入:

確定安裝成功後,啟動Mosquitto broker,這過程卡住不少時間,主要是安裝流程中並無把Moquitto的path加入,導致系統找不到Moquitto程式!所以,直接在終端機輸入:

如果出現以下訊息,表示成功啟動MQTT broker,port1883。

1455180178: mosquitto version 1.4.7 (build date 2016-01-12 12:28:36-0800) starting
1455180178: Using default config.
1455180178: Opening ipv4 listen socket on port 1883.
1455180178: Opening ipv6 listen socket on port 1883.
1455180179: New connection from ::1 on port 1883.
1455180179: New client connected from ::1 as mosqsub/545-RegisdeMBP (c1, k60).

然後,再將下面的Lua code貼到ESPlorer,按「Run」,讓ESP-01執行成為具備MQTT連接功能,如圖。

貼上Lua code後按「Run」,讓ESP-01成為具備MQTT連接功能

貼上Lua code後按「Run」,讓ESP-01成為具備MQTT連接功能

接下來,即可開始測試與驗證,Publisher與Subscriber的功能。

測試Macbook端

先在Macbook開啟兩個終端機,第一個終端機擔任Subscriber,輸入

第二個擔任Publisher,輸入

結果圖示:

Publisher與Subscriber之功能測試結果

Publisher與Subscriber之功能測試結果

當在Publisher輸入並按下enter後,在Subscriber立即看到“from Macbook”,表示訊息成功被傳達。

測試ESP-01端:

再來,要運用ESP-01發送message到Moquitto broker(192.168.1.108),首先輸入以下Lua code到ESPloere的input box(如下圖inputbox),按下「Send」把code送到ESP-01,每一行都必須按「Send」。

說明:

  1. 透過port1883連接192.168.1.108的Moguitto broker
  2. 發出title”hello/world“的message ”from ESPlorer“
  3. 結束這次的connection

在Mac的終端機的Subscriber上可以看到這些message,就表示ESP-01可以執行MQTT的Publisher功能。

ESP-01可以執行MQTT的Publisher功能

使ESP-01可以執行MQTT的Publisher功能

測試Subscriber與連結Macbook

再來測試Subscriber:

說明:

  1. 透過port1883連接192.168.1.108的Moguitto broker
  2. 設定接收title”hello/world“的message

最後要讓Macbook與ESP-01交互送message
在Mac的終端機Publisher輸入:

在ESPlorer和Mac終端機Subscriber,都可以看到這message,表示ESP-01也可以接收訊息就大功告成了;可以輪流在Mac和ESPlorer中送message出來,交互觀察數值結果,非常有趣!

以上是這兩天的學習,接下來要想看看ESP-01要接什麼感測器,或模組來控制玩玩。

(本文同時發表於作者部落格,原文連結

Regis Hsu

Regis Hsu

宅男,喜愛新科技,現在正沉入Spider Robot、Raspberry Pi、Arduino、3D printing領域。 除了寫code和焊電路板,也學習繪畫3D模型與列印製作!
好奇,對新鮮事物有濃厚的興趣。而且,拆修傢俱電器非常內行。

個人部落格:雷基士-Regis
Regis Hsu

上一篇: | 下一篇:

1 Comment

  1. Hi,

    mosquitto 少了一 “t”
    “brew install mosquito” => “brew install mosquitto”

    Post a Reply

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

邀您加入《MakerPro》粉絲團:Maker&Startup開發社群的學習與知識平台