0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32项目分享:STM32智能语音分类垃圾桶

机智云 ? 2025-03-15 10:02 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

项目成品图片:


9a911080-0141-11f0-9434-92fbcf53809c.jpg


01

项目简介


1.功能详解


STM32智能语音分类垃圾桶

功能如下:


1. STM32F103C8T6单片机系统板作为主控单元

2. 舵机驱动垃圾桶盖打开与关闭

3. 按键控制四个分类垃圾桶的开关

4. 语音识别控制分类垃圾桶开关

5. 光电红外传感器监测垃圾是否已满,并指示灯提示

6. OLED显示屏显示分类垃圾桶开关状态

7. 手机蓝牙APP接收分类垃圾桶已满消息



2.材料清单

STM32F103C8T6单片机

OLED 屏幕

光电红外传感器

SNR8016语音识别模块

BT04A蓝牙模块

舵机



02


原理图设计


9aa35b50-0141-11f0-9434-92fbcf53809c.png


03


PCB硬件设计


PCB图

9ab92e44-0141-11f0-9434-92fbcf53809c.png9ad41ce0-0141-11f0-9434-92fbcf53809c.png


04

程序设计


#include"sys.h"#include"stdio.h"#include"string.h"#include"delay.h"#include"gpio.h"#include"key.h"#include"usart.h"#include"motor_duoji.h"#include"oled.h"

/**********************************变量定义**********************************/uint8_tkey_num =0;//按键扫描标志位uint32_ttime_num =0;//10ms计时uint8_tflag_waste_1 =0;//可回收垃圾桶标志位uint8_tflag_waste_2 =0;//厨余垃圾桶标志位

uint8_tflag_waste_3 =0;//有害垃圾桶标志位uint8_tflag_waste_4 =0;//其他垃圾桶标志位externuint8_tusart2_buf[64];//串口2接收数组
/**********************************函数声明**********************************/voidKey_function(void);//按键函数

voidMonitor_function(void);//监测函数voidManage_function(void);//处理函数

/***********主函数*****/intmain(){Delay_Init(); //延时初始化 Gpio_Init(); //IO初始化Key_Init(); //按键初始化Motor_Duoji_Init(); //舵机初始化Motor_Duoji2_Init(); //舵机初始化OLED_Init();Usart1_Init(9600);//串口1初始化Usart2_Init(9600);//串口2初始化
TIM_SetCompare1(TIM1,1830); //PWM输出Delay_ms(100);//延时100msTIM_SetCompare4(TIM1,1830); //PWM输出Delay_ms(100);//延时100msTIM_SetCompare1(TIM2,1830); //PWM输出Delay_ms(100);//延时100msTIM_SetCompare2(TIM2,1830); //PWM输出Delay_ms(100);//延时

100msOLED_Clear();OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChinese(32,0,2,16,1);OLED_ShowChinese(48,0,15,16,1);OLED_ShowChinese(64,0,16,16,1);OLED_ShowChar(80,0,':',16,1);OLED_ShowChinese(96,0,11,16,1);OLED_ShowChinese(112,0,12,16,1);
OLED_ShowChinese(0,16,3,16,1);OLED_ShowChinese(16,16,4,16,1);OLED_ShowChinese(32,16,15,16,1);OLED_ShowChinese(48,16,16,16,1);OLED_ShowChar(80,16,':',16,1);OLED_ShowChinese(96,16,11,16,1);OLED_ShowChinese(112,16,12,16,1);
OLED_ShowChinese(0,32,5,16,1);OLED_ShowChinese(16,32,6,16,1);OLED_ShowChinese(32,32,15,16,1);OLED_ShowChinese(48,32,16,16,1);OLED_ShowChar(80,32,':',16,1);OLED_ShowChinese(96,32,11,16,1);OLED_ShowChinese(112,32,12,16,1);
OLED_ShowChinese(0,48,7,16,1);OLED_ShowChinese(16,48,8,16,1);OLED_ShowChinese(32,48,15,16,1);OLED_ShowChinese(48,48,16,16,1);OLED_ShowChar(80,48,':',16,1);OLED_ShowChinese(96,48,11,16,1);OLED_ShowChinese(112,48,12,16,1);
while(1){key_num =Chiclet_Keyboard_Scan(0);//按键扫描

if(key_num !=0)//有按键按下

{switch(key_num){case1://按键1:控制可回收垃圾桶打开OLED_ShowChinese(96,0,9,16,1);OLED_ShowChinese(112,0,10,16,1);TIM_SetCompare1(TIM2,1920); //打开

Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare1(TIM2,1830); //关闭OLED_ShowChinese(96,0,11,16,1);OLED_ShowChinese(112,0,12,16,1);break;
case2://按键2:控制厨余垃圾桶打开

OLED_ShowChinese(96,16,9,16,1);OLED_ShowChinese(112,16,10,16,1);TIM_SetCompare2(TIM2,1920); //打开

Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare2(TIM2,1830); //关闭

OLED_ShowChinese(96,16,11,16,1);OLED_ShowChinese(112,16,12,16,1);break;
case3://按键3:控制有害垃圾桶打开OLED_ShowChinese(96,32,9,16,1);OLED_ShowChinese(112,32,10,16,1);TIM_SetCompare1(TIM1,1920); //打开

Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare1(TIM1,1830); //关闭OLED_ShowChinese(96,32,11,16,1);OLED_ShowChinese(112,32,12,16,1);break;
case4://按键4:控制其他垃圾桶打开

OLED_ShowChinese(96,48,9,16,1);OLED_ShowChinese(112,48,10,16,1);TIM_SetCompare4(TIM1,1920); //打开Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare4(TIM1,1830); //关闭

OLED_ShowChinese(96,48,11,16,1);OLED_ShowChinese(112,48,12,16,1);break;
default:break;}}if(USART2_WaitRecive() ==0)//如果收到数据{if(usart2_buf[0] ==0x01)//收到语音指令是“废纸|塑料瓶|可回收垃圾”,控制可回收垃圾桶打开

{OLED_ShowChinese(96,0,9,16,1);OLED_ShowChinese(112,0,10,16,1);TIM_SetCompare1(TIM2,1920); //打开

Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare1(TIM2,1830); //关闭USART2_Clear();//清空缓存

OLED_ShowChinese(96,0,11,16,1);OLED_ShowChinese(112,0,12,16,1);}elseif(usart2_buf[0] ==0x02)//收到语音指令是“剩饭|骨头|厨余垃圾”,控制厨余垃圾桶打开

{OLED_ShowChinese(96,16,9,16,1);OLED_ShowChinese(112,16,10,16,1);TIM_SetCompare2(TIM2,1930); //打开

Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare2(TIM2,1820); //关闭USART2_Clear();//清空缓存

OLED_ShowChinese(96,16,11,16,1);OLED_ShowChinese(112,16,12,16,1);}elseif(usart2_buf[0] ==0x03)//收到语音指令是“灯泡|有害垃圾”,控制有害收垃圾桶打开

{OLED_ShowChinese(96,32,9,16,1);OLED_ShowChinese(112,32,10,16,1);TIM_SetCompare1(TIM1,1920); //打开Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare1(TIM1,1830); //关闭USART2_Clear();//清空缓存OLED_ShowChinese(96,32,11,16,1);OLED_ShowChinese(112,32,12,16,1);}elseif(usart2_buf[0] ==0x04)//收到语音指令是“木头|其他垃圾”,控制其他垃圾桶打开

{OLED_ShowChinese(96,48,9,16,1);OLED_ShowChinese(112,48,10,16,1);TIM_SetCompare4(TIM1,1920); //打开Delay_ms(1000);//延时2sDelay_ms(1000);TIM_SetCompare4(TIM1,1830); //关闭USART2_Clear();//清空缓存OLED_ShowChinese(96,48,11,16,1);OLED_ShowChinese(112,48,12,16,1);}}if(IR_1 ==0)//可回收垃圾桶装满,红灯亮,并通过蓝牙发送"可回收垃圾桶已满"{Delay_ms(100);if(IR_1 ==0){LED1_G =0;LED1_R =1;if(flag_waste_1){UsartPrintf(USART1,"可回收垃圾桶已满\r\n");flag_waste_1 =0;}}}else//未装满,绿灯亮{LED1_G =1;LED1_R =0;flag_waste_1 =1;}
if(IR_2 ==0)//厨余垃圾桶装满,红灯亮,并通过蓝牙发送"厨余垃圾桶已满"{Delay_ms(100);if(IR_2 ==0){LED2_G =0;LED2_R =1;if(flag_waste_2){UsartPrintf(USART1,"厨余垃圾桶已满\r\n");flag_waste_2 =0;}}}else//未装满,绿灯亮

{LED2_G =1;LED2_R =0;flag_waste_2 =1;}
if(IR_3 ==0)//有害垃圾桶装满,红灯亮,并通过蓝牙发送"有害垃圾桶已满"{Delay_ms(100);if(IR_3 ==0){LED3_G =0;LED3_R =1;if(flag_waste_3){UsartPrintf(USART1,"有害垃圾桶已满\r\n");flag_waste_3 =0;}}}else//未装满,绿灯亮

{LED3_G =1;LED3_R =0;flag_waste_3 =1;}
if(IR_4 ==0)//其他垃圾桶装满,红灯亮,并通过蓝牙发送"其他垃圾桶已满"{Delay_ms(100);if(IR_4 ==0){LED4_G =0;LED4_R =1;if(flag_waste_4){UsartPrintf(USART1,"其他垃圾桶已满\r\n");flag_waste_4 =0;}}}else//未装满,绿灯亮

{LED4_G =1;LED4_R =0;flag_waste_4 =1;}

}}


05

实验效果

9aeb63dc-0141-11f0-9434-92fbcf53809c.png9b1200be-0141-11f0-9434-92fbcf53809c.jpg


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2295

    文章

    11033

    浏览量

    365585
  • 智能语音
    +关注

    关注

    11

    文章

    805

    浏览量

    49557
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于CW32的智能语音分类垃圾桶

    基于武汉芯源半导体CW32F030C8T6和启英泰伦CI-C22GS02制作的智能语音分类垃圾桶,能够实现识别语音来判断垃圾种类,同时打开相
    的头像 发表于 08-01 15:39 ?1739次阅读
    基于CW32的<b class='flag-5'>智能</b><b class='flag-5'>语音分类</b><b class='flag-5'>垃圾桶</b>

    【 平头哥CB5654语音开发板试用连载】智能垃圾桶

    项目名称:智能垃圾桶试用计划:根据语音识别开启不同存储空间,达到智能垃圾
    发表于 03-13 16:23

    【乐鑫ESP32-DevKitC-32D模组开发板试用连载】智能语音垃圾桶

    项目名称:智能语音垃圾桶试用计划:1:本人用此模块实现小区内垃圾桶语音提示
    发表于 07-03 10:14

    【大联大品佳 Nuvoton ISD9160语音识别试用申请】语音控制的智能垃圾分类垃圾桶

    项目名称:语音控制的智能垃圾分类垃圾桶试用计划:项目
    发表于 08-10 17:49

    人工智能分类垃圾桶原理

    人工智能分类垃圾桶原理,Hello,大家好,作者终于考完研了,现在开始更新自己以前的科研项目来供大家一起学习参考,开源共享,,欢迎加油一起学习,一起开源中国。今天共享的开源
    发表于 07-21 07:48

    基于stm32智能垃圾桶设计

    一、硬件材料清单:1、STM32核心板2、OLED显示屏3、语音识别模块4、舵机二、实现的功能1:语音识别2:垃圾分类3:例如说出“干
    发表于 08-11 09:07

    怎样去设计一种基于STM32智能语音识别垃圾桶

    ASR-08B模块有哪些优点?怎样去设计一种基于STM32智能语音识别垃圾桶
    发表于 10-11 07:59

    基于51单片机的一个语音识别分类智能垃圾桶设计

    编写语音模块(部分代码)语音模块串口调试结果51单片机代码(部分代码)项目展示基本介绍这个一个基于51单片机做的一个语音识别分类
    发表于 11-18 07:19

    求大佬分享STM32实现的语音识别智能垃圾桶的代码

    求大佬分享STM32实现的语音识别智能垃圾桶的代码
    发表于 12-13 06:23

    基于小凌派RK2206的智能垃圾桶设计

    模块用于与用户交互。舵机模块用于打开垃圾桶。2.4项目展示智能垃圾桶模型正面实物智能垃圾桶模型背
    发表于 02-13 17:34

    智能语音识别分类垃圾桶的设计资料合集

    本文档的主要内容详细介绍的是智能语音识别分类垃圾桶的设计资料合集 使用LD3320语音识别模块进行语音
    发表于 12-21 08:00 ?35次下载
    <b class='flag-5'>智能</b><b class='flag-5'>语音</b>识别<b class='flag-5'>分类</b><b class='flag-5'>垃圾桶</b>的设计资料合集

    『开源项目』基于STM32智能垃圾桶之舵机控制(HAL库)

    大家好,我是『芯知识学堂』的SingleYork,前面给大家简单介绍了<基于STM32智能垃圾桶之成员简介>、<基于STM32
    发表于 11-25 20:36 ?29次下载
    『开源<b class='flag-5'>项目</b>』基于<b class='flag-5'>STM32</b>的<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>之舵机控制(HAL库)

    『开源项目』基于STM32智能垃圾桶语音播报

    大家好,我是『芯知识学堂』的SingleYork,前面给大家简单介绍了<基于STM32智能垃圾桶之成员简介>和<基于STM32
    发表于 12-02 13:51 ?34次下载
    『开源<b class='flag-5'>项目</b>』基于<b class='flag-5'>STM32</b>的<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>之<b class='flag-5'>语音</b>播报

    『开源项目』基于STM32智能垃圾桶之综合代码(HAL库)

    ;基于STM32智能垃圾桶语音播报>和
    发表于 12-16 16:53 ?34次下载
    『开源<b class='flag-5'>项目</b>』基于<b class='flag-5'>STM32</b>的<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>之综合代码(HAL库)

    基于CW32的智能语音分类垃圾桶设计

    基于CW32的智能语音分类垃圾桶设计
    的头像 发表于 11-06 16:51 ?1940次阅读
    基于CW32的<b class='flag-5'>智能</b><b class='flag-5'>语音分类</b><b class='flag-5'>垃圾桶</b>设计