Easy IoT实现mqtt实验
程序员文章站
2022-06-09 08:55:08
...
Easy IoT实现mqtt实验
一、实验目的及要求
【实验一】实现Easy IoT配置。
【实验二】实现Easy IoT上mqtt消息的通讯。
二、实验原理与内容
实现mind+下EasyIoT上mqtt消息的通讯。
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、实验过程(实验步骤、记录、数据、分析)
C代码
代码如下:
/*!
*
MindPlus
*
mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void onButtonBPressed();
void obloqMqttEventT0(String& message);
// 静态常量
const String topics[5] =
{"eOGA5iFGg","SS405mKGg","","",""};
const MsgHandleCb msgHandles[5] =
{obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
buttonB.setPressedCallback(onButtonBPressed);
display.setCursorLine(1);
display.printLine("掌控连接成功");
myIot.wifiConnect("007","hscqweasd");
while(!myIot.wifiStatus()) {yield();
}
display.setCursorLine(2);
display.printLine("wifi连接成功");
myIot.init("iot.dfrobot.com.cn","WpFo5iFGg","","ZpFociFGRz",topics,1883);
myIot.connect();
while(!myIot.connected()) {yield();
}
display.setCursorLine(3);
display.printLine("MQTT连接成功");
display.setCursorLine(4);
display.printLine("丘伊婉");
delay(3000);
display.fillInLine(1,0);
display.fillInLine(2,0);
display.fillInLine(3,0);
display.fillInLine(4,0);
}
void loop() {
while(!(buttonA.isPressed())) {yield();
}
myIot.publish(topic_1,"2018764342丘伊婉i");
display.setCursorLine(1);
display.printLine("2018764342丘伊婉发送成功");
rgb.write(0,0x0000FF);
}
// 事件回调函数
void onButtonBPressed() {
display.fillScreen(0);
myIot.publish(topic_1,"丘伊婉收到,谢谢");
display.setCursorLine(1);
display.printLine("丘伊婉回复成功");
rgb.write(2,0xFFFF33);
delay(2000);
rgb.write(-1,0x000000);
}
void obloqMqttEventT0(String& message)
{
display.fillScreen(0);
rgb.write(1,0xCC33CC);
display.setCursorLine(1);
display.printLine(message);
}
图形代码
五、测试/调试及实验结果分析
打开显示屏显示各项连接成功
我作为发送方信息发送成功
我作为接收方信息接收成功
回复接收方信息回复成功
对方回复我发送的信息
六、实验结论与体会
刚开始做的时候,在接收Topic_1发的信息的时候卡住,一直收不到对方发的信息,后来在老师的提醒下,我知道了那里用的功能是监听。然后我一开始是把接收和按键回复放在了一起,但是一直发送不出回复,后来经过调整把接收到消息和回复分开才成功的实现了这个功能。
在写代码的时候,要对错误有足够的耐心去进行调试,如果急于求成,就什么都写不好。