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

  • 1.概述
  • 2.实现步骤
    • 2.1.MQTT.fx模拟器与阿里云通信
    • 2.2.STM32与阿里云通信
  • 3. 搭建云平台
    • 3.1.登陆阿里云平台
  • 4.连接阿里云平台(MQTT.fx)
  • 5.连接阿里云平台(STM32)
    • 5.1.调试信息
    • 5.2.源码分析
      • 5.2.1. 向服务器发起连接(CONNECT)
      • 5.2.2.服务器回复连接回执(CONNACK)
      • 5.2.3.向服务器发起订阅(SUBSCRIBE)
      • 5.2.4.服务器回复订阅回执(SUBACK)
      • 5.2.5.向服务器发起心跳包请求(PINGREQ)
      • 5.2.6.服务器回复心跳回执(PINGRESP)
      • 5.2.7.服务器发布消息
      • 5.2.8.轮询,读MQTT返回数据类型
      • 5.2.9.向服务器发送dht12温湿度传感器的数据
  • 6.连接信息
  • 7.实物图

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.根据阿里云的文档创建一个产品,创建一个这个产品的设备,并添加一个自定义功能

4.我们先创建一个产品,创建流程如下:

然后点击确认即可。

5.产品弄好了,就要在产品下面挂上设备

6.设置下添加的设备的名字

7.查看添加的设备信息


注意,以下信息是连接阿里云平台的时候需要用到的。

提示:后面咱就会使用下面三个参数(三元组)组合MQTT参数
“ProductKey”: “a1Q",
“DeviceName”: “dht12”,
“DeviceSecret”: "7G
****************VsU”

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

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

2.1.打开软件

2.2.配置相关信息




3.连接调试
3.1.查看Topic列表,一会需要用到

3.2.发布LED开关和温湿度功能。

3.3.添加自定义功能,




3.4.最后一定要记得发布。

3.5.连接服务器

3.6.推送的内容需要在阿里云平台点击

3.7.推送温湿度数据到阿里云平台服务器上


3.8.到此,MQTT.fx模拟器调试就结束了。

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

5.1.调试信息

5.2.源码分析

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

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

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

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

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

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

5.2.7.服务器发布消息


当服务器发布消息的时候,会进入此函数,对数据进行解析数据,数据格式为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返回数据类型

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

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

6.连接信息


注释:串口通信这块使用串口DMA的方式,开启串口DMA中断收发的方式,同时使用了freertos操作系统。

7.实物图

下一章:基于STM32+MQTT连接阿里云获取网络时间
链接: link.(https://blog.csdn.net/qq_39721016/article/details/123090137?spm=1001.2014.3001.5501)

基于STM32+FreeRtos+ESP8266+MQTT连接阿里云相关推荐

  1. STM32+ESP8266+MQTT连接阿里云服务器(一、烧写MQTT固件)

    用STM32连接阿里云服务器首先ESP8266得支持MQTT的AT指令,所以!!!在连接阿里云服务器时,得先对ESP8266进行固件替换. 工具 硬件:ATK-ESP8266.USB转串口 软件:fl ...

  2. STM32+ESP8266+MQTT连接阿里云服务器(四、STM32连接阿里云平台)

    材料: STM32F103.ESP8266.串口 第三章介绍了利用串口调试助手+AT指令连接阿里云平台的,现在用代码去实现其功能,利用STM32的串口2跟WIFI模块进行数据通信即可.这里我实现的功能 ...

  3. 【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)

    具体如何在阿里云创建一个 MQTT 服务器我就不写出来了,可以去百度一下(主要是我忘了,不好演示). 有关 MQTT 报文的一些标识在我前面的一篇文章中讲过,感兴趣的可以去看看(有关代码部分讲解的内容 ...

  4. 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)

    要想实现通过代码实现STM32连入阿里云服务器,要首先实现使用AT指令通过串口连接阿里云,大家可以参考我之前的两篇文章,链接如下 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流 ...

  5. 中移4G模块-ML302-OpenCpu开发-(MQTT连接阿里云-RRPC通讯)

    B站:https://space.bilibili.com/309103931 中移4G模块-ML302专栏:https://blog.csdn.net/qq_33259323/category_10 ...

  6. NodeMCU 通过MQTT 连接阿里云物联网

    NodeMCU 通过MQTT 连接阿里云物联网 前言: 这是第一个帖子,希望以后所有的东西都能记录在CSDN吧!自己在调试过程中也借鉴了很多人的帖子,这里总结出来,方便以后查阅,也方便他人! 1.No ...

  7. ESP8266+dht11 连接阿里云 上传温湿度

    ESP8266+dht11 连接阿里云 上传温湿度 ①在刚开始研究的时候也是一头雾水,在看了几天各路大神写的博客和视频之后,最终得以实现. ②接下来让我详述一下整个过程 需要编写代码,云端创建产品和设 ...

  8. 【阿里云生活物联网架构师专题 ④】分享可商用的ESP8266 SDK连接阿里云物联网生活平台的在线远程升级OTA笔记。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...

  9. ML307S使用MQTT连接阿里云---动态注册连接教程

    ML307S使用MQTT连接阿里云-动态注册连接教程 文章目录 ML307S使用MQTT连接阿里云---动态注册连接教程 前言 一.阿里云的动态注册流程简介 二.连接步骤 1.在阿里云物联网控制台增加 ...

最新文章

  1. Windows API一日一练(一)第一个应用程序 使用应用程序句柄 使用命令行参数 MessageBox函数 RegisterClass和RegisterClassEx函数
  2. AndroidStudio动态调试smali
  3. h3csnmp管理命令_H3C S5500V2-EI系列以太网交换机 命令参考-Release 1118-6W100_网络管理和监控命令参考_SNMP命令-新华三集团-H3C...
  4. Linux JDK升级
  5. android8按键布局,机身按键接口布局合理_手机Android频道-中关村在线
  6. CleanCodeHandbook Chapter 2: Math(17-19)
  7. 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  8. 博士申请——Research Proposal
  9. 基于FPGA的ADS1256讲解
  10. lol服务器维护补偿,LOL官方:服务器崩溃补偿!全服再次免费赠送皮肤一款!
  11. 一起学OCP:oracle-082题库及解析(21-40)
  12. Android设备唯一识别码的获取
  13. 《密码编码学与网络安全》William Stalling著---学习笔记(二)【知识点速过】【数字签名+密钥管理分发+用户认证】
  14. centos 7 zip解压乱码
  15. 分享优秀的3D电影下载网站(下载最新 3D高清电影网站)
  16. 基于SSM+MySQL的校园共享单车管理系统
  17. Ubuntu 设定壁纸自动切换的shell脚本
  18. assert用法...
  19. Qt4中学习使用QtCharts绘图二:声波绘制
  20. CSS3动画正方体3D旋转

热门文章

  1. 快速拿下CKA认证考试,这些要求和tips你得知道
  2. linux下微生物软件,微生物多样性专题 | 扩增子测序分析实战(三)软件安装
  3. C#把文字放到图片上
  4. PDF转成Word或PPT后还是图片是怎么回事?
  5. 如何确认电脑USB口哪个快(USB 3.0 3.2 Gen1 Gen2)
  6. 从两张Excel表格中筛选相同的值
  7. 5.8G微米波雷达感应方案
  8. 第0讲:树莓派是什么?能做什么?
  9. 【matlab】 动态绘制三维心形图
  10. 老子云打造3D技术云服务平台,加速三维互联网变革进程