STM32F1系列+ESP |
您所在的位置:网站首页 › esp8266-12f烧录 › STM32F1系列+ESP |
联系作者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.话不多说,上代码 阿里云参数设置: //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"; /********************************************************************************************************************************************/ 连接阿里云: 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); 读取DHT11温湿度传感器和上报信息至阿里云: //采集传感器数据 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,以执行下一次计数 } 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光照传感器数据上报。 如需要全套代码,请私信我。有偿提供服务。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |