打印
[uCOS/RTOS]

【RT-Thread作品秀】STM32F103+RT-Thread温湿度时钟

[复制链接]
5122|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 DoubleMonth 于 2020-7-3 22:30 编辑

RT-Thread作品秀】STM32F103+RT-Thread温湿度时钟
作者:DoubleMonth

概述时钟都存在误差,长时间的误差积累会严重影响时钟的准确 性,本设计主要用于家庭,办公室等环境,可以根据GPS授时或网络UTC时间自动校时,可实现无人值守校时,同时也可以显示当前环境温湿度,可以检测环境亮度,并根据亮度自动调节数码管显示亮度。使用GPS模块的授时时钟功能,精度高达20亿分之一秒。可以脱离网络的限制,实现精准时钟的功能。本设计使用STM32C8T6做为主控,使用ATGM336H-GPS模块,使用10位数码管显示,使用si7020温湿度传感器,使用BH1750检测当前环境亮度,可以同时显示时间,温度、湿度;亮度可以根据当前的环境亮度自动调节。使用了PCF8563时钟芯片,在没有进行GPS授时时读取时钟芯片的时间。预留了EPS8266模块方案,可以实现网络时钟功能。软件分模块设计,使用RT-Thread操作系统进行任务的分配与调用。效果图


RT-Thread使用情况概述
使用了RT-Thread架构,在v3.1.3的基础上进行自己的程序部分编写。使用了IIC功能,UART功能,GPIO功能,GPIO模拟IIC组件,Finsh组件,信号量等等。对各个不同的模块分别建立线程,可以在使用不同模块时进行不同的任务调度,也方便对各个模块进行调试。
硬件框架
硬件主要包括电源部分,主芯片电路,各传感器电路,按键电路,数码管驱动电路等。

软件框架说明
软件方面使用了RT-Thread操作系统,主要使用了RT-Thread架构,使用了GPIO模拟IIC组件,Finsh工具,信号量等功能。对每个传感器和数码管芯片分别建立线程,在调试时可以根据不同的模块进行调试。

软件模块说明为各模块建立一个线程,分别设定优先级,时间片,等参数。在每个线程中设定不同的延时时间来实现线程的运行时间。延时时间主要依靠各传感器信息更新的重要性来安排,比如按键操作需要实时检测,设定为20ms,光照度的实时性要求不高,设定为5000ms等。
其中按键检测使用了状态机的原理,可以实现按键的短按,长按状态,并使用了信号量来发送控制的状态。本设计使用两个按键来实现时间的设定功能。GPS模块上电后进行初始化,在检测到GPS授时信息正确时,为了避免长时间读取GPS时间信息,可以设定在一个固定的时间段进行时间的更新,并将授时后的时间更新到PCF8563时钟芯片内。平时读取PCF8563时钟芯片的时间,并且带有后备电池,在断电后可以继续走时。这样即可以保证时间的精准性,也可以避免GPS无信号时带来的时钟误差或时钟停止。

演示效果
https://www.bilibili.com/video/BV1yz411e713/


代码地址
https://github.com/DoubleMonth/21IC-RTThread.git

原理图
【RT-Thread作品秀】STM32F103+RT-Thread温湿度时钟.zip (58.04 KB)

【RT-Thread作品秀】STM32F103+RT-Thread温湿度时钟.pdf

411.38 KB

使用特权

评论回复
评论
zhengfish 2020-12-21 19:49 回复TA
不错不错,看看。 

相关帖子

沙发
mo_chen| | 2020-12-11 16:58 | 只看该作者
做的不错,可是STM32F103C8的ROM够用吗?Git上看了源码,但是缺少部分。

使用特权

评论回复
板凳
syt2012| | 2021-7-30 10:28 | 只看该作者
很棒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

1

粉丝