武志鹏 陶松岚
摘 要:将智能手机应用于家居生活是发展的必然趋势,设计一种基于Android和蓝牙的无线遥控开关系统。该系统利用手机等智能终端作为上位机,通过蓝牙功能发出指令,以单片机作为下位机的执行端,利用蓝牙模块接收指令,经Arduino Nano处理后驱动机械结构完成开关的动作。实验测试结果表明,该系统具有低成本、低功耗、稳定、安全、易嵌入等优点,不需要改动原有电路就可随时拆卸并更换安装位置。
关键词:Android;蓝牙;遥控开关;智能家居;智能终端;Arduino Nano
中图分类号:TP393.1;TS976.9文献标识码:A文章编号:2095-1302(2019)09-00-03
0 引 言
家庭生活是人们日常生活的重要组成部分,如何搭建一个方便使用、高效率、低成本的智能家居系统,进而为人们提供一个方便快捷、舒适安全的家庭生活环境,是近来信息技术从业者研究的一个热点问题。传统的智能家居通信多采用有线方式,其缺点是布线繁杂、安装成本高、系统升级困难、扩展性和移动性差。室内常用的开关面板如图1所示,由盖板和翘板组成,按动翘板可以实现开关的通断。该面板使用广泛,若要进行智能化改造,必然需要改动原有墙体线路[1-4]。
针对上述情况,本文提供一种简单有效的开关面板无线控制方式如图2所示。本体与基座采用螺钉连接,通过过盈配合罩扣在盖板上。在本体中,以舵机为原动机,曲柄滑块机构为执行部件,仿照手指按动翘板;控制系统采用基于蓝牙技术的无线通信方式;整个装置采用放置在电池仓中的可充电锂电池供电。本装置采用罩扣式安装,安装方便,不改动原有接线,不需要专业技术便可安装,可随时拆卸并更换安装位置。
1 系统概述
本家居控制器采用低功耗的微控单元和无线通信模块,这样保证了系统的稳定性、低功耗和低成本;与无线通信模块之间采用心跳链路工作模式,保证了设备响应时效性。
系统工作时,以手机等智能终端作为上位机,利用蓝牙功能发出指令,以单片机为核心的下位机,通过蓝牙透传模块接收指令,经处理后由数字引脚发出控制信号使机械结构完成开关动作。系统采用电池供电,为避免电池的快速消耗,下位机在与上位机连接后,如果在单位时间内没有接收到有效指令,则进入休眠状态。由单片机内置定时器定期唤醒,发送一个同步帧至上位机,上位机接收到同步帧之后才会进行有效的数据交流,使执行终端从休眠模式转入工作模式执行任务,系统执行完后继续休眠以节省电量。系统总体设计如图3所示[5-7]。
2 硬件选型
单片机模块采用Arduino Nano,它是一种基于ATMEGA 328P的小型单片机集成板,有16 KB的闪存用于存储代码。Arduino Nano上的14个数字引脚都可以用作输入或输出,可以使用pinMode(),DigalWrite()和DigalRead()函数进行操作,每个引脚工作电压为5 V,驱动电流为40 mA,并有内部上拉电阻,A6,A7针脚可以读取模拟信号用来监控电源模块。ATMEGA 328P有8种节电设置,SLEEP 指令可以使MCU 进入掉电模式,降低功耗。另外,该集成板具有UART串行通信引脚,可用于接收和发送TTL串行数据。
蓝牙通信在生活中的应用非常广泛,大多数无线设备支持此功能。本设计中蓝牙模块采用HC-05蓝牙透传模块,其优点是体积小巧、贴片生产、稳定性好、易嵌入。HC-05采用了CSR主流蓝牙芯片,蓝牙V2.0协议标准,输入电压为3.6~6 V,可设置多种波特率,空旷地有效距离为10 m,能满足室内使用。可以与各种带蓝牙功能的电脑、蓝牙主机,以及大部分带蓝牙的手机、PDA等智能终端配对。其模块上引出接口,包括VCC,GND,TXD,RXD。调试时可以采用AT指令设置通信参数,蓝牙模块发送端TXD,接Arduino Nano上的RXD引脚;蓝牙模块接收端RXD,接Arduino Nano上的TXD引脚。
电源模块为可充电电池供电,用于向执行装置提供工作电源。本系统24 h连续工作过程中,处于低功耗休眠状态,无线接收模块周期性唤醒,以激活系统进行工作,进一步降低了能耗,提高了系统可靠性。
电机驱动模块采用MG996R舵机,以舵机为原动机的机械装置可以实现对开关面板的按动操作。MG996R舵机质量轻,响应速度快,控制精度适中,工作电压为4.8~7.2 V,可以与MCU、蓝牙模块共用电源。
下位机硬件框图及实物如图4所示。
3 软件设计
软件部分主要是应用计算机编程语言设计应用程序对各类信号进行处理计算,最终实现对硬件的控制。本系统需要在软硬件协同工作实现对开关的远程控制,分为上位机软件和下位机软件。上位机软件是安卓移动端APP,用户通过APP发送指令;下位机软件在Arduino Nano中,用于接收指令驱动舵机。
3.1 上位机APP设计
以Android系统为例,系统中上位机与下位机之间由蓝牙通信实现数据传输,上位机部分主要功能为:打开应用程序时,与对应的下位机蓝牙模块建立连接,将指令通过蓝牙功能发送至下位机的蓝牙模块。启动APP后,系統首先会判断是否支持蓝牙,如图5(a)所示;确认支持后再判断蓝牙状态,此时应使蓝牙功能处于打开状态,并扫描搜索附近蓝牙设备,如图5(b)所示;完成与硬件采集设备的匹配连接,连接成功后跳转到操作界面进行数据的传输,如图5(c)所示。本系统使用安卓Eclipse设计了一款手机APP,使用方便,调试难度低。
3.2 下位机程序设计
下位机部分主要通过蓝牙模块接收指令,并驱动舵机旋转指定角度等动作,故单片机的程序设计较为简单。
程序首先对Arduino Nano的引脚、串口波特率等进行初始化设置,将通信模块设置为接收状态,并使Arduino Nano进入低功耗模式。当接收到正确数据后产生中断,对外围电路开始供电,系统各模块反馈信息给Arduino Nano。而后Arduino Nano退出低功耗模式,对数据进行处理,一方面驱动舵机,另一方面通过蓝牙串口将数据发送至上位机。数据发送完成后再次进入低功耗模式。
使用Arduino Nano编写蓝牙通信程序简单快捷,完成串口通信波特率(本文采用9 600 b/s)等参数初始化设置后,利用Serial.read()函数读取蓝牙模块传入的数据,根据读到的数据执行相应的动作。由于开关只有两种状态,本文中,若蓝牙模块收到数据“1”,则舵机旋转到0°,然后返回到20°;若读到数据“2”,则舵机旋转到40°,然后返回到20°。需要注意,这里的“1”和“2”是由上位机APP中的设定而决定,Arduino Nano程序中的设定与上位机APP端的编码必须一致。Arduino Nano串口通信程序如下:
值得注意的是,組建系统之前需要用AT指令对HC-05蓝牙模块进行设置,包括蓝牙名称、波特率、配对码等参数。另外,系统软件设计时应采用模块化设计思想,这样有利于系统调试,而且便于在项目间进行移植。
4 结 语
通过以上软硬件构成的一系列的接收、触发动作,可以较为理想地手动与电动控制开关。舵机驱动的机械机构运行在指定位置按动翘板后,立即自动返回至初始位置以释放翘板,解决了手动与电动兼具的问题。无线通信装置接收到移动终端发来的指令信号,通过其内置的应用软件,根据开或关的动作指令控制机械结构,行进一定的距离按动翘板,以达到本装置的应用目的[2,8-9]。
该系统充分利用蓝牙通信的广泛性和智能终端的便捷性,安装简单,无需布线,无用电隐患,通过合理布置,可以将整个室内的开关组网控制。对系统的软硬件进行改装,能够实现其他电器的无线控制组网功能,可广泛应用在不便于布线改线的居家办公场合,具有一定的实用价值。
参 考 文 献
[1]古丽扎提·海拉提,胡志华.智能化窗与帘系统的节能自动控制设计[J].上海第二工业大学学报,2016,33(4):308-313.
[2]贾阳静,邹念育,雷冬鸣,等.基于Android和WiFi通信的智能家居系统设计[J].大连工业大学学报,2016,35(1):67-71.
[3]罗娟,贾亚龙,孔瀚文.基于Android的个性化智能家居控制终端[J].工业控制计算机,2018,31(3):41-42.
[4]关天屹.基于物联网的教室空气质量控制系统设计[J].工业控制计算机,2018,31(1):22-23.
[5]李杨,郭培源,刘波,等.基于嵌入式技术的居室健康环境监测系统[J].电子技术应用,2014,40(8):24-26.
[6]刘静,杨正校,沈健.基于WiFi的安卓智能家居控制与监测系统的设计[J].软件,2014,35(6):19-22.
[7]黄瑾瑜,冯乃乔,沈文辉.基于Android系统和蓝牙通信的电机语音控制系统[J].工业控制计算机,2018,31(7):19-20.
[8]于洪涛,吴迪,朱齐山,等.一种基于无线透传传感网络的分布式环境监测系统的设计[J].现代电子技术,2015,38(18):128-132.
[9]肖俊红,邵广贤.基于物联网的井下环境监测数据无线传输系统设计[J].煤矿机械,2015,36(1):242-243.
[10]陈建明,郭香静,赵明明.压电式无源无线开关的设计[J].科技创新与应用,2015(3):19-20.