我是靠谱客的博主 斯文雨,最近开发中收集的这篇文章主要介绍基于Arduino的语音识别垃圾箱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基于Arduino的语音控制垃圾桶

        • 前言:
        • 1、功能
        • 2、材料清单
        • 3、总体方案
        • 4、系统原理图
        • 5、程序设计
        • 6、实物展示

前言:

Arduino是一块极易入门的单片机开发版,让小白也能体验单片机的快乐,下面我简单介绍一下该语音控制垃圾桶。

1、功能

实现集语音控制、红外感应为一体的语音识别垃圾分类垃圾桶。

2、材料清单

材料清单数量
Arduino Uno1
Arduino Mega25601
SG90舵机2
HC-05蓝牙模块1
ld3320模块1
RFID-RC5221
DHT11数字温湿度传感器2
E18-D80N光电传感器1
蜂鸣器1
LED灯3
杜邦线若干

3、总体方案

整体系统由Arduino UNO板和Arduino Mega2560板控制,使用语音识别模块进行垃圾分类,具体所使用硬件如图所示:
硬件系统组成框图1
硬件系统组成框图2

4、系统原理图

1.控制器I/O口分配

Arduino Mega I/O口分配表

名称传感器引脚I/O地址
HC-05蓝牙模块TX0
RX1
LD3320语音识别芯片MISO50
MOSI51
SCK52
NSSD4
RSTD9
IRQD2
WRGND
光电传感器OUT5
SG90OUT10 / 11
LEDOUT44 / 46

Arduino UNO I/O口分配表

名称传感器引脚I/O地址
安全警报LED灯OUT5
蜂鸣器OUT6
DHT11数字温湿度传感器OUT7
RFID-RC522MISO12
MOSI11
SCK13
RST9
SDA10

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的语音识别垃圾箱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部