论文部分内容阅读
一、设计思想与工作原理
1.设计思想
开源硬件既方便,又实惠,颇受广大创客教育工作者的喜爱。众多开源硬件中Arduino是最优选择,价格便宜,兼容性好,能完成各种功能的定制。
目前安卓应用开发基础课程APPInventor也热了起来,很多学校开设了相关课程。APPInventor的优势在于既能学习编程的知识,又能掌握安卓应用开发过程,提高使用者的分析、解决问题的综合能力,还能开发一些基于手机的实用项目。
一款Arduino机器人,要是用自己设计的手机APP控制,就更吸引人了!
2.工作原理
工作模块分为两大部分。一部分是Arduino机器人,它通过蓝牙接收指令,通过控制马达从而指挥机器人运动,编程用Mixly软件,硬件接线如图1,完成机器人如图2。
另一部分是手机APP,利用APPInventor开发平台,设计一款属于自己的个性化APP应用(如图3)。其原理是利用手机APP将马达转向信息和速度信息两个数据,经过分析、合成、处理后,发送给蓝牙。蓝牙接收信息数据,并进行检索,识别方向和速度量,再传给Arduino主板,控制马达运转,从而控制机器人运动。
APP也接收主板返回的信息,確认当前工作状态,并在手机上显示出当前LED开关状态。设计利用百度语音识别功能,用语音控制机器人运动,本文只讲最基本的方法。
二、Arduino机器人的设计与制作
1.接线图
机器人搭建比较简单,按图接好线路,即可进行调试。接线时注意以下几个问题。
L298N的4个输入端in1~4分别接Arduino主板D5/D6,D9/D10,输出接对应的两个马达。注意,L298N一定要和Arduino共地,并需要外接电源,本例接7.4V航模电池。L298N也可以用L9110s代替,通过对比测试,L298N功率更大一点,运动更灵敏,速度更快一点,L9110s价格更便宜。
蓝牙模块的VCC和GND端子,分别接Arduino主板+5V和GND。
LED正极接Arduino主板D7,负极接GND。
2.机器人搭建
(1)器材:机器人底盘,万向轮,马达固定支架,7.4V2S20C800mAh航模电池,开关,马达,Arduino主板,L298N驱动模块,BT05蓝牙模块,5mm LED灯,杜邦线、螺丝若干。
(2)搭建:搭建过程比较简单,不做详述。注意固定好底盘和马达,功耗就会小一点。成品底面如图4。
3.程序设计
利用Mixly软件进行数据接收及处理。在Arduino兼容方面,Mixly软件为首选图形化软件,如果用代码编程还是首选IDE。
这是初始化程序,定义三个变量,存储方向信息、速度值和小灯状态值,同时设置串口波特率9600以保证正常通信,波特率会因为蓝牙型号的不同而有变化(如图5)。
通过自定义函数,接收手机APP发来的数据信息,然后进行分离处理,以控制马达转速(如图6)。
加上指示灯,掌握机器人的工作状态,同时通过蓝牙发送小灯状态信息,在手机APP上显示出来,达到相互通信的目的(如图7)。
三、APP设计与制作
1.组件设计
利用app.wxbit.com开发环境,组件的属性设置可随个人喜好修改,只要美观和方便操作即可,具体组件设置见下表。
百度语音功能需要去百度智能云注册,创建人工智能类应用,记录三个参数AppId/ApiKey/SecretKey,依次点击组件面板→人工智能→百度语音识别→组件属性,将三个Key填入。 2.程序设计
(1)初始化
初始化时,让控制球居于中心位置,便于操作(如图8)。
(2)蓝牙:连接成功与否,都应该有提示。如果连接不成功,可以多尝试几次,蓝牙连接反应稍慢。如果不使用可以断开蓝牙(如图9)。
需要注意的是,蓝牙必须事先与手机配对,才能在列表中正常显示出来。這步程序需要测试成功,才能进行下一步编程。我在测试的时候,加了一块LCD1602IIC液晶屏,以显示手机端发送的数据,测试正常后就不需要了。如果想用它做机器人端显示器,也是可以的,有兴趣的朋友可以自己设计,尝试一下。
(3)遥控
①方向控制:如图10所示,按45度方向分为4个区域,u前进、d后退、r右转、l左转、s停止,根据拖动控制球的方向,来判断机器人运动方向。这就像游戏手柄一样,反应速度快,灵敏度高(图10)。代码如图11。
②速度控制:通过滑动条位置调整机器人运动速度,并同时在手机APP上显示出来,这样以便掌握机器人的行驶状态(图12)。
(4)遥控释放
当手抬起时,释放控制,机器人即停止运动。此时发送停止运动信息(图13)。
(5)开关灯
指示灯亮起与关闭,可以直接通过按钮控制,也可以通过语音控制(图14)。
(6)语音识别
百度语音识别效果最好,多媒体组件里的语音识别则需要第三方语音软件支持。
这里只定义“开灯、关灯、前进、后退、左转、右转、停、别动”,分别对应上述程序中的控制,这些关键词可以自行丰富修改。语音识别出来后,发送对应的代码,与遥控操作代码相同。速度依然使用滑动条的值(图15)。
(7)小灯状态
小灯的当前状态,会一直显示在APP上,可以随时控制其开关。
四、总结与拓展
本例通过蓝牙实现了Arduino与手机APP的相互通信,方便实用,易于理解和操作。图形化编程更适合中小学生,没有过难的计算,所以有兴趣的小学生也一样可以完成项目。
本案例因用蓝牙传输数据反应较慢,你也可以安装ESP8266WiFi模块改为WiFi控制。
其实从这个项目出发,可以制作任何与Arduino兼容器材的项目作品,只要发送相应的信息,就可以通过Arduino控制,可以做物联网类的应用项目。