为视障人士提供的语音辅助轮椅





准备工作:
材料:
1. ESP12E 微控制器
2. DFRobot 语音识别模块
3. L293D 电机驱动器
4. 2*BO 电机
5. 2*BO 电机轮
6. 定制PCB
7. 3.7V 锂离子电池
8.1 或 2 个脚轮
9. 3.7V 转 5V 升压模块
10. 3D 印刷椅子模型底座
工具:
1. 胶枪
2. 烙铁
3. 助焊剂
4. 焊接引线
5. 切刀
6. 螺丝刀
所需组件




1. ESP12E 微控制器
2. DFRobot 语音识别模块
3. L293D 电机驱动器
4. 2*BO 电机
5. 2*BO 电机轮
6. 定制PCB
7. 3.7V 锂离子电池
8.1 或 2 个脚轮
9. 3.7V 转 5V 升压模块
10. 3D 印刷椅子模型底座
1. ESP12E 微控制器 - 这是一款基于 ESP8266 芯片的支持 Wi-Fi 的微控制器。它将充当项目的大脑,控制电机,接收来自语音识别模块的命令,并可能通过 Wi-Fi 连接到其他设备。
2. DFRobot 离线语音识别模块 - 该模块将允许您的项目识别和响应语音命令。它将连接到 ESP12E,ESP12E 将解释识别的命令并相应地控制电机或其他功能。
3.L293D 电机驱动器- L293D 是一款双 H 桥电机驱动器,可让您独立控制两个直流电机的速度和方向。ESP12E 向 L293D 发送控制信号以驱动电机。
4. 2 * BO 电机 - 这些是将驱动轮椅的直流电机。
5. 2 * BO 电机轮 - 这些轮子将连接到 BO 电机上,允许轮椅四处移动。
6. 定制 PCB - 定制 PCB 将被设计为整齐地集成所有组件,使组装更容易、更可靠。
7. 3.7V 锂离子电池 - 该电池将为您的整个项目供电,为 ESP12E、电机和其他组件供电。我选择锂离子电池是因为锂离子电池结构紧凑且能量密度好。
8. 1 或 2 个脚轮 - 脚轮为您的项目提供平衡和支撑,使其能够向不同方向平稳移动而不会翻倒。
9. 3.7V 转 5V 升压模块 - 由于某些组件(如电机驱动器)需要 5V 才能运行,因此该升压模块会将锂离子电池的 3.7V 升压到稳定的 5V 输出。
10. 3D 打印椅子模型底座 - 这是将所有组件固定在一起的结构或框架。它将被设计为容纳电机、车轮和电子设备,构成该项目的物理基础。
所需工具
1. 胶枪
2. 烙铁
3. 助焊剂
4. 焊接引线
5. 切刀
6. 螺丝刀
所需的应用程序/软件
1. Arduino IDE
2.立创EDA
3. 廷克卡德
电路图

该电路的主要组件是 ESP8266 模块,这是控制整个系统的核心微控制器。各种 GPIO (通用输入/输出) 引脚连接到不同的组件和模块。RST (Reset) 和 EN (Enable) 是用于重置和启用 ESP8266 的控制引脚。AMS1117-3.3电压调节器.将5伏特转换为3.3V,为ESP8266供电。电容器(C1、C2、C3、C4)通过过滤噪声来稳定ESP8266的电源。离线语音识别模块连接到 esp8266 的 i2c 引脚。红外接收器模块检测地板,信号引脚连接到 A0 引脚ESP8266。CH340G USB 转串口转换器:该电路将 USB 信号转换为 TTL(晶体管-晶体管逻辑)电平信号。它用于从计算机对 ESP8266 进行编程或通信。3.7V 至 5V 升压器这将 3.7V 输入(来自锂离子电池)升压至 5V。L293D 电机驱动器驱动电机。它可以通过切换极性来控制电机的方向。GPIO D6、D7、D8 和 D9 这些引脚来自 ESP8266 用于控制电机驱动器。
PCB 设计





在面包板上使用 nodemcu 测试和验证电路后,我决定完成 PCB 设计。所以我把电路图转换成了 PCB。我把所有组件都安排得很紧密,然后完成了 PCB 设计。设计后 PCB 看起来像这样。再次更改 PCB 设计后,我下载了用于 PCB 制造的 Gerber 文件。
PCB 制造

为了制造设计的 PCB,我去了 jlcpcb.com。您只需 10 美元即可获得 5 个 PCB。登录您的帐户后,单击立即订购并上传 gerber 文件,之后,我们可以选择颜色、数量、厚度等。在这里,我为我的 PCB 选择紫色。您可以选择任何颜色。然后我们可以选择运输方式并下订单
3D 设计




现在我需要制作轮椅模型。因此,在 tinkercad 的帮助下,我设计了一个简单的 3D 模型。
打印模型




我使用我的 flashforge adventurer 5m Pro 打印模型。我使用 PLA 耗材进行打印。
制作轮椅模型










首先,我将电机放置在轮椅模型中,然后放置主 PCB。我将语音识别模块连接到轮椅的背面。我将红外模块安装在椅子的正面,这样它就可以很容易地检测到地板。
准备离线语音识别模块

为此,我们需要将命令教给语音识别模块,打开电路并
使用唤醒词(默认或已学习)唤醒语音助手,然后按照提供的提示说“学习命令词”以启动学习命令短语的过程。在每次学习命令短语之前,有必要删除之前学习的命令短语。请参阅有关如何删除唤醒词和命令短语的说明。
- 提示:现在学习,安静,请根据提示学习命令字!请说出要学习的第一条命令!
- 需要学习的指令短语(以“go forward”为例):“go forward”
- 提示:学习成功,请再说一遍!
- 要学习的指令短语:“go forward”
- 提示:学习成功,请再说一遍!
- 要学习的指令短语:“go forward”
- 提示:好的,成功学会了第一个指令!请说出要学习的第二个命令!
...(继续学习)
与您必须添加 Turn left, turn right 和 stop 的方式相同。请观看此有关 Voice Recognition 模块的教程视频。
Arduino 编程







头文件
- DFRobot_DF2301Q.h:此库用于与语音识别模块 DFRobot DF2301Q 进行交互
- FastLED.h:此库用于控制 Neopixel (WS2812) LED。
- NUM_LEDS:连接的 LED 数量。
- DATA_PIN:连接到 Neopixel 数据的引脚 line.leds[]:一个数组,用于存储每个 LED 的颜色数据。
#define IN_1 2
#define IN_2 14
#define IN_3 13
#define IN_4 12
- IN_1、IN_2、IN_3 IN_4:这些是连接到控制机器人电机的电机驱动器输入的 GPIO 引脚。
- Serial Communication:以 115200 的波特率启动串口通信以进行调试。
- 语音模块初始化:代码尝试初始化语音识别模块。如果失败,将打印一条消息,并等待 3 秒,然后再重试。
- LED 初始化:Neopixel LED 使用 FastLED.addLeds 函数进行初始化。
- Motor Control Pins:电机驱动器引脚设置为输出。
语音模块设置:
- asr.setVolume(10): 设置音量 - asr.setMuteMode(0): 取消模块静音 - asr.setWakeTime(100): 设置语音模块的唤醒时间 - 唤醒时间被读回并打印以供确认。- 语音模块设置:
asr.setVolume(10):设置音量。
asr.setMuteMode(0):取消模块静音。
asr.setWakeTime(100):设置语音模块的唤醒时间。
将读回并打印唤醒时间以供确认。
模拟输入读数: flooor 是来自引脚 A0 的模拟读数,如果存在下限,则模拟值较低,反之亦然。
语音命令处理:语音识别模块侦听由 CMDID 识别的命令。
- CMDID == 22:如果满足地板条件,则向前移动。
- CMDID == 6:如果满足地板条件,则右转。
- CMDID == 7:如果满足地板条件,则向左转。
- CMDID == 8:向后移动,或者地板条件触发机器人停止或倒车。
- 语音命令处理:语音识别模块侦听由 CMDID 识别的命令。
CMDID 22:如果满足地板条件,则向前移动。
CMDID 6:如果满足地板条件,则右转。
CMDID 7:如果满足地板条件,则向左转。
CMDID 8:向后移动,或者如果地板条件触发机器人停止或倒车。
4. 移动功能
- goAhead():将机器人向前移动。电机驱动器输入设置为向前移动电机,Neopixel LED 设置为洋红色。
- goRight():将机器人向右转动。电机驱动器输入设置为转动机器人,Neopixel LED 设置为绿色
- goLeft():将机器人向左转动。电机驱动器输入设置为转动机器人,Neopixel LED 设置为蓝色。
stopRobot():停止机器人。电机驱动器输入设置为停止电机,Neopixel LED 设置为重新
源代码












