APP下载

小型模块化多功能科教机器人的设计与实践研究*

2020-11-27祝洲杰胡章豪冯晨韬

机电工程技术 2020年10期
关键词:图形化功能模块蓝牙

祝洲杰,甘 伟,黄 畅,胡章豪,冯晨韬

(浙江机电职业技术学院,杭州 310053)

0 引言

近年来,随着信息技术和人工智能技术的飞速发展,国家对于青少年的科技智能教育越来越重视[1],明确指出要从中小学阶段开始设置人工智能相关课程,逐步推广编程教育,建设人工智能学科,培养复合型人才,因而基于青少年的编程、信息化教育在近几年呈现出日渐火爆的趋势。

与成年教育不同,青少年教育如何在教学过程和教学载体中重视趣味性、阶段目标和项目的易实现性,从而克服编程及信息化教学中的难点和枯燥是非常重要的[2]。一款好的科教机器人可以兼顾机器人结构设计、搭建和编程学习,能及时在教学中提供趣味性和阶段反馈,是非常重要的教学载体。

目前中国的青少年机器及编程学习采用的基本为依托Lego、MakeBlock 为代表的成熟体系和以Scratch、Python 为代表的编程两方面[3],前者以积木式图形化编程为主,教学载体较封闭,开放性不足,因而教学项目往往局限于避障、循迹、走线等基本的机器人功能和编程思维,对于新功能的开发、创造和编程实现则涉足较少;后者则基本以设计游戏作为趣味点,主要为电脑端操作,实体的教学载体较少,而目前能兼顾两者教学特点的自主研发教学载体并不多。

针对上述现状和问题,设计和研发了一款小型模块化多功能科教机器人,该机器人充分考虑了“STEM”的教育理念,在结构上可适配多种模块,且选用开放平台,能在实现常用功能的基础上,为新功能的开发和创新提供便利;另一方面,也能兼顾编程思维和代码学习,为编程学习提供实感的教学反馈,是将两方面教学特点结合较好的教学载体。

1 机器人整体方案设计

考虑到该移动机器人的设计初衷是青少年可以模块化搭接并实现各种外扩功能的学习和研究载体,并能兼容Scratch类型的积木式图形化编程和常规代码编程。因而在方案设计时,为其设定的目标是:(1)功能模块搭建需简单,不使用焊接或特殊接头等不便于快速搭建的方式,在搭建时只需简单插接即可完成功能系统。除此之外,还需要考虑和现有成熟体系模块的兼容性;(2)控制系统开放性强,便于实现更多的功能拓展诉求,交互性要好,同时还需要配套的软件开发环境,能具备良好的功能模块库支持,并能支持形式较多样的编程方式。

基于上述设定的目标,选择在Arduino平台架构的基础上设计搭建机器人系统。Arduino平台的优势在于其硬件和软件开发环境都是开源的,开放性好,功能拓展较简单,与各类终端设备及功能模块的对接方便,交互性强,很适合新功能的创新实现[4];而从软件开发环境来说,Arduino 软件开发环境既可以结合如ArduBlock等插件进行图形化编程,也可以直接使用类似于Java、C 语言的Processing/Wiring 开发环境进行代码编程,在功能的软件实现上也比较符合需求。

在该移动机器人的功能设定方面,除了常规的系统控制、电机驱动、循线、避障功能之外,还从功能拓展性出发,增加设计了抓取、搬运、书写、喷水等动作模块作为可选模块。在这些功能的基础上,还可以创新设计其他功能,使之能真正成为“STEM”教学中的良好载体。系统总体框图如图1所示。

图1 系统总体框图

2 机器人的结构及硬件设计

在机器人的结构设计上,由于外扩功能模块众多且不确定,为了兼顾教学的趣味性和搭建的方便,系统采用了各独立模块与主体小车自由联接的结构形式,且在各模块联接至主体时,设计了一种快换结构,效果示意如图2所示。其中,主体小车与扩展功能模块的接口处设计使用弹簧锁联接。当需要联接时,只需在弹簧的作用下将锁芯套入功能模块内,起到定位锁紧的作用;当需要松开功能模块时,只需向外拉动锁芯即可。这样的形式可以使两者在联接过程中无需使用安装工具,也不存在装配的难度,适合学习和研究过程中的任意搭接。

图2 快换结构示意

图3 便于外接Lego等搭建模块的设计

除此之外,考虑到Lego和Makeblock等成熟体系中模块在“STEM”教学中同样承担重要的载体作用,在该机器人上设计了相应的适配位置和模块,如图3所示。这样的模块便于后续可以使用如Lego 等搭建模块与主体联接,实现更多样的功能,使其具备更好的兼容性。

在硬件设计方面,如前文所述的方案设计,基于对各扩展功能模块的硬件需求分析,选择系统控制模块以Arduino UNO作为主控单元,其核心是ATmega328-AU单片机,能满足对大部分功能如红外、超声波传感器及舵机等硬件的控制[5]。而电机的控制则需要附加相应的扩展板作为电机驱动模块,蓝牙通讯和其余扩展功能模块等也需要相应地根据需求增加和扩展。

出于搭建便捷度的考虑,各模块与主控单元的连接全部采用类似杜邦接头的接插头,在连接时只需确定接口完成接插即可,连接非常简单方便。

针对机器人结构和硬件的配套设计,可以大大降低搭建难度,减少常规组建硬件系统的繁复操作。比如,超声波避障功能的搭接,只需将避障模块通过快换完成与主体的搭接,并将信号线与相应的接口完成插接即可,非常便于学习。

2.1 避障功能的设计实现

避障功能是移动机器人的常规功能之一,是通过超声波传感器来实现的。超声波传感器可实现前方障碍物的检测,当小车到障碍物的距离达到设定距离时,超声波传感器测出距离值,进而小车实现停车或者转向等避障活动[6]。

2.2 循迹功能的设计实现

循迹功能也是移动机器人的常规功能之一,大多是通过红外传感器实现的。循迹模块可以检测到白底中的黑线,实现机器人沿黑线的前进、左右转弯、停止等动作[7]。在本产品中,循迹模块被设计成如图4所示。与避障功能类似,只需将接插件插入主控板相应位置即可。

图4 循迹功能模块

图5 蓝牙模块控制

2.3 蓝牙功能的设计实现

作为一款科教机器人,蓝牙功能是必须的,这是完成Arduino 平台和Android App 端的重要方式,Android App 端的引入可以为教学提供更好的反馈和趣味性。Arduino平台适配的蓝牙模块使用非常普遍,如图5所示,实现控制也较简单。

2.4 抓取功能的设计实现

抓取动作是展示机器人功能的最佳方式,在本产品中,抓手模块与其余模块一样被设计成快换式,抓手的动作由舵机来驱动,舵机通过角度的变化来控制抓手的张开和闭合。Arduino 平台对于舵机的支持较为丰富,因而安装也较为简单,只需将接插件插入主控板相应位置即可。

2.5 搬运功能的设计实现

搬运功能在本产品中展现为类似于叉车的抬升功能。从控制的实现来说,该功能的实现并不复杂,抬升和下降的动作由一台电机控制螺杆正反转,从而使铲板上升或下降即可。电机的控制与机器人本身的驱动轮一致,连接至扩展板的电机驱动模块即可。

2.6 喷水功能的设计实现

相比于上述的抓取和搬运功能,喷水功能属于较创新的功能,该功能可向指定方向喷水。这个功能实现的关键是需要系统完成对气泵的控制,如图6 所示。对于 Arduino 平台来说,气泵电机的控制较简单,只需将接插件插入主控板相应位置即可。

诸如此类可开发的新功能还有很多,由于使用了开放性的平台,使得该机器人可以作为功能拓展的良好载体。

图6 Arduino的气泵控制

3 机器人功能的软件实现

由于使用的主控单元为Arduino UNO,因而上述机器人功能的实现即是通过Arduino的软件开发环境来完成。基于机器人的功能,软件端程序分为Arduino 端程序和Android 端软件。Android端软件主要为蓝牙模块的通信和通过移动端进行机器人的控制。Arduino端程序则主要实现通过计算机完成图形化编程或代码编程,也是主要的学习工具。

Android端软件主要是完成蓝牙模块的配对和控制。在机器人开启的情况,蓝牙模块开始工作,进入控制界面后,执行开启蓝牙的功能,使用Bluetooth Adapter.start-discover()方法命令手机端自动搜索周边设备。同时桌面显示出设备链表,用户可以在设备链表中查看周边可用的蓝牙设备,选取移动机器人蓝牙模块对应的蓝牙设备名称,创建Bluetooth-Socket 进行自主连接,创建RFCOMM 通信通道。待连接完成后,使用Item.setvisible()方法使方向控制按钮显示出来。连接完成后,点击前进、后退、左转、右转、停止等按钮即可控制移动机器人的运动。软件监听每个的ButtonClick()点击事件。在移动机器人的Arduino部分,通过其蓝牙接收从安卓手机蓝牙发送出来的控制指令,经过分析处理后指挥移动机器人进行相应的运动。

在Arduino端,用户可以选择借助ArduBlock和Arduino设计助手等插件进行图形化编程,前者作为图形化插件可以支持类似于Scratch 的编程思想,后者则通过形象化的搭建电路帮助设计新功能的实现,如图7~8所示。图形化的编程和设计插件可以使编程过程变得更形象,比较适合编程初级学习,编程完成后可直接保存成Arduino传至控制板,比较方便。

图7 ArduBlock辅助图形化编程

图8 使用Arduino设计助手搭建控制电路

除使用插件之外,也可直接使用默认的Arduino软件进行Processing/Wiring 开发环境代码编程。其编程思路与Java、C语言类似[8]。图9所示的代码中,编写了对于左右驱动轮的控制,这种类型的编程语言是与底层代码的学习相对应的。

由上述可知,Arduino 的软件开发环境可以适配多种程序学习的需求,既能满足图形化编程,也可以进行底层代码的学习,具备比较好的开放性,是非常适合作为软件学习载体的。

图9 Arduino代码编程

4 系统测试和应用

在完成了系统全部的结构、硬件和软件设计之后,对该机器人进行了大量测试去验证是否达到了设计要求,并需要判断是否能达到最初的设计预期。在测试了机器人的自主移动功能之后,又通过试验避障、循迹等基础功能和抓取、搬运物品等功能,整个系统可以较好地满足各功能的实现,并且也达到了快速安装的设计目的,具有非常好的功能扩展性。

为了测试该机器人是否能达到预期的教育载体的研发目的,将该机器人尝试应用于编程教育,在使用的过程中,大家普遍比较欢迎图像化编程模式,并对于使用该机器人开发新功能,并快速编程实现的教学方式非常认可,效果比较好。

5 结束语

本文设计和实现了一种基于Arduino的多功能模块化科教机器人,由于其特殊的设计初衷,讲解了其独特的结构设计和功能模块设计,并阐述了其软硬件实现方法。测试结果表明,该科教机器人搭建简单、结构灵活、运行稳定、硬件功能扩展性好。本机器人系统是青少年“STEM”教育的良好教学载体,具有较为广阔的应用前景,并为后续继续研究提供了重要的参考价值。

猜你喜欢

图形化功能模块蓝牙
蓝牙音箱的直线之美
基于Arduino图形化编程的教学应用研究
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
LKJ自动化测试系统图形化技术研究
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
功能模块的设计与应用研究
网络图形化界面在高速公路机电设施养护管理系统中的应用
蓝牙4.0落地加速