语音控制垃圾桶教程;LD3320串口版语音识别+UNO开发板+sg90舵机
一、材料准备
硬件部分
序号 | 材料名称 | 单位 | 参考价格(块) | 备注 |
1 | LD3320串口版语音识别模块+USB转TTL烧录工具 | 个 | 56 | 一定要买串口版的,SPI版本的我没搞好。 |
2 | Arduino uno 开发板 | 个 | 15 | 买一个 |
3 | SG90舵机 | 个 | 6 | 买一个,(可以在买个小垃圾桶,我只是模拟就没花钱买) |
4 | 杜邦线 | 若干 | 10 | 公对公、母对母、公对母每个10条绝对足够 |
5 | 一台windows电脑 | 台 | / |
软件部分
序号 | 软件名称 | 用途 | 备注 |
1 | Keil uVisiion5 | 是给LD3320串口版语音识别模块编写代码,设置唤醒词以及指令。 | 都有现成的代码直接改。 |
2 | stc-isp v6.87C | 是把编写后的代码烧录(下载)LD3320串口版语音识别模块里面。 | 要安装CH340驱动,需要把USB转TTL烧录工具插到电脑上进行安装。否则安装会失败。 |
3 | Arduino IDE | 是给Arduino uno 开发板编写程序以及烧录(下载)程序。 | 烧录完成后,记得打开串口监视器,看看发出的指令有没有识别到。可以重新插拔板子。 |
二、实现内容
接下来按照我的流程一步一步往下走,就能实现,我也是0基础,所以一定按照我的思路来,等你实现了,再按照你自己的思路拓展。硬件部分自己准备,软件部分可以问我要且提供支持。一般买硬件后,商家都会提供软件部分。
实现步骤:LD3320串口版语音识别模块调试好-->接入Arduino uno 开发板-->测试-->完成。
1、LD3320串口版语音识别模块和USB转TTL烧录工具
1)先把USB转TTL烧录工具插入到电脑,找到CH340驱动(不好找问我要),安装,完成。
2)USB转TTL烧录工具需要和LD3320串口版语音识别模块连接,接线图如下:
3)USB转TTL烧录工具接到LD3320串口版语音识别模块后插入到电脑,准备编写代码和烧录程序。
4)打开Keil uVisiion5软件和示例代码,示例代码我们只需要修改main.c和LDChip.c,先打开LDChip.c,如下图。我们只需要再圈红的地方修改语音指令就可以,第一个是唤醒词,我设置的是小五、第二个是打开垃圾桶、第三个是关闭垃圾桶,只识别拼音,一定要写拼音。
再打开main.c文件,修改上述内容,跟着我做,先别着急理解他。
完成后,编译完成。记得编译后的软件存放位置,后续进行烧录的时候,需要选择到它。
5)使用stc-isp v6.87C软件把编译后的代码烧录到LD3320串口版语音识别模块。
先点击“检测MCU选项”是为了自动识别单片机型号和串口号以及波特率,如果失败多点击几次。
点击“打开程序文件”选择.hex后缀的文件见下图示,然后点击下载/编程。如果太慢,可以点击停止后在点击下载/编程。完成。
6)测试LD3320串口版语音识别模块是否正常,重新插拔后,把Arduino IDE打开,再找到串口监视器,对板子上的咪头说小五,正常他会返回5,打开垃圾桶会返回6,关闭垃圾桶会返回7。如果测试正常,这一步就完成了。
2、Arduino uno开发板烧录程序
1)打开Arduino IDE工具,把示例代码复制进去。
#include <Servo.h>
Servo myservo;// 创建一个 Servo 舵机对象
int servoPin = 9; // 定义数字引脚 9
void setup() {
Serial.begin(9600);
myservo.attach(servoPin); // 舵机机连接到数字引脚 9
myservo.write(0); // 将舵机转到 0 度位置
Serial.println("系统就绪,等待语音指令...");
}
void loop() {
if (Serial.available() > 0) { //是 Arduino 的一个函数,用于检查串口缓冲区中是否有可用的数据。如果返回值大于 0,表示有数据可读。
// 读取指令并清空缓冲区
int command = Serial.read(); //从串口缓冲区中读取一个字节的数据(ASCII 值),并将其存储到变量 command 中。
while(Serial.available() > 0) Serial.read(); // 清空缓冲区
Serial.print("收到原始指令:");
Serial.println(command);
// 如果LD3320发送二进制数值(6/7/8)
if (command == 54) {
Serial.println("执行指令6(打开垃圾桶) → 舵机转到150度");
myservo.write(150);
}
else if (command == 55) {
Serial.print("执行指令");
Serial.print(command);
Serial.println("执行指令7(关闭垃圾桶) → 舵机转到0度");
myservo.write(0);
}
else {
// Serial.print("未知指令:");
// Serial.println(command);
}
delay(15); // 统一延迟15毫秒
Serial.println("等待下一条指令...");
}
}
2)Arduino IDE连接Arduino uno板子,通过usb线连接电脑插上板子之后,勾选正确的板子型号和端口,不知道端口的可以到“电脑的设备管理器”查看。
3)验证及上传,先点击验证,看输出内容没问题的话,就点击上传板子,知道IDE提示上传完成。然后板子重新插拔。完成。
3、Arduino uno开发板和LD3320串口版语音识别模块和SG90舵机接线
1)其中sg90舵机橙(信号)接到Arduino uno开发板的9号引脚。
以上完成后,通电,呼叫xiao wu ,发出打开垃圾桶指令。舵机就会转动150°;
先不上视频了,有需要的后期再录视频。