基于Android的小型移动机器人控制系统_王志凌
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c)当手机屏幕垂直竖立放置,Y 轴朝向天空,X= 0 m/s2,Y = 10 m/s2,Z = 0 m/s2。
d) 当手机屏幕垂直竖立放置,Y 轴朝向地面,X= 0 m/s2,Y = -10 m/s2,Z = 0 m/s2。
在Android中,Sensor类来管理 加速度计。程序通过实例化Sensor来 读取加速度及数据。下面是手机获取 各方向加速度值的代码。
[5] 陈进. 一种感应无线车上检测位置 的方法[J]. 电子测量与仪器学报, 2011, 25(3):272-273.
[6] 景晓军,李剑勇,乔凤杰. 精密数控 直流电源设计[M]. 北京:电源世 界出版社,2011:10-12.
[7] 李瑞,李晓明.基于MobileAndroid小型移动机器人平台控 制系统[J].机电工程,2013, 30(11): 1414-1419.
[2] 章隆彬,邱恒,马国荣.基于Android 操作系统的XK-I教育机器人平 台设计[J]. 国外电子测量技术, 2013, 32(8):50-53.
[3] 李杜.基于HC-SR04的超声波测 距装置算法研究[M]. 南京:东南 大学出版社,2012:28-30.
[4] 陈志崇. 机器人惯性定位信息显示 系统设计[D]. 广东:广东工业大 学,2013:22-23.
} } 在手机加速度被改变的情况下会 调用SensorEventListener监听器。当 手机以慢速倾斜状态下,加速度值为 手机与水平轴之间的夹角。 ③数据处理模块:将手机获取的加 速度计数据转换成倾角,并通过自定义 的数据格式生成数据包交给蓝牙通信模 块,并通过蓝牙发送给单片机。 例如,Android手机端发送一个 数据包为“@230%”,表示手机向前 倾斜了30°,该命令可控制小车以一 定速度向前行驶,如增大手机倾角,
针对目前小型移动机器人控制系 统存在的控制方案复杂、成本高、不
易操空等问题,本文提出了利用手机 的蓝牙通信功能和内置的加速度计实 现与移动机器人的无线通信及控制, 通过手机倾斜角度和幅度控制机器人 移动的方向和速度。该系统成本较 低,操作灵活方便,经实际对移动机 器人的控制结果表明:该系统能够实 现精确手动控制机器人运动的既定目 标,且能同时实现自动循线和报警功 能。
小车速度会增大。 2)51单片机程序分成蓝牙通信模
块、小车调速模块、循迹模块、超声 波测距模块、告警模块[7]。
各模块设计如下: ①蓝牙通信模块:通过串口接收 HC-06模块发送过来的Android手机 端控制命令,并解析自定义的命令[8]。 ②小车调速模块:通过 STC12C5A60S2自带的PWM控制器实 现对小车速度的控制。 ③循迹模块:通过接收红外对管 的信号来控制小车自动行驶[9]。 ④超声波测距模块:通过应用单 片机的定时器来实现对超声波模块的 控制,实现测距的目的。 ⑤报警模块:通过单片机IO口来 控制蜂鸣器,并根据告警距离门限进 行分级告警,通过告警音频率指示告 警等级。 3)控制系统界面 控制显界面如图5所示,在这里用 户可以选择相应的交互界面。
- 4 - 国外电子测量技术
中国科技核心期刊
2014年9月第33卷 第9期
专题策划
过超声波传感器测算前方障碍物的距 离,并通过蓝牙将数据实时回传给手 机端;如果超过门限,则上位机进行 语音播报,下位机通过蜂鸣器进行告 警。
4)循线行驶:当用户通过手机发 送循线命令后,移动机器人进入自动 行驶模式,即循线模式;小车可以根 据事先画在地上的黑线行驶,不需要 用户控制,当小车检测不到黑线时, 小车停止行驶[4]。
图6 手动控制效果
自动循迹效果如图7所示,移动 机器人能够随着设定线路精确移动, 当设定线路消失,移动机器人停止。
平台的移动机器人控制系统的设计和 实现,给出了各个功能模块的设计和 具体实现方法。通过蓝牙及加速度计 实现了实时、灵活的控制移动机器行
驶,该移动机器人通过超声波测距实
时显示障碍物距离,并进行分级告
采用3节3.7 V的14450锂电池供 电,使用LM2596作为降压芯片,通过 电位器调节来调整电压输出值。
3) 蓝牙模块 采用HC-06蓝牙模块,支持蓝牙 2.0协议,兼容蓝牙1.1协议。该模块 通过串口和单片机通信。 4)超声波测距模块 超声波测距模块采用的是HCSR04,该模块由超声波发射器、接收 器和控制电路等组成。模块为四线接 口,分别为5 V电源VCC、地线GND、 信号的回响输出端ECHO以及控制信号 触发的输入端TRIG。该模块电路包括 脉冲发生和放大电路。单片机发出的 方波信号,经过三极管放大以及变压 器进行升压,达到特定功率之后,推 动换能器工作,振荡器和超声波换能 器的输出阻抗需要一致,变压器和超 声探头之间应通过驱动器连接[5]。 5) 电机驱动模块 移动机器人的电动机驱动和电池 决定了它整个的运行性能。移动机器 人的电机驱动系统由功率变换器、电 机以及控制器构成[6]。本系统采用的 电机驱动模块是SGS公司的L298N, 其内部含有4通道逻辑驱动电路,即有 2个H桥的高电压大电流双全桥式驱动 器,接收标准TTL逻辑电平信号,驱 动46 V、2 A以下的电机。 6)红外循迹模块 红外循迹模块由红外传感器 RPR359F和电压比较器LM339构成, 并在比较器后加入一级反射器对监测
制系统操作灵活、实时性强、成本低,具有较强的使用价值。
关键词:Android;蓝牙;加速度计;移动机器人
中图分类号:TM930
文献标识码:A
国家标准学科分类与代码:460.4030
1引 言
随着科学技术的不断发展,机 器人在工业、医学、农业、军事、建 筑业等领域越来越具有广泛的应用前 景,对于智能机器人的需求越来越迫 切。机器人的移动控制技术是机器人 研究领域的一个重要分支,如何有 效、精确的实现机器人的移动控制, 是智能机器人研究中的难点和热点问 题。
SensorEventListener lsn = new SensorEventListener() {
public void on Sensor Changed (SensorEvent e) // 实现接口的方法
{NumberFormat f= NumberFormat.getInstance(); //创 建一个格式化类f
3 软硬件设计
3.1 硬件设计 搭建的移动机器人的实物如图2所
示。
图2 移动机器人实物图
移动机器主要包括:单片机主控 模块、蓝牙模块、报警模块、循迹模 块、超声波测距模块、电源模块、电机 驱动模块。各功能模块具体设计如下:
1)单片机主控模块 选用STC12C5A60S2单片机, 该单片机是传统51单片机速度的8~12 倍,具有1 280字节片内RAM以及64 KB Flash ROM的,有较宽的电压输 入范围和较低的功耗。 2) 电源模块
警,并具有自动循线行驶功能。测试
结果表明,该控制系统操作简单灵 活、运行稳定、实时性强、在十几米
范围内能实现有效控制。本研究在家 用机器人领域有较为广阔的应用前
景。
图7 自动循线功能效果
4结 论
本研究提出了一种基于Android
参考文献
[1] 王鹏. MEMS加速度计的动态倾角 测量性能研究[J]. 计算机测量与 控制, 2012,20(10):2661-2663.
点击“循线行驶”按钮,系统进 入自动行驶模式,即循线模式。小车 可以根据事先画在地上的黑线行驶,
不需要用户控制,当小车检测不到黑 线时,小车停止行驶。 2.3 运行效果展示
手动控制实例如图6所示,机器人 根据用户手动控制进行灵活的运动,显 示X轴和Y轴的加速度数值Байду номын сангаас并能同时 实时显示距离前方障碍物的距离,当小 于设定报警距离时,字体闪烁,机器人 发出报警,并能随着障碍物逐步的靠 近,报警声的频率也会越来越高。
2 系统的整体结构设计
该系统由上位机和下位机两部
图1 系统总体框图 *基金项目: 江苏省高等学校大学生实践创新训练计划项目(201413655006Y)
分组成:上位机采用带蓝牙通信功 能的智能手机,使用Java语言开发 Android应用程序作为移动机器人的 控制软件;下位机设计了带蓝牙通信 模块的移动机器人,包括单片机主控 模块、蓝牙模块、报警模块、循迹模 块、超声波测距模块、电机驱动模块[3] 以及电源模块。系统总体框图如图1所 示。
专题策划
2014年9月第33卷 第9期
基于Android的小型移动机器人控制系统*
王志凌 闻 凯 陈 杰 (南京航空航天大学金城学院 南京 211156)
摘 要:控制系统由Android系统及自带蓝牙通信模块和加速度传感器等组成,通过手机倾斜角度和幅度控制机器人移动的
方向和速度,同时该移动机器人还具有超声波测距、分级告警以及自动循线行驶等功能。测试结果显示,该移动机器人控
[8] 王雷, 蓝箭. 基于Android平台的 无线Wi-Fi控制方法[J]. 卫星电 脑应用, 2012(7):58-61.
[9] 王国胜,刘峰,陆明.基于 MC9S12DG128单片机的迷宫 机器人设计[J]. 微电机, 2011, 44(12):56-59.
图5 控制系统界面 启动安装在安卓手机上的重力 感应遥控器软件,点击控制界面上的 “打开蓝牙”按钮,成功与小车上的 蓝牙配对之后,点击“手动控制”按 钮,系统进入手动控制模式。用户可
- 6 - 国外电子测量技术
中国科技核心期刊
2014年9月第33卷 第9期
专题策划
以通过倾斜手机来控制小车前进、后 退、左转、右转,并且随着倾角的增 大,小车的行驶速度也增大。同时, 安装有超声波的小车不断的测算车身 距离前方障碍物的距离,并将距离数 据实时回传给手机端,显示在左下角 “前方障碍物距离”位置处[10]。
信号进行滤抖。 7)报警模块 下位机根据设定的距离门限通过
蜂鸣器进行分级告警,距离越近告警 音频率越高;上位机通过语音播报障 碍物距离。 3.2 软件设计
整个软件系统可以分成Android 手机端软件和智能小车端51单片机程 序。图3是整体设计的流程。
图3 整体设计流程图 1)在Android软件端程序分为蓝 牙通信模块、加速度计检测模块和数 据处理模块。各模块设计如下: ①蓝牙通信模块:完成于HC-06 蓝牙模块的配对与数据交换。 要在Android程序中使用蓝牙功 能,必须在AndroidManifest.xml文 件中进行权限声明,允许程序发现并
该系统设计并主要实现的功能: 1)蓝牙配对:运行安装在手机上 的重力感应遥控器软件、打开手机蓝 牙功能、打开移动机器人电源,手机 与移动机器人完成蓝牙配对。 2)手动控制:系统进入手动控制 模式后,用户可以通过倾斜手机来控 制小车前进、后退、左转、右转,并 且随着倾角的增大,小车的行驶速度 也增大。 3)探障及报警:移动机器人通
②加速度计检测模块:获得手机中 加速度传感器X轴和Y轴的加速度值。
不同形态下,Android手机的加 速度值:
a)当手机Z轴向上放置,默认加速 度值分别为X= 0 m/s2,Y = 0 m/s2, Z = 10 m/s2。
b)当X轴朝向地面,三轴加速度 值分别是X= -10 m/s2,Y = 0 m/ s2,Z = 0 m/s2。
f.setMaximumFractionDigi ts(2); //设置小数位的格式
x = e.values[SensorManager. DATA_X];
y = e.values[SensorManager. DATA_Y];//得到各轴上的重 力 加 速 度
z = e.values[SensorManager. DATA_Z]
中国科技核心期刊
国外电子测量技术 - 5 -
专题策划
2014年9月第33卷 第9期
进行蓝牙配对。图4是手机连接蓝牙模 块流程图。
图4 Android手机连接蓝牙模块流程 <uses-permission
android:name="android. permission.BLUETOOTH"/>
<uses-permission android:name="android. permission.BLUETOOTH_ ADMIN"/>
d) 当手机屏幕垂直竖立放置,Y 轴朝向地面,X= 0 m/s2,Y = -10 m/s2,Z = 0 m/s2。
在Android中,Sensor类来管理 加速度计。程序通过实例化Sensor来 读取加速度及数据。下面是手机获取 各方向加速度值的代码。
[5] 陈进. 一种感应无线车上检测位置 的方法[J]. 电子测量与仪器学报, 2011, 25(3):272-273.
[6] 景晓军,李剑勇,乔凤杰. 精密数控 直流电源设计[M]. 北京:电源世 界出版社,2011:10-12.
[7] 李瑞,李晓明.基于MobileAndroid小型移动机器人平台控 制系统[J].机电工程,2013, 30(11): 1414-1419.
[2] 章隆彬,邱恒,马国荣.基于Android 操作系统的XK-I教育机器人平 台设计[J]. 国外电子测量技术, 2013, 32(8):50-53.
[3] 李杜.基于HC-SR04的超声波测 距装置算法研究[M]. 南京:东南 大学出版社,2012:28-30.
[4] 陈志崇. 机器人惯性定位信息显示 系统设计[D]. 广东:广东工业大 学,2013:22-23.
} } 在手机加速度被改变的情况下会 调用SensorEventListener监听器。当 手机以慢速倾斜状态下,加速度值为 手机与水平轴之间的夹角。 ③数据处理模块:将手机获取的加 速度计数据转换成倾角,并通过自定义 的数据格式生成数据包交给蓝牙通信模 块,并通过蓝牙发送给单片机。 例如,Android手机端发送一个 数据包为“@230%”,表示手机向前 倾斜了30°,该命令可控制小车以一 定速度向前行驶,如增大手机倾角,
针对目前小型移动机器人控制系 统存在的控制方案复杂、成本高、不
易操空等问题,本文提出了利用手机 的蓝牙通信功能和内置的加速度计实 现与移动机器人的无线通信及控制, 通过手机倾斜角度和幅度控制机器人 移动的方向和速度。该系统成本较 低,操作灵活方便,经实际对移动机 器人的控制结果表明:该系统能够实 现精确手动控制机器人运动的既定目 标,且能同时实现自动循线和报警功 能。
小车速度会增大。 2)51单片机程序分成蓝牙通信模
块、小车调速模块、循迹模块、超声 波测距模块、告警模块[7]。
各模块设计如下: ①蓝牙通信模块:通过串口接收 HC-06模块发送过来的Android手机 端控制命令,并解析自定义的命令[8]。 ②小车调速模块:通过 STC12C5A60S2自带的PWM控制器实 现对小车速度的控制。 ③循迹模块:通过接收红外对管 的信号来控制小车自动行驶[9]。 ④超声波测距模块:通过应用单 片机的定时器来实现对超声波模块的 控制,实现测距的目的。 ⑤报警模块:通过单片机IO口来 控制蜂鸣器,并根据告警距离门限进 行分级告警,通过告警音频率指示告 警等级。 3)控制系统界面 控制显界面如图5所示,在这里用 户可以选择相应的交互界面。
- 4 - 国外电子测量技术
中国科技核心期刊
2014年9月第33卷 第9期
专题策划
过超声波传感器测算前方障碍物的距 离,并通过蓝牙将数据实时回传给手 机端;如果超过门限,则上位机进行 语音播报,下位机通过蜂鸣器进行告 警。
4)循线行驶:当用户通过手机发 送循线命令后,移动机器人进入自动 行驶模式,即循线模式;小车可以根 据事先画在地上的黑线行驶,不需要 用户控制,当小车检测不到黑线时, 小车停止行驶[4]。
图6 手动控制效果
自动循迹效果如图7所示,移动 机器人能够随着设定线路精确移动, 当设定线路消失,移动机器人停止。
平台的移动机器人控制系统的设计和 实现,给出了各个功能模块的设计和 具体实现方法。通过蓝牙及加速度计 实现了实时、灵活的控制移动机器行
驶,该移动机器人通过超声波测距实
时显示障碍物距离,并进行分级告
采用3节3.7 V的14450锂电池供 电,使用LM2596作为降压芯片,通过 电位器调节来调整电压输出值。
3) 蓝牙模块 采用HC-06蓝牙模块,支持蓝牙 2.0协议,兼容蓝牙1.1协议。该模块 通过串口和单片机通信。 4)超声波测距模块 超声波测距模块采用的是HCSR04,该模块由超声波发射器、接收 器和控制电路等组成。模块为四线接 口,分别为5 V电源VCC、地线GND、 信号的回响输出端ECHO以及控制信号 触发的输入端TRIG。该模块电路包括 脉冲发生和放大电路。单片机发出的 方波信号,经过三极管放大以及变压 器进行升压,达到特定功率之后,推 动换能器工作,振荡器和超声波换能 器的输出阻抗需要一致,变压器和超 声探头之间应通过驱动器连接[5]。 5) 电机驱动模块 移动机器人的电动机驱动和电池 决定了它整个的运行性能。移动机器 人的电机驱动系统由功率变换器、电 机以及控制器构成[6]。本系统采用的 电机驱动模块是SGS公司的L298N, 其内部含有4通道逻辑驱动电路,即有 2个H桥的高电压大电流双全桥式驱动 器,接收标准TTL逻辑电平信号,驱 动46 V、2 A以下的电机。 6)红外循迹模块 红外循迹模块由红外传感器 RPR359F和电压比较器LM339构成, 并在比较器后加入一级反射器对监测
制系统操作灵活、实时性强、成本低,具有较强的使用价值。
关键词:Android;蓝牙;加速度计;移动机器人
中图分类号:TM930
文献标识码:A
国家标准学科分类与代码:460.4030
1引 言
随着科学技术的不断发展,机 器人在工业、医学、农业、军事、建 筑业等领域越来越具有广泛的应用前 景,对于智能机器人的需求越来越迫 切。机器人的移动控制技术是机器人 研究领域的一个重要分支,如何有 效、精确的实现机器人的移动控制, 是智能机器人研究中的难点和热点问 题。
SensorEventListener lsn = new SensorEventListener() {
public void on Sensor Changed (SensorEvent e) // 实现接口的方法
{NumberFormat f= NumberFormat.getInstance(); //创 建一个格式化类f
3 软硬件设计
3.1 硬件设计 搭建的移动机器人的实物如图2所
示。
图2 移动机器人实物图
移动机器主要包括:单片机主控 模块、蓝牙模块、报警模块、循迹模 块、超声波测距模块、电源模块、电机 驱动模块。各功能模块具体设计如下:
1)单片机主控模块 选用STC12C5A60S2单片机, 该单片机是传统51单片机速度的8~12 倍,具有1 280字节片内RAM以及64 KB Flash ROM的,有较宽的电压输 入范围和较低的功耗。 2) 电源模块
警,并具有自动循线行驶功能。测试
结果表明,该控制系统操作简单灵 活、运行稳定、实时性强、在十几米
范围内能实现有效控制。本研究在家 用机器人领域有较为广阔的应用前
景。
图7 自动循线功能效果
4结 论
本研究提出了一种基于Android
参考文献
[1] 王鹏. MEMS加速度计的动态倾角 测量性能研究[J]. 计算机测量与 控制, 2012,20(10):2661-2663.
点击“循线行驶”按钮,系统进 入自动行驶模式,即循线模式。小车 可以根据事先画在地上的黑线行驶,
不需要用户控制,当小车检测不到黑 线时,小车停止行驶。 2.3 运行效果展示
手动控制实例如图6所示,机器人 根据用户手动控制进行灵活的运动,显 示X轴和Y轴的加速度数值Байду номын сангаас并能同时 实时显示距离前方障碍物的距离,当小 于设定报警距离时,字体闪烁,机器人 发出报警,并能随着障碍物逐步的靠 近,报警声的频率也会越来越高。
2 系统的整体结构设计
该系统由上位机和下位机两部
图1 系统总体框图 *基金项目: 江苏省高等学校大学生实践创新训练计划项目(201413655006Y)
分组成:上位机采用带蓝牙通信功 能的智能手机,使用Java语言开发 Android应用程序作为移动机器人的 控制软件;下位机设计了带蓝牙通信 模块的移动机器人,包括单片机主控 模块、蓝牙模块、报警模块、循迹模 块、超声波测距模块、电机驱动模块[3] 以及电源模块。系统总体框图如图1所 示。
专题策划
2014年9月第33卷 第9期
基于Android的小型移动机器人控制系统*
王志凌 闻 凯 陈 杰 (南京航空航天大学金城学院 南京 211156)
摘 要:控制系统由Android系统及自带蓝牙通信模块和加速度传感器等组成,通过手机倾斜角度和幅度控制机器人移动的
方向和速度,同时该移动机器人还具有超声波测距、分级告警以及自动循线行驶等功能。测试结果显示,该移动机器人控
[8] 王雷, 蓝箭. 基于Android平台的 无线Wi-Fi控制方法[J]. 卫星电 脑应用, 2012(7):58-61.
[9] 王国胜,刘峰,陆明.基于 MC9S12DG128单片机的迷宫 机器人设计[J]. 微电机, 2011, 44(12):56-59.
图5 控制系统界面 启动安装在安卓手机上的重力 感应遥控器软件,点击控制界面上的 “打开蓝牙”按钮,成功与小车上的 蓝牙配对之后,点击“手动控制”按 钮,系统进入手动控制模式。用户可
- 6 - 国外电子测量技术
中国科技核心期刊
2014年9月第33卷 第9期
专题策划
以通过倾斜手机来控制小车前进、后 退、左转、右转,并且随着倾角的增 大,小车的行驶速度也增大。同时, 安装有超声波的小车不断的测算车身 距离前方障碍物的距离,并将距离数 据实时回传给手机端,显示在左下角 “前方障碍物距离”位置处[10]。
信号进行滤抖。 7)报警模块 下位机根据设定的距离门限通过
蜂鸣器进行分级告警,距离越近告警 音频率越高;上位机通过语音播报障 碍物距离。 3.2 软件设计
整个软件系统可以分成Android 手机端软件和智能小车端51单片机程 序。图3是整体设计的流程。
图3 整体设计流程图 1)在Android软件端程序分为蓝 牙通信模块、加速度计检测模块和数 据处理模块。各模块设计如下: ①蓝牙通信模块:完成于HC-06 蓝牙模块的配对与数据交换。 要在Android程序中使用蓝牙功 能,必须在AndroidManifest.xml文 件中进行权限声明,允许程序发现并
该系统设计并主要实现的功能: 1)蓝牙配对:运行安装在手机上 的重力感应遥控器软件、打开手机蓝 牙功能、打开移动机器人电源,手机 与移动机器人完成蓝牙配对。 2)手动控制:系统进入手动控制 模式后,用户可以通过倾斜手机来控 制小车前进、后退、左转、右转,并 且随着倾角的增大,小车的行驶速度 也增大。 3)探障及报警:移动机器人通
②加速度计检测模块:获得手机中 加速度传感器X轴和Y轴的加速度值。
不同形态下,Android手机的加 速度值:
a)当手机Z轴向上放置,默认加速 度值分别为X= 0 m/s2,Y = 0 m/s2, Z = 10 m/s2。
b)当X轴朝向地面,三轴加速度 值分别是X= -10 m/s2,Y = 0 m/ s2,Z = 0 m/s2。
f.setMaximumFractionDigi ts(2); //设置小数位的格式
x = e.values[SensorManager. DATA_X];
y = e.values[SensorManager. DATA_Y];//得到各轴上的重 力 加 速 度
z = e.values[SensorManager. DATA_Z]
中国科技核心期刊
国外电子测量技术 - 5 -
专题策划
2014年9月第33卷 第9期
进行蓝牙配对。图4是手机连接蓝牙模 块流程图。
图4 Android手机连接蓝牙模块流程 <uses-permission
android:name="android. permission.BLUETOOTH"/>
<uses-permission android:name="android. permission.BLUETOOTH_ ADMIN"/>