【RT Thread作品秀】车载环境参数采集终端 电路方案
概述车载环境参数采集终端基于STM32H750 系列芯片(RT-ART-PI开发板)开发,支持采集多种环境参数,包括车内温度,湿度,气压,噪音,有毒有害气体,车辆震动冲击加速度等。本地通过串口与 PC 端通讯,上位机实时显示并存储数据。该系统适用于记录车辆的行驶车况及车内的环境参数等。 开发环境硬件:STM32H750-RT-ART-Pi开发板 扩展板:博士BME280温湿度气压三合一传感器扩展板、ADI ADXL375扩展板、精讯畅通CO、NH3有害气体模组、噪声板卡等。 RT-Thread版本:RT-Thread V 4.0.2 开发工具及版本:RT-Thread-Studio RT-Thread使用情况概述内核部分:调度器,信号量,线程,中断,设备。 调度器:创建多个线程来实现不同的工作。 信号量:用来同步线程和资源分配。 SPI框架:使用 SPI 框架来驱动ADXL375。 I2C框架:使用 I2C 框架来驱动BME280。 串口驱动框架:使用串口框架来采集CO浓度,NH3浓度和噪音分贝。 设备:使用了SPI总线,SPI设备,uart,I2C总线等。 硬件框架软件框架 MCU 上电之后初始化外设接口和传感器工作参数配置,之后会持续获取传感器采样值并通过串口以50Hz的速率发送数据到上位机。 软件模块说明设备: UART: uart1、uart4 SPI:SPI2总线,SPI20设备(ADXL375) I2C: I2C4 PIN:GPIOI8、GPIOC15、GPIOD13、GPIOH4 线程: 1、LED_Blink:LED闪烁线程,用来指示当前系统的运行状态,输出数据时蓝灯闪烁,否则红灯闪烁。 2、Print_Task: 通过串口4将采集到的数据以50Hz频率、字符形式上传至PC端。 3、Noise_Task: 通过串口1以5Hz的速率读取噪音分贝。 4、NH3_Task: 通过串口1以2Hz的速率读取NH3气体浓度。 5、CO_Task: 通过串口1以2Hz的速率读取CO气体浓度。 6、BMP280_Task: 通过I2C4读取读取温度、湿度、气压等原始数据并转换为实际数值。 7、ADXL375_Task: 通过SPI2总线读取加速度数值,加速度采样频率为3200Hz,并记录20ms内绝对最大值。 8、button_Task: 读取GPIOH4电平,低电平输出数据,高电平停止输出。 信号量: 1、water_mark_sem: ADXL375水印中断,通过GPIOD13中断输入,用来同步ADXL375_Task线程及时从器件FIFO中读取样本。 2、serial1_sem:用来指示串口1可用状况,线程CO_Task、NH3_Task、Noise_Task会先获取此信号量,只有获取到之后才能使用串口1,并在使用完之后释放此信号量。此信号量用来避免串口访问冲突。 3、serial1_tx_sem: 串口1通过中断模式发送数据,此信号指示数据发送完成。 4、serial1_rx_sem:串口1通过中断模式接收数据,此信号指示数据接收完成。 演示效果比赛感悟非常感谢主办方提供的这次契机,让我有幸一窥当下MCU发展的主流趋势。通过学习RT-Thread,我学到了很多很多以前从未接触到的概念,编程思想等等,让我对MCU编程有了全新的认识。尤其是其对象的概念,让我对嵌入式编程有了全新的理解。在此之前我还在裸机,寄存器,外设,驱动包等等之间徘徊,深陷其中不能自拔。偶然有幸接触到RT-Thread,让我醍醐灌顶。原来还有这样骚操作。 遥想大学还在玩51,毕业之后种种原因并未从事单片机嵌入式方向的工作。转眼间五六年过去,去年重拾MCU,又误入AVR mage64系列(手动狗头)。当真正开始学习STM32系列单片机系列之后,和寄存器大眼瞪小眼,外设五花八门,标准库,HAL库等等资料多到眼花缭乱,各种参考资料久久不得啃下,自学之路崎岖又坎坷。此次大赛有幸初次相识RT-thread,一见方恨晚。 时代的发展,MCU的性能也越来越强,万物互联的需求也愈加强烈,使用RTOS来实现物与网的链接,是时代发展的潮流。接下来的嵌入式开发里紧绕RT-Thread这颗大树,汲取难得的养料。 最后感谢主办方提供了这么好的一个平台,不仅能展示自我,也能学到很多知识,还要感谢论坛上那些解决我问题以及制作软件包的大佬,希望有朝一日我也能给开源社区贡献一份自己力量。
用户评论