概述
基于Arduino的语音控制垃圾桶
- 前言:
- 1、功能
- 2、材料清单
- 3、总体方案
- 4、系统原理图
- 5、程序设计
- 6、实物展示
前言:
Arduino是一块极易入门的单片机开发版,让小白也能体验单片机的快乐,下面我简单介绍一下该语音控制垃圾桶。
1、功能
实现集语音控制、红外感应为一体的语音识别垃圾分类垃圾桶。
2、材料清单
材料清单 | 数量 |
---|---|
Arduino Uno | 1 |
Arduino Mega2560 | 1 |
SG90舵机 | 2 |
HC-05蓝牙模块 | 1 |
ld3320模块 | 1 |
RFID-RC522 | 1 |
DHT11数字温湿度传感器 | 2 |
E18-D80N光电传感器 | 1 |
蜂鸣器 | 1 |
LED灯 | 3 |
杜邦线 | 若干 |
3、总体方案
整体系统由Arduino UNO板和Arduino Mega2560板控制,使用语音识别模块进行垃圾分类,具体所使用硬件如图所示:
4、系统原理图
1.控制器I/O口分配
Arduino Mega I/O口分配表
名称 | 传感器引脚 | I/O地址 |
---|---|---|
HC-05蓝牙模块 | TX | 0 |
RX | 1 | |
LD3320语音识别芯片 | MISO | 50 |
MOSI | 51 | |
SCK | 52 | |
NSS | D4 | |
RST | D9 | |
IRQ | D2 | |
WR | GND | |
光电传感器 | OUT | 5 |
SG90 | OUT | 10 / 11 |
LED | OUT | 44 / 46 |
Arduino UNO I/O口分配表
名称 | 传感器引脚 | I/O地址 |
---|---|---|
安全警报LED灯 | OUT | 5 |
蜂鸣器 | OUT | 6 |
DHT11数字温湿度传感器 | OUT | 7 |
RFID-RC522 | MISO | 12 |
MOSI | 11 | |
SCK | 13 | |
RST | 9 | |
SDA | 10 |
2.系统仿真图
3.系统原理图
5、程序设计
1、语音识别部分源码
Voice.init(); //初始化VoiceRecognition模块
//不可回收垃圾词汇库 //添加指令,参数(指令内容,指令标签(可重复))
Voice.addCommand("ping guo",0); //苹果
Voice.addCommand("xiang jiao",1); //香蕉
Voice.addCommand("shui guo",2); //水果
Voice.addCommand("dian chi",3); //电池
Voice.addCommand("chu yu la ji",4); //厨余垃圾
Voice.addCommand("deng pao",5); //灯泡
Voice.addCommand("yao pin",6); //药品
//可回收垃圾词汇库
Voice.addCommand("zhi xiang",7); //纸箱
Voice.addCommand("ping zi",8); //瓶子
Voice.addCommand("su liao",9); //塑料
Voice.addCommand("jin shu",10); //金属
Voice.addCommand("fei zhi",11); //废纸
Voice.addCommand("bo li",12); //玻璃
Voice.addCommand("yi fu",13); //衣服
Voice.addCommand("guan yi",14); //关闭不可回收垃圾箱
Voice.addCommand("guan er",15); //关闭可回收垃圾箱
Voice.addCommand("csdn",16); //无关代码示例
Voice.start(); //开始识别
switch(Voice.read()) //判断识别
{
case 0:
digitalWrite(Led,HIGH); //点亮LED
Servo_one_open();
Serial.println("苹果");
break;
case 1:
digitalWrite(Led2,HIGH);
Servo_two_open();
Serial.println("瓶子");
break;
case 2:
//...以此类推
default:
break;
}
2、RFID部分源码
//该段程序烧于UNO,做卡片识别用,并发送指引
rfid.isCard(); //找卡
if (rfid.readCardSerial()) //读卡号
{
Serial.print("您的卡号是 : ");
Serial.print(rfid.serNum[0],HEX);
if(rfid.serNum[0]==host[0][0] && rfid.serNum[1]==host[0][1] && rfid.serNum[2]==host[0][2] && rfid.serNum[3]==host[0][3]) //卡1
{
Serial.println("Welcome Card 1");
Serial.print('o');
Serial.println();
}
//该段程序烧于Mega,接收指引,并驱动舵机
void rfid_test() //RFID接收指令
{
if (Serial1.available())
{
order = Serial1.read();
if (order == 'o')
{
Serial.println("打开所有垃圾箱");
digitalWrite(Led,HIGH);
digitalWrite(Led2,HIGH);
Servo_one_open();
Servo_two_open();
}
}
}
6、实物展示
源码太长,已放到资源下载中心。第一次写博客,瞎写写哈,有什么不好的地方请各位大佬指正^ _ ^
最后
以上就是斯文雨为你收集整理的基于Arduino的语音识别垃圾箱的全部内容,希望文章能够帮你解决基于Arduino的语音识别垃圾箱所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复