基于Arduino的移动机器人控制系统设计

2016-01-19 01:43彭攀来马娅婕刘智旸
自动化与仪表 2016年3期
关键词:黑线移动机器人蓝牙

彭攀来,马娅婕,刘智旸

(武汉科技大学 信息科学与工程学院,武汉 430081)

随着计算机技术、传感器技术、自动控制技术、通信技术、人工智能等技术的快速发展,促使了机器人在各行各业的快速应用。家用机器人是机器人的一种应用类型,在日常生活中,越来越多的家用机器人逐渐与我们相伴。针对家用机器人,目前比较成熟的控制方式有:语音控制方式、红外线遥控方式、基于网络的电脑遥控方式、基于WiFi无线网络控制方式、基于GSM/GPRS网络的远程控制方式等,这些控制方式的存在,促使了家用机器人在日常生活中得到一定的应用,但是这几种控制方式存在不便于携带、移动性较差、且控制环境需要网络等问题[1]。

针对以上问题,本文提出了利用“Arduino+Android”通过蓝牙通信功能来实现对移动机器人控制的解决方案,同时利用Arduino能通过各种各样的传感器感知环境的能力提供后续对家庭环境监控的控制接口。该系统成本较低,操作灵活方便,经实际对移动机器人控制结果表明:该系统能够实现精确手动控制机器人的运动的既定目标和避障功能,且能同时实现自动循线和寻光等功能[2]。

1 系统的整体结构设计

该系统由上位机和下位机2部分构成:上位机采用带蓝牙通信功能的Android手机,使用Java语言编写的Android应用程序作为移动机器人的控制软件;下位机采用Arduino单片机来实现对移动机器人的整体控制。系统总体框图如图1所示。

图1 系统总体框图Fig.1 Overall system block diagram

该系统设计并主要实现的功能:

1)系统控制:系统通过蓝牙连接成功之后,进入控制模式,用户通过Android手机来与Arduino通信,实现移动机器人的前进、后退、左转、右转和停止。

2)超声波避障:移动机器人通过超声波传感器测算前方障碍物的距离,如果超过设定的阈值,则下位机发出指令,停止前进。

3)循线和寻光行驶:用户通过手机发送循线或者寻光命令后,移动机器人进入自动行驶模式,它可以根据事先画在地上的黑线或者追寻光线行驶,不需要用户控制,当它检测不到黑线或者光线时,停止行驶。

2 硬件设计

移动机器人主要包括:Arduino单片机模块、蓝牙模块、超声波避障模块、循迹模块、寻光模块、电机驱动模块、电源模块等。Arduino功能整体框图如图2所示。

图2 Arduino整体框图Fig.2 Arduino overall block diagram

2.1 Arduino单片机模块

Arduino是一个开放源代码的单芯片微控制器,并且具有使用类似 Java、C语言的Processing/Wiring开发环境。Arduino的主要功能特点如下:

1)开放源代码的电路图设计。程序开发接口免费下载,也可依需求自己修改。

2)使用低价格的微处理控制器 (ATmega8或AT-mega128)。可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3)支持 ISP线上烧入器,将Bootloader固件烧入芯片。

4)可依据官方提供的PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。

5)可简单地与传感器,各式各样的电子元件连接如红外线、超音波、热敏电阻、光敏电阻、伺服马达等。

6)支持多样的互动程序如 Flash,Max/MSP,VVVV,Pure Data,C,Processing等。使用低价的微处理控制器。

7)应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入装置的互动内容,可以更简单地达成单人或多人游戏互动。Arduino的功能特点,使其得到了越来越广泛的应用。系统通过Arduino来控制移动机器人的一系列功能[3-4]。Arduino控制电机的原理如图3所示。

图3 Adruino控制电机原理Fig.3 Arduino control motor schematic

2.2 蓝牙模块

系统中采用蓝牙模块来实现Arduino和Android之间的通信。采用蓝牙作为无线通讯的手段,原因在于:1)蓝牙串口数传模块成本低,便于对底层运行平台进行扩展;2)大多数智能手机均配有蓝牙通讯功能,且标准Android系统中均支持基于蓝牙的串口通讯功能;3)蓝牙通讯距离较短,且为一对一的通讯方式,可以避免远距离时对机器人的误操作。

2.3 超声波避障模块

系统中采用超声波模块来实现移动机器人的避障,该模块由超声波发射器、接收器和控制电路等组成。模块为四线接口,分别为5 V电源、GND地线、信号输入INPUT、信号输出OUTPUT。超声波测距避障的基本原理是通过超声发射换能器不断发出声波脉冲,声波脉冲通过空气介质传播,当声波脉冲遇到障碍物后反射回来被接收换能器接收,根据声速及时间差计算出障碍物的距离,此时移动机器人停止前行,利用手动控制来转向避障。假定为超声波换能器到障碍物间的距离L,超声波发射与接收的时间差为T(单位:s),在空气中的传播速度为V(单位:m/s),关系为

由于声波在空气中传播的速度与温度有关,在精度要求比较高的情况下需要做温度补偿校正,按式(2)对声速进行修正。

式中:T为测量时的实际温度;V为超声波在空气介质中的传播速度[5]。

2.4 循迹和寻光模块

循迹模块可以检测白底中的黑线,也可以检测到黑底中的白线。该传感器是黑线低电平有效,当传感器检测到黑线就让电机开始转动。寻光模块采用的是基于半导体的光电效应原理所开发的光线传感器,其可对周围环境光的强度进行检测,实现移动机器人的寻光功能。

2.5 电机驱动模块

移动机器人的电机驱动和电池决定了它整个的运行性能。移动机器人的电机驱动系统由功率变换器、电机以及控制器构成。本系统采用的电机驱动模块是SGS公司的L298N,其内部含有4通道逻辑驱动电路即有2个H桥的高电压大电流双全桥式驱动器接收标准TTL逻辑电平信号,驱动46V、2 A以下的电机。

2.6 电源模块

系统采用ACE锂聚合物电池给机器人供电,充电锂电池1200 mAh、7.4 V、持续15 C放电。由于高容量、超高放电倍率的产品,价格也较高,但在很多设备中,并不能发挥超高放电倍率的电池能力;其次,很多设备,也不适合重量较大的高容量电池,由此,特采用放电倍率稍低、容量适中的小钢炮系列[6]。

3 软件设计

整个软件系统可以分成Android手机端软件程序和智能移动机器人端Arduino单片机程序。Android整体流程如图4所示。

图4 Android整体流程Fig.4 Android overall flow chart

3.1 Android软件端程序

Android软件端程序分为蓝牙模块和通信模块。各模块设计如下:

1)蓝牙模块:完成HC-06蓝牙模块的配对与数据交换。

进入控制界面后,如果蓝牙未开启,用户点击桌面上蓝牙图标,执行开启蓝牙的功能,当用户允许打开蓝牙并同意设备可见后,使用Bluetooth Adapter.start-discover()方法命令手机端自动搜索周边设备;如果蓝牙已经开启,则自动搜索周边设备。同时桌面显示出设备链表,用户可以在设备链表中查看周边可用的蓝牙设备,选取移动机器人蓝牙模块对应的蓝牙设备名称,创建BluetoothSocket进行自主连接,创建RFCOMM通信通道。待连接完成后,使用Item.setvisible()方法使方向控制按钮显示出来。Android手机连接蓝牙模块流程如图5所示。

图5 Android手机连接蓝牙模块流程Fig.5 Android phone connect to bluetooth module flow chart

2)通信模块

蓝牙设备连接成功,建立了RFCOMM通道后,便可进行数据通信了。用户通过点击控制桌面上的前进、后退、左转、右转、停止等按钮来控制移动机器人的运动。软件监听每个方向Button的ButtonClick()点击事件。在移动机器人的Arduino部分,通过它的蓝牙接收从安卓手机蓝牙发送出来的控制指令,经过分析处理后指挥移动机器人进行相应的运动。手机端如果退出程序则断开通信连接,关闭蓝牙并关闭程序,否则继续通信。手机和移动机器人一方断开后,蓝牙模块将处于可搜索连接的状态,等待下一次的连接通信[7]。

3.2 Arduino单片机程序

Arduino单片机程序分成蓝牙模块、超声波避障模块、循迹模块、寻光模块。

各模块设计如下:

1)蓝牙模块:通过串口接收HC-06模块发送来的Android手机端控制命令。

2)超声波避障模块:通过超声波的测距功能,来实现避障。当超声波测出前障碍物小于某一设定值时,移动机器人停止前进。

3)循迹模块和寻光:通过循线和寻光传感器的信号来控制移动机器人的自动行驶。

3.3 控制系统界面

控制显示界面如图6所示,在这里用户可以选择相应的交互界面。

图6 控制显示界面Fig.6 Control display interface

启动安装在Android手机上的软件,点击控制界面上的“打开蓝牙”按钮,成功与移动机器人上的蓝牙配对之后,点击“手动控制”按钮,系统进入手动控制模式。用户可以通过手机来控制移动机器人的前进、后退、左转、右转和停止,同时,安装有超声波的移动机器人不断地测算机器人距离前方障碍物的距离,来实现避障。

点击“自动”按钮,询问“循线?”,肯定回答,则进入循线模式,移动机器人根据事先画在地上的黑线行驶,不需要用户控制,当移动机器人检测不到黑线时,停止行驶。否定回答,则进入寻光模式,根据光线强度来进行行驶[8-9]。

4 系统调试

在Arduino控制器上添加蓝牙模块,由上位机Android手机通过蓝牙模块来发送相关指令给Arduino,Arduino进行分析处理后,控制移动机器人来执行相关的命令。然后Arduino通过判断接收到的指令来对移动机器人2个电机转动的形式进行控制。它在收到Arduino发来的指令后,执行相关的动作。同时,搭载在移动机器人上的超声波在遇到前方障碍物时,能及时停止,来避开障碍物。在此基础上,移动机器人可以根据事先画在地上的黑线行驶,当它检测不到黑线时,停止行驶。同时在遇光线时,跟随其移动。移动机器人整体图如图7所示。

图7 移动机器人整体图Fig.7 Mobile robot overall physical map

5 结语

本文设计和实现了一种基于Arduino的移动机器人系统,给出了各个功能模块的设计和具体实现方法。完成了系统的手自动控制。通过蓝牙实现了实时、灵活地控制移动机器人行驶,通过相应的传感器实现了移动机器人的一系列功能。测试结果表明,该控制系统操作简单灵活、运行稳定、实时性强。本系统在家用机器人领域有较为广阔的应用前景并且为研究物联网及智能家居系统提供了极其重要的参考价值。

[1]李瑞,李晓明.基于Mobile-Android小型移动机器人平台控制系统[J].机电工程,2013,30(11):1414-1419.

[2]王志凌,闻凯,陈杰.基于Android的小型移动机器人控制系统[J].国外电子测量技术,2014,33(9):4-7.

[3]程晨.Arduino开发实战指南:AVR篇[M].北京:机械工业出版社,2012.

[4]Bender P,Kussmann K.Arduino based projects in the computer science capstone course[J].Journal of Computing Sciences in Colleges,2012,27(5):152-157.

[5]蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012,20(16):155-157.

[6]李杜.基于HC-SR04的超声波测距装置算法研究[M].南京:东南大学出版社,2012.

[7]景晓军,李剑勇,乔凤杰,等.精密数控直流电源设计[J].电源世界,2011(10):30-33.

[8]崔才豪,张玉华,杨树财.利用Arduino控制板的光引导运动小车设计[J].自动化仪表,2011,32(9):5-7.

[9]田波,陈建平,付根平.基于互联网的移动机器人遥操作系统设计与实现[J].计算机测量与控制,2013,21(5):1269-1272.

猜你喜欢
黑线移动机器人蓝牙
蓝牙音箱的直线之美
移动机器人自主动态避障方法
黑线
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
虾背黑线真的特别“脏”吗
基于Twincat的移动机器人制孔系统
这也算海鲜
七巧数独
极坐标系下移动机器人的点镇定