赞
踩
目 录
一、摘要
二、项目准备材料
三、硬件总体设计
四、软件代码设计
五、整体测试联调
六、效果展示
一、摘要
本项目基于天问51-Core最小系统开发,自行设计PCB电路,主要包括DHT11、ESP8266、OLED三个主要外设模块。此项目实现的三大功能:1、基本功能:单片机将DHT11获取的温湿度数据通过OLED屏显示 2、进阶功能:利用WIFI模块将DHT11温湿度数据上传到云平台 3、高级功能:实现微信小程序网络请求接收云平台温度数据,并下发命令控制单片机。
二、项目准备材料
此项目开发需要准备的材料包含硬件和软件。硬件部分:天问51-Core核心板、STC_Link下载线、OLED0.96寸屏、ESP-01S模块、DHT11模块。软件部分:Keil编程软件、STC—ISP串口调试助手、嘉立创EDA开发工具。
三、硬件总体设计
此项目的硬件部分利用立创EDA进行设计PCB电路,目前嘉立创打板已经不能薅羊毛了,此项目的PCB尺寸为99.5*74,大佬5块板共20元,也可以接受。PCB上大都采用DIP双列直插封装,方便焊接。ESP8266接串口4(P02、P03),OLED屏采用四针的IIC接口(P25-SCL、P24-SDA),DHT11接P07口,单线协议传输。
电路原理图
PCB效果图
四、软件代码设计
软件代码部分是项目的核心内容之一,也是最繁杂的环节。硬件设计好之后,软件代码要根据硬件接口去进行编写。
OLED使用IIC通信协议驱动点亮,起初的时候也是没有一次点亮,调试了一会,要注意字库取模的选取,列行式-共阴极。此外,OLED只供电而没有正确的IIC协议驱动是不会亮的。
DHT11温湿度模块单线协议读取数据,网上有很多开源的例子,大家可以去找移植进代码里。
最后就是ESP8266,WIFI模块是基于AT指令的,实现串口转WIFI透传数据,关于AT指令这里不多做讲解。WIFI与单片机的串口4相连,首先要进行串口的初始化,波特率选115200,还会用到定时器(定时器超时接收判断)
WIFI模块连接EMQ MQTT云平台
其中代码在设计的时候考虑到效率的问题,采用时间片轮的程序设计架构。利用定时器T0中断划分三个时间片。当定时时间为100ms时,OLED屏刷新;当定时时间为1000ms时,上传温度数据到云平台;当定时时间为2000ms时,DHT11读取温湿度数据。如此各个任务在不同的情况下执行,结构更为合理。
五、整体测试联调
软件部分设计完成,接下来就是整体调试看现象。不得不说,写代码半小时,调试得大半天。整个的调试问题百漏,而且有些BUG难以发现。程序在运行的时候,发现WIFI模块一直连不上云平台,调试了好久,最后终于成功了。AT指令在发送的时候,要设置好延时等待时间,而且AT指令前后要间隔好时间,对每次模组返回的消息进行判断,这里我用的是定时器超时接收,设定标志位,当串口4接收到数据产生中断,定时器中断里标志位置1定时到2s时,认为没有数据返回,开始进行字符串判断。
串口调试信息
六、效果展示
整体的效果如下:
整个项目大概效果就是这样,功能基本实现,略有瑕疵,下发命令这个地方还有一点问题,我后续会进一步完善,大家如果还有什么问题,可以进一步探讨,感谢大家的支持。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。