基于手机APP蓝牙控制的提线木偶的设计与调试

2019-06-28 08:36李凯刘丽霞曹杨
科技创新与应用 2019年16期
关键词:舵机蓝牙按钮

李凯 刘丽霞 曹杨

摘  要:为了实现对提线木偶的无线自动控制,设计了一套利用手机App通过蓝牙模块发出控制指令,通过Arduino控制4个舵机驱动牵引线完成提线木偶左右手臂和左右腿动作的装置。该装置既可以完成提线木偶的单一动作,也可完成连续多个动作。经搭建实物测试,设计的装置可以流畅的完成提线木偶的动作。

关键词:App Inventor 2;蓝牙通信;Arduino平台;舵机驱动

中图分类号: TP29 文献标识码:A 文章编号:2095-2945(2019)16-0012-03

Abstract: In order to realize the wireless automatic control of the wire lifting puppet, a set of device is designed, which uses the mobile phone App to send out the control command through the Bluetooth module, and uses Arduino to control the four steering gear driving leads to complete the left and right arms and left and right legs of the wire lifting puppet. The device can not only complete the single action of the puppet, but also complete a plurality of continuous actions. After building the physical test, the designed device can smoothly complete the action of wire lifting puppets.

Keywords: App Inventor 2; bluetooth communication; Arduino platform; actuator drive

1 概述

手机APP控制的可编程智能玩具市场日趋繁荣,它集娱乐和益智于一体,深受青少年的喜欢。手机APP平台App Inventor 2是一个图形化开发应用环境,它可以实现如“搭积木”一样编写程序,完成手机APP的制作[1]。Arduino是目前非常流行的开源创客工具,它对底层硬件进行了良好封装,提供了丰富的库函数可供开发者调用,有强大的社区论坛,以上使得开发过程更加简单快速[2]。

为结合科技与娱乐,激发青少年的兴趣,本文通过借助手机APP平台App Inventor 2,运用蓝牙BLE4.0模块[3],利用舵机[4]驱动牵引线实现手机对智能提线木偶手臂和腿部的动作,可以实现提线木偶手臂、腿部的单獨动作和连续动作两种模式的动作。用户可对连续运动的动作进行设计,实现提线木偶完成一系列连贯动作。

2 系统设计

系统设计包括4部分内容,依次是总体方案设计、提线木偶动作设计、硬件电路设计和软件设计,具体内容如下所述。

2.1 总体方案

本设计的总体方案如图1所示,Arduino控制器接收由手机APP经由蓝牙模块传来的指令,以此通过驱动电路控制舵机操作木偶运动。设计内容包括Android手机APP设计、蓝牙通信连接、Arduino控制器程序编写与调试、舵机驱动电路设计、提线木偶的动作设计,以及为各个模块供电的直流电源模块等。实现的目标包括:(1)能够通过Android手机APP操作界面实现提线木偶的手臂和腿部的抬/放动作。(2)手臂或腿部能够实现单独动作和连续动作。(3)当超出蓝牙控制范围时,提示蓝牙连接中断,并保持提线木偶动作。

2.2 提线木偶动作设计

提线木偶可以实现的基本动作包括抬左手、放左手、抬右手、放右手、抬左腿、放左腿、抬右腿、放右腿8个动作。如图2所示,由于上述8个基本动作由四个独立的舵机控制,每个部位都可单独动作,若将这8个动作组合,同时增加延时环节,可形成更多动作组合。如抬左手的同时抬右手并保持,延时2秒,抬左脚并保持,待左脚到位后抬右脚,保持2秒,全部复位。这样木偶既可以实现单个动作,又可同时实现多个动作组合形成连续动作,且可以控制前一个(组)动作和后一个(组)动作之间的时间。

2.3 硬件电路设计

本系统的硬件电路原理图见图3所示,Arduino控制板、蓝牙模块、PCA9685芯片、4个舵机及5V直流电源(图中未画出)组成。

木偶动作是由舵机驱动牵引线来实现的,舵机可以实现180度(-90度—+90度)范围内旋转。舵机有3个外接引脚,分别是Vcc(+5V)、GND(接地)和PWM三个引脚。舵机供电由Vcc和GND两个引脚实现,舵机的旋转角度由PWM引脚接入脉冲信号的占空比来控制。PWM接入信号的频率为50Hz,舵机旋转-90—+90度线性对应PWM引脚脉冲信号占空比2.5%-12.5%。如PWM脉冲信号占空比为2.5%时,舵机旋转到-90度的位置,PWM脉冲信号占空比为12.5%时,舵机旋转到+90度的位置,PWM脉冲信号占空比为7.5%时,舵机旋转到0度的位置。

本设计选用Arduino Uno控制板为主控单元,由于其引脚资源有限,也为了后期扩展方便,选用能够同时控制16路舵机的PCA9685芯片[5]作为舵机驱动模块。Arduino控制板与PCA9685芯片之间的通讯采用IIC协议[6],硬件接线需将Arduino的A4、A5引脚分别与PCA9685芯片的SDA、SCL引脚连接。PCA9685芯片的A0-A5都接地,即设置芯片的地址为0x40。本设计中使用PCA9685芯片的PWM9、PWM11、PWM13和PWM15四个引脚作为4路舵机转角控制的PWM脉冲引脚,故需要将它们分别与4路舵机对应的PWM引脚相连。

手机利用蓝牙模块对Arduino下达指令,硬件连接需将蓝牙模块的TX、RX引脚分别与Arduino的D0(RX)、D1(TX)引脚相连。

最后为各个芯片模块和舵机提供5V直流电源(图中未画出)即完成硬件电路设计。

2.4 软件设计

软件设计分为两部分,分别是利用App Inventor 2完成手机APP的设计,利用C语言完成Arduino控制程序的设计。

2.4.1 APP的设计

手机APP是利用App Inventor 2平台完成的,根据上文提线木偶的动作设计,手机APP需要完成的功能如图4所示。所需要的组件分别为实现通信连接的BluetoothLE蓝牙通信组件,实现时间触发的计时器组件,以及实现点击和显示的按钮和标签组件。

程序的初始化需要完成记录动作的空列表的创建,记录列表项数量的变量定义以及定时时间标志位的定义等,并且自动开启手机蓝牙通信的功能。连接蓝牙需要完成手机蓝牙与蓝牙模块的通信连接。记录动作需要完成将每次新增动作所对应的字符添加到列表的最后一项,直到添加完所有动作。发送动作需要完成将列表中的每一项依次(利用定时器实现时间次序,本设计的发送时间间隔为1.5秒)通过蓝牙模块发送给Arduino控制板。

2.4.2 Arduino控制程序的设计

Arduino控制程序流程图见图5所示。Arduino控制程序的初始化需要完成IIC通信(Arduino控制板和舵机驱动板PCA9685之间的通信)配置和蓝牙通信初始化配置(Arduino控制板和蓝牙模块之间的通信),以及PCA9685芯片地址和PCA9685芯片寄存器地址的定义。蓝牙通信和IIC通讯初始化配置后,等待接收手机APP的动作指令,当接收到指令,判断指令动作,执行相应动作。流程图5中动作1到动作9分别对应,抬左手、放左手、抬右手、放右手、抬左脚、放左脚、抬右脚、放右脚和延时共9个动作。

在Arduino程序编写环境中,IIC通信需要引用“wire.h”库文件,在setup()函数中调用Wire.begin()函数开启IIC通信,调用Serial.begin(9600) 开启Arduino串口通信以此接受蓝牙指令。然后需要分别编写IIC通信协议下的对PCA9685芯片存储单元写8位数据的函数和读8位数据的函数,以及通过调用上述两个函数完成PCA9685芯片PWM频率设置的函数和PCA9685芯片PWM占空比设置函数,以上4个自定义函数可以完成舵机驱动的初始化配置。Arduino程序编写环境中loop()函数内则要采用Serial.available()函数判断是否有蓝牙指令传输,若有则用Serial.read()函数读取指令,然后利用switch选择结构分别控制舵机执行相应指令动作。

3 系统调试

系统调试分为APP安装、Arduino程序下载及硬件电路调试两部分内容。

3.1 APP安裝

手机APP的安装有两种方式,一是将调试好的程序生成APK下载到手机中,然后在手机的文件管理器中点击安装。二是将调试好的程序利用App Inventor 2生成二维码,再通过手机扫描二维码下载安装。安装完成的界面如图6所示。

3.2 Arduino程序下载及硬件电路调试

采用Arduino控制板配套的IDE环境编写C程序,编译完成后下载到Arduino控制板中,再将硬件电路按照图3连接完毕,使用5V电源模块供电后即可进行调试。

调试过程如下:首先打开手机APP的提线木偶控制界面,点击按钮“连接蓝牙”,若蓝牙模块的显示灯由闪烁变为常亮,且手机上显示蓝牙连接成功,则表示蓝牙通信成功。然后可以点击APP界面上的“抬左手”、“放左手”等的按钮,既可一次只点击一个按钮,也可一次点击多个按钮。与此同时打开电脑上Arduino编译环境IDE中串口的显示界面,然后点击手机APP界面上的“发送动作”按钮,此时即可观察到Arduino编译环境的串口显示界面有蓝牙模块传输过来的数据,并且舵机在驱动模块的作用下开始动作。例如:点击“抬左手”按钮,再点击“发送动作”按钮,其中1路舵机会旋转90度。连续按下“放左手”、“抬左手”、“抬右手”按钮,再点击“发送动作”按钮,则是其中1路舵机会旋转正90度,再旋转初始位置,然后另1路舵机旋转到90度的位置,完成连续动作。

手机操作界面的记录清空按钮是将上次的列表中动作清空,重新设计动作。完成硬件电路调试(如图7所示)即可将4路舵机分别与提现木偶的相应部位连接完成本设计。经测试,该装置可以顺畅完成设计动作。

4 结束语

该系统设计主要完成的是目前流行的智能手机对传统的提线木偶的无线控制,主要是一种娱乐的装置,也为Arduino单片机增加一个趣味性的案例。后期还可以增加视觉模块,动作的设计可以靠视觉模块采集,然后利用舵机驱动提线木偶跟随人的动作,以此扩展功能。

参考文献:

[1]李文川,曾玉.APP Inventor 2的项目应用及教学策略[J].电子技术与软件工程,2018(11):55-56.

[2]张哲,陈丽银,汪栋,等.基于Arduino UNO大型汽车盲区检测与报警装置的设计[J].科技创新与应用,2018(28):49-50.

[3]刘少军,王瑜瑜.基于Android手机蓝牙控制的智能小车设计与实现[J].电子测量技术,2016,39(9):114-117.

[4]许晓飞.一种舵机组合控制策略的书写机器人设计[J].高技术通讯,2018(7).

[5]周英路,王志亮,朱松青,等.基于PCA9685的多路舵机控制器设计[J].南京工程学院学报(自然科学版),2017,15(4):26-31.

[6]李强,霍淑珍,郑伟.基于I2C通信的PCA9685在舵机控制中的应用[J].科技创新与应用,2018(28):173-174.

猜你喜欢
舵机蓝牙按钮
帮你轻松找到AirPods的神奇工具
死循环
海太克HS—1100WP数字舵机
超音速舵机保护器
菜鸟看模型
无线连接的飞跃 蓝牙技术4.2揭密
内心不能碰的按钮
舵机的应用
蓝牙4.0落地加速
蓝牙4.0:更快速更节能