**
Easy IoT实现mqtt实验(双终端)
**
一、实验目的及要求
【实验一】实现Easy IoT配置。
【实验二】实现Easy IoT上mqtt消息的通讯。
二、实验原理与内容
实现mind+下Easy IoT上mqtt消息的通讯。
三、实验软硬件环境
- 硬件:掌控板
- 软件: Mind+图形化编程软件
下载地址:Dfrobot官网中国区
四、实验过程
1.Easy IoT配置:
- 进入easy iot官网国区注册登录获取iot_id、iot_pwd
- 在工作站建立topic1与topic2
2.核心代码截图:
(1)模块化代码截图:
(2)具体代码截图(c++):
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT1(String& message);
// 静态常量
const String topics[5] = {"KmWtSmKGR","N6PUSmFGR","","",""};
const MsgHandleCb msgHandles[5] = {NULL,obloqMqttEventT1,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
rgb.write(0, 0x00FF00);
myIot.wifiConnect("orange", "12345678");//个人热点账号、密码根据自己设置
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(1);
display.printLine("wifi连接成功");
myIot.init("iot.dfrobot.com.cn","in6cSiFGg","","m7e5SiKMgz",topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.setCursorLine(2);
display.printLine("MQTT连接成功");
display.setCursorLine(3);
display.printLine("按A按开始发送");
}
void loop() {
if ((buttonA.isPressed())) {
myIot.publish(topic_0, "hello world");
display.setCursorLine(4);
display.printLine("信息发送成功");
}
delay(5000);
display.fillScreen(0);
}
// 事件回调函数
void obloqMqttEventT1(String& message) {
display.setCursorLine(4);
display.printLine(message);
delay(5000);
display.fillScreen(0);
}
3.实验效果图:
(1)采用上传模式将数据上传后,掌控板显示如下:
(2)按A键进行MQTT的数据连接,通过iot.drrobot.com.cn中国服务器与iot账号连接进行数据发送与接收
数据发送成功效果如下:
①终端1(这里称为主机)
②终端2(这里称为iot用户机)
终端1接收到的数据如下:
五、测试/调试及实验结果分析
- 掌控板与mind+连接,通过wifi、mqtt模块加载实现mind+下Easy IoT上mqtt消息的通讯。首先,通过wifi热点建立掌控板与网络连接,通过初始化mqtt数据导入iot_id、iot_pwd以及连接的topic0、topic1建立mqtt与服务器的连接。
- Wifi连接通过在显示屏输出“wifi连接成功”测试wifi是否成功;mqtt连接通过在显示屏输出“MQTT连接成功”测试mqtt是否连接成功。一旦wifi与mqtt连接成功后通过掌控板上的A键开关控制消息语句的循环发送与清屏控制。
- 实验中主掌控板通过向iot_id的topic1发送消息,iot用户在iot.dfrobot.com.cn的topic0的界面可查看消息接收记录,同时iot用户掌控板可在显示屏显示到发送内容。Iot用户向topic1发送信息,主机掌控板显示屏也可以显示接收内容。
六、实验结论与体会
- 本次实验主要实现Easy IoT配置以及Easy IoT上mqtt消息的通讯。总体来说实验进展的还算顺利,这里提及一些实验容易遇到的“雷区”:
(1)wifi模块连接两端或多终端并不需要在同一wifi环境,wifi连接目的是建立掌控板与mind+中代码的连接;
(2)mqtt模块中数据初始化的iot_id、iot_pwd、topic0、topic1必须与连接的掌控板数据参数相同;
(3)需要进行两端数据消息的接收与发送必须连接上topic0与topic1,只连接单一一个只能进行接收或发送。
后言
因实验时传送的数据涉及个人隐私,故效果图展示略微修改但保证数据准确