基于Arduino平台的蓝牙智能小车开发
2019-12-19曹素红
曹素红
基于Arduino平台的蓝牙智能小车开发
曹素红
(北京信息职业技术学院,北京 100015)
蓝牙控制具有简单可靠等特点,因此在智能小车运动控制中具有很高的应用价值。介绍了一款利用Arduino平台作为主控系统,采用蓝牙模块进行无线控制的智能小车。重点阐述了此蓝牙小车的开发流程及难点。
Arduino平台;蓝牙;智能小车;电路板
1 引言
Arduino控制板具有丰富的接口资源,用其设计开发智能小车的控制电路十分方便。Arduino是一个开源、拥有简单输入/输出(I/O)的电路板,为了方便使用,采用简单的IDE集成开发环境,程序通过USB而非串行端口实现,控制简单、方便、快捷。此外,Arduino控制板还具有资源丰富、控制功能强大、可位寻址操作、价格低廉等优点。蓝牙控制具有简单可靠等特点,因此,采用Arduino控制板结合蓝牙模块是一种较为理想的智能小车运动控制方案。
2 蓝牙智能小车硬件结构与工作流程
2.1 硬件结构
蓝牙智能小车硬件结构如图1所示,从下向上依次为:Arduino控制板、298电机驱动板、含蓝牙模块的Arduino扩展板。这三个电路板从底层单片机到中层298驱动电路板,再到顶层含蓝牙模块的扩展板,相互配合,协调动作。
图1 蓝牙智能小车硬件结构
2.2 系统工作流程
蓝牙智能小车系统的工作流程如图2所示,手机端与小车端蓝牙程序互相配合,手机按键具体指示小车运动动作,Arduino控制板依据接收到的蓝牙命令进行具体操作。
图2 工作流程
3 蓝牙程序
3.1 小车端调试程序
蓝牙智能小车所采用的蓝牙模块是OPENJUMPER模组,如图3所示,可通过AT模式改写其参数。适用于Arduino与PC、手机等设备的无线连接,连接成功后即可控制小车完成各种动作。
图3 OPENJUMPER蓝牙模块
具体程序如下:
void loop()
{
val = Serial.read();
if (-1 != val) {
switch(val)
{
case 'c':Serial.println("testOk");break;//pc端发送字符c,若返回testOk,说明连接正常
case 'w':motosp(200,200);Serial.println("testOk");break;
//按下w键,小车直行
case 's':motosp(-200,-200);Serial.println("testOk");break;
//按下s键,小车后退
case 'q':motosp(100,200);Serial.println("testOk");break;
//按下q键,向前左转
case 'e':motosp(200,100);Serial.println("testOk");break;
//按下e键,向前右转
case 'a':motosp(-100,-150);Serial.println("testOk");break;
//按下a键,向后左转
case 'd':motosp(-150,-100);Serial.println("testOk");break;
//按下d键,向后右转
case 't':motosp(0,0);Serial.println("testOk");break;
}
delay(100);
}
else motosp(0,0);//未接收到数据时,小车停止
}
3.2 手机端调试程序
利用网页版的“app inventor”APP设计平台设计此项目的遥控操作软件,软件界面如图4所示。
图4 app inventor界面
采用该平台进行蓝牙功能APP程序设计的优点为:①收发字符快速,调试程序方便;②可以连续控制小车前后左右转动,灵活方便;③可以自由调整APP用户的条件与需求;④连接稳定,能满足小车的运行流畅;⑤“app inventor”APP适合于初高中以上学习基础的人群学习掌握。
小车接收端蓝牙模块和手机发送端蓝牙模块互相配合,小车蓝牙模块接收到手机蓝牙模块的信号,驱动相应电路,完成小车的前进、后退、左右转等基本动作。
最后生成的智能小车手机端遥控界面如图5所示,通过这个界面可实现与智能小车进行蓝牙传输的相关交互动作。
图5 手机端操作界面
4 结论
本文阐明了基于Arduino平台的蓝牙智能小车的开发技术要点。鉴于蓝牙控制简单可靠,而Arduino控制板适用性强等特点,利用Arduino平台和蓝牙模块可以比较便捷地开发设计智能运动小车。
[1]陈吕洲.Arduino程序设计基础[M].2版.北京:北航出版社,2015.
TP23
A
10.15913/j.cnki.kjycx.2019.23.008
2095-6835(2019)23-0022-02
〔编辑:张思楠〕