物聯網:實現sIoT配置並實現sIoT上mqtt訊息的通訊
創作緣由
大三上學期,我們的專業開設了一門物聯網的課程,用到的教材是由劉偉善編著的《Arduino創客之路(智慧感知技術基礎)》以及使用的軟體是國產青少年程式設計軟體Mind+。為了記錄和分享我的學習成果,我將編寫且分享本學期此課程的全部實驗作業。
實驗目的及要求
實現sIoT配置並實現sIoT上mqtt訊息的通訊。
實驗原理與內容
原理:sIoT可以在區域網上實現mqtt訊息的通訊。
內容:兩人合作,首先在各自的電腦上實現掌控板和Mind+的連線,再建立區域網環境和兩個sIoT裝置。
最後利用Mind+網路服務中的WiFi和MQTT等功能編寫圖形程式實現兩塊掌控板之間的訊息通訊。
實驗軟硬體環境
硬體:掌控板
軟體:Mind+、SIoT_windows1.2
實驗過程(實驗步驟、記錄、資料、分析)
- 實驗步驟
① 開啟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鍵傳送訊息並接收來自合作方的訊息。
- 核心程式碼
/*!
* 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);
}
- 實驗效果圖
① 本人掌控板顯示為
② 合作方同學掌控板顯示為
測試、除錯及結果分析
① 合作雙方的個人電腦需要連線在同一個WiFi熱點中。個人用手機建立WIFI移動熱點時,對移動熱點的切斷再重連會更換區域網的IP地址,此時要注意MQTT初始化中的伺服器地址的設定,以及需要重啟伺服器。
② MQTT初始化引數中的伺服器地址是個人電腦的區域網IP地址,雙方需要填寫一致。Topic_0和Topic_1中的資訊要與在SIol_windows1.2的Web伺服器中建立的裝置資訊一致。
實驗結論與體會
① SIoT是一個為中小學STEM教育定製的跨平臺的開源MQTT伺服器程式,S指科學(Science)、簡單(Simple)的意思。SIoT重點關注物聯網資料的收集和匯出,是採集科學資料的最好選擇之一。
SIoT為“虛穀物聯”專案的核心軟體,是為了幫助中小學生理解物聯網原理,並且能夠基於物聯網技術開發各種創意應用。
② 實驗中可以巧妙地利用螢幕提示語句進行程式的除錯,方便邏輯語句的檢查。
相關文章
- 實現mind+下Easy IoT上mqtt訊息的通訊。MQQT
- MQTT物聯網通訊協議入門及Demo實現MQQT協議
- 藉助sIoT可以通過手機app實現區域網內的裝置操控。APP
- 如何優雅的實現訊息通訊?
- 微信小程式+mqtt.js實現實時接收訊息微信小程式MQQTJS
- 使用swoole作為MQTT客戶端並接收實現即時訊息推送MQQT客戶端
- 網路通訊2:TCP通訊實現TCP
- workerman 實現訊息推送
- 樂訊通雲通訊:物聯網路卡在農業上的應用
- 物聯網閘道器開發:基於MQTT訊息匯流排的設計過程(上)MQQT
- 8┃音視訊直播系統之 WebRTC 信令系統實現以及通訊核心並實現視訊通話Web
- 樂訊通雲通訊:物聯網路卡能用在手機上嗎
- 樂訊通雲通訊:物聯網路卡在車聯網的應用
- 樂訊通雲通訊:物聯網路卡在車聯網中的作用
- Flutter websocket 實現訊息推送FlutterWeb
- Redis實現訊息佇列Redis佇列
- js訊息訂閱和釋出實現元件之間通訊JS元件
- 樂訊通雲通訊:物聯網路卡在智慧監控上的應用
- 樂訊通雲通訊:物聯網路卡在物聯網中起到什麼作用
- 匿名管道通訊實現
- java實現UDP通訊JavaUDP
- RabbitMQ實戰:理解訊息通訊MQ
- 樂訊通雲通訊:物聯網路卡在什麼裝置上使用
- Webview獨立程式並通過AIDL實現資料通訊WebViewAI
- 訊息的即時推送——net實現、websocket實現以及socket.io實現Web
- HTTPS通訊的C++實現HTTPC++
- paho實現MQTTClient釋出訊息MQQTclient
- 使用 NSProxy 實現訊息轉發
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- 樂訊通雲通訊:如何選擇物聯網路卡
- 樂訊通雲通訊:物聯網路卡有哪些功能
- 樂訊通雲通訊:物聯網路卡都有哪些用途
- 樂訊通雲通訊:物聯卡,現代智慧家居技術的必不可缺
- 樂訊通雲通訊:什麼是物聯網路卡?物聯網路卡的優點是什麼?
- 樂訊通雲通訊:物聯網路卡在自然災害防禦上的應用
- 樂訊通雲通訊:物聯網路卡在智慧醫療儀器上的應用
- 樂訊通雲通訊:物聯網路卡在製造業上的基本用途有哪些?
- 樂訊通雲通訊:如何正確的使用物聯網路卡