当前位置:   article > 正文

基于天问51-Core自制开发WIFI模块连接MQTT&巴法云平台-微信小程序显示温度数据_天问51开发板运行的程序实例

天问51开发板运行的程序实例

目 录

一、摘要

二、项目准备材料

三、硬件总体设计

四、软件代码设计

五、整体测试联调

六、效果展示

一、摘要

本项目基于天问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时,认为没有数据返回,开始进行字符串判断。

串口调试信息

六、效果展示

整体的效果如下:

整个项目大概效果就是这样,功能基本实现,略有瑕疵,下发命令这个地方还有一点问题,我后续会进一步完善,大家如果还有什么问题,可以进一步探讨,感谢大家的支持。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/239357
推荐阅读
相关标签
  

闽ICP备14008679号