![[开源]基于STM32单片机WiFi语音识别垃圾分类系统 Onenet语音分类垃圾桶 云平台智能垃圾分类系统 app垃圾桶火灾预防设计HK-024](http://pic.xiahunao.cn/yaotu/[开源]基于STM32单片机WiFi语音识别垃圾分类系统 Onenet语音分类垃圾桶 云平台智能垃圾分类系统 app垃圾桶火灾预防设计HK-024)
1、前言本设计以STM32F103C8T6单片机为主控芯片WIFI模块ESP8266-01S作为通信模块连接onenet云平台通过通过MQ-2烟雾传感器检测烟雾浓度是否正常预防垃圾桶火灾发生。OLED屏幕显示烟雾浓度、当前厨余垃圾其他垃圾有害垃圾可回收垃圾状态和是否满溢。当一级口令识别之后二级口令说出垃圾的名字语音识别模块自动识别此垃圾的类型语音播报出垃圾种类四种类型厨余垃圾其他垃圾有害垃圾可回收垃圾。也可自己定位垃圾得类型并且垃圾桶打开(舵机模拟垃圾桶打开并在十秒钟自动复位模拟垃圾桶关闭。通过WIFI连接ONENET云平台手机APP连接ONENET云平台APP可以查看当前环境信息数据可调节阈值范围。操作简单易懂手把手教小白完成整套设计UniAPP开发环境搭建非常简单可打包生成手机APP。2、元器件组成本设计由STM32F103C8T6单片机WIFI模块ESP8266-01SOLED屏幕语音识别模块JQ8400语音播报模块红外光电传感器SG90舵机MQ-2烟雾传感器电源电路 组成3、功能简介1、火灾预防通过MQ-2烟雾传感器检测烟雾浓度是否正常预防垃圾桶火灾发生。2、屏幕显示OLED屏幕显示烟雾浓度、当前厨余垃圾其他垃圾有害垃圾可回收垃圾状态和是否满溢。3、语音唤醒通过一级口令唤醒语音识别识别功能后语音回复”您好”。4、垃圾分类当一级口令识别之后二级口令说出垃圾的名字语音识别模块自动识别此垃圾的类型语音播报出垃圾种类四种类型厨余垃圾其他垃圾有害垃圾可回收垃圾。也可自己定位垃圾得类型并且垃圾桶打开(舵机模拟垃圾桶打开并在十秒钟自动复位模拟垃圾桶关闭。5、桶满检测通过红外光电传感器检测厨余垃圾其他垃圾有害垃圾可回收垃圾内垃圾是否满溢当检测到垃圾满溢时语音播报并声光提醒。6、 远程控制通过WIFI连接ONENET云平台手机APP连接ONENET云平台APP可以查看当前环境信息数据可调节阈值范围4、设计实现效果哔哩哔哩视频链接https://www.bilibili.com/video/BV1fdpM6jE4a/?spm_id_from333.1387.homepage.video_card.click资料分享看文章末尾5、设计原理图6、设计PCB图7、程序设计#include stm32f10x.h #include delay.h #include usart.h #include USART2/usart2.h #include timer.h #include adc.h #include menu.h #include key.h #include modules.h #include oled.h #include sg90.h #include hw.h #include mq2.h #include play.h #include usart3.h #include voice.h /****************洪科单片机工作室******************* *** 破晓单片机 *** 项目:基于STM32单片机WiFi语音识别垃圾分类系统 *** BILIBILI:洪科单片机 *** 小红书:洪科单片机 *** 授权IP:洪科单片机 *** 淘宝:洪科单片机 *** 闲鱼:洪科单片机 *** 版本:V01.01 *** MCU:STM32F103C8T6 ******************洪科单片机***********************/ //显示界面 CaiDanJieGouTi KeyTab[SIZE_CAIDAN] { {0 ,0 ,0 ,0 ,0 ,Main_Menu0}, / {1 ,1 ,1 ,1 ,1 ,Main_Menu1}, {2 ,2 ,2 ,2 ,2 ,Main_Menu2}, {3 ,3 ,3 ,3 ,3 ,Main_Menu3}, {4 ,4 ,4 ,4 ,4 ,Main_Menu4}, {5 ,5 ,5 ,5 ,5 ,Main_Menu5}, {6 ,6 ,6 ,6 ,6 ,Main_Menu6}, {7 ,7 ,7 ,7 ,7 ,Main_Menu7}, {8 ,8 ,8 ,8 ,8 ,Main_Menu8}, {9 ,9 ,9 ,9 ,9 ,Main_Menu9}, {10,10,10,10,10,Main_Menu10}, {11,11,11,11,11,Main_Menu11}, {12,12,12,12,12,Main_Menu12}, } ; //传感器变量声明 typedef struct { uint16_t HW1;// uint16_t HW2;// uint16_t HW3;// uint16_t HW4;// uint16_t yuyin; uint16_t smoke; }SensorModulesValue; typedef struct { uint16_t smokeTV;// }SensorThresholdValue; typedef struct { uint8_t TM1Flag; uint8_t TM2Flag; uint8_t TM3Flag; uint8_t TM4Flag; uint8_t SG1Flag; uint8_t SG2Flag; uint8_t SG3Flag; uint8_t SG4Flag; uint8_t YC1Flag; uint8_t YC2Flag; uint8_t YC3Flag; uint8_t YC4Flag; uint8_t BB1Flag; uint8_t BB2Flag; uint8_t BB3Flag; uint8_t BB4Flag; uint8_t BB5Flag; uint8_t LJTKZ1; uint8_t LJTKZ2; uint8_t LJTKZ3; uint8_t LJTKZ4; }DriveFlag; int main(void) { delay_init(); TIM3_Int_Init(499,7199);//1MS系统定时 OLEDGUI_Config(); //OLED初始化 OLEDGUI_DispString(30,0,Init...,16,1); key_Init();//按键初始化 Adc_Init();//Adc初始化 MQ2_Init();//MQ2初始化 HW_Init(); //HW初始化 SG90_Init(); SG90_SetAngle(0); delay_ms(100); delay_ms(100); uart2_init(115200); delay_ms(100); uart1_init(115200); delay_ms(100); OLEDGUI_DispString(0,0,Hardware init OK,16,1); //WiFi初始化 ESP8266_Init(); //初始化ESP8266 OLEDGUI_Clear(); //OLED清屏 OLEDGUI_DispString(0,0,Connect MQTTs Server...,16,1); while(ESP8266_SendCmd(ESP8266_ONENET_INFO, CONNECT)) DelayXms(500); OLEDGUI_DispString(0,16,Connect MQTT Server Success,16,1); DelayXms(500); OLEDGUI_Clear(); //OLED清屏 OLEDGUI_DispString(0,0,Device login ...,16,1); while(OneNet_DevLink()) //接入OneNET { OLEDGUI_DispString(0,32,CONNECT,16,1); ESP8266_SendCmd(ESP8266_ONENET_INFO, CONNECT); DelayXms(500); OLEDGUI_DispString(0,32,CONNECT,16,1); } OneNET_Subscribe(); OLEDGUI_Clear(); //OLED清屏 SensorThresholdSet();//阈值设置 SensorDataGet(); //获取传感器数据 OLEDGUI_Clear(); while(1) { //获取按键值 key_scan(); //进入菜单界面显示处理数据 GetKeylnput(Keystatus); //获取传感器数据 SensorDataGet(); delay_ms(100); } }8、设计包含内容