基于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板控制,使用语音识别模块进行垃圾分类,具体所使用硬件如图所示:

ArduinoIDE控制语音识别 arduino 语音识别_ArduinoIDE控制语音识别


ArduinoIDE控制语音识别 arduino 语音识别_ArduinoIDE控制语音识别_02

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.系统原理图

ArduinoIDE控制语音识别 arduino 语音识别_ArduinoIDE控制语音识别_03

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 
  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、实物展示

ArduinoIDE控制语音识别 arduino 语音识别_语音识别_04