当前位置:   article > 正文

STM32F1系列+ESP-12F(ESP-01S)连接阿里云的详细代码实现_esp-12f连接stm32

esp-12f连接stm32

联系作者Q:2456640595

一、实验硬件与平台

硬件平台:

1.STM32F103VET6开发板一块(其他STM32F1系列的也行)

2.ESP-01S模块一个(或者用ESP-12F)、

3.DHT11温湿度模块

软件平台:

1.Keil5标准库开发

2.阿里云物联网平台

3.阿里云WEB可视化界面

二、代码编写

1.先往ESP-12F(或ESP-01S)里烧录MQTT固件

可参考往期文章(1条消息) ESP8266-01S+MQTT+阿里云数据传输_esp826601s支持mqtt吗_二筒rrrr的博客-CSDN博客

2.话不多说,上代码

阿里云参数设置:

  1. //WIFI名称
  2. char WIFI_ID[20]="ErTong";
  3. //WIFI密码
  4. char WIFI_PASSWARD[20]="123456789";
  5. //这里直接复制自己的信息即可,不需要修改
  6. char UserName[100]="ESP32_Test&a1w9cjmCq1V";
  7. char Password[100]="2B6E99F09198A23F810DED878895DE3037D814FA";
  8. //这里由于字符串的转义字符问题,将Clientld差分成三个字符串方便转换
  9. //请读者对着下面的示例进行转换
  10. //比如:332211|securemode=3,signmethod=hmacsha1,timestamp=112233| 即可差分成下面三个字符串
  11. char Clientld1[30]="332211|securemode=3";
  12. char Clientld2[30]="signmethod=hmacsha1";
  13. char Clientld3[30]="timestamp=112233|";
  14. char ALY_Connect[100]="a1w9cjmCq1V.iot-as-mqtt.cn-shanghai.aliyuncs.com";
  15. //设置阿里云属性上报的Topic类,和参数标识符
  16. char Set_mqtt[60]="/sys/a1w9cjmCq1V/ESP32_Test/thing/event/property/post";
  17. char Parameter_identifier1[20]="TEMP";
  18. char Parameter_identifier2[20]="Humidity";
  19. char Parameter_identifier3[20]="Light";
  20. /********************************************************************************************************************************************/

连接阿里云: 

  1. USART3_SendString("AT+RST\r\n");
  2. delay_ms(8000);
  3. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  4. USART3_SendString("AT+CWMODE=3\r\n"); //设置ESP8266的连接方式
  5. delay_ms(8000);
  6. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  7. sprintf(strTem,"AT+CWJAP=\"%s\",\"%s\"\r\n",WIFI_ID,WIFI_PASSWARD);
  8. USART3_SendString(strTem);
  9. delay_ms(8000);
  10. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  11. sprintf(strTem,"AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"\r\n",UserName,Password);
  12. USART3_SendString(strTem);
  13. delay_ms(5000);
  14. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  15. sprintf(strTem,"AT+MQTTCLIENTID=0,\"%s\\,%s\\,%s\"\r\n",Clientld1,Clientld2,Clientld3);
  16. USART3_SendString(strTem);
  17. delay_ms(5000);
  18. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  19. sprintf(strTem,"AT+MQTTCONN=0,\"%s\",1883,1\r\n",ALY_Connect);
  20. USART3_SendString(strTem);
  21. delay_ms(10000);
  22. printf("%s\r\n",xUSART.USART3ReceivedBuffer);
  23. USART3_SendString("ATE0\r\n");
  24. delay_ms(2000);

 读取DHT11温湿度传感器和上报信息至阿里云:

  1. //采集传感器数据
  2. Temperature=DHT11_GetTemperature(GPIOE,GPIO_Pin_0);
  3. Humidity=DHT11_GetHumidity(GPIOE,GPIO_Pin_0);
  4. if (xTIM.TIM7Counter >= 1000) // 每1000ms执行一次
  5. {
  6. LED_BLUE_TOGGLE; // 蓝色LED 每1秒闪灭一次,以监察系统正常工作
  7. printf("温度:%d,湿度:%d\r\n",Temperature,Humidity);
  8. //通过ESP8266上报数据至阿里云
  9. sprintf(Temp_aly,"AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\\,\\\"id\\\":\\\"2012934117\\\"\\\,\\\"params\\\":{\\\"%s\\\":%d\\\,\\\"%s\\\":%d\\\,\\\"%s\\\":%d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n",Set_mqtt,Parameter_identifier1,Temperature,Parameter_identifier2,Humidity,Parameter_identifier3,(uint16_t)(Light));
  10. USART3_SendString(Temp_aly);
  11. xTIM.TIM7Counter = 0; // 计数清0,以执行下一次计数
  12. }

3.函数讲解

函数USART3_SendString的作用为:向串口三发送字符串类型数据

函数sprintf为C语言中的基础函数,这里不做解释。若有疑惑,请读者自行百度。

函数delay_ms为延时函数。使用示例:delay_ms(1000)表示延时1S

函数printf已经重定义到串口一,将ESP-01S(或ESP-12F)返回的数据,通过STM32的串口一发送出去,方便调式。

STM32发送给ESP-01S(或ESP-12F)的字符串含义这里不做解释。详细请参考:

(1条消息) ESP8266-01S+MQTT+阿里云数据传输_esp826601s支持mqtt吗_二筒rrrr的博客-CSDN博客

4.初步效果

1.串口输出的信息如下:

2. DHT11的串口输出:

 3.阿里云接受到的信息:

 

至此,预期结果全部实现。 

三、可视化界面开发

如果觉得上述界面不好看,且不便于查看数据。

请移步至另一篇文章,该文主要阐述怎么配置阿里云可视化界面

传送门:

(1条消息) 零基础教你搭建阿里云物联网WEB可视化界面_二筒rrrr的博客-CSDN博客

希望文章能对大家有所帮助。谢谢大家!!!!

代码功能为DHT11温湿度数据上报和BH1750光照传感器数据上报。

如需要全套代码,请私信我。有偿提供服务。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号