基于 Android 和蓝牙的遥控开关控制系统设计
扫描二维码
随时随地手机看文章
0 引 言
家庭生活是人们日常生活的重要组成部分,如何搭建一个方便使用、高效率、低成本的智能家居系统,进而为人们提供一个方便快捷、舒适安全的家庭生活环境,是近来信息技术从业者研究的一个热点问题。传统的智能家居通信多采用有线方式,其缺点是布线繁杂、安装成本高、系统升级困难、扩展性和移动性差。室内常用的开关面板如图 1 所示,由盖板和翘板组成,按动翘板可以实现开关的通断。该面板使用广泛,若要进行智能化改造,必然需要改动原有墙体线路 [1-4]。
针对上述情况,本文提供一种简单有效的开关面板无线控制方式如图 2 所示。本体与基座采用螺钉连接,通过过盈配合罩扣在盖板上。在本体中,以舵机为原动机,曲柄滑块机构为执行部件,仿照手指按动翘板 ;控制系统采用基于蓝牙技术的无线通信方式 ;整个装置采用放置在电池仓中的可充电锂电池供电。本装置采用罩扣式安装,安装方便,不改动原有接线,不需要专业技术便可安装,可随时拆卸并更换安装位置。
1 系统概述
本家居控制器采用低功耗的微控单元和无线通信模块,这样保证了系统的稳定性、低功耗和低成本 ;与无线通信模块之间采用心跳链路工作模式,保证了设备响应时效性。
系统工作时,以手机等智能终端作为上位机,利用蓝牙功能发出指令,以单片机为核心的下位机,通过蓝牙透传模块接收指令,经处理后由数字引脚发出控制信号使机械结构完成开关动作。系统采用电池供电,为避免电池的快速消耗,下位机在与上位机连接后,如果在单位时间内没有接收到有效指令,则进入休眠状态。由单片机内置定时器定期唤醒,发送一个同步帧至上位机,上位机接收到同步帧之后才会进行有效的数据交流,使执行终端从休眠模式转入工作模式执行任务,系统执行完后继续休眠以节省电量。系统总体设计如图 3 所示 [5-7]。
2 硬件选型
单片机模块采用 Arduino Nano,它是一种基于 ATMEGA328P 的小型单片机集成板,有 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]。
该系统充分利用蓝牙通信的广泛性和智能终端的便捷性,安装简单,无需布线,无用电隐患,通过合理布置,可以将整个室内的开关组网控制。对系统的软硬件进行改装,能够实现其他电器的无线控制组网功能,可广泛应用在不便于布线改线的居家办公场合,具有一定的实用价值。