一种基于STM32的智能家居系统设计
个对象的信号与另一个对象的沐曹函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用,该函数的定义为:
boolQObjeet::eonnect(eonstQOb—ieet*sender,eonstchar*signal,
eonstQObjeet*reeeiver,eonstehar*mexnber)
conneet函数将sender对象中的信号signal与reeeiver中的member槽函数相关联,这里的sender和receiver都是指向QObject类型对象的指针。QT的宏signal()用于指定信号signal;宏slot()用于指定槽函数。
当对象内部发生某些事件时,它有可能发出信号。如果这个信号连接到槽,那么相应的槽函数就被执行。可以将多个槽连接到同一个信号,那么这些槽就将一一被执行,其执行顺序是任意的。
2.2 STM32系统软件设计
STM32系统软件设计首先对STM32系统的初始化,采用Rtthread系统并创建了3个子进程,分别为蓝牙模块子进程、红外模块子进程、报警模块子进程,设定任务的优先级并初始化各子进程。编写相应的初始化及数据处理函数实现系统的正常运行,通过Rtthread进行系统的线程调度。
关键字:智能家居 蓝牙模块 红外模块
![](../img/eep/emb/emb-46794eqfghvlayt3.jpg)
STM32的软件控制流程如图4所示。
![](../img/eep/emb/emb-46796r3jmr5v2wm4.jpg)
(1)蓝牙子进程程序设计,KEY位置高电平进入AT指令模式,通过发送AT指令进行蓝牙模块的设置,例如USART_Send_Cmd(“%s\r\n”,atstr);设置完成后KEY位置低进入数据透传模式,进行数据传输。接受到指令后返回数据,手机端对返回数据进行分析,如果接受错误数据,则手机端重新发送数据。接收到正确数据后发送给相应的模块,执行相应的操作。蓝牙软件设计流程如图5所示。
![](../img/eep/emb/emb-467983ujo2o2wqz4.jpg)
(2)红外子进程程序设计,先初始化红外模块,对要发送的数据解码后编码再经过红外模块发送出去。判断是否发送结束,未发送完整则继续发送。红外软件设计流程如图6所示。
![](../img/eep/emb/emb-46800tuupok1v3uv.jpg)
(3)报警子进程程序设计,初始化报警模块,将一个家用烟感探测器与报警模块相连,一旦超过设定值报警模块通过STM32系统将报警信息,发送送到手机或其他终端设备上实现智能报警。判断是否有报警信息,如果有报警信息则通过串口1将数据发送给STM32芯片,再执行报警函数。
2.3 该系统在智能家居系统中的应用
要控制红外设备必须先学习控制该设备的红外码。首先,通过半口工具连接到该模块,将该设备的遥控器对准红外接收头,通过半口工具发送对应的报文,按下需要学习的键,然后就可以收到该控制键对应的红外码。将学习到的红外码保存在QT的槽函数内。实现了一个手机或终端设备智能的控制家电,并且实现了智能报警。
3 结束语
综上所述,可知基于STM32的智能家居系统实现简单,应用广泛。而蓝牙技术的成熟和普及,可以将各种遥控器由一个Android手机软件所代替,实现了智能化的控制电视、风扇、空调等设备。通过在室内安装多个STM32系统,可以实现对每间房间的控制。基于STM32的智能家居系统综合了多门技术,主要包括视蓝牙通信、红外遥控技术、433报警等,随着这些技术的发展,该智能家居系统将拥有更为广阔的发展空间。
- 基于Linux/Qt的智能家居系统设计(07-07)
- 基于ARM-linux的智能监控系统设计(08-25)
- 基于Linux的智能家居管理方案(01-05)
- 基于Android智能家居远程监控系统设计(12-01)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)