拿到Pinpong Board有一段时间了,做了一些简单的测试,最近几天把以前做的一个项目(语音互动垃圾自动分类)迁移过来了。
步骤1 方案介绍
我们准备了4个小垃圾桶,采用舵机开关垃圾桶盖子,采用离线语音模块和MP3模块实现语音互动。
1. 3D打印了一个零件把舵机装在垃圾桶上,然后用Pinpong Board控制舵机动作。
2.离线语音模块检测到声音进行识别:
可回收垃圾:旧报纸、塑料瓶、废铁等等;
其他垃圾:果壳、泥土、瓜子壳等等;
厨余垃圾:剩菜、剩饭、菜叶等等;
有害垃圾:灯泡、电池、药品等等;
3.Pinpong Board串口和离线语音模块连接通讯。
步骤2 制作过程
本方案包含4个小垃圾桶、4个舵机(9g micro servo)、Pinpong Board、离线语音识别模块、开源Mini MP3模块小喇叭、电源模块:
(1)控制模块:采用Pinpong Board代替Arduino uno开发板、Arduino uno扩展板;
(2)语音互动模块:采用离线语音识别模块M08b、开源Mini MP3模块和小喇叭;
(3)驱动:舵机(9g micro servo)
(4)电源模块:采用DC9V 1A电源。
材料清单
- Pinpong Board X1
- 舵机(9g micro servo) X4
- 离线语音识别模块M08b X1
- Arduino uno扩展板 X1
- 开源Mini MP3模块和小喇叭 X1
- DC9V 1A电源 X1
- 3D打印安装零件 X4
步骤3 安装
#include <DFRobot_Servo.h>
#include <DFRobot_PlayerMini.h>
#include <SoftwareSerial.h>
// 动态变量
volatile float mind_n_a;
// 创建对象
Servo servo_4;
Servo servo_5;
Servo servo_6;
Servo servo_7;
DFRobot_PlayerMini mp3;
SoftwareSerial softSerialmp3(2, 3);
// 主程序开始
void setup() {
servo_4.attach(4);
servo_5.attach(5);
servo_6.attach(6);
servo_7.attach(7);
Serial.begin(9600);
servo_4.angle(abs(0));
servo_5.angle(abs(0));
servo_6.angle(abs(0));
servo_7.angle(abs(0));
mp3.begin(&softSerialmp3);
mp3.volume(100);
}
void loop() {
mind_n_a = Serial.read();
if ((mind_n_a==1)) {
mp3.playMp3Folder(1);
servo_4.angle(abs(70));
delay(2000);
servo_4.angle(abs(0));
}
if ((mind_n_a==2)) {
mp3.playMp3Folder(2);
servo_5.angle(abs(70));
delay(2000);
servo_5.angle(abs(0));
}
if ((mind_n_a==3)) {
mp3.playMp3Folder(3);
servo_6.angle(abs(70));
delay(2000);
servo_6.angle(abs(0));
}
if ((mind_n_a==4)) {
mp3.playMp3Folder(4);
servo_7.angle(abs(70));
delay(2000);
servo_7.angle(abs(0));
}
}
通过语音识别自动打开垃圾箱盖子的基本功能实现了。
遇到几个问题正在解决:
1.开机后Pinpong Board上的蜂鸣器一直响,有问题待解决。
2.语音识别干扰很大,识别不准确。
3.小喇叭没有声音。
换成原来的Arduino uno开发板后以上问题没有。要解决以上问题还需要进一步测试。
评论