基于STM32的智能台灯设计与实现(完整项目)
本文设计了一款基于STM32F103C8T6单片机的智能台灯系统,通过集成光敏、超声波和光电红外传感器,实现了环境光照监测、自动调光、坐姿检测等功能。系统采用模块化设计,包含主控、环境监测、OLED显示、蓝牙通信等硬件模块,支持自动/手动模式切换、亮度调节、远程手机APP控制。测试表明,该系统能有效改善照明环境、纠正不良坐姿,具有响应快速、操作便捷等特点,在家居和学习场景中具有较高实用价值。
基于STM32的智能台灯设计与实现
摘要
随着智能化技术的快速发展和人们健康意识的提升,传统台灯已难以满足现代用户对便捷性、舒适性和健康性的需求。长期不良的照明环境和坐姿习惯,易导致视力下降、颈椎劳损等问题,尤其对青少年的生长发育造成不利影响。本文设计了一款基于STM32F103C8T6单片机的智能台灯系统,整合环境监测、自动调光、坐姿检测、模式控制、蓝牙远程管控等多项功能,实现照明的智能化、人性化调控,为用户提供健康、便捷的照明体验。
系统以STM32F103C8T6为主控芯片,通过光敏传感器实时采集环境光照强度,HC-SR04超声波传感器采集用户与台灯的距离信息,光电红外传感器检测是否有人靠近;借助4针IIC协议的OLED显示屏,直观展示当前工作模式、环境光强、超声波距离、计时时间及人体检测状态;支持自动与手动两种控制模式,自动模式下可根据人体检测结果和环境光照强度自动开关灯并调节亮度,同时通过超声波距离检测实现坐姿异常报警;手动模式下可通过按键调节灯光亮度、开启/关闭计时功能;通过BT04-A蓝牙模块与手机APP建立通信,实现远程模式切换、亮度调节、计时控制等操作。本文详细阐述了系统的总体设计方案、硬件电路设计、软件逻辑设计及系统测试结果,验证了系统的可行性与实用性。测试表明,该智能台灯运行稳定、响应迅速、操作便捷,能够有效改善照明环境、纠正不良坐姿,具有较高的性价比和推广价值。
关键词:STM32F103C8T6;智能台灯;自动调光;坐姿检测;蓝牙远程控制;环境监测

第一章 绪论
1.1 研究背景与意义
在现代生活、学习和工作中,台灯作为重要的照明设备,广泛应用于家庭、学校、办公室等场景。传统台灯多采用手动开关和固定亮度设计,存在诸多弊端:一方面,无法根据环境光照强度自动调节亮度,过亮或过暗的照明环境易造成视觉疲劳,长期使用会损伤视力;另一方面,缺乏坐姿检测功能,用户长期弯腰、低头等不良坐姿,易引发颈椎、腰椎疾病,尤其对处于生长发育阶段的青少年危害显著。
随着嵌入式技术、传感器技术和无线通信技术的飞速发展,智能照明设备逐渐成为市场主流。基于STM32单片机的智能控制系统,具有成本低廉、功耗低、集成度高、控制精度高、扩展性强等优势,能够整合多种传感器和执行设备,实现照明的智能化调控。因此,研发一款集环境监测、自动调光、坐姿检测、蓝牙远程控制于一体的智能台灯,解决传统台灯的不足,为用户提供健康、便捷、人性化的照明体验,具有重要的现实意义和应用价值,对推动智能照明设备的普及和发展具有积极作用。
1.2 国内外研究现状
国外智能台灯产业起步较早,技术相对成熟,已形成较为完善的产品体系,代表性企业如飞利浦、小米(国际版)、明基等,其产品具有亮度调节精准、功能丰富、设计人性化等特点,部分高端产品还集成了人体感应、光线感应、坐姿提醒、手机APP控制等功能,但此类产品存在成本高昂、功能冗余、操作门槛较高等问题,难以在中小学生群体和普通家庭中普及。
国内智能台灯产业近年来发展迅猛,各类基于单片机的智能台灯不断涌现,多以STM32、51单片机为主控芯片,整合光线感应、人体感应、亮度调节等基础功能,成本相对较低,性价比高。随着蓝牙、WIFI等无线通信技术的普及,越来越多的智能台灯加入了远程管控功能,通过手机APP实现亮度调节、模式切换等操作,提升了设备的便捷性。但目前多数国内产品仍存在功能单一、坐姿检测精度不足、自动调光响应滞后、蓝牙通信不稳定等问题,无法完全满足用户对健康照明和便捷操作的需求。因此,本文设计的集环境监测、自动调光、坐姿检测、蓝牙远程控制、计时功能于一体的智能台灯,针对性解决上述问题,具有较强的市场竞争力和应用前景。
1.3 研究内容与目标
1.3.1 研究内容
本文围绕基于STM32的智能台灯的设计与实现展开研究,结合实际应用需求,具体研究内容如下:
- 系统总体方案设计:明确系统的功能需求与性能指标,设计系统的总体架构,划分主控模块、环境监测模块、显示模块、照明模块、报警模块、蓝牙通信模块、按键模块等功能模块,确定各模块的连接方式与工作流程。
- 硬件电路设计:根据系统总体方案,设计各功能模块的硬件电路,包括STM32最小系统电路、光敏传感器接口电路、HC-SR04超声波传感器接口电路、光电红外传感器接口电路、大功率LED照明驱动电路、OLED显示电路、有源蜂鸣器报警电路、BT04-A蓝牙通信电路及按键电路,确保电路的稳定性与可靠性。
- 软件逻辑设计:基于Keil开发环境,设计系统的软件程序,包括主程序、环境数据采集程序、数据处理程序、显示程序、自动调光程序、坐姿检测与报警程序、模式控制程序、计时程序、蓝牙通信程序及按键处理程序,实现系统的各项功能,全程不涉及具体代码实现。
- 蓝牙APP配置与调试:利用手机APP开发工具,配置蓝牙通信功能,实现APP与硬件系统的通信,完成远程模式切换、亮度调节、计时控制等功能的调试。
- 系统测试与调试:搭建系统测试平台,对系统的各项功能进行全面测试,包括环境监测精度测试、自动调光功能测试、坐姿检测与报警测试、手动控制测试、显示功能测试、蓝牙通信测试、计时功能测试,排查问题并进行调试优化,验证系统的可行性与实用性。
1.3.2 研究目标
本文的研究目标是设计一款成本低廉、性能稳定、功能完善、操作便捷的基于STM32的智能台灯,具体目标如下:
- 实现环境精准监测:通过光敏传感器、HC-SR04超声波传感器、光电红外传感器,分别精准采集环境光照强度、用户与台灯距离、人体存在状态,确保数据的真实性与实时性。
- 实现自动调光功能:自动模式下,检测到有人且环境光照强度小于预设阈值时自动开灯,并根据环境光强自动调节灯光亮度,环境光越暗,灯光亮度越高,反之则越低,维持舒适的照明环境。
- 实现坐姿检测与报警:自动模式下,超声波传感器检测到用户与台灯距离小于预设阈值时,触发有源蜂鸣器报警,提醒用户调整坐姿,养成良好的使用习惯。
- 实现模式切换与手动控制:通过按键实现自动模式与手动模式的自由切换;手动模式下,可通过按键调节灯光亮度,开启或关闭计时功能,满足用户个性化操作需求。
- 实现阈值灵活修改:通过按键可灵活修改光照强度阈值和超声波距离阈值,适配不同用户的使用需求和场景。
- 实现实时数据显示:通过OLED显示屏清晰显示当前工作模式、环境光强、超声波距离、计时时间及人体检测状态,方便用户本地查看。
- 实现蓝牙远程管控:通过BT04-A蓝牙模块连接手机APP,用户可通过APP远程实现模式切换、亮度调节、计时控制等操作,提升设备便捷性。
1.4 论文结构安排
本文共分为六章,具体结构安排如下:
第一章为绪论,阐述本文的研究背景与意义、国内外研究现状、研究内容与目标及论文结构安排,为全文的研究奠定基础。
第二章为系统总体方案设计,明确系统的功能需求与性能指标,设计系统的总体架构,划分各功能模块,阐述各模块的功能及系统的工作流程。
第三章为系统硬件电路设计,详细设计各功能模块的硬件电路,包括主控模块、环境监测模块、照明模块等,绘制电路原理图并说明电路工作原理。
第四章为系统软件设计,设计系统的软件总体流程,详细阐述各功能模块的程序逻辑,包括环境数据采集、自动调光、蓝牙通信等程序的实现思路,不涉及具体代码。
第五章为系统测试与调试,搭建测试平台,对系统的各项功能进行测试,分析测试结果并进行调试优化,验证系统的可行性与实用性。
第六章为总结与展望,总结本文的研究成果,分析系统存在的不足,并对未来的改进方向进行展望。
第二章 系统总体方案设计
2.1 系统功能需求分析
结合智能台灯的实际应用场景和用户需求,本系统需具备环境监测、自动调光、坐姿检测、模式控制、亮度调节、阈值修改、计时、蓝牙远程管控及异常报警等核心功能,具体功能需求如下:
- 环境监测功能:通过光敏传感器实时采集环境光照强度信息,HC-SR04超声波传感器实时采集用户与台灯的距离信息,光电红外传感器检测是否有人靠近,将采集到的信号传输给主控模块,为后续调控功能提供数据依据。
- OLED显示功能:通过4针IIC协议的OLED显示屏,实时显示当前系统工作模式(自动/手动)、环境光照强度数值及单位、超声波距离数值及单位、计时时间、人体检测状态(有人/无人),方便用户直观查看设备工作情况。
- 自动调光功能:自动模式下,光电红外传感器检测到有人,且光敏传感器采集的环境光照强度小于预设阈值时,系统自动开启LED照明灯;同时根据环境光照强度自动调节灯光亮度,环境光越暗,灯光亮度越高,环境光越亮,灯光亮度越低,确保照明舒适度。
- 坐姿检测与报警功能:自动模式下,HC-SR04超声波传感器采集的距离信息小于预设阈值时,判定为坐姿异常,触发有源蜂鸣器持续报警,提醒用户调整坐姿,异常解除后(距离大于阈值),报警自动停止。
- 模式控制功能:通过独立按键实现自动模式与手动模式的自由切换,切换后系统保存当前模式,下次上电时默认恢复上次工作模式,满足用户不同使用场景的需求。
- 亮度调节功能:手动模式下,用户可通过独立按键调节LED照明灯的亮度,支持多档位亮度调节,实现个性化照明需求。
- 阈值修改功能:通过按键可进入阈值设置界面,灵活调整光照强度阈值(控制自动开灯的光照临界值)和超声波距离阈值(控制坐姿报警的距离临界值),适配不同用户和场景。
- 计时功能:手动模式下,用户可通过按键开启和关闭计时功能,计时时间实时显示在OLED显示屏上,方便用户控制学习、工作时长,养成良好的时间管理习惯。
- 蓝牙通信功能:通过BT04-A蓝牙模块实现系统与手机APP的双向通信,完成环境数据、设备状态上传与控制指令接收。
- 蓝牙远程管控功能:用户通过手机APP,可远程查看当前环境光强、超声波距离、计时时间、设备工作模式及人体检测状态,同时可下发控制指令,实现模式切换、亮度调节、计时开启/关闭等操作。
2.2 系统性能指标
为确保系统的实用性与可靠性,结合智能台灯的应用场景,本系统设定以下性能指标:
- 环境监测指标:光照强度检测范围0-1000lux,精度±5lux,采集周期0.5秒;超声波距离检测范围2-400cm,精度±0.5cm,采集周期0.5秒;人体检测距离0-50cm,检测响应时间≤0.3秒,检测准确率≥98%。
- 照明控制指标:LED照明灯亮度调节范围0-100%,支持10档位调节,亮度调节响应时间≤0.5秒;自动调光精度±10lux,确保照明舒适度。
- 显示功能指标:OLED显示屏分辨率128×64,4针IIC协议,响应时间≤50ms,显示清晰、无残影,可同时显示多项参数与状态,视角≥160°。
- 蓝牙通信指标:BT04-A蓝牙模块支持蓝牙4.0协议,通信距离≥10米(室内),通信稳定,数据传输延迟≤1s,支持双向通信,连接成功率≥99%。
- 报警功能指标:有源蜂鸣器音量≥80dB,报警响应时间≤0.3秒,坐姿异常解除后自动停止报警,可通过按键手动关闭报警。
- 计时功能指标:计时范围0-99分59秒,计时精度±1秒,支持计时暂停、重启、清零操作。
- 工作参数:工作电压5V直流,功耗≤500mW,工作环境温度0-40℃,湿度20%-80%RH,运行稳定,无故障工作时间≥1000小时。
- 按键响应:按键响应时间≤500ms,支持长按与短按操作,长按用于阈值调节、亮度调节,短按用于模式切换、计时控制、报警关闭。
2.3 系统总体架构设计
本系统采用模块化设计思想,以STM32F103C8T6单片机作为主控核心,整合环境监测模块、照明模块、显示模块、报警模块、蓝牙通信模块、按键模块,通过手机APP实现远程管控,系统总体架构分为硬件层、软件层和APP层三个部分,具体架构如下:
2.3.1 硬件层
硬件层是系统的基础,负责环境数据采集、照明驱动、数据显示、蓝牙通信及报警提醒,主要包括以下模块:
- 主控模块:以STM32F103C8T6最小系统板为核心,负责接收各模块的数据,进行数据处理、分析与存储,控制各执行模块的工作,响应按键操作与APP指令,是系统的控制中心。
- 环境监测模块:由光敏传感器、HC-SR04超声波传感器、光电红外传感器组成,分别负责采集环境光照强度、用户与台灯距离、人体存在状态,将采集到的信号传输给主控模块,为系统调控提供数据支撑。
- 照明模块:由大功率LED照明灯模块和驱动电路组成,负责接收主控模块的控制指令,实现灯光的开启/关闭和亮度调节,提供舒适的照明环境。
- 显示模块:采用4针IIC协议的OLED显示屏,负责实时显示当前工作模式、环境光强、超声波距离、计时时间及人体检测状态,方便用户本地查看。
- 报警模块:由有源蜂鸣器组成,负责在坐姿异常时触发报警,提醒用户调整坐姿,保障用户使用健康。
- 蓝牙通信模块:采用BT04-A蓝牙模块,负责建立主控模块与手机APP之间的通信连接,实现环境数据、设备状态上传与控制指令接收。
- 按键模块:由多个独立按键组成,负责实现模式切换、亮度调节、阈值修改、计时控制、报警关闭等功能,响应用户的本地操作。
2.3.2 软件层
软件层是系统的核心,负责控制硬件模块的工作,实现各项功能,主要包括主程序、环境数据采集程序、数据处理程序、显示程序、自动调光程序、坐姿检测与报警程序、模式控制程序、计时程序、蓝牙通信程序及按键处理程序,各程序模块相互协作,实现系统的正常运行,全程不涉及具体代码编写。
2.3.3 APP层
APP层采用手机APP实现,负责与硬件系统通过蓝牙通信,接收硬件上传的环境数据、设备状态信息,显示在APP界面上;同时允许用户下发控制指令,控制模式切换、亮度调节、计时开启/关闭等操作,实现远程管控功能。APP界面设计简洁直观,操作便捷,适合各类用户使用。
2.4 系统工作流程
系统上电后,首先进行初始化操作,包括STM32F103C8T6主控芯片初始化、各传感器(光敏、超声波、光电红外)初始化、OLED显示屏初始化、BT04-A蓝牙模块初始化、LED照明模块初始化、有源蜂鸣器初始化、按键初始化。初始化完成后,系统默认进入自动模式,开始正常工作,具体工作流程如下:
- 数据采集:主控模块控制光敏传感器、HC-SR04超声波传感器、光电红外传感器,分别实时采集环境光照强度、用户与台灯距离、人体存在状态,将采集到的信号传输至主控模块,采集周期设置为0.5秒,确保数据的实时性。
- 数据处理:主控模块对采集到的环境数据进行分析处理,将其转换为用户可理解的数值,与预设的光照强度阈值、超声波距离阈值进行比较,判断当前环境状态和坐姿是否正常,同时确定照明模块、报警模块的控制逻辑。
- 实时显示:主控模块将处理后的环境数据、系统工作模式、计时时间、人体检测状态,发送至OLED显示屏,实时显示,方便用户本地查看。
- 模式判断与设备控制:
- 自动模式:根据人体检测结果和环境光照强度,自动执行调控操作:光电红外传感器检测到“有人”,且光照强度<预设阈值→开启LED灯,并根据光照强度自动调节亮度;光照强度≥预设阈值→关闭LED灯;超声波距离<预设阈值→触发有源蜂鸣器报警;距离≥阈值→停止报警。
- 手动模式:若用户通过按键切换至手动模式,系统停止自动调光和坐姿报警功能,用户可通过按键手动控制LED灯的开启/关闭、亮度调节,通过按键开启/关闭计时功能,操作结果同步显示在OLED屏幕上,并上传至手机APP。
- 蓝牙通信:BT04-A蓝牙模块将处理后的环境数据、设备工作状态、计时时间,实时上传至手机APP;同时接收APP发送的控制指令(如模式切换、亮度调节、计时控制),主控模块解析指令后,执行相应操作,并将更新后的状态同步显示在OLED屏幕上,上传至APP。
- 按键响应:若用户按下按键,主控模块响应按键操作,实现模式切换、亮度调节、阈值修改、计时控制、报警关闭等功能,操作完成后保存当前状态(如阈值、工作模式、计时时间),下次上电时自动恢复。
- 计时功能:手动模式下,计时开启后,系统开始计时,实时更新计时时间并显示在OLED屏幕上;计时关闭后,计时时间清零或暂停,可通过按键重启计时。
系统循环执行上述流程,实现环境监测、自动调光、坐姿检测、本地操作与远程管控的协同工作,确保智能台灯稳定运行,为用户提供健康、便捷的照明体验。
第三章 系统硬件电路设计
3.1 硬件设计原则
为确保系统硬件电路的稳定性、可靠性、实用性和经济性,在设计过程中遵循以下原则:
- 实用性原则:根据系统功能需求选择合适的元器件,确保元器件的性能满足系统指标,同时兼顾成本,选用性价比高的元器件,便于批量生产和推广应用,贴合智能台灯的家用、学习场景需求。
- 稳定性原则:合理设计电路布局,减少电磁干扰和信号衰减,选用质量可靠的元器件,增加滤波、防抖等设计,确保电路在不同环境下能够稳定工作,避免因电路故障影响照明效果和检测精度。
- 简洁性原则:电路设计简洁明了,避免复杂的电路结构,便于调试、维护和后期升级,同时减少元器件的使用,降低系统功耗,延长设备使用寿命。
- 扩展性原则:电路设计预留一定的接口,便于后续功能扩展,如增加充电模块、定时关闭功能等,提升系统的扩展性和适用性。
- 安全性原则:针对大功率LED照明灯,设计限流、稳压电路,避免电流过大损坏元器件;同时隔离主控电路与照明电路,保护主控芯片,防止短路、过载等安全隐患。
3.2 主要元器件选型
根据系统总体方案和性能指标,结合元器件的性价比和实用性,本系统选用的主要元器件如下,各元器件的选型理由及参数如下:
- 主控芯片:STM32F103C8T6最小系统板,采用ARM Cortex-M3内核,主频72MHz,拥有64KB Flash和20KB RAM,具备丰富的GPIO接口、UART接口、I2C接口、ADC接口等,能够满足系统的控制和数据处理需求,且成本低廉、功耗小、通用性强,是嵌入式系统的常用主控芯片,适合智能台灯的控制需求。
- 光敏传感器:选用模拟式光敏电阻,检测范围0-1000lux,精度±5lux,无需复杂的信号转换电路,通过ADC接口与主控芯片连接,能够实时采集环境光照强度,价格低廉、接线简单、响应迅速,适合智能台灯的环境监测需求。
- 超声波传感器:HC-SR04超声波传感器,检测范围2-400cm,精度±0.5cm,采用GPIO接口与主控芯片通信,具备触发信号输入和回声信号输出,无需复杂的驱动电路,能够精准采集用户与台灯的距离,适合坐姿检测功能的实现。
- 光电红外传感器:选用反射式光电红外传感器,检测距离0-50cm,检测响应时间≤0.3秒,检测准确率≥98%,通过GPIO接口与主控芯片连接,能够快速检测人体是否靠近,结构简单、功耗低,适合智能台灯的人体感应需求。
- OLED显示屏:128×64分辨率,4针IIC协议,体积小、功耗低、显示清晰、响应迅速,IIC通信方式占用GPIO引脚少,简化了电路设计,能够实时显示多项参数与状态,适合智能台灯的显示需求。
- 蓝牙模块:BT04-A蓝牙模块,支持蓝牙4.0协议,采用UART通信方式,体积小、功耗低、通信稳定,通信距离可达10米以上(室内),能够快速实现硬件系统与手机APP的双向通信,性价比高,适合智能台灯的远程管控需求。
- 大功率LED照明灯模块:5V直流供电,功率5W,亮度可调,发光均匀、能耗低、使用寿命长,能够提供充足且舒适的照明,适合智能台灯的照明需求,可通过PWM脉冲宽度调制实现亮度调节。
- 有源蜂鸣器:5V有源蜂鸣器,音量≥80dB,响应迅速,无需外部驱动电路,通电即可发声,用于坐姿异常时的报警提醒,结构简单、成本低廉。
- 其他元器件:选用电阻、电容、电源模块、三极管、MOS管、保险丝等辅助元器件,电阻用于限流、分压,电容用于滤波、防抖,MOS管用于驱动大功率LED灯,保险丝用于过载保护,电源模块提供稳定的5V直流电源,确保电路正常工作。
3.3 主控模块电路设计
主控模块以STM32F103C8T6最小系统板为核心,主要包括最小系统电路、电源电路、复位电路和时钟电路,是系统的控制中心,负责统筹各模块的工作,确保系统正常运行。
3.3.1 最小系统电路
STM32F103C8T6的最小系统电路是确保单片机正常工作的基础,包括电源接口、复位接口、时钟接口和下载接口。电源接口采用5V直流供电,通过AMS1117-3.3芯片将5V电压转换为3.3V,为单片机内核及相关模块(如OLED、蓝牙模块)供电;复位接口采用上电复位和手动复位相结合的方式,确保单片机能够正常复位,避免系统异常;时钟接口采用外部8MHz晶振,通过倍频电路将主频提升至72MHz,满足系统的运算和定时需求;下载接口采用SWD下载模式,便于程序的下载和调试,提高开发效率。
3.3.2 电源电路
系统采用5V直流电源供电,电源接口设置保险丝和滤波电容,保险丝用于防止过流损坏元器件,滤波电容用于滤除电源中的杂波,确保电源稳定。电源电路分为3.3V和5V两个输出支路:3.3V支路通过AMS1117-3.3芯片将5V电压转换为3.3V,为STM32单片机、OLED显示屏、BT04-A蓝牙模块、光电红外传感器等需要3.3V电压的元器件供电;5V支路直接为大功率LED照明灯模块、HC-SR04超声波传感器、有源蜂鸣器等需要5V电压的元器件供电,确保各模块正常工作。同时,在电源电路中加入稳压二极管,防止电压波动,保护元器件。
3.3.3 复位电路
复位电路由电阻、电容和复位按键组成,采用上电复位和手动复位相结合的方式。上电时,电容充电,单片机的复位引脚保持低电平,实现上电复位;按下复位按键时,电容放电,复位引脚变为低电平,单片机重新复位,确保系统出现异常时能够快速恢复正常工作。复位电路中加入滤波电容,减少干扰,确保复位信号稳定,避免误复位。
3.3.4 时钟电路
时钟电路采用外部8MHz晶振,晶振两端分别连接到STM32F103C8T6的OSC_IN和OSC_OUT引脚,晶振两端并联18pF电容接地,用于稳定晶振频率,减少频率波动。外部晶振提供的时钟信号经过单片机内部倍频电路处理后,输出72MHz的系统时钟,为系统的定时、中断、数据处理等操作提供准确的时钟基准,确保环境监测和设备控制的精准性。
3.4 环境监测模块电路设计
环境监测模块由光敏传感器、HC-SR04超声波传感器、光电红外传感器组成,负责采集环境光照强度、用户与台灯距离、人体存在状态,各传感器的电路设计如下:
3.4.1 光敏传感器电路设计
光敏传感器采用模拟式光敏电阻,通过ADC接口与STM32主控芯片连接,电路设计简单。光敏电阻的一端接3.3V电源,另一端通过一个10KΩ电阻接地,同时连接到STM32的ADC引脚,形成分压电路。当环境光照强度变化时,光敏电阻的阻值随之变化,分压电路的输出电压也会相应变化,主控模块通过ADC接口采集该电压信号,经过数据处理后得到环境光照强度数值。为确保数据采集的稳定性,在ADC引脚与地之间并联一个0.1μF滤波电容,滤除干扰信号,避免数据传输错误。
3.4.2 HC-SR04超声波传感器电路设计
HC-SR04超声波传感器采用GPIO接口与STM32主控芯片通信,需要两根GPIO引脚分别作为触发端(TRIG)和回声端(ECHO)。传感器的VCC引脚接5V电源,GND引脚接地,TRIG引脚连接到STM32的GPIO输出引脚,ECHO引脚连接到STM32的GPIO输入引脚。工作时,主控模块通过TRIG引脚发送一个不少于10μs的高电平触发信号,传感器接收到触发信号后,发射超声波并开始计时,当超声波遇到障碍物反射回来时,传感器通过ECHO引脚输出高电平,高电平的持续时间即为超声波往返的时间,主控模块通过检测ECHO引脚的高电平持续时间,计算出用户与台灯的距离。为确保通信稳定,在传感器的电源端并联一个0.1μF滤波电容,滤除电源杂波。
3.4.3 光电红外传感器电路设计
反射式光电红外传感器采用GPIO接口与STM32主控芯片连接,传感器的VCC引脚接3.3V电源,GND引脚接地,OUT引脚(输出端)连接到STM32的GPIO输入引脚。当传感器检测到人体(障碍物)时,OUT引脚输出低电平;未检测到人体时,OUT引脚输出高电平。主控模块通过检测OUT引脚的电平变化,判断是否有人靠近。为消除信号干扰,在OUT引脚与地之间并联一个104电容,实现防抖滤波,确保检测结果的准确性。
3.5 照明模块电路设计
照明模块由大功率LED照明灯模块和驱动电路组成,由于LED灯功率较大,采用MOS管驱动,实现灯光的开启/关闭和亮度调节,具体设计如下:
大功率LED照明灯模块的阳极接5V电源,阴极连接到N沟道MOS管的漏极(D极),MOS管的源极(S极)接地,栅极(G极)通过一个1KΩ电阻连接到STM32的GPIO引脚。主控模块通过输出PWM脉冲宽度调制信号,控制MOS管的导通程度,从而调节LED灯的亮度:PWM信号的占空比越大,MOS管导通时间越长,LED灯亮度越高;占空比越小,LED灯亮度越低。当主控模块输出高电平时,MOS管导通,LED灯点亮;输出低电平时,MOS管截止,LED灯熄灭。同时,在LED灯两端并联一个续流二极管,用于吸收LED灯熄灭时产生的反向电动势,保护MOS管和LED灯,防止电压反向冲击损坏元器件。
3.6 显示模块电路设计
本系统采用128×64分辨率、4针IIC协议的OLED显示屏,其电路设计简洁,占用GPIO引脚少,具体设计如下:
OLED显示屏的VCC引脚接3.3V电源,GND引脚接地,SDA引脚(数据线)连接到STM32的I2C_SDA引脚,SCL引脚(时钟线)连接到STM32的I2C_SCL引脚。I2C通信协议仅需两根信号线,即可实现主控模块与OLED显示屏之间的数据传输,简化了电路设计,减少了GPIO引脚的占用。
主控模块通过I2C协议向OLED显示屏发送显示指令和数据,控制显示屏显示当前工作模式、环境光强、超声波距离、计时时间及人体检测状态。OLED显示屏的对比度和亮度可通过软件调节,确保在不同环境下都能清晰显示,同时其功耗低、响应迅速,适合智能台灯的实时显示需求。
3.7 报警模块电路设计
报警模块由有源蜂鸣器组成,用于在坐姿异常时触发报警,具体设计如下:
有源蜂鸣器的VCC引脚接5V电源,GND引脚通过一个NPN三极管连接到STM32的GPIO引脚,三极管的基极通过一个1KΩ电阻连接到GPIO引脚,发射极接地。当STM32输出高电平时,三极管导通,蜂鸣器通电发声,发出报警提醒;当STM32输出低电平时,三极管截止,蜂鸣器断电停止发声。
有源蜂鸣器无需外部驱动电路,通电即可发声,音量大、响应迅速,能够有效起到报警提醒作用。同时,在蜂鸣器的电源端并联一个滤波电容,滤除电源杂波,避免蜂鸣器出现误报警或发声异常。此外,设计一个独立按键,用于手动关闭报警,提升用户体验。
3.8 蓝牙通信模块电路设计
蓝牙通信模块采用BT04-A蓝牙模块,负责实现主控模块与手机APP的双向通信,采用UART通信方式,具体设计如下:
BT04-A蓝牙模块的VCC引脚接3.3V电源(注意:该模块不能直接接5V电源,否则会损坏模块),GND引脚接地,TX引脚(发送端)连接到STM32的RX引脚,RX引脚(接收端)连接到STM32的TX引脚,用于实现单片机与蓝牙模块之间的数据传输。同时,BT04-A的KEY引脚(配置引脚)可连接到STM32的GPIO引脚,用于配置蓝牙模块的名称、波特率等参数,默认波特率为9600bps,无需额外配置即可正常工作。
BT04-A蓝牙模块通过无线信号与手机APP建立连接,连接成功后,将主控模块发送的环境数据、设备状态、计时时间等信息上传至APP,同时接收APP发送的控制指令,转发至主控模块,实现远程管控。为确保通信稳定,在蓝牙模块的电源端并联一个0.1μF滤波电容,滤除电源杂波,减少通信干扰。
3.9 按键模块电路设计
按键模块采用5个独立按键,分别用于模式切换、亮度调节(加/减)、阈值修改(加/减)、计时开启/关闭、报警关闭,具体设计如下:
每个按键的一端接地,另一端通过一个10KΩ上拉电阻连接到STM32的GPIO引脚。当按键按下时,GPIO引脚检测到低电平;按键松开时,GPIO引脚检测到高电平。主控模块通过检测GPIO引脚的电平变化,识别按键操作,实现相应的功能。例如,短按模式切换键,实现自动/手动模式切换;长按亮度调节键,实现灯光亮度的加/减调节;短按计时键,实现计时的开启/关闭;短按报警关闭键,手动停止蜂鸣器报警。
为消除按键抖动,在每个按键两端并联一个104电容,通过电容充放电消除抖动信号,确保按键操作的稳定性和准确性。同时,按键采用独立式设计,互不干扰,便于用户操作和后期调试维护。
3.10 整体硬件电路布局与布线
在设计PCB板时,合理布局各模块电路,遵循以下布线原则,确保电路的稳定性和可靠性,避免干扰影响检测精度和照明效果:
- 主控模块放置在PCB板的中心位置,便于各模块的连接,减少信号线的长度,降低信号衰减,提高数据传输的稳定性。
- 环境监测模块(光敏、超声波、光电红外传感器)尽量靠近台灯的前端,确保采集到的环境数据真实准确;光敏传感器远离LED照明灯,避免灯光干扰光照强度采集;超声波传感器和光电红外传感器朝向用户方向,确保检测精度。
- 照明模块的电路与主控电路分开布局,大功率LED灯的电源线尽量粗短,避免电流过大导致线路发热,同时减少对数字信号的干扰;LED灯的驱动电路靠近LED灯,缩短连接线长度。
- 电源电路和数字电路分开布线,电源线路尽量粗短,滤波电容靠近元器件的电源引脚,滤除电源杂波;模拟信号线(如光敏传感器信号线)远离电源线路和数字信号线,避免干扰。
- 蓝牙通信模块尽量放置在PCB板的边缘,远离大功率设备和强干扰源,确保蓝牙通信稳定;蓝牙模块的信号线采用屏蔽线,减少电磁干扰。
- 接地处理采用单点接地或星形接地,确保各模块的接地良好,减少接地干扰,提高电路的稳定性;大功率设备的接地单独布线,避免干扰主控模块。
- 元器件布局合理,避免元器件之间相互遮挡,便于焊接、调试和维护,同时预留一定的散热空间,尤其是大功率LED灯,防止元器件过热损坏。
通过合理的布局和布线,有效减少了电路干扰,确保系统硬件电路的稳定性和可靠性,为系统的正常工作和各项功能的实现提供了保障。
第四章 系统软件设计
4.1 软件设计环境
本系统的软件设计主要分为两部分:硬件系统软件(基于STM32的嵌入式程序)和手机APP设计,具体设计环境如下,全程不涉及具体代码编写:
4.1.1 硬件系统软件设计环境
硬件系统软件基于Keil MDK5开发环境进行开发,Keil MDK5是一款针对ARM Cortex-M系列单片机的集成开发环境,支持C语言和汇编语言编程,具备代码编辑、编译、调试、仿真等功能,能够快速实现嵌入式程序的开发和调试。同时,选用STM32F103C8T6的标准固件库,简化程序开发流程,提高开发效率,固件库中包含了各类外设(GPIO、ADC、I2C、UART、PWM等)的驱动函数,便于调用,无需编写复杂的底层驱动代码。
4.1.2 手机APP设计环境
手机APP采用Android Studio开发环境进行设计,Android Studio是一款专门用于Android应用开发的集成开发环境,支持Java和Kotlin编程语言,具备界面设计、代码编写、调试、打包等功能。APP主要实现蓝牙连接、数据接收与显示、控制指令下发等功能,界面设计简洁直观,操作便捷,适合各类用户使用。也可选用现成的蓝牙调试APP,通过配置实现与硬件系统的通信,简化开发流程。
4.2 软件总体设计思路
系统软件采用模块化设计思想,将硬件系统软件分为多个独立的功能模块,各模块相互独立、协同工作,通过函数调用实现数据交互和功能联动,便于程序的开发、调试、维护和升级,全程不涉及具体代码实现。
软件总体架构分为主程序模块和各功能子模块,主程序负责统筹各子模块的工作,控制整个系统的运行流程;各功能子模块负责实现具体的功能,如环境数据采集、数据处理、显示、自动调光、坐姿检测与报警、模式控制、计时、蓝牙通信、按键处理等。
系统软件的总体流程如下:系统上电后,首先进行初始化操作,包括STM32单片机初始化、各传感器(光敏、超声波、光电红外)初始化、OLED显示屏初始化、BT04-A蓝牙模块初始化、LED照明模块初始化、有源蜂鸣器初始化、按键初始化。初始化完成后,系统默认进入自动模式,开始循环执行环境数据采集、数据处理、实时显示、模式判断、设备控制、蓝牙通信、按键响应、计时等操作,实现系统的各项功能。若出现异常情况,系统及时处理并提示,确保系统的安全性和可靠性。
4.3 各功能模块软件设计
4.3.1 主程序模块
主程序是系统软件的核心,负责统筹各功能子模块的工作,控制整个系统的运行流程,其主要功能包括系统初始化、模块调度、异常处理等,不涉及具体代码编写,仅阐述程序逻辑:
- 系统初始化:调用各功能模块的初始化函数,完成STM32单片机GPIO、ADC、I2C、UART、PWM等外设的初始化,各传感器的初始化,OLED显示屏的初始化,BT04-A蓝牙模块的初始化,LED照明模块的初始化,有源蜂鸣器的初始化,按键的初始化,设置默认阈值(如光照强度阈值50lux、超声波距离阈值30cm)、系统初始模式(自动模式)和计时初始状态(关闭)。
- 模块调度:进入无限循环,依次调用环境数据采集模块、数据处理模块、显示模块、模式判断与设备控制模块、计时模块、蓝牙通信模块、按键处理模块,实现各功能的协同工作,确保系统稳定运行。
- 异常处理:在循环过程中,检测系统是否出现异常(如传感器采集失败、蓝牙通信异常、LED灯故障等),若出现异常,及时进行处理,如重新初始化传感器、复位蓝牙模块、关闭故障设备等,同时在OLED显示屏上显示异常提示,提醒用户及时处理,确保系统能够正常运行。
主程序通过合理的调度,确保各功能模块有序工作,实现系统的整体功能,同时具备较强的容错能力,提高系统的稳定性和可靠性。
4.3.2 环境数据采集模块
环境数据采集模块负责控制光敏传感器、HC-SR04超声波传感器、光电红外传感器,采集环境光照强度、用户与台灯距离、人体存在状态,将采集到的信号传输给主控模块,为数据处理和设备控制提供依据,程序逻辑如下:
- 光敏传感器采集:主控模块通过ADC接口,周期性采集光敏传感器分压电路的输出电压信号,采集周期为0.5秒,将采集到的模拟电压信号转换为数字信号,传输至数据处理模块。采集过程中加入超时判断,若超过预设时间未采集到有效信号,判定为采集失败,重新进行采集,避免采集失败导致系统卡死。
- 超声波传感器采集:主控模块通过GPIO引脚向HC-SR04传感器发送不少于10μs的高电平触发信号,随后检测ECHO引脚的电平变化,记录ECHO引脚高电平的持续时间,根据超声波传播速度(340m/s),计算出用户与台灯的距离,采集周期为0.5秒。若未检测到ECHO引脚的高电平信号,判定为采集失败,显示距离异常提示。
- 光电红外传感器采集:主控模块通过GPIO接口,实时检测光电红外传感器OUT引脚的电平变化,若检测到低电平,判定为“有人”;若检测到高电平,判定为“无人”,采集周期为0.3秒,确保人体检测的实时性。
4.3.3 数据处理模块
数据处理模块负责对采集到的环境数据进行预处理、校准和转换,消除干扰信号,提高数据的准确性,将采集到的原始数据转换为用户可理解的数值,并与预设阈值进行比较,为设备控制和报警提供依据,程序逻辑如下:
- 数据滤波:对采集到的光照强度数据和超声波距离数据,采用滑动平均滤波法,选取5次采集的数值进行平均计算,去除随机干扰,使数据更加平稳,提高数据的准确性,避免因瞬时干扰导致的误判。
- 数据校准:根据各传感器的校准参数,对采集到的数据进行校准,消除传感器的系统误差。例如,根据标准光照环境下的采集结果,建立光敏传感器的校准公式,对采集到的光照强度数值进行偏移校准;根据标准距离下的采集结果,对超声波距离数据进行校准,确保数据精度满足系统指标。
- 数据转换:将校准后的数字信号转换为用户可理解的数值,光照强度单位为lux,超声波距离单位为cm,保留一位小数,提高显示的直观性;同时,将光照强度数值与预设光照阈值进行比较,将超声波距离数值与预设距离阈值进行比较,标记异常参数,为自动调光、坐姿报警模块提供触发信号。
4.3.4 显示模块
显示模块负责将处理后的环境数据、系统工作模式、计时时间、人体检测状态,实时显示在OLED显示屏上,采用分屏显示的方式,提高显示的清晰度和可读性,程序逻辑如下:
- 主界面显示:显示屏分为四个区域,第一区域显示当前工作模式(自动/手动);第二区域显示环境光照强度数值及单位(lux);第三区域显示超声波距离数值及单位(cm)和人体检测状态(有人/无人);第四区域显示计时时间(分:秒)。各区域标注清晰,便于用户快速查看。
- 阈值设置界面显示:当用户通过按键进入阈值设置模式时,显示屏切换至阈值设置界面,分别显示光照强度阈值和超声波距离阈值的当前值,用户通过按键调整阈值时,数值实时更新,调整完成后自动保存并返回主界面。
- 异常提示显示:当传感器采集失败、蓝牙通信异常等情况发生时,在OLED显示屏上闪烁显示异常提示(如“光照采集异常”“蓝牙连接失败”),提醒用户及时处理,异常解除后恢复正常显示。
显示模块的程序通过调用OLED固件库函数,控制字符、数字的显示位置和显示样式,同时控制显示屏的亮度和对比度,确保在不同环境下都能清晰显示,无需编写复杂的显示驱动代码。
4.3.5 模式判断与设备控制模块
该模块负责判断系统当前的工作模式(自动/手动),根据模式和环境数据,控制LED灯、有源蜂鸣器的工作状态,实现自动调光、坐姿报警和手动控制功能,程序逻辑如下:
- 自动模式控制:系统默认进入自动模式,根据人体检测结果和环境光照强度,自动执行调控操作:
- 照明控制:光电红外传感器检测到“有人”,且光照强度<预设阈值→主控模块输出PWM信号,开启LED灯,并根据光照强度自动调节PWM信号的占空比,实现亮度调节(环境光越暗,占空比越大,亮度越高);光照强度≥预设阈值→关闭LED灯;检测到“无人”→关闭LED灯,节省能耗。
- 坐姿报警控制:超声波距离<预设阈值→触发有源蜂鸣器持续报警,同时在OLED显示屏上闪烁显示“坐姿异常”提示;距离≥阈值→停止报警,提示消失;用户也可通过按键手动关闭报警。
- 手动模式控制:若用户通过按键切换至手动模式,系统停止自动调光和坐姿报警功能,用户可通过按键手动控制:
- 亮度调节:长按亮度加/减键,调节PWM信号的占空比,实现LED灯亮度的增加或减少,支持10档位调节,亮度变化实时显示在OLED屏幕上。
- 灯光

更多推荐



所有评论(0)