作者/赵景豪,山东省聊城市外国语学校
基于Android手机远程遥控家居窗户系统的设计
作者/赵景豪,山东省聊城市外国语学校
窗户是家的第二扇大门,人们却经常一时疏忽,忘记紧锁窗户,从而给家里带来了很多不必要的麻烦。针对此现象,本文设计了一款基于Android手机远程遥控家居窗户的系统。该系统采用树莓派作为主控核心,搭配了L298N电机驱动模块和直流电机。此外,该系统引入了具有外网IP的阿里云服务器作为中间桥梁,打破了内外网IP之间无法直接通信的壁垒。该系统可以让主人随时随地在Android手机平台远程控制窗户的开关,极大地方便了主人对于窗户的管理控制,同时又让家的安全性得到了充分的保证。
树莓派;远程遥控;智能窗户;Android手机
窗户是家的重要组成部分,同时也是家的第二个“门”,由于忘记关闭窗户,骤起的沙尘暴或者狂风暴雨势必将家里扫荡了个遍,等你回来,家里早已一片狼藉。另一方面,人们经常出远门忘记紧锁窗户,一回家发现,家里早已被窃贼搜刮干净了。因此,时刻关紧窗户就显得极其重要。
此外,随着Andorid智能手机价格的走低和互联网的普及,手机网民的规模增长迅猛,据艾媒网的报道,2016年中国智能手机用户规模达6.24亿,其中Android手机占比73.1%,IOS占比19.7%,几乎每个家庭人员均手握一部智能手机(通常人们随身携带手机)。因此,如何设计一款基于手机端远程家居窗户控制系统就显得极其有意义。该系统能够将手机与窗户紧密联系起来,实现远程控制窗户的功能,保证窗户时刻处于紧闭状态,从而使得家的安全性得到充分的保障。另一方面,由于设备IP分为内网IP和外网IP,为了满足所有用户网络的需求,该控制系统必须能够解决内外网IP设备无法直接通信的问题。
基于上述的考虑,本文将设计一款基于Android手机远程遥控家居窗户的控制系统。
本文设计了一款基于Android手机远程遥控家具窗户的控制系统,整个系统的总体框架如图1所示。该系统选用树莓派作为主控核心,树莓派通过GPIO口控制L298N电机驱动模块,从而驱动直流电机实现正反转来关闭或开启窗户。其中,树莓派控制系统采用Python语言进行编写(Python是一款开源的语言,其具有丰富和强大的库,可以更加便捷、灵活的实现控制模块程序的编写)。
同时,Android手机作为客户端,通过SSH远程访问家居的控制设备(树莓派)。SSH是专为远程登录会话和其他网络服务提供安全性的协议。
此外,为了克服内外网IP设备无法直接传输数据的问题,本文引入了具有外网IP的服务器(该服务器为阿里云服务器),使其作为中介,并实现了从阿里云服务器(外面IP设备)到树莓派(内网IP设备)之间的反向代理和端口转发的功能。由于树莓派和阿里云服务器之间实现了反向代理和端口转发的联系,因此,手机客户端通过SSH访问阿里云的IP地址,等价于访问了树莓派的IP地址。
树莓派设计的初衷在于为学生计算机编程教育提供便捷式的服务,其大小与卡片的尺寸相当,功能类似于一台微小型的电脑,可以搭载Linux操作系统。本文选用的树莓派型号为树莓派三代B型(即,Raspberry Pi 3 Model B)该控制设备主要包括以下部分:
◎ CPU:64 位、四核、 ARM、 Cortex–A53 、1.2GHz;
◎GPIO引脚数:40个;
图1 基于Android手机远程遥控家居窗户系统的总体框架图
◎SD卡:可以装载操作系统;
◎以太网接口:连接外界因特网;
◎4个USB口:可以用来连接外部设备,如键盘或者鼠标等;
◎板载WiFi;
◎板载蓝牙。
本文采用的电机为小型直流电机,又称为“马达”。该电机具有正负极之分,正极接正电压,负极接负电压,则电机正转;反之,电机则反转。此外,电机的转速正比于正负极两端电压差值的绝对值,即两端电压差越大,电机转速越快,反之则越慢。通常,可以采用PWM(Pulse Width Modulation)脉冲宽度调制来实现对电机转速的控制。所谓脉冲宽度调制,即作用于直流电机两端的电压脉冲根据不同时刻的控制信号具有不同的占空比(高电平的持续时间占一个脉冲周期的百分比),电机两端相同时间等效的有效电压不同,使得直流电机的转速跟着发生改变。
L298N电机驱动模块可以同时驱动两个直流电机。该模块共有4根控制引脚,分别与树莓派GPIO口的3号,4号,5号,6号引脚进行连接。其中,IN1和IN2控制电机motor1,IN3和IN4控制电机motro2。此外,L298N驱动需外接电源+12V ~+24V进行供电。
L298N驱动具有两种工作模式,一方面,当使能A(控制电机motor1)、使能B(控制电机motor2)时,可以分别从IN1、IN2输入PWM(Pulse Width Modulation)信号来控制电机motor1的转速和方向。同时,可以分别从IN3、IN4输入相同PWM脉冲信号来控制电机motor2的转速和方向。另一方面,若禁止A和B使能时,即可通过树莓派的GPIO口向IN1、IN2、IN3、IN4四个引脚输入逻辑“1”(GPIO.HIGH)和逻辑“0”(GPIO.LOW)来控制电机motor1和电机motor2。
整个远程控制系统的流程图如图2所示。首先,手机客户端采用SSH协议,通过IP地址和端口号向具有外网IP的阿里云服务器发起连接请求;其次,阿里云服务器将数据包原封不动的发送给主控核心树莓派;最后,树莓派再通过GPIO口控制L298N电机驱动模块,从而实现对直流电机进行正反转的控制,达到开启和关闭窗户的目的。
图2 基于Android手机远程遥控家居窗户系统的流程图
SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户在自己的本地计算机使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。SSH主要用于远程登录,假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了,即: ssh user@host 。
其中,SSH的工作流程如下:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
本文采用远程服务器与树莓派之间进行反向代理和端口转发的方法,解决了内外网IP设备无法直接进行通信的问题(内网IP设备可以直接访问外网IP设备,外网IP设备却无法直接访问内网IP设备)。其中,阿里云服务器作为中介,一头连接了Android手机客户端,另外一头连接了主控核心树莓派。
反向代理和端口转发的配置步骤如下:
步骤一、 建立A机器到B机器的反向代理【A机器上操作】,命令如下:
ssh –fCNR
其中,
步骤二、 建立 B 机器上的正向代理,用作本地转发。【B机器上操作】,命令如下:
ssh –fCNL * :
其中,
步骤三、在C机器上可以通过B机器ssh到A机器
ssh –p
其中,SSH 参数解释如下:
◎ –f 后台运行
◎–C 允许压缩数据
◎–N 不执行任何命令
◎–R 将端口绑定到远程服务器,反向代理
◎–L 将端口绑定到本地客户端,正向代理
本文围绕家居窗户安全性的考虑,设计了一款基于Android手机远程遥控家居窗户的控制系统。主人可以在android手机平台上,随时随地远程控制家里窗户的关闭或者开启。该系统极大地保证了主人因疏忽忘记关窗户所可能带来的潜在危险,同时克服了内外网IP之间无法直接通信的问题,使得该系统能够更加广泛为用户提供远程管理家居窗户的服务。
* [1]刘子源, 郑佳春, 陈惠滨,等. 基于Android手机远程空调遥控系统的设计[J].集美大学学报:自然科学版,2014,19(4): 309-313.
* [2]曾庆磊.基于Android手机的家居服务遥控终端系统设计[D]西安工程大学,2015.
* [3]鹿曼. 基于Android的智能家居控制系统的设计与实现[D]济南:山东建筑大学信息与电气工程学院, 2013.
* [4]何海燕.基于树莓派的智能家居系统设计与实现[J].中国高新技术企业, 2016 (17): 11-12.
* [5]宋凯,姚嘉明,李静,等.基于树莓派的智能家居控制开关的研究[J].电子技术与软件工程,2015 (21): 140-141.
* [6]高虎,白金平,简兰懿.基于Android智能阳台系统设计与实现[J].
* [7]陈必东,谭美娟.基于Raspberry Pi+ Arduino智能家居雏形系统的探索与研究[J].智慧工厂,2016 (6): 49-54.
* [8]陈儒敏,侯思名,颜江.基于开源软硬件的智能家居系统设计与实现[J].现代计算机:上下旬, 2013 (19): 71-73.
* [9]陈曦.智能家居控制系统的设计与实现[J].国外电子元器件,2003 (11): 5-7.
* [10]王朝华,陈德艳,黄国宏, 等.基于Android的智能家居系统的研究与实现[J].计算机技术与发展, 2012 (2012 年 06): 225 228+ 233.
* [11]邢波.基于Raspberry Pi, Zigbee技术的无线智能家居系统设计[J].数字技术与应用,2014 (6): 59-60.
* [12]郑世珏,徐虹.基于Raspberry Pi的远程监测系统的设计与实现[J].微型机与应用, 2014, 33(19): 105-107.