赞
踩
1.STM32F103VET6开发板一块(其他STM32F1系列的也行)
2.ESP-01S模块一个(或者用ESP-12F)、
3.DHT11温湿度模块
1.Keil5标准库开发
2.阿里云物联网平台
3.阿里云WEB可视化界面
可参考往期文章(1条消息) ESP8266-01S+MQTT+阿里云数据传输_esp826601s支持mqtt吗_二筒rrrr的博客-CSDN博客
- //WIFI名称
- char WIFI_ID[20]="ErTong";
- //WIFI密码
- char WIFI_PASSWARD[20]="123456789";
- //这里直接复制自己的信息即可,不需要修改
- char UserName[100]="ESP32_Test&a1w9cjmCq1V";
- char Password[100]="2B6E99F09198A23F810DED878895DE3037D814FA";
- //这里由于字符串的转义字符问题,将Clientld差分成三个字符串方便转换
- //请读者对着下面的示例进行转换
- //比如:332211|securemode=3,signmethod=hmacsha1,timestamp=112233| 即可差分成下面三个字符串
- char Clientld1[30]="332211|securemode=3";
- char Clientld2[30]="signmethod=hmacsha1";
- char Clientld3[30]="timestamp=112233|";
- char ALY_Connect[100]="a1w9cjmCq1V.iot-as-mqtt.cn-shanghai.aliyuncs.com";
- //设置阿里云属性上报的Topic类,和参数标识符
- char Set_mqtt[60]="/sys/a1w9cjmCq1V/ESP32_Test/thing/event/property/post";
- char Parameter_identifier1[20]="TEMP";
- char Parameter_identifier2[20]="Humidity";
- char Parameter_identifier3[20]="Light";
- /********************************************************************************************************************************************/
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
-
- USART3_SendString("AT+RST\r\n");
- delay_ms(8000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
-
-
-
- USART3_SendString("AT+CWMODE=3\r\n"); //设置ESP8266的连接方式
- delay_ms(8000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
- sprintf(strTem,"AT+CWJAP=\"%s\",\"%s\"\r\n",WIFI_ID,WIFI_PASSWARD);
- USART3_SendString(strTem);
- delay_ms(8000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
-
- sprintf(strTem,"AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"\r\n",UserName,Password);
- USART3_SendString(strTem);
- delay_ms(5000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
- sprintf(strTem,"AT+MQTTCLIENTID=0,\"%s\\,%s\\,%s\"\r\n",Clientld1,Clientld2,Clientld3);
- USART3_SendString(strTem);
- delay_ms(5000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
- sprintf(strTem,"AT+MQTTCONN=0,\"%s\",1883,1\r\n",ALY_Connect);
- USART3_SendString(strTem);
- delay_ms(10000);
- printf("%s\r\n",xUSART.USART3ReceivedBuffer);
-
-
-
- USART3_SendString("ATE0\r\n");
- delay_ms(2000);
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- //采集传感器数据
- Temperature=DHT11_GetTemperature(GPIOE,GPIO_Pin_0);
- Humidity=DHT11_GetHumidity(GPIOE,GPIO_Pin_0);
- if (xTIM.TIM7Counter >= 1000) // 每1000ms执行一次
- {
- LED_BLUE_TOGGLE; // 蓝色LED 每1秒闪灭一次,以监察系统正常工作
- printf("温度:%d,湿度:%d\r\n",Temperature,Humidity);
- //通过ESP8266上报数据至阿里云
- 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));
- USART3_SendString(Temp_aly);
-
- xTIM.TIM7Counter = 0; // 计数清0,以执行下一次计数
- }
函数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博客
如果觉得上述界面不好看,且不便于查看数据。
请移步至另一篇文章,该文主要阐述怎么配置阿里云可视化界面
传送门:
(1条消息) 零基础教你搭建阿里云物联网WEB可视化界面_二筒rrrr的博客-CSDN博客
希望文章能对大家有所帮助。谢谢大家!!!!
代码功能为DHT11温湿度数据上报和BH1750光照传感器数据上报。
如需要全套代码,请私信我。有偿提供服务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。