新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种基于STM32的智能家居系统设计

一种基于STM32的智能家居系统设计

作者:时间:2014-07-02来源:网络收藏

  摘要 系统以STM32F103为控制核心,用户通过手机或其它手持设备经发送数据到STM32上,STM32接收到指令处理后经发送到终端设备上。实现家居的智能控制,整个系统具有较强的抗干扰能力及可靠性,可适用于应用领域。

本文引用地址:http://www.eepw.com.cn/article/249136.htm

  关键词 ;;

  是以住宅为平台,利用综合布线、网络通信、智能家居系统设计方案、安全防范、自动控制、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。

  1 智能家居系统硬件平台

  STM32的智能家居的系统拓扑结构如图1所示,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。该系统采用STM32F103“增强型”系列的STM32芯片,设计的总体思路通过手机或其它手持设备的蓝牙通信模块与STM32上的进行通信,接收到的数据进行处理,再通过发送到受控终端上。受控终端接收到红外指令后执行指定的操作,如电视、风扇、空调等电器设备的开关等操作。红外模块可以学习到各种遥控器的指令,通过学习遥控器的指令储存到QT软件所编写的界面中,解决了遥控器过多的烦恼,从而实现家居的智能化控制。通过报警模块可以实现火灾时的报警,保障了家居安全。

  

 

  1.1 蓝牙模块

  蓝牙HC05是主从一体的蓝牙串口模块,即当蓝牙设备与蓝牙设备配对连接成功后,可以忽视蓝牙内部的通信协议,直接将蓝牙当作串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。当然,对于建立这种通道连接有一定条件,那就是对蓝牙设置好能进行配对连接的AT模式。

  HC05蓝牙模块与STM32的串口3相连接。HC05的RDX与STM32芯片的第55管脚USART3-TX连接,TXD与第56管脚USART3-RX连接,GND与Vcc连接到相应的GND与Vcc上,KEY与第65管脚PC8连接。模块上电后,通过KEY接Vcc,使模块进入AT指令,模块的波特率设置为38400。

  1.2 红外模块

  BC7210芯片由海外知名厂商制造,比高公司拥有版权的红外遥控解码专用芯片。BC7210可以完成目前国内市场上常用的飞利浦RC5和NEC两种红外编码信号的解码。BC7210的输出可以设置为并行输出或者串行输出,串行输出方式兼容SPI和UART两种接口,可以轻松完成与各种MCU的接口相连接,完成与MCU的通信。BC7210与STM32连接的硬件设计方法如图2所示。

  

 

  BC7210的串行输出兼容于“波特率9 600 bit·s-1,1个起始位,1个停止位,无奇偶校验”的USART,只需D7与STM32的87管脚USART2-RX连接。MOD与S/P分别与PB3和PB5相连接。这种接口方式只需占用1根口线,微处理器的数据接收可以由硬件完成,占用CPU资源少。

  1.3 报警模块

  无线收发模组,采用射频技术,也叫RF433射频小模块,采用全数字科技生产的单IC射频前段与ATMEL的AVR单片机组成,可高速传输数据信号的微型收发信机,无线传输的数据进行打包、检错、纠错处理。元器件都采用工业级标准,工作稳定可靠,体积小便于安装。适用于安全报警、无线自动抄表、家居及工业自动化、远端遥控、无线数传等领域,433报警模块与STM32的串口1相连接。

  SM30型433MHz微功率无线串口通信模块,是上海上志电子信息技术有限公司生产,可以动态管理无线通信方式:将STM32和无线模块JP1引脚的1(GND),2(Vcc),3(RXD/TTL),4(TXD/TTL),9(RESET)共5个引脚连接好,1脚接GND,2脚接VCC,3和4两脚分别接STM32的串口上,通过串口发送给模块设置命令,设置完成以后,置SETEN为高电平或与地断开,上电复位或RST(如果8脚接在用户STM32的I/O口上)低电平(10 ms)复位,及可以用新的参数工作。

  2 软件系统设计

  整个智能家居系统以STM32微处理器为控制核心,使用C语言编写。智能家居系统的软件可分为手机、STM32系统2个部分,主要由蓝牙驱动程序、红外驱动程序和433报警程序组成。QT的软件控制流程如图3所示。当一个特定事件发生时,一个信号被发射。QT的窗口部件有多种预定义的信号,但可以通过继承来加入自己的信号。槽就是一个可以被调用处理特定信号的函数。信号与槽是宽松地联系在一起:一个发射信号的类无需已知哪个槽要接收这个信号。QT信号和槽可以保证如果将一个信号与一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。

  

 

  2.1 手机软件设计

  通过调用Qobject对象的connect函数来将某个对象的信号与另一个对象的沐曹函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用,该函数的定义为:

  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进行系统的线程调度。

红外遥控器相关文章:红外遥控器原理

万能遥控器相关文章:万能遥控器代码


c语言相关文章:c语言教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭