APP下载

基于Arduino智能家居控制系统

2020-01-08

技术与市场 2020年1期
关键词:上位温湿度端口

(四川轻化工大学物理与电子工程学院,四川宜宾 644005)

0 引言

随着科技的不断发展,智能家居已经在我们生活的品质中起到关键作用,智能家居的兴起的趋势已势不可挡。物联网就是把世界上的万物连接到一起的形式,是由互联网为基础延伸的一种网络,其将不同模块得到的热度、光亮、气味、电压值等信息通过网络传输到需要的人与物上,从而实现对外界事物大感知。科技的快速发展使我们的生活水平得以飞跃,智能家居的声影已经逐渐进入人们的生活中,小到智能控制的插线板,大到机器人管家,智能家居控制系统发展变得丰富多样化。这个领域刚兴起不久,就得到人们的一致好评,使得智能家居控制系统发展得迅速。网络的发展,使得网络控制、语音控制、隔空控制变为可能,智能家居使我们的生活水平及质量得到了飞的智悦,也使得智能家居更加的人性化与普及化。

1 智能家居控制硬件设计

网络的控制需要客户端和控制端处于网络畅通才能运行控制指令,需要搭载服务器,对控制端传过来的数据及客户端发来的数据指令进行交互,这样才能满足使智能家居达到需要的要求。该设计通过Blinker的网络服务器平台,使用ESP8266模块挂载到服务器,通过客户端进入相应的软件来对挂载到网络服务器上的控制端进行指令控制,服务器把客户端发来的控制指令通过网络传输到ESP8266网络模块。ESP8266交互式的返回交互信息,并对接收到数据通过串口发送数据到Arduino系统板,此时Arduino通过对网络传输而得到的数据进行解析。对解析的数据进行判断,从而执行相应的操作。其硬件组成部分如图1所示。

图1 系统框图

1.1 Arduino嵌入式系统

整个家居的自动控制都是Arduino DUE板完成,对接收到的各种模块数据、指令等进行处理,完成相应的控制要求。

1.2 温湿度测量

温湿度硬件电路使用的SHT30数字型的温湿度传感器,采用IIC通信方式对得到的温湿度数据进行传输。湿度测量的范围在0~199% RH,精度为±3% RH;温度测量的范围在-40 ℃~125 ℃,精度在±0.3 ℃。该传感器已经满足了正常家居的使用范围。

1.3 TFT_1.44显示屏

显示器使用的TFT屏,因其可以独立地对各个像素点进行控制,优越的反应速度及可视的角度达到了130度,是高端产品必备的部件。TFT_1.44显示屏模块采用SPI通信方式,与IIC相比SPI的速度更快。

1.4 网络模块

使用ESP8266网络传感器,其工作电压为3.3 V,网络工作频率范围在2.412~2.484 GHz,因其模块有丰富的硬件接口,可支持UART、GPIO、IIC、ADC等,在各种场合都非常的适用。

1.5 气体检测

气体无色无味,人的各种器官很难辨别出来,当一些有害气体泄露,无一不危害到人的生命,所以为系统设计增加了气体检测传感器。气体检测使用MQ-2烟雾传感器,其特点在于有非常高的灵敏度、稳定性高、使用寿命长,兼顾烟雾、甲烷、液化气等可燃气体的检测,适合家居的使用场景。

1.6 测距模块

一般情况下,人最大能承受的36 V的电压,而家用是220 V的交流电对人来说万一触电,伤害是巨大的,所以在人生安全的情况下,为系统设计手挥即关的功能,避免由触碰而触电的风险。该设计使用GP2D12红外线测距传感器完成手挥动距离,其具有结构简单、易于小型化、成本低、抗干扰强等优点,易于家居的使用。

1.7 人体检测

当室内没有人,都外出了,屋内的钱财、物品没人看管,无疑不会让外出的人心存顾虑。或者当你在熟睡的时候,小偷入室盗窃,对钱财和人都是一种威胁。由此在该系统增添HC-SR501人体红外感应传感器,其传感器可调的监测范围适合家居报警功能的使用。

2 系统的设计及实现

要实现智能终端的控制,软件部分就要分为两个部分:一块是上位机手机的设计;另一块则是下位机及受控系统。而受控系统的设计又分为两个部件,由Arduino DUE硬件完成自动控制的操作和ESP8266网络传感器完成网络的数据交互。Arduino DUE主要的功能是对IO端口连接的传感器获取的数据进行处理和对ESP8266在网上获取到的日期和时间,用TFT进行显示。由ESP8266网络模块通过上位机得来的控制指令解析后通过串口传送,Arduino DUE控制部分接收到串口信息后完成相应的控制。ESP8266网络模块的主要功能是连接到互联网,从网络获取时间日期,并且把手机控制端通过网络发来的数据进行解析,然后传送给Arduino DUE,从而完成整个控制。

2.1 上位机APP部分

上位机的APP软件(Blinker)通过网络连接到Blinker平台,获取ESP8266网络模块通过网络上传的数据,同时等待数据的发送。

2.2 下位机部分

整个设计的核心组成就在下位机部分,所有的数据指令,控制指令都在这个部分作用给人或者物上。

2.2.1 Arduino DUE控制系统

Arduino系统会在开机时去判断ESP8266网络模块是否连上网络,当网络不通时会在TFT显示屏上提示连接网络,当判断ESP8266网络模块已经连上网络则获取ESP8266模块得到的时间等信息。开机过后Arduino一直通过串口检测ESP8266模块发送过来的信息,当其中有控制指令则完成相应的控制功能。同时Arduino DUE对自己芯片IO端口挂接的模块的检测数据进行解析处理通过TFT显示屏显示。

1)整个系统开机需要先获取时间,首先需要调用“Blinker.h”库,然后通过相应代码获取时间。

//Get the time

time_sec=Blinker.second()

time_m=Blinker.minute()

time_h=Blinker.hour()

time_wday=Blinker.wday()

time_month=Blinker.month()

time_mday=Blinker.mday()

time_year=Blinker.year()

2)获取温湿度则调用“ClosedCube_SHT3XD.h”库,初始化SHT30温湿度传感器后,通过相应代码获取传感器的测量值。

//获取温湿度

printResult(sht3xd.readTempAndHumidity(REPEATABILITY_HIGH,MODE_POLLING,50));

3)红外线测距模块用于挥手即可开关灯的功能,Arduino DUE通过模拟量输入端口A0获取GP2D12测距传感器的输出电压值,然后通过运算处理获得测距值。在使用时首先应该考虑挥手动作后要延迟一段时间后再测距判断挥手动作,所以调用控制器运行时间已达到避免一挥手即多次动作的情况。

//手挥开关灯

data=analogRead(A0)

cm=2547.8/((float)data*0.49-10.41)-0.42

if((zz!=0)&&(cm<20)){Blinker.delay(15)

data=analogRead(A0)

cm=2547.8/((float)data*0.49-10.41)-0.42

if(cm<20){

if(millis()/2000!=millis_backup){

millis_backup=millis()/2000

digitalWrite(D2,!digitalRead(D2));//开关灯控制IO口

4)整个系统开机时,MQ-2传感器需要>30 s的时间进行加热后才能得到准确的阻值。该传感器的阻值R与室内被测的有害气体的浓度C的数学关系式为:log R=m*logC*n(m,n为常数)。n的值与传感器灵敏度有关,不仅与传感器的材料有关,还与气体种类和室内温度等有关系。m的值为气体浓度变化的灵敏度。设置模拟端口A0检测传感器输出的电压值来判定室内空气情况。

//气体检测

int val=analogRead(A0);//读取气体传感器输出电压值

if(val>500)

digitalWrite(D3,HIGH);//有害气体浓度过高触发报警

else

digitalWrite(D3,LOW)

5)人体红外感应模块的输出方式为开关方式,当人进入其感应范围则输出高电平并延时一段时间,当人离开一段时间后则自动跳变到低电平。传感器上可设置重复或不可重复触发、感应范围、延时时间,通过传感器上的电位器进行相应的调节。把对应的输出IO口接到Arduino DUE的IO端口D4。当夜晚或者屋内人员离开则对该IO端口进行判断;当有人闯入则触发人体红外感应传感器,Arduino DUE检测到后触发警报,并通过ESP8266网络模块传输到上位机进行提示。

time_h=Blinker.hour();//Acquisition hours

if((time_h>0)&&(time_h<5)){//判断是否是凌晨1~5点

if(digitalRead(D3))//检测D3端口是否为高电平,为“高”则触发报警

digitalWrite(D5,HIGH)

if(!digitalRead(D3)){//检测D3端口是否为低电平,为“低”则关闭报警

digitalWrite(D5,LOW)

2.2.2 ESP8266网络模块

在开机运行时,要ESP8266网络模块接入网络,使之能挂接到平台,所以最开始需要对ESP8266进行相应的配置,则需要将SSID名称、密码设置到模式当中。首先配置固定的SSID名称、密码及Blinker的个人设备密钥,然后通过调用Blinker库把固定的AT指令和Blinker个人用户的密钥写入ESP8266控制器中,然后由Blinker库函数来控制ESP8266的控制器自动连接WIFI,最后挂接到Blinker服务器平台。

1)SSID名称、密码及密钥配置

char auth[]="f2b812c58ff2"; // Your Device Secret Key

char ssid[]="wifi"; //Your WiFi network SSID or name

char pswd[]="yupeng123"; //Your WiFi network WPA password or WEP key

2)调用Blinker库写入AT指令到控制器

BLINKER_DEBUG.stream(Serial)

Blinker.begin(auth,ssid,pswd); //Write SSID or key

Blinker.attachData(dataRead)

Blinker.setTimezone(8.0); //Set time zone

3 结语

该系统设计的主要思想是便利家居生活,提高生活的品质,并以当今生活的发展趋势设计了该系统。该设计的重要组成部分为上位机和下位机,下位机又分为Arduino DUE控制部分和ESP8266网络模块,整个系统的核心就在于此部分的组成。上位机主要负责发送控制指令;而下位机的Arduino DUE各种器件的触发及各模块数据的检测显示,ESP8266网络模块则通过网络完成下位机Arduino DUE和上位机之间的数据交互传输。通过网络的便利和快速反应等特点,使家居生活更加的方便与智能。

猜你喜欢

上位温湿度端口
一种端口故障的解决方案
基于AT89C51的数字型蚕用温湿度计的设计
硬件解耦三端口变换器的软开关分析与仿真
基于DSP的多路温湿度监测系统
交换机生成树安全
基于温湿度控制的天气预测装置
特斯拉 风云之老阿姨上位
蒸发冷却温湿度独立控制空调系统的应用
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统