emmmm, 经过多日的学习探索+尝试,算是完成了一个勉强算得上的小项目。
硬件:
STM32F103C8T6(标准库) 、ESP8266(non-OS SDK) 、串口屏(陶晶弛)、 DHT11、OLED(iic)
功能:
STM32采集DHT11的温湿度数据,并将温湿度数据发送给串口屏与ESP8266。
串口屏显示实时温湿度数据及曲线图。8266则会连接WiFi并连接到百度天工平台,然后将串口接收的数据上传到百度天工平台。
同时在百度天工平台创建了简单的温湿度仪表盘,将温湿度数据可视化。(有网的地方都可查看实时的温湿度数据)
Main:
把个人看来比较重要的几个部分拿出来说一说。这篇文章一方面希望可以帮助和我差不多的小白少走点弯路,一方面就想记录记录经过多日学习调试的成果!
废话少说! 开始吧。
ESP8266 non-OS SDK 串口接收
想要处理串口接收的数据,只需找到uart.c 下的【uart_recvTask】函数。我们需要做的只是【新建一个缓存数组、将接收的数据赋值给临时数组、处理接收数据】。
8266接收数据说明:8266接收到的数据以一个字节为基本单位。(STM32也如此) [一个字节]----[0~255]----[0x00~0xFF]
举个例子:
以下方串口结束数据处理程序为例
stm32发送给8266的数据为 “DATAXXXX”,会被保存到【cache[]】中 DATA --- 设置的数据标识
8266会判断接收到的一串数据 前四个字节是否为DATA, 如果是则表明该串数据为STM32发送的温湿度数据。 XXXX --- 四个字节的温湿度数据
一个温度数据 =【整数部分+小数部分】
第一个字节代表整数部分,第二个字节代表小数部分。
//串口使用uart0 (uart1只能发送)
//串口接收处理只需在如下【uart_recvTask】函数