基于STM32+FreeRTOS的温湿度监测系统
注:本文在基础上移植了FreeRTOS操作系统,相比于裸机,系统通过任务隔离与优先级调度、阻塞式同步与互斥、可靠的任务间通信和更好的可观测性,显著提升了实时性、稳定性与可扩展性。
·
基于STM32+FreeRTOS的温湿度监测系统
注:本文在基于 STM32F103 + ESP8266 实现 DHT11 温湿度数据上传华为云 IoT 平台基础上移植了FreeRTOS操作系统,相比于裸机,系统通过任务隔离与优先级调度、阻塞式同步与互斥、可靠的任务间通信和更好的可观测性,显著提升了实时性、稳定性与可扩展性
V1版本

- WiFi_Task每隔固定时间重新连接WiFi与云平台(不管是否断联),且无自动重连机制
- 使用全局变量存储温湿度,仅使用信号量同步,存在断线数据丢失的问题
V2版本

WiFi模块增加自动重连与心跳机制
- 设置重试次数,提高WiFi连接成功几率

- 增加心跳机制随时检测是否掉线,如果掉线自动重连,相比于V1版本(无论是否掉线都重连)提高了系统的稳定性

环形缓冲区存储数据
在V1版本中,我们仅仅使用全局变脸+信号量来存储与保证数据被正确传递,但无法保证断线时的数据被正确上传,因此我们增加环形缓冲区模块,实现解耦传感器生产者和云上传消费者

环形缓冲区结构,内含 FreeRTOS 互斥量确保多任务读写时并发安全,无论是从缓冲区中读写数据还是获取缓冲区内数据的个数,都需要先获取信号量,结束后释放信号量
V3版本
改进环形缓冲区结构

相比于V2版本,RingBuffer_t内增加了计数值信号量items,用来表示可读条目数,而删除了count,这样做的好处是当环形缓冲区内有数据时会通知消费者(Cloud_Task),若环形缓冲区内没有数据,消费者会阻塞等待,相比于上一版本(无脑轮询),释放了CPU,提高效率

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)