03 利用手機做簡易控制

(2019/02/20)

一、認識MQTT

  • 先要知道 MQTT的Publisher(發布者), Broker(代理人)和Subscriber(訂閱者),以下資料取自 【MQTT教學(一):認識MQTT】(內有MQTT的詳細說明)

    • 根據MQTT 3.1.1版本規格書的描述,MQTT是一種基於「發布∕訂閱」機制的訊息傳輸協定(MQTT is a Client Server publish/subscribe messaging transport protocol),我們可以把它想成雜誌發行和訂閱的機制。MQTT訊息發送端,相當於雜誌出版社,雜誌出版之後並不直接寄給消費者,而是交給經銷商或者書店一般的代理人(broker),來統籌管理發行和訂閱事宜。每一個訊息來源(刊物)都有個唯一的主題名稱(刊物名稱)。

    • 代理人是個伺服器軟體(本文採用iot.eclipse.org),向伺服器發送主題的一方是發布者(publisher),從伺服器獲取主題的一方則是訂閱者(subscriber)。以下圖為例,傳送感測器資料的一邊是發布者,接收感測器資料的一邊則是訂閱者。每個感測器∕微控器的訊息都需要有個主題名稱以利識別。

    • MQTT的主題(Topic)名稱:MQTT主題名稱是UTF-8(萬國碼)編碼的字串,我們可以自行決定主題名稱,例如,傳送溫度的訊息主題可命名成「溫度」、傳送亮度的訊息主題叫做「照度」…等等。主題名稱也支援類似檔案路徑的階層式命名方式 ,如: wenyu/home/1f/led

二、利用手機來遙控NodeMCU上的LED燈(D0,GPIO16)

  • 角色:

    • Broker(代理人):這邊採用 iot.eclipse.org 這台伺服器

    • Publisher(發布者):手機,採用 IoT MQTT Dashboard 的APP來發布訊息到Broker

    • Subscriber(訂閱者):NodeMCU

    • Topic(主題):wenyu/home/1f/nodemcu1

  • 手機端(Publisher(發布者))

    • 安裝 ioT MQTT Panel 的APP

    • 建立一個連線

    • 新增一個PANEL

    • 修改程式內容

    • 手機按下APP的ON時,NodeMCU上D0的LED燈亮起

    • 手機按下APP的OFF時,NodeMCU上D0的LED燈滅掉

三、利用手機來遙控NodeMCU上的繼電器(D4(GPIO2))

  • NodeMCU (Subscriber(訂閱者))的程式,同上,在判斷的地方加上繼電器的啟動或關閉判斷

  • 手機端(Publisher(發布者))

四、利用手機來播放NodeMCU上的音樂,蜂鳴器(D6(GPIO12))

  • NodeMCU (Subscriber(訂閱者))的程式,同上,在判斷的地方加上對音樂啟動的判斷

    • 手機端(Publisher(發布者))

    • 新增一個按鈕