构建基于STM32的环境监测系统,使用裸机驱动器读取温度和湿度,并显示实时数据
扫描二维码
随时随地手机看文章
我们的项目是一个实时温湿度监测系统,使用STM32微控制器,AHT21温湿度传感器和带有8080并行接口的ST7789液晶显示器构建。
系统通过AHT21传感器连续测量周围环境的温度和湿度。STM32不使用内置库,而是通过定制软件I²C(位敲击)驱动程序与传感器通信,从而完全控制时序和数据传输。
当测量被触发时,STM32向AHT21传感器发送所需的命令,并等待传感器完成其内部转换。在接收到原始数据字节后,微控制器处理并将其转换为可读的温度(°C)和湿度(%)值。
计算值然后实时显示在LCD屏幕上。显示器使用8位8080并行接口,由定制的STM32 LCD驱动程序驱动,该驱动程序以两个8位传输方式发送16位RGB颜色数据。这允许快速和平滑的屏幕更新,而不依赖于外部图形库。
系统每秒刷新传感器读数,提供稳定、准确的环境数据。实现了一个轻量级的自定义GUI和位图字体渲染器,以清晰有效地显示值。
步骤1 -引脚映射和硬件配置
在编写任何代码之前,第一步是仔细分析RT-Spark (STM32F407)引脚,并了解外部组件如何连接到微控制器。
上图显示了在STM32CubeMX中配置的STM32引脚分配,突出显示了用于AHT21传感器和ST7789 LCD显示器的引脚。
•AHT21传感器连接(软件I²C)
•PE0→AHT21_SDA(数据线)
•PE1→AHT21_SCL(时钟线)
这些引脚配置为开漏GPIO输出,以实现基于软件的I²C(位敲打)接口。这允许完全控制I²C时序,而不是使用硬件I²C外设,这对于学习和调试低级通信非常有用。
•LCD接口(FSMC - 8080并行总线)
•ST7789 LCD采用8080式并行接口,通过STM32的FSMC(柔性静态存储器控制器)连接。
•FSMC数据总线(LCD - 8位模式)
LCD显示器以8位并行方式使用FSMC(柔性静态存储器控制器)连接。
•Pd14→fsmc_d0
•Pd15→fsmc_d1
•PD13→FSMC_A18用作LCD的控制/地址线(通常映射为RS / DC)
步骤2 -驱动程序实现
编写自定义驱动程序来控制传感器和显示器,而不使用外部库。
•液晶驱动程序
•支持8位FSMC传输
•将16位RGB565颜色数据拆分为两个8位写入
•包括自定义绘图、文本和位图字体函数
LCD驱动支持8位FSMC传输拆分16位RGB565颜色数据为两个8位写入包括自定义绘图,文本,和位图字体功能
•AHT21司机
•实现软件I²C协议(Start, Stop, ACK, Send/Read)
•发送测量命令并读取原始传感器数据
•将原始值转换为温度(°C)和湿度(%)
AHT21 driver实现软件I²C协议(Start, Stop, ACK, Send/Read)发送测量命令,读取原始传感器数据,将原始值转换为温度(°C)和湿度(%)
步骤3 -系统集成和测试
所有驱动程序都集成在main.c中,以创建一个完整的工作系统。
•每秒读取传感器数据
•移动平均滤波器平滑温度和湿度值
•处理值实时显示在LCD上
•心跳像素确认系统正在运行
•如果通信失败,错误处理将复位传感器
步骤4 -实时数据处理和显示
上图显示了系统的运行情况,在ST7789液晶显示器上显示实时温度和湿度读数。STM32每秒持续与AHT21传感器通信,应用移动平均滤波器平滑数据,并实时更新屏幕。
•温度以红色显示,单位为℃。
•湿度以蓝色显示,单位为%。
角落里闪烁的小像素充当心跳指示灯,确认主程序循环正常运行。
如果传感器读取失败,则短暂显示错误消息(“read Err”),STM32自动重新初始化传感器以保持连续运行。
这一步演示了硬件、驱动程序、过滤和显示的集成,展示了系统如何提供稳定、可读和实时的环境数据。
本文编译自hackster.io





