系统技术组成
本设计为一套基于网络的智能家居管理系统。该系统分为主机和从机两大部分,系统主要实现以下功能: 1、上位机服务器负责系统控制,数据的处理、中转和显示等功能,下位机主讲负责检测室内的环境参数,如温度、湿度、烟雾等,主机和从机之间通过WIFI模块无线通信。 2、设计一个家用防盗系统,当防盗系统处于开启状态时,检测到有人从窗户进入或房屋外门被异常打开时,防盗系统发出警示告诫声响,并通过GSM模块连续拨打电话三次系统绑定的管理员手机号码。 3、智能家居管理系统通过网络,来控制不同房间等区域内相应电气设备的设置、开启或关闭,如窗帘、电灯、空调等。 4、系统使用OLED液晶屏来进行下位机数据的显示,显示内容包括环境参数、防盗系统状态等信息。
一、电源设计
为满足设计要求,并且考虑到系统模块不需要移动,采用一款12V的适配器为系统供电。转5V电路采用TI公司的TPS5430进行电压转换,这是一款宽电压输入的芯片,最高输入电压为36伏,其内部能够形成过流保护和限流电路,能够将12V电压转换成5V电压[6],完全满足系统需求。转3.3V电路采用AMS公司的1117 3.3V芯片,能够将5V电压转换为3.3V电压。为使系统电源更加稳定,本设计电源采用光耦隔离线性稳压电路,在电源输出部分加之滤波电路,为系统提供稳定的电压。
二、温湿度检测
采用了DHT11温湿度传感器实现了家庭内温度和湿度的采集。DHT11是一种单总线数字式温度传感器,其湿度量程为20-90%RH,度精度湿±5%RH,温度量程为0~50℃,温度精度±2℃[7]。DHT11采用了单总线通信协议,一根数据线与单片机PA0相连,根据DHT11模块独特的数据读取时序,来得到DHT11返回的温度值和湿度值。DHT11检测电路原理图如图2-6所示,数据引脚PA0接一个上拉电阻上拉到5V,DHT11模块采用5V电源供电
三、烟雾检测
本设计中需要对室内烟雾浓度进行检测,烟雾浓度检测采用的是MQ-2模块,该模块可检测液化气、甲烷、烟雾等气体,当 传 感 器 所 处 环 境 中存 在 可 燃 气 体 时,MQ-2模块可以实时的检测出来 [8]。该模块体积小,检测灵敏,并可检测多种气体,能满足日常生活的需要
四、防盗功能
本设计需要对智能家居实现防盗功能,防盗功能采用的是正确输入密码,门窗才能开启的密码锁防盗系统,密码输入电路原理图如图2-10,三个密码输入按键一端接地,另一端分别接到单片机PA6、PB2、PC4引脚,引脚配置为上拉输入模式,当检测到引脚为低电平时,判断按键按下。发声模块采用的是一款电磁式的蜂鸣器,当未输入密码开启门窗或者密码输入错误时,系统视为异常,系统发出警示三声警报,同时会连续拨打三次特定号码手机。 五、电气控制系统 由于本设计需要控制家庭的内电气设备的开关,家庭内电气一般为220V的高压,属于小电流控制大电流的电路,所以需要用到继电器来实现此功能。继电器是一种用小电流去控制大电流运作的一种自动开关在电路中起着自动调节、安全保护、转换电路等作用。电灯控制部分,这里采用的是低电平触发的继电器模块,将处理器的PB10作为继电器开关的控制引脚,因为stm32引脚高电平为3V,相对于5V的继电器模块来说仍然是低电平,为达到控制继电器的目的,并且PB10是支持FT兼容模式的,设计将PB10设置成开漏输出模式,以满足设计要求。当继电器输入端输入为高电平时,继电器输出端断开,当继电器输入端为低电平时,电流控制继电器吸合,继电器输出端导通。平时IO口为高电平,继电器断开,电灯不亮,当IO口设置成低电平时,继电器闭合,电灯亮。 六、报警机制 本设计需要实现拨打电话的功能,因此选择GSM作为拨打电话的模块,来实现拨打电话功能。GSM模块就是一个通信模块,它和手机的功能类似,可以用来发送信息、拨打电话、网络数据传输等,它具有标准的通信接口与其他芯片通信。本设计要求在检测到有人异常闯入时,使用GSM模块拨打电话3次,为满足要求,采用的GSM模块型号为A9G模块,采用5V电源供电,它具有一个方便接入的串口,与单片机之间用串口实现通信,可以通过此接口向其发送AT命令控制该模块实现拨打电话的功能。设计将单片机的串口2连接GSM模块的串口,当检测到有人异常闯入时,单片机串口2发送拨打指定管理员电话的AT指令。 七、通信 上位机服务器与下位机主控的WIFI通信,是本设计正常稳定运行的关键。ESP8266是一款低功耗的WIFI模块,它支持802.11b/g/n无线标准,同时该模块内置了一颗32位RSIC微处理器,节省外部微处理器的使用[10]。WIFI模块的使用了C语言在下位机主控进行控制,将WIFI模块设置成AP模式,加入局域网之后,将WIFI模块设置成串口透传模式,即下位机主控可以直接通过芯片的串口向WIFI模块发送数据,透传模式,就相当于一条虚拟的串口线连接于单片机与服务器之间,下位机主控不需要去处理复杂的网络协议,简化了编程,提高了程序的运行效率。初始化代码: UART1_Send_Str("AT+RST\"\r\n");//等待模块加入局域网 设置成ap模式 delay_ms(1000);delay_ms(1000);delay_ms(1000); delay_ms(1000);delay_ms(1000);delay_ms(1000); UART1_Send_Str("AT+CIPMUX=1\"\r\n"); delay_ms(1000);delay_ms(1000);delay_ms(1000); delay_ms(1000);delay_ms(1000);delay_ms(1000); UART1_Send_Str("AT+CWJAP=\"C116LAB\",\"116116116\"\r\n");//加入局域网 delay_ms(1000);delay_ms(1000); delay_ms(1000);delay_ms(1000);delay_ms(1000); delay_ms(250); delay_ms(1000);delay_ms(1000); UART1_Send_Str("AT+CIPMUX=0\r\n");//设置为单连接模式 delay_ms(1000);delay_ms(1000); UART1_Send_Str("AT+CIPSTART=\"TCP\",\"192.168.1.164\",8888\r\n");//接入服务器 delay_ms(1000); UART1_Send_Str("AT+CIPMODE=1\r\n");//设置为透传模式 delay_ms(1000); UART1_Send_Str("AT+CIPSEND\r\n");//进入透传模式 delay_ms(1000); 八、测试图
|