项目简介
本项目借助STM32 Nucleo - 64开发板,开发了一个智能温度控制照明系统。系统根据温度传感器捕获的环境温度,产生PWM信号控制RGB LED显示不同颜色的灯光,同时将检测到的温度值和LED要显示的颜色打印在LCD屏幕上,为人们营造更舒适的环境。
项目的主要特性和功能
- 多线程并发执行:利用实时操作系统(RTOS)在STM32F446RE微控制器上实现多任务并发,涵盖温度读取、LED颜色更新和LCD显示更新。
- 温度读取与处理:通过LM35温度传感器获取环境温度模拟信号,经STM32的ADC转换器转换为数字信号,并用卡尔曼滤波器稳定温度值。
- RGB LED颜色控制:依据稳定后的温度值,通过PWM信号控制RGB LED颜色,温度不同时LED颜色逐渐变化。
- LCD显示功能:在2x16 LCD屏幕上实时显示当前温度值和对应的LED颜色。
安装使用步骤
硬件连接
- 准备所需硬件:STM32 Nucleo - 64开发板(STM32F446RE)、2x16 LCD显示、RGB LEDs、220欧姆电阻、10k电位器、LM35温度传感器、跳线、面包板。
- RGB LEDs连接:在每个RGB引脚添加220欧姆电阻,防止损坏。
- LCD屏幕连接:将电位器中间可变输出引脚连到LCD的Vo引脚调节对比度,电位器左右引脚分别接5V和地。
- LM35温度传感器连接:中间模拟输出引脚接STM32 Nucleo板的模拟输入引脚A0,Vdd引脚接3.3V,接地引脚接GND。
软件配置与代码烧录
- STM32CubeMX配置:
- 多线程配置:选FREERTOS,接口设为CMSIS RTOS V2,创建readtemp、printled和printlcd三个任务/线程,调整优先级,重命名入口函数,时间基准源改为TIM5。
- ADC转换配置:选ADC1,启用IN0(对应PA0),分辨率设为12位,采样时间为15个时钟周期。
- PWM控制配置:选TIM1,时钟源设为内部时钟源,通道1、2、3设为PWM Generation CH1、CH2和CH3,预分频器设为1538,计数器值为255。
- LCD显示配置:在引脚视图中启用并声明PB0 - PB7为GPIO输出引脚,分别标记为RS、RW、EN、D4 - D7,在Keil中包含lcd.c和lcd.h库。
- Keil uVision开发与烧录:在Keil uVision中开发主程序,用C++编译器构建和编译代码,最后将代码加载到STM32 Nucleo板。
系统运行
上电后,系统自动开始工作,每100毫秒读取一次环境温度,每4秒更新一次RGB LED颜色并在LCD屏幕上显示温度和对应颜色。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】