物聯網:實現sIoT配置並實現sIoT上mqtt訊息的通訊

super...發表於2020-10-11

創作緣由

大三上學期,我們的專業開設了一門物聯網的課程,用到的教材是由劉偉善編著的《Arduino創客之路(智慧感知技術基礎)》以及使用的軟體是國產青少年程式設計軟體Mind+。為了記錄和分享我的學習成果,我將編寫且分享本學期此課程的全部實驗作業。

實驗目的及要求

實現sIoT配置並實現sIoT上mqtt訊息的通訊。

實驗原理與內容

原理:sIoT可以在區域網上實現mqtt訊息的通訊。

內容:兩人合作,首先在各自的電腦上實現掌控板和Mind+的連線,再建立區域網環境和兩個sIoT裝置。
最後利用Mind+網路服務中的WiFi和MQTT等功能編寫圖形程式實現兩塊掌控板之間的訊息通訊。

實驗軟硬體環境

硬體:掌控板
軟體:Mind+、SIoT_windows1.2

實驗過程(實驗步驟、記錄、資料、分析)

  1. 實驗步驟
    ① 開啟Mind+與掌控板裝置連線。
    ② 切換到上傳模式,在擴充套件中主控板選項中選擇掌控板,在網路服務選項中選擇WiFi和MQTT。
    在這裡插入圖片描述

③ 合作雙方的個人電腦都連線到同一個WIFI熱點,使合作雙方連線在同一個區域網內。
④ 執行SIol_windows1.2.exe,實驗中途不得關閉,將自己的計算機作為MQTT伺服器(兩人合作只需要一個伺服器就行)。
在這裡插入圖片描述
⑤ 在瀏覽器中用SIol_windows1.2的Web伺服器地址開啟自己的伺服器,輸入使用者名稱和密碼登入後建立兩個專案。
在這裡插入圖片描述
⑥ 編寫程式碼:連線WIFI熱點→MQTT初始化引數→MQTT發起連線→循壞執行在A鍵被按下之後MQTT傳送訊息給Topic_1。
編寫程式碼:當接收到Topic_0的MQTT訊息→螢幕顯示文字MQTT訊息。(以下是我方程式碼及MQTT初始化引數)
在這裡插入圖片描述

在這裡插入圖片描述
⑦ 把程式碼上傳到裝置、等待WIFI連線後及MQTT初始化後,按下掌控板的A鍵傳送訊息並接收來自合作方的訊息。

  1. 核心程式碼
/*!
		 * MindPlus
		 * mpython
		 *
		 */
		#include <MPython.h>
		#include <DFRobot_Iot.h>
		// 函式宣告
		void obloqMqttEventT0(String& message);
		// 靜態常量
		const String topics[5] = {"xxxxxx4247/xxx","xxxxxxx242/xxx","xxxxxx249/xxx","",""};
		const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
		// 建立物件`在這裡插入程式碼片`
		DFRobot_Iot myIot;
		
		
		// 主程式開始
		void setup() {
			mPython.begin();
			myIot.setMqttCallback(msgHandles);
			myIot.wifiConnect("orange", "12345678");
			while (!myIot.wifiStatus()) {yield();}
			display.setCursorLine(1);
			display.printLine(myIot.getWiFiLocalIP());
			myIot.init("192.168.43.xxx","602","","iot", topics, 1883);
			myIot.connect();
			while (!myIot.connected()) {yield();}
			display.setCursorLine(2);
			display.printLine("MQTT連線成功");
		}
		void loop() {
			if ((buttonA.isPressed())) {
				myIot.publish(topic_1, "2018764242陳暢潤");
			}
		}
		
		
		// 事件回撥函式
		void obloqMqttEventT0(String& message) {
			display.setCursorLine(3);
			display.printLine(message);
		}
  1. 實驗效果圖

① 本人掌控板顯示為
在這裡插入圖片描述

② 合作方同學掌控板顯示為
在這裡插入圖片描述

測試、除錯及結果分析

① 合作雙方的個人電腦需要連線在同一個WiFi熱點中。個人用手機建立WIFI移動熱點時,對移動熱點的切斷再重連會更換區域網的IP地址,此時要注意MQTT初始化中的伺服器地址的設定,以及需要重啟伺服器。

② MQTT初始化引數中的伺服器地址是個人電腦的區域網IP地址,雙方需要填寫一致。Topic_0和Topic_1中的資訊要與在SIol_windows1.2的Web伺服器中建立的裝置資訊一致。

實驗結論與體會

① SIoT是一個為中小學STEM教育定製的跨平臺的開源MQTT伺服器程式,S指科學(Science)、簡單(Simple)的意思。SIoT重點關注物聯網資料的收集和匯出,是採集科學資料的最好選擇之一。
SIoT為“虛穀物聯”專案的核心軟體,是為了幫助中小學生理解物聯網原理,並且能夠基於物聯網技術開發各種創意應用。

② 實驗中可以巧妙地利用螢幕提示語句進行程式的除錯,方便邏輯語句的檢查。

相關文章