STM32物信息通过MQTT协议上传云平台

本实验报告主要研究了物信息通过MQTT协议上传至云平台的过程及其效果。实验首先介绍了MQTT协议的基本原理和特点,包括其轻量级、发布/订阅模式以及适用于低带宽、高延迟或不稳定的网络环境的优势。随后,报告详细描述了实验的设计和实施过程,包括硬件设备的选择、软件环境的搭建、MQTT客户端与云平台的连接配置等。

在实验过程中,我们成功地将物信息通过MQTT协议发送到云平台,并实现了数据的实时上传和监控。实验结果显示,MQTT协议在数据传输效率、稳定性和可靠性方面均表现出色,能够满足物联网应用中对于实时性和可靠性的要求。此外,我们还分析了实验中遇到的一些问题和挑战,如网络延迟、数据丢包等,并提出了相应的解决方案和改进措施。

本实验的成功实施为物信息通过MQTT协议上传云平台提供了有益的参考和借鉴。通过本实验,我们进一步验证了MQTT协议在物联网领域中的适用性和优势,为未来的物联网应用开发和部署提供了重要的技术支持和实践经验。

总体而言,本实验报告通过详细记录实验过程和结果,为相关研究人员和开发人员提供了有关物信息通过MQTT协议上传云平台的宝贵信息和实践指导。我们相信,随着物联网技术的不断发展和普及,MQTT协议将在更多领域得到广泛应用和推广。

关键词 MQTT协议;物联网;云平台;

实验任务:

  1. 编程实现单片机通过AT指令连接WIFI模块。
  2. 编程实现单片机建立与云平台的连接,编程实现单片机与云平台交互。
  3. 完成硬件与云平台完整的正向与反向双向的通信过程。

实验目的:

理解物联网云平台的架构和作用;掌握接入云平台的方法和流程以及关键元素。

WiFi的AP模式(Access Point模式)和STA模式(Station模式)是无线网络中的两种基本工作模式,它们定义了设备在网络中的角色和行为。

1. AP模式(Access Point模式):

在AP模式下,设备充当无线网络的中心节点,也就是无线路由器或热点。

设备负责管理无线网络,包括广播SSID(Service Set Identifier,服务集标识符),管理连接的客户端设备,以及提供数据传输的中继点。

客户端设备(如智能手机、笔记本电脑等)可以连接到AP模式的设备上,通过它访问互联网或其他网络资源。

AP模式的设备通常具备更强的处理能力和更稳定的网络连接,以支持多个客户端设备同时连接和数据传输。

2.STA模式(Station模式):

STA模式是指设备作为无线网络中的一个客户端节点,也就是普通的无线终端设备。

在STA模式下,设备连接到一个已经存在的无线网络(通常是通过AP模式的设备建立的),以便访问网络资源或互联网。

STA模式的设备不需要广播SSID,它们只需要搜索并连接到可用的无线网络,并根据网络配置进行数据传输。

STA模式的设备通常更注重移动性和便携性,它们可能不具备AP模式设备那样的高级网络管理功能。

WiFi模块在下载固件和工作时,其配置方法因模式的不同而有所差异。以下将针对这两种模式分别进行说明。

无论是STA模式还是AP模式,下载固件的步骤通常是一致的。

需要从官方网站或可靠的资源下载与WiFi模块型号相匹配的固件文件。确保选择与模块硬件版本和特性相兼容的固件。准备好用于刷写固件的工具,如固件刷写软件(如ESP8266Flasher)和USB转串口适配器(如果模块支持串口通信)。将WiFi模块通过适当的接口(如USB或SPI)连接到电脑。安装必要的驱动程序,以便电脑能够识别并与WiFi模块通信。然后,打开固件刷写软件。在固件刷写软件中,选择正确的串口或接口,并选择之前下载的固件文件。根据模块的文档,可能还需要设置一些刷写参数,如波特率、数据位等。确保模块处于刷写模式(可能需要按特定的按键组合或设置特定的引脚状态)。然后,在软件中点击开始刷写或类似的按钮,等待固件刷写完成。刷写完成后,断开连接并重新启动模块。通过检查模块的功能或查看固件版本信息,验证固件是否已成功安装。

WiFi模块的工作模式配置方法会根据是STA模式还是AP模式而有所不同。

STA模式配置方法

在STA模式下,WiFi模块需要连接到现有的无线网络。需要提供无线网络的SSID(网络名称)和密码(如果需要)。这通常通过串口通信或Web界面进行配置。一旦连接到无线网络,你可能还需要为WiFi模块设置静态IP地址,以便在网络中稳定地识别和访问它。配置完成后,测试WiFi模块是否能够成功连接到无线网络,并与其他设备或服务器进行通信。

AP模式配置方法

在AP模式下,你需要配置WiFi模块的SSID、密码、信道等参数,以创建一个无线网络访问点。这些参数同样可以通过串口通信或Web界面进行配置。配置完成后,启动WiFi模块的AP功能,使其开始广播无线信号。使用其他设备尝试连接到WiFi模块创建的无线网络,并测试连接的稳定性和通信功能。

AT 指令在设备利用串口进行通讯时有着广泛的作用, 终端设备能够通过 AT 指令控制适配器进行信息交互,例如呼叫、按键控制、传真、GPRS 等。然而在进行项目开发时, 有时需要频繁地使用 AT 指令,而 AT 命令的数据帧格式不固 定,AT指令需要逐条写入和解析,开发和维护比较麻烦。为 了简化系统开发,方便后期维护。

AT

AT+GMR

AT+CWMODE=1

AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"

AT+CWJAP="<ssid>","<password>"

#连接wifi/热点

案例:AT+CWJAP="3246904448ab","12345678"

AT+MQTTUSERCFG=0,1,"<Client ID>","<账号>","<密码>",0,0,""

#设置MQTT连接所需要的的参数,包括用户ID(不为空)、账号(admin)以及密码(public)

案例:AT+MQTTUSERCFG=0,1,"NULL","DHT11&hlicjfOx0OZ","B3A224ADA62B4798F5D88B87969A47032C402089",0,0,""

AT+MQTTCLIENTID=0,"<Client ID>"

#设置MQTT连接所需要的Client ID参数

案例:AT+MQTTCLIENTID=0,"DHT11|securemode=3\,signmethod=hmacsha1\,timestamp=123|"

AT+MQTTCONN=0,"<服务器地址>",<端口号>,<是否重连标志>

#连接mqtt服务器,设置服务器地址,端口号和是否重连标志(0或1)

案例:AT+MQTTCONN=0,"hlicjfOx0OZ.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1

AT+MQTTPUB=0,"<topic名>","<topic内容>",<QOS>,<retain> #发布一条topic

案例:AT+MQTTPUB=0,"/sys/hlicjfOx0OZ/DHT11/thing/event/property/post","{\"method\":\"thing.service.property.post\"\,\"id\":\"99119635\"\,\"params\":{\"CurrentHumidity\":99\,\"CurrentTemperature\":38}\,\"version\":\"1.0.0\"}",0,0

MAIN.C

#include "string.h"
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "dht11.h"
int main()
{
//	u8 temperature;  	    													 //温度获取变量
//	u8 humidity;																		 //湿度获取变量
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	LED_Init();
	USART1_Init(115200);//串口波特率115200
	GPIO_SetBits(LED_PORT,LED_PIN);	//LED=0 亮
	delay_ms(1000);					//延迟
	DHT11_Init();
	printf("AT+RST\r\n");		//第一步		复位		只用一次
	delay_ms(2000);					//延迟			
	printf("AT+CWMODE=1\r\n");		//第二步		模式  只用一次
	delay_ms(2000);					//延迟
	printf("AT\r\n");		//第一步		AT
	delay_ms(2000);			//延迟
	printf("AT+GMR\r\n");		//第一步		版本号
	delay_ms(2000);			//延迟
	printf("AT+CWJAP=\"XX\",\"XXXXXX\"\r\n");		//第四步 wifi热点
	delay_ms(2000);					//延迟
	GPIO_SetBits(LED_PORT,LED_PIN);		//LED=1	灭
	printf("AT+CIPSNTPCFG=1,8,\"ntp1.aliyun.com\"\r\n");		//第三步
	delay_ms(3000);					//延迟
	printf("AT+MQTTUSERCFG=0,1,\"NULL\",\"XXXXX\",\"XXXXXX\",0,0,\"\"\r\n");		//第五步
	delay_ms(3000);					//延迟			
	printf("AT+MQTTCLIENTID=0,\"XXXX|\"\r\n");		//第六步
	delay_ms(3000);					//延迟	
	
	printf("AT+MQTTCONN=0,\"XXXXXXX\",1883,1\r\n");		//第七步
	delay_ms(3000);					//延迟
	GPIO_ResetBits(LED_PORT,LED_PIN);	//LED=0 亮
//连接阿里云,让设备在线
//---------------------------------------------------------
//订阅发布指令
	printf("AT+MQTTSUB=0,\"/XXXXXXX\",1\r\n");		//订阅指令
	delay_ms(5000);			//延迟
	GPIO_SetBits(LED_PORT,LED_PIN);		//LED=1	灭

	printf("AT+MQTTPUB=0,\"/XXXXXXX\",\"{\\\"LED\\\":1}\",1,0\r\n");		//发数据{"LED":1}
	delay_ms(5000);			//延迟
	
	printf("AT+MQTTPUB=0,\"/XXXXXXX\",\"{\\\"LED\\\":0}\",0,0\r\n");		//发数据{"LED":0}
	delay_ms(5000);			//延迟
	GPIO_ResetBits(LED_PORT,LED_PIN);	

实验结果

STM32是一款微控制器系列,而MQTT是一种轻量级的消息传输协议STM32系列微控制器具有强大的处理能力和丰富的外设资源,可以广泛应用于各种嵌入式系统中。而MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的消息传输协议,适用于各种网络环境和资源受限的设备。它使用简单、轻量级的的协议格式来减少网络带宽和传输延迟。 STM32可以通过使用MQTT协议与其他设备或云平台进行通信。通常情况下,STM32作为客户端连接到一个MQTT服务器,并通过订阅和发布消息的方式与服务器进行交互。 通过MQTT协议STM32可以实现实时监测和控制,例如温度传感器、湿度传感器、光线传感器等等。STM32将传感器数据发布到MQTT服务器上的特定主题上,其他设备或平台可以订阅该主题,以获取实时数据。同时,STM32还可以接收其他设备或平台发布的命令或控制指令,从而实现对外设的远程控制。 使用STM32MQTT协议,可以构建很多实用的应用。例如,可以将STM32与温室设备连接,实时监测温度、湿度变化,根据需求自动控制灯光和喷水系统。或者将STM32与家庭自动化系统连接,通过发布消息控制家电设备的开关状态。 总而言之,STM32MQTT协议的结合,为嵌入式设备提供了一种简单、高效、实时的通信方式,可用于各种应用领域,如联网、工业自动化和智能家居等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值