mind+圖形化編程Easy IoT上mqtt訊息的通訊
一、實驗目的及要求
【實驗一】實作Easy IoT配置,
【實驗二】實作Easy IoT上mqtt訊息的通訊,
二、實驗原理與內容
實作mind+下Easy IoT上mqtt訊息的通訊,
甲按A鍵發送訊息至topic0,同時監聽topic1,乙監聽topic0,按A鍵發送訊息至topic1,
三、實驗軟硬體環境
硬體:掌控板
軟體:Mind+
四、實驗程序
【實驗一】實作Easy IoT配置,
進入Easy Iot注冊并登錄,生成Iot_id(user)和Iot_pwd(password),添加兩個設備用于topic0和topic1,如圖:

【實驗二】實作Easy IoT上mqtt訊息的通訊,
準備作業
打開mind+連接掌控板,選擇上傳模式,因為我們要實作的是mqtt訊息的通訊,所以我們在擴展中選擇網路服務分類下的MQTT以及Wi-Fi選項,如圖:

第一步、連接網路、初始化MQTT以及連接MQTT
先用手機或者電腦設定并打開一個wifi熱點,這里我們設定一個提示首先在掌控版螢屏上顯示“正在連接網路”,當網路連接成功后再顯示“網路連接成功”
然后初始化MQTT引數如圖:
下一步連接MQTT,這里我們也設定一個提示,當MQTT連接成功后在螢屏上顯示“mqtt連接成功,
代碼塊如下:

第二步、發送訊息
按下A鍵,發送訊息至Topic0,這里我們設定一個提示,當發送訊息成功后,在螢屏上顯示“訊息發送成功”,
代碼塊如下:

第三步、接收訊息
甲=監聽Topc1,當收到Topic1發來的MQTT訊息,螢屏上提示“您有新的訊息”,并亮起掌控板上所有led燈作為提示,在螢屏上顯示所接收到的MQTT訊息,
代碼塊如下:

以下為該實驗的C代碼:
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函式宣告
void onButtonAPressed();
void obloqMqttEventT1(String& message);
// 靜態常量
const String topics[5] = {"8bDcSmKGg","RhtcSiFGR","","",""};
const MsgHandleCb msgHandles[5] = {NULL,obloqMqttEventT1,NULL,NULL,NULL};
// 創建物件
DFRobot_Iot myIot;
// 主程式開始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
buttonA.setPressedCallback(onButtonAPressed);
myIot.wifiConnect("ckx", "12345679");
display.setCursorLine(1);
display.printLine("正在連接網路");
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(2);
display.printLine("網路連接成功");
display.fillScreen(0);
delay(3000);
myIot.init("iot.dfrobot.com.cn","rGm5IiKGR","","rGmcSmFGRz",topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.setCursorLine(1);
display.printLine("mqtt連接成功");
delay(3000);
display.fillInLine(1, 0);
}
void loop() {
}
// 事件回呼函式
void onButtonAPressed() {
while (!(!buttonA.isPressed())) {yield();}
myIot.publish(topic_0, "陳可行");
display.fillScreen(0);
display.setCursorLine(1);
display.printLine("訊息發送成功");
delay(3000);
display.fillInLine(1, 0);
}
void obloqMqttEventT1(String& message) {
display.setCursorLine(1);
display.printLine("您有新的訊息");
rgb.write(-1, 0xFFFFFF);
display.setCursorLine(2);
display.printLine(message);
delay(3000);
rgb.write(-1, 0x000000);
display.fillScreen(0);
}
五、測驗/除錯及實驗結果分析
將代碼上傳到設備后,掌控板開始連接網路,連接MQTT
陳可行(我)按下A鍵,發送MQTT訊息“陳可行”至Topic0,發送成功后螢屏顯示“訊息發送成功”,Easy Iot上的相應Topic收到訊息“陳可行”,

搭檔陳登祖(監聽Topic0)掌控板顯示收到的訊息“陳可行”,并亮起LED燈,

陳可行(我)監聽Topic1,搭檔陳登祖按下他的掌控板的A鍵發送MQTT訊息“陳登祖”至Topic1,Easy Iot上的相應Topic收到訊息“陳登祖”,

掌控板顯示收到的訊息“陳登祖”,并亮起LED燈,

在組合代碼塊時最好在每一步都加上必要的提示,方便我們在出現錯誤的時候進行除錯,也方便讓我們知道程式進行到了哪一步,
六、實驗結論與體會
這次實驗讓我了解了掌控板的幾大功能,更熟練地運用圖形化編程軟體mind+,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131809.html
標籤:其他
