基于STM32 和ESP32-A1S 的航天主题宣传机器人设计与实现
2024-04-20王莉陈文宇吴宝磊张海天卢炽杏冯瑞
王莉,陈文宇,吴宝磊,张海天,卢炽杏,冯瑞
(航天工程大学,北京,101401)
1 背景与意义
中国航天目前正处于迅猛发展的时期,需要大量的人才投身航天事业、建功航天事业。为了向这些航天人致敬,推动航天文化的多元化传播,激发广大有志青年投身航天事业的志向,本文设计了航天主题创意宣传机器人,希望通过机器人表演和宣讲的形式勾起观众的兴趣、通过推广航天文化的创意设计为航天文化的传承和发展注入新的活力,更好地向公众展示这些英勇无畏的航天人的奉献精神和航天精神,唤起更多人对航天人的尊敬和关注,让航天事业在观众中的认知度和影响力得到进一步的扩大。以激励广大有志青年积极投身航天事业,也成为那群在背后默默奉献、无私付出的航天人,为祖国的航天事业贡献出自己的一份力量。 本文采用伺服舵机、STM32 单片机和 ESP32-A1S 处理器等材料制作了一个航天主题宣传机器人,起到了宣传航天文化的作用。
2 结构设计
2.1 整体结构
机器人外壳结构由铝合金板构成,通过控制伺服电机来进行关节的转动。机器人整体共15 个伺服电机,即15 个自由度,头部1 个自由度,左右臂各自2 个自由度,左右下肢各5 个自由度。
2.1.1 外壳结构
小组通过定制铝合金板来准备机器人外壳材料,而后通过在铝合金板上打孔,用螺丝把伺服电机、铝合金板连接起来,构成机器人的整体外壳结构。
图1 航天主题创意宣传机器人外壳结构图
2.1.2 伺服舵机
机器人使用的是SH15-M 伺服舵机,SH15-M 舵机是一种小型舵机,尺寸为43.8mm×23mm×31.4mm。它的工作电压范围为8V~15V,重量约为48g。它的耗电低、质量轻、结构紧凑、价格便宜,适合在小型机器人上应用。
表1 舵机具体参数
表2 舵机功能介绍
表3 舵机协议、角度、ID编码介绍
2.2 智能硬件
2.2.1 基于ESP32-A1S 的智能语音模块
(1)语音模块
智能语音模块基于ESP32-A1S 处理器,集成了麦克风、声卡、MP3 格式音频编解码器、TF 存储卡插槽、音频输入接口、音频输出接口、扬声器接口、网络接口、蓝牙。问答指令可以通过计算机传输到TF 卡中,随后将TF 卡插入语音模块上的存储卡插槽,处理器通过读取存TF 卡中的指令来进行问答准备。问题则通过麦克风输入后,声卡将语音信号转换为数字信号,而后通过处理器中的语音识别算法,将其转换成文本格式,再提取出文本格式的问题意图和关键信息与知识库中的数据进行匹配和检索,找到最相关的答案,进行回答。
(2)外接设备
①外接喇叭:用于加大音量;
图2 智能语言模块问答流程图
图3 语言模块及外接喇叭硬件图
②外接麦克风:用于在开阔环境大厅下替代板载集成麦克风,其能够自适应调节强度声音和瞬间冲击音,有效防止语言失真和衰减。
图4 外接麦克风硬件图
(3)实现功能
语音识别、离线智能问答、通过websocket 协议和http 协议后台对接实现的在线智能问答。
(4) 模块性能
语音模块性能如表4 所示。
表4 语音模块性能
2.2.2 控制主板
主板操控电机的控制板采用STM32 系列单片机,大部分元器件采用全表贴工艺。控制主板通过控制电机、驱动器和执行器来驱动仿生机器人的关节和肢体,使其执行各种运动。这包括前进、后退、旋转、弯曲和伸展等动作;控制主板通常与传感器接口,以接收来自各种传感器的数据,如位置传感器、速度传感器、加速度传感器和触觉传感器等。这些数据用于调整机器人的运动和行为,以适应不同的环境和条件。控制主板通常也具有安全机制,以保护机器人免受潜在的伤害和损害。这可能包括过载保护、短路保护、温度监控和其他安全措施。此外使用TF卡存储动作数据,数据量大,可靠性强。
在控制主板上,还有一颗型号为CH340 的USB 转串口芯片。在串口方式下,CH340 提供常用的MODEM 联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
图5 CH340 芯片的使用场景模拟图
3 软件设计
为了方便对机器人的动作进行编写和调整,我们编写了一个Windows 窗口程序进行可视化编程。该程序基于.NET Framework 3.5 框架,是用C#语言开发的WPF 程序。我们在编写代码的过程中,使用Microsoft Visual Studio 2022 作为集成开发环境(IDE)。
3.1 连接机器人设备
连接机器人设备是与设备通信的第一步。以下是连接的主要步骤:
①检查用户是否选择了串口;
②如果已存在打开的串口对象,关闭它并清除接收缓冲区;
③获取用户选择的串口名称,并更新界面状态以显示连接进度;
④创建新的串口对象并设置通信参数,如波特率、数据位等;
⑤打开串口;
⑥启动后台线程来处理数据读取和发送操作。
图6 机器人连接主要步骤流程图
图7 连接机器人设备窗口设计
3.2 制作数据原理
制作数据是为了将动作数据、默认姿势数据和选定的动作编号转换为设备可下载和执行的字节数据数组。以下是制作数据的主要步骤:
①计算动作的数量,确定字节数组的长度;
②初始化数组和变量,包括标记每个动作是否需要下载的数组、统计动作编号出现次数的数组、存储动作数据的字符串数组,以及最终生成的字节数据数组;
③遍历输入的动作数据,根据动作编号将动作数据分组,并统计每个编号的出现次数;
④生成字节数据,包括动作编号、是否循环、关节角度等信息;
⑤处理特殊情况,包括动作是否循环、循环的开始和结束等情况,以及处理姿势数据中的负值,并将其转换为字节表示;
⑥最后,将生成的字节数据存储在数组中,并返回作为输出。
图8 制作数据的主要步骤图
3.3 数据从机器人上传到电脑原理
数据上传到电脑涉及复杂的串口通信逻辑,包括发送指令、等待响应和报告上传进度。数据上传的主要步骤如图9所示。
图9 数据上传的主要步骤图
图10 数据上传窗口设计
图11 可视化操作界面设计
图12 机器人仿真编辑窗口设计
3.4 可视化界面操作
在程序的主界面中,设计了一个画板,用于存放各种动作组件。在画板中,可以插入单个动作、循环、连接线。
对于动作,可以对每个舵机位置、速度、延迟分别进行调整,且每个动作的音乐也可以进行自定义。
使用的类库和类:
在应用程序中使用了以下主要类库和类:
①System.ComponentModel:用于支持后台线程工作流。
②System.IO.Ports:用于串口通信。
③System.Windows.Controls.Viewport3D:用于3D建模。
④System.Windows.Media.Media3D:用于3D 操作。
4 结论
本文实现了航天主题创意宣传机器人的设计与制作,基于 STM32 单片机和 ESP32-A1S 处理器实现了对机器人的控制,用C#语言开发的WPF 程序实现了对机器人的可视化操纵,完成了机器人设备的连接和机器人数据的下载、制作以及数据从机器人上传到电脑的功能。