基于开源技术下的智能车创客教育平台设计
2018-05-25项莉萍
李 棚 ,孔 健 ,项莉萍
(1.六安职业技术学院 信息与电子工程学院,安徽 六安237100;2.合肥幼儿师范高等专科学校 学前教育系,安徽 合肥230011)
智能车创客教育平台是一款涉及到电子、机械、工程、软件等技术的复合型平台,该平台在教育领域拥有十分巨大的教育价值,在培养学生分析能力、创造能力和实践能力等方面具有重要的现实意义[1].随着科技的进步,国内市场推出了众多的科技教育平台,这些平台逐渐进入到学校实验室、培训机构和部分家庭,提高了对智能控制技术的认知度和认可度[2].由于涉及到商业利益的存在,各大公司开发的教育平台,存在封装严密、开放性不足,结构独特、通用性不足,价格昂贵、亲民性不足[3-4].笔者借助开源软件及硬件,构建智能车创客教育平台,以友好的界面、开放的接口、优质延续性、亲民的价格,服务于中国青少年创客教育.
1 平台软硬件构建概述
1.1 平台的硬件结构
采用Arduino板作为智能车的控制核心,蓝牙模块通过串口实现信息的传输,通过电机控制模块实现对电机的控制,控制Led灯模拟车灯和控制蜂鸣器鸣叫模拟车辆的鸣笛(见图1).Arduino板是由米兰交互设计学院David C和Massimo B设计,于2005年推出基于开放原始代码的Simple I/O平台.该平台的硬件采用AVR单片机制作开源的、通用的开发板,经过多年的积累,已经实现多版本、多系列、多应用的公共平台(见图2)[5].软件采用 Arduino IDE编译器,该编译器具有类似 Java、C语言的开发环境,可以快速使用Arduino语言与Flash、Processing、Android等软件完成互动作品设计.
图1 智能车硬件平台结构图
图2 MX1508电机驱动模块
硬件平台的关键点在于对智能车电机的驱动,采用MX1508(SOP-16)四通道双路有刷直流马达驱动芯片.该芯片的IC电路内部集成了两通道的H桥驱动电路,具备从2 V到9.6 V较宽的工作电压,最大持续输出电流达到0.8 A,最大峰值输出电流达到1.5 A.最大持续输出电流达到1.5 A,最大峰值输出电流达到2 A,能够满足2驱动或4驱动智能车的多个方向变速运动.
1.2 平台的软件结构
为了降低青少年学习编程技术的入门难度,平台采用Arduino Block编程软件和App Inventor 2编程软件.这两种编程软件,都采用图形化、模块化编程,通过搭积木的形式实现软件程序的编写[6-7].青少年可以通过智能车创客教育平台提供的学习辅导资料,快速的学习硬件控制程序开发、App应用开发,将自己的创意变成现实(见图3).
图3 智能车创客教育平台系统框图
2 手机遥控智能车的实现
采用智能车创客教育平台,通过图形化编程软件编写相关的App控制界面和下位机驱动程序,在智能车平台上实语音控制、加速度控制、按键控制,共3种控制模式,实现车灯、鸣笛、停止、前进、后退、左转、右转、速度,共8种状态的切换.
2.1 下位机Arduino程序设计
程序设计采用3位数的数据结构进行车辆状态控制,百位为功能状态,1为运动功能,2为速度功能,3为车辆辅助功能.个位为状态参数,在运动功能条件下,0为停止状态,1为前进状态,2为后退状态,3为左转状态,4为右转状态;在速度功能下,10~99是速度控制参数;在车辆辅助功能下,1位车灯控制状态,2位鸣笛控制状态(见图4).
图4 智能车控制平台软件流程图
下位机接收到串口数据后,便通过对该数据的取模和求商获得百位和个位的参数,根据相应的功能参数和状态参数,实现相应的控制模式.图5为串口数据的读取与解析.
图5 智能车平台及Arduino Block串口数据数据处理流程
Arduino Block软件采用模块化结构,将串口数据的读取进行模块化,只需要设置一个Num_serial变量,便可以将串口数据读入到变量中.通过给模拟量赋值模块,将串口Num_serial数据对100进行除法运算,获得百位的数字,赋值给Functio变量,作为智能车功能控制判断依据.将串口Num_serial数据对100进行求余运算,获得后两位数据,将后两位数据赋值给Parameter变量,作为智能车运动状态的判读依据.
2.2 上位机App Inventor 2程序设计
手机与智能车进行通信时,安卓程序首先要进行蓝牙连接,在蓝牙连接的基础上进行后续控制.其中,姿态控制与触摸控制及语音控制为互锁状态的,即一旦姿态控制起作用的时候,语音识别和触摸控制将失效,程序流程见图6.
图6 智能车安卓控制程序流程图
姿态控制根据手机获取的X,Y,Z三坐标的值进行车辆运行状态控制,为了减小控制误差,将检测数据放大10倍.当X方向数据在-20~+20之间时,为静止状态,向串口发送100数据,实现车辆的停止控制;当X方向数据大于20时,为左倾状态,向串口发送103数据,实现车辆左转;当X方向数据小于-20时,为右倾状态,向串口发送104数据,实现车辆的右转;当Y方向数据大于20时,为后仰状态,向串口发送102数据,实现车辆的后退;当Y方向数据小于-20时,为前仰状态,向串口发送101数据,实现车辆的前进.手机的语音识别借助第三方插件,进行语音识别,将识别的语音转换成相关数据,其中识别出来的“向前”转换为“101”,“向后”转换为“102”,“左转”转换为“103”,“右转”转换为“104”,然后,将相应的数据通过串口发送出去,实现对车辆状态的控制.
图7 App Inventor 2编写界面及蓝牙连接程序
采用App Inventor 2软件编写前台操作界面和后台操作程序(见图7).通过拖动模块及按钮创建控制界面,使用程序模块叠加实现控制程序的编写.编写蓝牙连接程序时,控制界面上只需要一个“连接”按钮,当该按钮被点击后,根据按钮上显示文本进行蓝牙设备的状态切换.当显示为“连接”时,让蓝牙客户端连接设备的参数地址为“选择设备的选中项”,同时按钮显示字符为“断开”;当显示为“断开”时点击按钮,调用 “蓝牙客户端断开已连接设备”模块,完成蓝牙的断开,同时按钮显示字符为“连接”.
3 结语
智能车创客教育平台可以作为青少年创客教育的综合实训平台,该平台满足模块化Arduino Block软件、App Inventor 2软件的编程教学,通过这两种模块化的语言学习能够降低控制语言的难度,增强青少年学习乐趣,掌握从移动端到控制端的创客类编程技术.该创客教育平台的软硬件均具有开源性,能够作为后续高级编程语言学习的平台,价格适中,更能满足广泛的群体需求,进而全面普及青少年创客教育.
[1]葛艳红.基于物联网的教育机器人关键技术研究[D].武汉:武汉理工大学,2013:1.
[2]张剑平,王益.机器人教育:现状、问题与推进策略[J].中国电化教育,2006(12):65-68.
[3]沈聪.基于创客教育理念的机器人教学模式初探[J].中国信息技术教育,2017(7):111-112.
[4]郭瀚成.浅析机器人与创客教育[J].中国信息技术教育,2017(2):106-108.
[5]胡洪钧,肖顺根.Arduino 教学实验箱设计与实验项目开发[J].新乡学院学报,2017,34(3):70-73.
[6]田志颖.基于Android的移动学习软件设计与实现[D].曲阜:曲阜师范大学,2016.
[7]高成英.项目教学法应用于《App Inventor程序设计》教学[J].教育,2015(29):23-27.