Easy IoT实现mqtt实验

本文档详细介绍了如何使用Mind+和掌控板实现EasyIoT平台上的MQTT消息通讯。实验中,通过注册EasyIoT账号,设置设备,并编写Mind+代码来实现按钮控制发送环境光和声音强度数据,以及接收并显示数据。实验结果表明,成功实现了MQTT的消息收发,加深了对MQTT协议和Mind+编程的理解。

一、实验目的及要求
实现Easy IoT配置。
实现Easy IoT上mqtt消息的通讯。

二、实验原理与内容

实现mind+下Easy IoT上mqtt消息的通讯。

三、实验软硬件环境
硬件:掌控板
软件:Mind+

四、实验过程(实验步骤、记录、数据、分析)
在easyiot注册账号并添加新设备
在这里插入图片描述

在mind+拖拉代码块
在这里插入图片描述

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT0(String& message);
void obloqMqttEventT1(String& message);
// 静态常量
const String topics[5] = {"MFhNXylMR","e8wWqylMg","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,obloqMqttEventT1,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.setMqttCallback(msgHandles);
	myIot.wifiConnect("wefun", "12345678");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine("wifi连接成功");
	myIot.init("iot.dfrobot.com.cn","xUwdls_GR","","bUQOlslMgz",topics,1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	display.setCursorLine(2);
	display.printLine("MQTT连接成功");
}
void loop() {
	if ((buttonA.isPressed())) {
		myIot.publish(topic_0, (light.read()));
	}
	if ((buttonB.isPressed())) {
		myIot.publish(topic_1, (sound.read()));
	}
}


// 事件回调函数
void obloqMqttEventT0(String& message) {
	display.setCursorLine(3);
	display.printLine((light.read()));
	rgb.brightness(round(2));
	rgb.write(-1, 0x00FF00);
}
void obloqMqttEventT1(String& message) {
	display.setCursorLine(3);
	display.printLine((sound.read()));
	rgb.brightness(round(2));
	rgb.write(-1, 0x0000FF);
}

五、测试/调试及实验结果分析
当按钮A按下显示绿灯并发送环境光强度,当接收到消息后在屏幕显示环境光强度
在这里插入图片描述
当按钮B按下显示红灯并发送麦克风声音强度,当接收到消息后在屏幕显示声音强度
在这里插入图片描述

六、实验结论与体会

通过实验认识了mqtt的功能和操作,并通过mind+对上传下载信息的运用,更加的熟悉了mind+的操作

要解决使用Easy Iot平台MQTT协议远程控制灯亮灭无法实现的问题,可从平台、协议、设备连接等方面排查: - **平台方面**:Easy Iot是提供端到端物联网解决方案的平台,要保证该平台正常运行,可查看平台状态或官方公告,确认平台是否有维护、故障等情况。确保在平台上正确配置了设备信息,包括设备ID、密钥等,任何信息的错误都可能导致连接失败,进而无法实现远程控制[^1]。 - **MQTT协议方面**:MQTT协议是基于TCP/IP协议栈构建的,适用于资源受限的设备和网络环境。要检查网络连接是否稳定,因为该协议依赖于稳定的网络。若网络不稳定,可能导致消息无法正常传输。同时,确认订阅和发布的主题(topic)是否正确,比如在使用掌控板进行实验时,甲按A键(或触摸P)发送消息至topic1,同时监听topic0;乙监听topic1,接收到甲的消息后按A(或触摸P)回复消息给topic0。若主题配置错误,消息就无法准确传输,从而不能实现远程控制灯的亮灭[^1][^2][^3]。 - **设备连接方面**:确保控制端(如掌控板)和被控制的灯设备都已正确连接到网络。若使用掌控板,要保证type - C数据线连接正常,并且在Mind + 电脑端正确进行了图形化编程。检查代码逻辑是否正确,例如在通过掌控板控制时,按下按钮A或B后对应的灯状态显示和消息发送接收逻辑是否符合预期。若代码存在错误,可能无法正确发送控制指令到灯设备[^3][^4]。 ```python # 以下为简单的MQTT连接和消息发布示例代码(Python,需安装paho - mqtt库) import paho.mqtt.client as mqtt # 配置信息 broker_address = "easyiot平台的地址" port = 1883 client_id = "your_client_id" username = "your_username" password = "your_password" topic = "your_topic" # 连接成功回调 def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected successfully") else: print(f"Connect returned result code: {rc}") # 消息发布 def publish_message(client, message): result = client.publish(topic, message) status = result[0] if status == 0: print(f"Send `{message}` to topic `{topic}`") else: print(f"Failed to send message to topic {topic}") # 创建客户端实例 client = mqtt.Client(client_id) client.username_pw_set(username, password) client.on_connect = on_connect # 连接到代理 client.connect(broker_address, port) # 发布控制灯亮灭的消息 publish_message(client, "on") # 发送开灯指令 # publish_message(client, "off") # 发送关灯指令 # 循环处理网络流量 client.loop_forever() ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值