面向音乐编程教育的口琴吹奏机器人研究与实现

  1. 引言

  为推进新时代教育信息化发展,培育创新驱动发展新引擎,结合国家“互联网+”、大数据、新一代人工智能等重大战略的任务安排,教育部制定的《教育信息化2.0行动计划》中,提到应加强智能教学助手、教育机器人、智能学伴、语言文字信息化等关键技术研究与应用。展望未来,教育机器人将成为信息化学习环境的重要组成部分。

  我国教育机器人起步较晚,当下教育机器人市场正在快速发展,但是市场上产品仍然较少,种类并不齐全,可见未来发展前景仍然是非常广阔的。参考市场,当下面向中小学K12教育的教育机器人,多以展开STEM教育为主,艺术方面多为积木玩具类,鲜有培养学生音乐艺术素养的。如果将教育机器人用于音乐艺术教育,乃至音乐艺术与STEM教育综合,实现STEAM教育,将大幅丰富教育机器人发展路线。

  2. 青少年教育情况

  当前我国音乐教育普遍存在教育理念滞后、教师的专业素养有待加强、教学方式缺乏创新、学生参与音乐教育的积极性不高等问题。对于这样的音乐教育现状,信息化、智能化技术将为此提供一个有效的解决方案。

  另外,在编程教育方面,2020年11月,教育部针对全国政协委员提出的《关于稳步推动编程教育纳入我国基础教学体系,着力培养数字化人才的提案》予以回应,指出教育部高度重视学生信息素养提升,已制定相关专门文件推动和规范编程教育发展,培养培训能够实施编程教育相关师资,将包括编程教育在内信息技术内容纳入到中小学相关课程。目前编程教育正在快速发展,不过仍然面临学生主观能动性不足的问题,比如学习压力过大、对编程接触较少、缺乏兴趣等等。

  在这样的教育环境下,结合《教育信息化2.0行动计划》的指示,如果开发一种实用的音乐与编程结合的教育机器人,或将具有极大的潜力。

  3. 音乐机器人

  图 1 左:基于MIDI解码的西洋长笛自动演奏机器人 右:High dynamic humanoid robot

  当今出现的几项音乐机器人,有模仿人手动作的,如弹钢琴的“一种多媒体钢琴自动演奏系统”,敲鼓的“High dynamic humanoid robot for playing e.g. electronic drum set”;也有吹奏乐器的,“基于MIDI解码的西洋长笛自动演奏机器人”。这些机器人具有形态拟人,美观,演奏效果好,观赏性强的特点;但结构复杂,成本非常高,功能较单一,使用场景受限。尚未有一款通用量产的音乐机器人广泛走进课堂。

  将乐器演奏融入进教育机器人领域中,改善设计、削减成本,才能真正发挥出此类演奏机器人的强大能量。能够着实改善青少年音乐艺术教育情况,展开STEAM综合教育,为综合素质培养赋能。

  4. 项目具体展开

  带着这样的设计理念,我们拟展开一项关于面向音乐与编程教育的口琴机器人研究。旨在搭建面向青少年的、以自动口琴演奏为特色的音乐教育机器人平台,以“音乐+编程”的模式,激发使用者对音乐和编程的兴趣。机器人可以使用口琴演奏高水平的曲子。并且配备实用软件,方便使用者对机器人进行直观的控制,满足对编程逻辑掌握、音乐制作、乐理学习等等广泛需求。

  4.1 乐器的选择

  为什么这边选择口琴作为机器人吹奏的乐器?

  口琴素有“藏在口袋中的乐队”的雅称,它体积小巧、携带方便,既适合个人独立表演,又便于与乐队合奏,且门槛较低。口琴的这些特点,比较好的适配机器人的制作。同时,和长笛等等各种吹奏乐器不同,口琴兼顾吹、吸,在气源设计上可以向下兼容其它吹奏乐器,便于通用化、模块化。口琴分为布鲁斯口琴、半音阶口琴、复音口琴三种。考虑先选用半音阶口琴,因为半音阶口琴具有最大横跨四个八度的音域,可以同钢琴一样方便地移调变调,用一只口琴就可以演奏任何调式的乐曲。

  4.2 一些技术特点

  机器人整体上能列出这样的硬件拓扑图。

图 2 硬件拓扑图

  4.2.1 工控板选择

  机器人下位机电控部分使用STM32F407ZGT6核心板。因为STM32F407性能可靠,资源丰富,开发工具链完善,可以满足比较多的嵌入式开发需要。如果后续需要自研工控板,单片机仍然考虑继续使用STM32F407ZGT6。

图 3 STM32F407ZGT6 芯片参数

  4.2.2 嵌入式软件开发

  4.2.2.1 HAL库和STM32CubeMX

  为降低使用难度,减轻单片机学习压力,我们使用STM32CubeMX图形化配置工具来对单片机引脚,系统时钟以及外设时钟,外设参数,中间件参数,进行配置。配置完成后,STM32CubeMX还可根据所选的IDE生成对应的工程和基于HAL库的初始化C语言代码。

  4.2.2.2 IDE

  本机器人嵌入式软件采用 ARM Keil v5 作为 IDE 进行开发与调试。后期将考虑借助VS Code+ Keil Assistant。

  4.2.3 上位机软件开发

  上位机与单片机通过串口通信连接,需要设计合适的通信报文,如指令集等。上位机考虑使用Intel NUC,研发初期阶段可以先用个人电脑代替。

  4.2.3.1 Web Serial API

  Web Serial API是一种Web API,它允许Web应用程序通过串行端口与本地串行设备进行通信。使用Web Serial API,Web应用程序可以读取和写入串行数据,以及控制串行设备的行为。Web Serial API可以用于许多不同的应用程序,例如物联网设备控制、机器人控制、传感器数据采集等。

  Web Serial API包括以下主要组件:

  Serial对象:表示一个串行端口,可以打开、关闭、读取和写入数据等操作。

  SerialPortInfo对象:表示一个串行端口的信息,例如端口名称、波特率、数据位数等。

  SerialOptions对象:表示打开串行端口时的选项,例如波特率、数据位数、停止位数、校验位等。

  使用Web Serial API需要在Web应用程序中请求用户授权,以获得访问本地串行设备的权限。用户可以选择允许或拒绝该请求。如果用户允许,则Web应用程序可以使用Web Serial API与本地串行设备进行通信。

  需要注意的是,Web Serial API目前仍处于实验阶段,不是所有浏览器都支持它。在使用Web Serial API时,需要检查浏览器的兼容性,并根据需要提供替代方案。

  4.2.3.2 Blockly库

  Google的Blockly库是一款用于创建可视化编程环境的JavaScript库。它提供了一组可重用的块,这些块可以拖放到工作区中,组合成程序。Blockly库支持多种编程语言,包括JavaScript、Python、Lua等。Blockly还提供了一些扩展功能,例如代码生成器、代码编辑器、工具栏等。

  Blockly库的主要组成部分包括:

  块:块是Blockly的核心组件,它们表示编程语言中的不同概念和操作。每个块都包含一个或多个参数,用于配置块的行为。块可以拖放到工作区中,组合成程序。

  工作区:工作区是Blockly的主要显示区域,它用于组装块。工作区可以缩放、移动和滚动,以便在不同设备上使用。

  工具箱:工具箱是块的集合,用户可以从中选择要使用的块。工具箱可以根据需要进行自定义,以便满足特定的需求。

  代码生成器:代码生成器是Blockly的一个扩展功能,它可以将工作区中的块转换为目标编程语言的代码。用户可以选择不同的代码生成器,以便生成不同的代码格式。

  Blockly库可以用于许多不同的应用程序,例如教育、机器人控制、物联网设备控制等。Blockly库提供了一种可视化的编程体验,使编程变得更加容易和有趣。


网友留言(0 条)

发表评论