基于STM32和HC-SR501智能家居的智能照明系统设计

发布者:本人在最新更新时间:2023-08-16 来源: elecfans关键字:STM32  智能家居  智能照明系统 手机看文章 扫描二维码
随时随地手机看文章

随着经济的发展和科技的进步,人们对照明器具的节能性和科学管理便捷性提出了更高的要求,使得照明控制在智能家居领域的地位越来越重要。使用智能照明控制系统更能体现节能与管理方面的优势,提高家庭的科学照明水平。普通家庭的照明模式是白天关灯、晚上开灯,而采用智能照明控制系统后,用户可以根据不同场合、不同时间的家庭人数进行智能照明,在需要时自动开启照明系统并调节其亮度;同时,系统还能充分利用自然光,在保证必要照明的同时,有效减少灯具的工作时间,节省不必要的能源开支,延长了灯具的使用寿命。


智能照明控制系统可减少灯具的使用时间,能有效节约能源。粗放型经济增长方式会导致资源匮乏,因此调整产业结构势在必行,在照明行业推广智能照明系统具有重要的意义。本文针对目前只根据室内光照度来调节LED灯亮度的方法存在的缺陷,在照明系统中加入人体红外感应模块和温度检测模块。温度检测模块可实时显示室内温度,人体红外模块可感应室内是否有人。当红外感应模块检测到室内无人时,系统强制断开电源,这样可以避免家庭主人忘记关闭智能照明系统时带来的能源浪费。


1、系统总体介绍

本系统主要由APDS-9008光照度检测传感器、DS18B20温度检测传感器、LCD显示屏、STM32L151、电源模块和人体红外组成。


1.1、MCU介绍

采用ST低功耗L系列单片机—STM32L151作为本系统的主控芯片,其特点如下:

1)工作条件:

工作电源范围:1.65~3.6V或1.8~3.6V

温度范围:-40~85℃

2)低功耗

睡眠模式,低功率运行(在32kHz时仅9μA),低功耗的睡眠(4.4μA)

超低漏每个I/O:50nA

从停止快速唤醒:8μs


1.2、APDS-9008光照度检测传感器模块介绍

APDS-9008提供广泛环境亮度条件下的精确光度检测。它有1个光感应器,其光谱响应接近CIE标准。图1是APDS-9008模块图。


图1  APDS-9008模块图


1.3、HC-SR501人体红外模块

HC-SR501是基于红外线技术的自动控制模块,采用LHI778探头设计,具有灵敏度高、可靠性强的特点和超低电压工作模式。技术参数如下:

工作电压:DC5~20V;静态功耗:65μA;电平输出:高3.3V,低0V;延时时间:可调(0.3~18s);封锁时间:0.2s;触发方式:L不可重复,H可重复,默认值为H;感应范围:小于120°锥角,7m以内;工作温度:-15~+70℃;PCB外形尺寸:32mm×24mm,螺丝孔距28mm,螺丝孔径2mm,感应透镜尺寸:直径:23mm(默认)


图2 HC-SR501模块图


1.4、DS18B20温度传感器

温度检测一般选用热敏电阻作为其传感器,热敏电阻可测量40~90℃温度范围,但是相比其他方法稳定性不高,一般温度检测的准确度较低。对于1℃以下的温度检测信号适用性极低,必须经过专门的ADC转换成数字信号才能由MCU进行处理。

DS18B20数字信号输出温度检测传感器与传统的温度传感器不同的是:使用单总线与MCU通信,为直接数字输出,转换速度快,可扩展性强。图3为DS18B20模块内部结构图。

基于STM32和HC-SR501智能家居的智能照明系统设计

图3  DS18B20模块内部结构图

1.5、系统总体架构

系统整体结构包括前端用1个HC-SR501人体红外模块和APDS光照度检测模块和1个DS18B20温度传感器。人体红外模块可检测室内人数,当检测到室内有人时,系统才开始工作;当检测到室内无人时系统不工作,如果系统此时是工作状态,将强行关闭系统。APDS光照度检测模块主要根据光强度进行智能照明,AO输出到STM32L151PC0ADC口进行模数转换,转换后进行LED智能控制。温度传感器将实时检测室内温度。DS18B20使用PA1口进行单总线数据传输,温度结果也通过LCD和串口打印显示。整个系统采用聚合物锂电池供电,如图4所示。

基于STM32和HC-SR501智能家居的智能照明系统设计

图4  系统总体架构

2、系统硬件设计

2.1、APDS光照度传感器硬件设计

图5为APDS-9008光照度传感器电路设计,其中1脚为电源(1.6~5V),本系统供5V电源,同时加2个电容滤波,2,3,5脚为NC脚,不接;6脚为模拟信号输出脚,输出信号为0~1.9V,接STM32L151PC0口进行模数转换,得到数字信号,最终实现智能控制LED灯。

基于STM32和HC-SR501智能家居的智能照明系统设计

图5  APDS-9008光照度传感器电路

2.2、HC-SR501硬件设计

HC-SR501模块电路主要包括VCC、GND和DO口。VCC供5V电源,当检测到室内有人时,DO口输出为高电平,否则输出低电平。


图6  HC-SR501电路设计

2.3、温度检测硬件设计

MCU与温度传感器进行数据传输主要依靠MCU按单总线协议在1条总线上产生各种时序实现。图7为温度传感器与MCU具体电路图,VCC接5V直流电,GND接地,OUT为与MUC进行通信的接口,上面必须接1个上拉电阻,以保证通信的正常进行和空闲状态时为高电平。


2.4、LCD硬件设计

LCD采用四线SPI协议与MCU进行通信。SPI接口一般由4根数据线组成,包括CS片选信号线、SCLK时钟信号线、MISO主机输入从机输出数据线和MOSI主机输出从机输入数据线,CS为使能信号。只有当使能信号为低时,此设备才被选中。选中后,MOSI和MISO可以进行数据传输。

基于STM32和HC-SR501智能家居的智能照明系统设计

图7  DS18B20电路

读操作为:前8个时钟主机发送地址给从机,后8个时钟从机接收到地址后,返回数据给主机。当主机发送地址给从机时,会在地址的最高位加0,以表示读,其余的后7位为从机内部寄存器地址,从机接收到高位读标志和后面的7位寄存器地址后,会在后面8CLK返回寄存器的值给主机,完成一次读操作。

基于STM32和HC-SR501智能家居的智能照明系统设计

图8  读操作时序

写操作同样由16个时钟组成,前8个时钟主机发送8位将要写的地址给从机,后8个时钟为主机发送的8位数据。当写操作开始时,同样首位表示写标志位,SPI协议写操作规定首位为1。因此,在写操作时,8位数据由1位写标志位和7位地址组成。当从机收到由1位写标志位和7位地址组成的数据后,会等待第二次发送的数据,把第二次发送的数据写入刚刚的地址寄存器,完成一次写操作。

基于STM32和HC-SR501智能家居的智能照明系统设计

图9  写操作时序

LCD液晶显示屏主要用于温度的实时显示。图10为LCD详细电路图。

基于STM32和HC-SR501智能家居的智能照明系统设计

图10 LCD电路

2.5、电源管理

系统采用锂电池供电。首先,MiniUSB输出的5V电压直接提供给锂电池充电管理芯片,由其对锂电池进行充电管理。该芯片是一款完整的单节锂离子电池,采用恒定电流/恒定电压线性充电器,充电电流为1A。当输入电压停止时,芯片自动进入低电流状态,将电池漏电流降至2μA以下。锂电池充电电压为4.2V,容量为500mAh。


由于锂电池在放电过程中输出电压会下降,而系统工作在3.3V,因此需要加低压降稳压器以保证系统正常工作。稳压芯片输出电压稳定在3.3V,可以输出400mA的电流,压差最低可达到75mV,外围电路简单,可满足要求。为及时充电和保存数据,系统进行电池电量监测。

基于STM32和HC-SR501智能家居的智能照明系统设计

图11 电源管理电路

3、系统软件设计

3.1、智能照明软件设计

光照度检测采用ADC和DMA方式进行传送。ADC可以把模拟电压直接转换成数字信号,便于存储器存储和传送。软件设计流程如下:首先初始化ADC和DMA,让ADC工作于DMA方式;HC-SR501人体红外传感器进行室内环境检测,如果检测到室内有人,则进行数据传输,否则一直检测。当检测到室内有人时,ADC获得总线上的电压值,然后自动将其转换成12位的数字信号来智能控制室内LED灯。此时,DMA把ADC转换后的数字信号送到内存,这段期间不需要CPU干预,可节约CPU资源去获取温度。软件流程如图12所示。

基于STM32和HC-SR501智能家居的智能照明系统设计

图12 智能照明软件设计流程

3.2、温度检测软件设计

首先初始化DS18B20,让通信双方达成基本通信协议。由于总线上只挂了1个DS18B20温度传感器,因此直接跳过ROM,发出温度转换指令0x44h,之后,DS18B20准备好温度数据,在读温度前至少需等待750μs。750μs后,重新初始化,读取存储器中已经准备好的数据,然后经过计算获得温度,把温度数据送到串口和LCD上面显示。

由于温度相对变化不大,故采用定时器中断方式获取温度,程序设计每2s中断一次,即每2s执行一次温度检测流程。温度检测软件设计流程如图13所示。

基于STM32和HC-SR501智能家居的智能照明系统设计

图13  温 度检测软件设计流程


4、系统实现

4.1、系统计测试软件设计

为了测试系统,本方案设计了系统测试软件。温度信号采用定时中断方式获得,每2s获取1次,这样可以节约CPU资源,也可实时获得最新温度值。智能照明500ms中断1次获得当前光强度信息,以智能控制LED灯亮度。最后把温度信息送到LCD和串口进行显示,系统测试流程见图14。

基于STM32和HC-SR501智能家居的智能照明系统设计

图14  系统测试流程

4.2、系统实现结果

系统实物图见图15。


图15 系统实物图

如图15所示,系统由温度传感器、LCD屏、光强度传感器、人体红外传感器和LDE灯组成。

当红外传感器检测到有人且光强度低时,LED由暗变亮,串口数据显示当前亮度值,ADC为12位,因此亮度范围为0~4096,当前亮度为70~500cd/m2之间,测试数据正确。

当红外传感器检测到有人且光强度高时,LED由亮变暗,串口数据显示当前亮度,值测试数据正确。

当系统检测到无人时自动关闭系统,以避免人为原因造成的忘记关闭系统,从而达到节约能源的目的。


5、结束语

本文设计的智能照明、温度检测系统从测量准确性、功耗、家庭实用性等角度出发,所选用的芯片和模块均符合低功耗的原则,具有体积小、可靠性高、性价比高、结构简单等特点,可用于智能家居系统,具有较高的实用价值。


关键字:STM32  智能家居  智能照明系统 引用地址:基于STM32和HC-SR501智能家居的智能照明系统设计

上一篇:详细解析STM32中的堆栈机制
下一篇:STM32单片机常用库函数 STM32单片机系统作用

推荐阅读最新更新时间:2024-11-17 11:30

想要恒温智能家居有啥难?咱有物联网技术轻松实现
1785年,瓦特制成的改良型蒸汽机的投入使用,带领人类社会进入“蒸汽时代”。   1866年,德国人西门子制成了发电机,为后世人类社会电灯、电车、电影放映机等的相继问世提供了“电力”支撑。   而现在我们又迎来了一个全新的科技革命节点,被业界称为下一波破坏性浪潮的“物联网”。   日前,来自硅谷的物联网公司Ayla Networks艾拉物联宣布,其与小松鼠壁挂炉的生产厂家广州迪森(Devotion)合作打造的“物联网智能壁挂炉”,已顺利完成量产。   今日,我们约到了Ayla中国区市场战略总监Rachel Zhang,并用一个多小时的时间,谈了他对家庭供暖行业智能化趋势的理解。   家电们都智能化
[嵌入式]
关于STM32中CAN1_RX0_IRQn和CAN1_RX1_IRQn的使用
如果你用的CAN引脚是PA11和PA12,接收中断用CAN1_RX0_IRQn。如果CAN引脚用的是PB8和PB9,也就是用重定义的引脚,接收中断用CAN1_RX1_IRQn。由于PA11和PA12也是USB的引脚,所以非互联型且带CAN控制器的微控制器的库文件在起名字时用了USB_LP_CAN1_RX0_IRQn。 以上内容参考于网络,后经证实,以上说法是不正确的,理由如下: STM32有2个3级深度的接收缓冲区:FIFO0和FIFO1,每个FIFO都可以存放3个完整的报文,它们完全由硬件来管理。如果是来自FIFO0的接收中断,则用CAN1_RX0_IRQn中断来处理。如果是来自FIFO1的接收中断,则用CAN1_
[单片机]
STM32中断向量表偏移量0x200详解
ST公司重定位向量表的库函数: void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset) { assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_param(IS_NVIC_OFFSET(Offset)); SCB- VTOR = NVIC_VectTab | (Offset & (uint32_t)0x1FFFFF80); } 其中NVIC_VectTab要么是FLASH要么是RAM的起始位置,Offset: Vector Table base offset field.
[单片机]
基于STM32的跌倒防护装置研究
随着老年人口的剧增,老龄化问题成为当前社会的最突出问题。目前已知世界范围内60岁以上的老年人口已超过6亿。跌倒对于老年人群而畜是一个很严重的问题,除了肢体上的伤害,跌倒之后在心理及社交生活上也可能造成严重的后遗症。据统计,约三分之一65岁以上老人平均每年跌倒一次。面对这种情况,开发跌倒智能探测和报警系统,具有极其重要的现实意义和社会意义。 目前的跌倒检测可分为三类:基于视频图像的跌倒检测,其不足之处是受空间上的限制、视频图像的质量受环境影响较大和不能保证用户的隐私安全;基于声学系统的跌倒检测,其不足之处是安装复杂且资金投入比较大;基于穿戴式装置的跌倒检测,不受空间限制、环境干扰相对较小。 本系统开发的是基于穿戴式装置的
[单片机]
基于<font color='red'>STM32</font>的跌倒防护装置研究
STM32 标准固件库的下载,文件介绍和工程的建立(综合)
前言 博文基于ARM Cortex-M3内核的STM32F103ZET6芯片和标准3.5.0库; 博文介绍标准库中个文件夹的含义和以及一个简单工程的建立; 如有不足之处还请博友多多指教; 标准库的下载 标准库的获取方式: 第一步:进入官网:https://www.st.com/content/st_com/zh.html 第二步:依次进行下列操作 在下面这个表格里,能看到很多系列的标准库,可以根据自己需求选择;这里我选择STM32F10x系列; (下面这个表格是根据芯片选择的,或许有人会有一个疑问:为什么选择了第三个,明明第一个也是支持STM32F10x的,原因就是版本不同,第三个是目前最新的版本,第一个是过去的版本)
[单片机]
<font color='red'>STM32</font> 标准固件库的下载,文件介绍和工程的建立(综合)
STM32中重定义printf函数
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { USART_SendData(USART1, (uint8_t) ch); while (U
[单片机]
<font color='red'>STM32</font>中重定义printf函数
STM32 之位带操作
Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。   在 CM3 支持的位带中,有两个区中实现了位带。   其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);   第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最低 1MB)。   这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的 位带别名区 ,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。   CM3 使用如下
[单片机]
STM32红牛开发板非固件库控制LED
摘要 STM32红牛开发板上的5个LED,接在GPIOF6~10脚,输出低电平时,LED亮。这样我们设置GPIOF的相关寄存器,让其输出低电平就可以让LED亮。因为没有用到ST提供的固件库,所以是直接对寄存器的内存地址读写,即对一个指向该地址的指针变量进行读写。并且该变量必须为易变型的,即用volatile定义,这样是为了告诉编译器不要去优化这个变量,导致其它一些寄存器的数据变化。GPIOx是挂载在APB2高速外设总线上的,最大频率是72MHZ,所以我们除了了打开HSE(外部高速时钟)并关闭内部高速时钟(开机默认选择了HSI)外,还要打开APB2总线的时钟。 一、寄存器地址映射 外设的基址PERI
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved