风速监测报警作者:苏庆洪
概述风速监测报警系统基于 MCU芯片开发,支持采集多路从机分节点的风速数据,通过无线主从传输,主机收集数据,通过显示屏实时监视,在风速超过报警值时,通过GPIO输出接点信号,启动预警,降低自然风灾害对生命财产损失的风险。点对点无线传输距离可达 2000m ~ 3000m,具有传输距离远的特点,通过组网可以覆盖大面积预警区域,该系统适用于野外对风速敏感的设备,房屋进行监测,特别是各风景名胜区,地处名山大川,其载客索道缆车,当线路上风速过大时,可以和主控系统联动,进行减速和停机控制。
开发环境硬件:stm32f103-atk-mini
RT-Thread版本:RT-Thread V 4.0.3
开发工具及版本:MDK 5.25
RT-Thread使用情况概述内核部分:调度器,信号量,消息队列。
调度器:创建多个线程来实现不同的工作。
信号量:用来同步线程。
设备框架:通过 RT-Thread提供的 I/O 设备管理接口来访问串口硬件。
硬件框架从机MCU 定时读取 风速传感器数据,然后通过 ATK-LORA 传输到主机,主机对数据进行比例运算处理,LCD显示和GPIO输出
软件框架说明MCU 上电之后首先完成板级外设的初始化,图形界面littleVGL初始化,定时请求数据,串口中断释放信号量,线程实时处理数据,并显示、控制。
软件模块说明主机创建了3个线程,1个信号量。
main:完成初始化,创建信号量,打开串口设备,设置中断响应函数,创建线程,定时请求从机数据。
lcd_thread_entry:开启littlevgl的事务处理lv_task_handler()。
usart_thread_entry:take信号量的方式,获取到信号量之后,开始数据接收,正确收到数据后,显示,并输出IO信号。
演示效果模拟仪表显示,绿色指针为当前风速值,红色指针为故障上限,黄色指针为报警上限
拖动滑块左右移动可以设定报警值
切换软件开关,对太阳能电池进行充电
B站地址
比赛感悟时代的发展,MCU的性能也越来越强,万物互联的需求也愈加强烈,使用RTOS来实现物与网的链接,是时代发展的潮流,当我接触到RT-Thread 这个国人自主RTOS后,经过对比其他的freertos,ucos等,RT-Thread代码很优雅,组件功能多,小而美,我开始了深入的学习。
通过 RT-Thread官网上的文档中心,我学习了多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等,但是感觉认识很肤浅,对于信号量是怎么实现的?rtos是怎么达到实时性?还是一头雾水。
于是又学习了火哥出版的《RT-Thread 内核实现与应用开发实战—基于STM32》,手把手,一步一步实现了RT-Thread,终于有了深刻认识,可以实际操作了。
通过这次比赛的项目实践,我对RT-Thread有了全新的认识,他不仅仅是一个嵌入式RTOS,当各种组件有序结合起来,必能够发挥出更大能量,体现无与伦比的扩展性和灵活性,无愧小而美物联网操作系统的称呼,现在RT-Thread smart已经上线了,无疑体现出来RT-Thread的蓬勃生命力和无限美好的发展前景,我相信选择RT-Thread绝对是正确的。
这个小作品,还有待完善,现在仅能通过触摸屏显示一些数据,并调整参数,还得增加一些功能,比如省电管理,远程开关机,还得解决开发硬件、软件的版权问题,在此仅作为演示,给下一步的开发提供一些思路,距离产品还有很长的路要走。
美中不足的地方,RT-Thread studio编译代码偏大,以至于我这个mini板flash和ram容量不够,下一步还得好好研究,怎样裁剪,用RT-Thread studio做产品的问题。
最后感谢主办方提供了这么好的一个平台,不仅能展示自我,也能学到很多知识,还要感谢论坛上那些解决我问题以及制作软件包的大佬,希望有朝一日我也能给开源社区贡献一份自己力量。
1