基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

这篇具有很好参考价值的文章主要介绍了基于STM32+FreeRtos+ESP8266+MQTT连接阿里云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

实现通过stm32f103c8t6+操作系统(freertos)读取dht12温湿度传感器的数据,采用ESP8266连接网络,经过MQTT协议连接阿里云IOT,进行数据的传输,以及服务器发送数据控制LED的亮灭,包括消息的发布和订阅等操作,完成云端和设备端的通讯。

2.实现步骤

2.1.MQTT.fx模拟器与阿里云通信

首先,我们使用MQTT.fx模拟器,通过模拟的方式去和阿里云平台进行通讯,此步骤是为了验证我们是否完成了阿里云平台的 搭建。其次是为了获取一些相关的日志信息。

2.2.STM32与阿里云通信

其次,我们使用STM32F103C8T6,通过ESP8266连接网络,进行阿里云平台的通讯,实现本次设计的最终方案。本设计使用了dht12温湿度传感器进行读取温度,并通过阿里云平台进行发布,控制我们的LED灯的亮灭。

3. 搭建云平台

3.1.登陆阿里云平台

1.登陆网址:https://www.aliyun.com/
2.找到物联网平台
3.根据阿里云的文档创建一个产品,创建一个这个产品的设备,并添加一个自定义功能
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
4.我们先创建一个产品,创建流程如下:
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
然后点击确认即可。

5.产品弄好了,就要在产品下面挂上设备
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
6.设置下添加的设备的名字
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

7.查看添加的设备信息
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
注意,以下信息是连接阿里云平台的时候需要用到的。
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
提示:后面咱就会使用下面三个参数(三元组)组合MQTT参数
“ProductKey”: “a1Q",
“DeviceName”: “dht12”,
“DeviceSecret”: "7G
****************VsU”

4.连接阿里云平台(MQTT.fx)

1.这里需要用到两个软件
1.1.阿里云物联平台配置_32
1.2.MQTT.fx
2.打开MQTT.fx软件

2.1.打开软件

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

2.2.配置相关信息

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

3.连接调试
3.1.查看Topic列表,一会需要用到
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.2.发布LED开关和温湿度功能。
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.3.添加自定义功能,
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.4.最后一定要记得发布。
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

3.5.连接服务器
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.6.推送的内容需要在阿里云平台点击
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.7.推送温湿度数据到阿里云平台服务器上
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
3.8.到此,MQTT.fx模拟器调试就结束了。

5.连接阿里云平台(STM32)

5.1.调试信息

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.源码分析

5.2.1. 向服务器发起连接(CONNECT)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.2.服务器回复连接回执(CONNACK)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.3.向服务器发起订阅(SUBSCRIBE)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.4.服务器回复订阅回执(SUBACK)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.5.向服务器发起心跳包请求(PINGREQ)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.6.服务器回复心跳回执(PINGRESP)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.7.服务器发布消息

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
当服务器发布消息的时候,会进入此函数,对数据进行解析数据,数据格式为json格式,如代码所示。

u8 MQTT_Publish(unsigned char* data,int len)
{
	int buflen = sizeof(buf);
	int rc = 0;
	unsigned char dup;
	int qos;
	unsigned char retained = 0;
	unsigned short msgid = 1;
	int payloadlen_in;
	unsigned char* payload_in;
	MQTTString receivedTopic;
		
	cJSON *json , *json_params, *json_id, *json_led, *json_display;
	
	memcpy(buf,data,len);
	
	rc = MQTTDeserialize_publish(&dup, &qos, &retained, &msgid, &receivedTopic,&payload_in, &payloadlen_in, (unsigned char*)buf, buflen);	//服务器有推送信息
	printf("message arrived : %s\r\n", payload_in);
	
	json = cJSON_Parse((char *)payload_in);			//解析数据包
	if (!json)  
	{  
		printf("Error before: [%s]\r\n",cJSON_GetErrorPtr());  
	} 
	else
	{
		json_id = cJSON_GetObjectItem(json , "id"); 
		if(json_id->type == cJSON_String)
		{
			printf("id:%s\r\n", json_id->valuestring);  
		}
		json_params = cJSON_GetObjectItem(json , "params");  
		if(json_params)  
		{  
			if(cJSON_GetObjectItem(json_params, "LED0"))
			{
				json_led  = cJSON_GetObjectItem(json_params, "LED0");
				if(json_led->type == cJSON_Number)
				{
					printf("LED:%d\r\n", json_led->valueint);  
					if(json_led->valueint == 1)
					{
						LED0 = 0;
					}
					else
					{
						LED0 = 1;
					}			
				}
			}
			if(cJSON_GetObjectItem(json_params, "display"))
			{
				json_display = cJSON_GetObjectItem(json_params, "display");
				if (json_display->type == cJSON_String)  
				{  
					//暂不处理
				}  
			}
		} 
	}
	cJSON_Delete(json);
	
	return TRUE;
}

5.2.8.轮询,读MQTT返回数据类型

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

5.2.9.向服务器发送dht12温湿度传感器的数据

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

注释:由于本设计使用了ESP8266来联网,ESP8266联网部分代码就不再过多解释,可参考相关的例子进行。

6.连接信息

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
注释:串口通信这块使用串口DMA的方式,开启串口DMA中断收发的方式,同时使用了freertos操作系统。

7.实物图

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

下一章:基于STM32+MQTT连接阿里云获取网络时间
链接: link.(https://blog.csdn.net/qq_39721016/article/details/123090137?spm=1001.2014.3001.5501)文章来源地址https://www.toymoban.com/news/detail-455504.html

到了这里,关于基于STM32+FreeRtos+ESP8266+MQTT连接阿里云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)

    前言:在开发过程中,几乎踩便了所有大坑小坑总结出的文章,我是把坑踩满了,帮助更过小白快速上手,如有错误之处,还麻烦各位大佬帮忙指正、 目录 一、ESP-01s介绍         1、ESP-01s管脚功能:                 模组启动模式说明:         2、初始配置和

    2024年02月19日
    浏览(44)
  • STM32通过ESP8266连接MQTT服务器

            ESP8266有多种连接MQTT方式,本文介绍使用的是AT MQTT版本固件的ESP01s,基于此固件版本进行说明。本文所需硬件:STM32F103RCT6、LED、ESP01s、DHT11,实现功能:温湿度上传和远程开关灯的基本功能。 B站视频教程:STM32+ESP8266+DHT11_哔哩哔哩_bilibili gitee: STM32_Share: STM32、DHT

    2024年02月09日
    浏览(51)
  • STM32通过esp8266连接WiFi接入MQTT服务器

    上文我们讲到如何搭建本地MQTT服务器http://t.csdn.cn/aHNcO,现在介绍如何通过stm32连接MQTT 一.首先我们初始化esp8266这里我们使用的是USART4与其通信代码如下 二.通过数据间隔时间来判断是否是一串数据如果间隔时间大于30ms则判定为不是一串数据,接收缓冲器清零。 代码如下!

    2024年02月07日
    浏览(55)
  • 【IoT网络层】STM32 + ESP8266 +MQTT + 阿里云物联网平台 |开源,附资料|

    🌟博主领域:嵌入式领域人工智能软件开发 本节目标: 通过MQTT.fx模拟连接或通过串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266 ESP-01来连接网络,获取设备数据发送到阿里云物联网平台并显示且oled显

    2024年02月04日
    浏览(61)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第2节-编写STM32程序初步实现ESP8266上云与发布订阅消息

    本节目标: 本节实现,硬件连接STM32与ESP8266,编写STM32程序通过at命令方式实现STM32+ESP8266与阿里云物联网平台发布订阅消息,本节最终实现初步的发布订阅消息(能够发布消息给阿里云物联网平台但无外设数据,能够订阅阿里云物联网平台发送的消息来开关LED灯)。 硬件连接

    2024年02月03日
    浏览(70)
  • 新手小白必看——基于STM32+ESP8266模块连接阿里云平台读取传感器数据(从0到1,包教包会)

    目录 前言             本次我们学习一下STM32F103驱动ESP8266去连接阿里云的实操过程,在次过程中我会详细讲解开发过程中遇到的问题以及面对问题的解决,希望大家在这篇博客里面也有所收获。 一、ESP8266WIFI模块的固件库刷新(MQTT) 1.固件库刷新 1.1 固件库烧录下载 1.2 固

    2024年04月26日
    浏览(43)
  • STM32驱动ESP8266连接阿里云(1)----使用AT指令连接阿里云

    购买的ESP8266一般没带MQTT固件,所以无法通过MQTT指令与云平台通信,需要烧录固件。 MQTT固件可以在安信可科技进行下载。 交流qun:6_15061293。 https://docs.espressif.com/projects/esp-at/zh_CN/release-v2.2.0.0_esp8266/index.html 下载器可以使用乐鑫官方的下载器。 https://www.espressif.com.cn/zh-hans/s

    2024年02月03日
    浏览(61)
  • STM32+ESP8266+DHT11通过MQTT协议连接新版ONENET云平台上传数据

    项目讲解视频 新版 云平台搭建视频演示 单片机代码修改演示视频 APP参数修改 实物演示 前段时间ONENET云平台进行了升级更新,此前平台的多协议接入(包含旧版MQTT、HTTP、EDP、Modbus、TCP透传等)接口已经隐藏,后续应该会下架,为了能够后续继续使用ONENET云平台,就需要学

    2024年02月09日
    浏览(43)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置

    本节目标: 本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU,STM32/MCU可以将数据发给实际的手机APP。 配置步骤主要分为三步: 1.创建数据源;2.创建数据目的;3.创建解析器

    2024年02月03日
    浏览(63)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第1节-阿里云配置+MQTT.fx模拟与使用AT命令发布订阅消息

    🌟博主领域:嵌入式领域人工智能软件开发 本节目标: 通过MQTT.fx模拟连接或通过串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266 ESP-01来连接网络,获取设备数据发送到阿里云物联网平台并显示且oled显

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包