項(xiàng)目成品圖片:
01
—
項(xiàng)目簡(jiǎn)介
1.功能詳解
功能如下:
1. STM32F103C8T6單片機(jī)系統(tǒng)板作為主控單元
2. 舵機(jī)驅(qū)動(dòng)垃圾桶蓋打開(kāi)與關(guān)閉
3. 按鍵控制四個(gè)分類(lèi)垃圾桶的開(kāi)關(guān)
4. 語(yǔ)音識(shí)別控制分類(lèi)垃圾桶開(kāi)關(guān)
5. 光電紅外傳感器監(jiān)測(cè)垃圾是否已滿(mǎn),并指示燈提示
6. OLED顯示屏顯示分類(lèi)垃圾桶開(kāi)關(guān)狀態(tài)
7. 手機(jī)藍(lán)牙APP接收分類(lèi)垃圾桶已滿(mǎn)消息
2.材料清單
STM32F103C8T6單片機(jī)
OLED 屏幕
光電紅外傳感器
SNR8016語(yǔ)音識(shí)別模塊
BT04A藍(lán)牙模塊
舵機(jī)
02
—
原理圖設(shè)計(jì)
03
—
PCB硬件設(shè)計(jì)
PCB圖
04
—
程序設(shè)計(jì)
#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;//按鍵掃描標(biāo)志位uint32_ttime_num =0;//10ms計(jì)時(shí)uint8_tflag_waste_1 =0;//可回收垃圾桶標(biāo)志位uint8_tflag_waste_2 =0;//廚余垃圾桶標(biāo)志位
uint8_tflag_waste_3 =0;//有害垃圾桶標(biāo)志位uint8_tflag_waste_4 =0;//其他垃圾桶標(biāo)志位externuint8_tusart2_buf[64];//串口2接收數(shù)組
/**********************************函數(shù)聲明**********************************/voidKey_function(void);//按鍵函數(shù)
voidMonitor_function(void);//監(jiān)測(cè)函數(shù)voidManage_function(void);//處理函數(shù)
/***********主函數(shù)*****/intmain(){Delay_Init(); //延時(shí)初始化 Gpio_Init(); //IO初始化Key_Init(); //按鍵初始化Motor_Duoji_Init(); //舵機(jī)初始化Motor_Duoji2_Init(); //舵機(jī)初始化OLED_Init();Usart1_Init(9600);//串口1初始化Usart2_Init(9600);//串口2初始化
TIM_SetCompare1(TIM1,1830); //PWM輸出Delay_ms(100);//延時(shí)100msTIM_SetCompare4(TIM1,1830); //PWM輸出Delay_ms(100);//延時(shí)100msTIM_SetCompare1(TIM2,1830); //PWM輸出Delay_ms(100);//延時(shí)100msTIM_SetCompare2(TIM2,1830); //PWM輸出Delay_ms(100);//延時(shí)
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:控制可回收垃圾桶打開(kāi)OLED_ShowChinese(96,0,9,16,1);OLED_ShowChinese(112,0,10,16,1);TIM_SetCompare1(TIM2,1920); //打開(kāi)
Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare1(TIM2,1830); //關(guān)閉OLED_ShowChinese(96,0,11,16,1);OLED_ShowChinese(112,0,12,16,1);break;
case2://按鍵2:控制廚余垃圾桶打開(kāi)
OLED_ShowChinese(96,16,9,16,1);OLED_ShowChinese(112,16,10,16,1);TIM_SetCompare2(TIM2,1920); //打開(kāi)
Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare2(TIM2,1830); //關(guān)閉
OLED_ShowChinese(96,16,11,16,1);OLED_ShowChinese(112,16,12,16,1);break;
case3://按鍵3:控制有害垃圾桶打開(kāi)OLED_ShowChinese(96,32,9,16,1);OLED_ShowChinese(112,32,10,16,1);TIM_SetCompare1(TIM1,1920); //打開(kāi)
Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare1(TIM1,1830); //關(guān)閉OLED_ShowChinese(96,32,11,16,1);OLED_ShowChinese(112,32,12,16,1);break;
case4://按鍵4:控制其他垃圾桶打開(kāi)
OLED_ShowChinese(96,48,9,16,1);OLED_ShowChinese(112,48,10,16,1);TIM_SetCompare4(TIM1,1920); //打開(kāi)Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare4(TIM1,1830); //關(guān)閉
OLED_ShowChinese(96,48,11,16,1);OLED_ShowChinese(112,48,12,16,1);break;
default:break;}}if(USART2_WaitRecive() ==0)//如果收到數(shù)據(jù){if(usart2_buf[0] ==0x01)//收到語(yǔ)音指令是“廢紙|塑料瓶|可回收垃圾”,控制可回收垃圾桶打開(kāi)
{OLED_ShowChinese(96,0,9,16,1);OLED_ShowChinese(112,0,10,16,1);TIM_SetCompare1(TIM2,1920); //打開(kāi)
Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare1(TIM2,1830); //關(guān)閉USART2_Clear();//清空緩存
OLED_ShowChinese(96,0,11,16,1);OLED_ShowChinese(112,0,12,16,1);}elseif(usart2_buf[0] ==0x02)//收到語(yǔ)音指令是“剩飯|骨頭|廚余垃圾”,控制廚余垃圾桶打開(kāi)
{OLED_ShowChinese(96,16,9,16,1);OLED_ShowChinese(112,16,10,16,1);TIM_SetCompare2(TIM2,1930); //打開(kāi)
Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare2(TIM2,1820); //關(guān)閉USART2_Clear();//清空緩存
OLED_ShowChinese(96,16,11,16,1);OLED_ShowChinese(112,16,12,16,1);}elseif(usart2_buf[0] ==0x03)//收到語(yǔ)音指令是“燈泡|有害垃圾”,控制有害收垃圾桶打開(kāi)
{OLED_ShowChinese(96,32,9,16,1);OLED_ShowChinese(112,32,10,16,1);TIM_SetCompare1(TIM1,1920); //打開(kāi)Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare1(TIM1,1830); //關(guān)閉USART2_Clear();//清空緩存OLED_ShowChinese(96,32,11,16,1);OLED_ShowChinese(112,32,12,16,1);}elseif(usart2_buf[0] ==0x04)//收到語(yǔ)音指令是“木頭|其他垃圾”,控制其他垃圾桶打開(kāi)
{OLED_ShowChinese(96,48,9,16,1);OLED_ShowChinese(112,48,10,16,1);TIM_SetCompare4(TIM1,1920); //打開(kāi)Delay_ms(1000);//延時(shí)2sDelay_ms(1000);TIM_SetCompare4(TIM1,1830); //關(guān)閉USART2_Clear();//清空緩存OLED_ShowChinese(96,48,11,16,1);OLED_ShowChinese(112,48,12,16,1);}}if(IR_1 ==0)//可回收垃圾桶裝滿(mǎn),紅燈亮,并通過(guò)藍(lán)牙發(fā)送"可回收垃圾桶已滿(mǎn)"{Delay_ms(100);if(IR_1 ==0){LED1_G =0;LED1_R =1;if(flag_waste_1){UsartPrintf(USART1,"可回收垃圾桶已滿(mǎn)\r\n");flag_waste_1 =0;}}}else//未裝滿(mǎn),綠燈亮{LED1_G =1;LED1_R =0;flag_waste_1 =1;}
if(IR_2 ==0)//廚余垃圾桶裝滿(mǎn),紅燈亮,并通過(guò)藍(lán)牙發(fā)送"廚余垃圾桶已滿(mǎn)"{Delay_ms(100);if(IR_2 ==0){LED2_G =0;LED2_R =1;if(flag_waste_2){UsartPrintf(USART1,"廚余垃圾桶已滿(mǎn)\r\n");flag_waste_2 =0;}}}else//未裝滿(mǎn),綠燈亮
{LED2_G =1;LED2_R =0;flag_waste_2 =1;}
if(IR_3 ==0)//有害垃圾桶裝滿(mǎn),紅燈亮,并通過(guò)藍(lán)牙發(fā)送"有害垃圾桶已滿(mǎn)"{Delay_ms(100);if(IR_3 ==0){LED3_G =0;LED3_R =1;if(flag_waste_3){UsartPrintf(USART1,"有害垃圾桶已滿(mǎn)\r\n");flag_waste_3 =0;}}}else//未裝滿(mǎn),綠燈亮
{LED3_G =1;LED3_R =0;flag_waste_3 =1;}
if(IR_4 ==0)//其他垃圾桶裝滿(mǎn),紅燈亮,并通過(guò)藍(lán)牙發(fā)送"其他垃圾桶已滿(mǎn)"{Delay_ms(100);if(IR_4 ==0){LED4_G =0;LED4_R =1;if(flag_waste_4){UsartPrintf(USART1,"其他垃圾桶已滿(mǎn)\r\n");flag_waste_4 =0;}}}else//未裝滿(mǎn),綠燈亮
{LED4_G =1;LED4_R =0;flag_waste_4 =1;}
}}
05
—
實(shí)驗(yàn)效果
-
STM32
+關(guān)注
關(guān)注
2290文章
11018瀏覽量
362944 -
智能語(yǔ)音
+關(guān)注
關(guān)注
11文章
798瀏覽量
49414
發(fā)布評(píng)論請(qǐng)先 登錄
基于CW32的智能語(yǔ)音分類(lèi)垃圾桶

【 平頭哥CB5654語(yǔ)音開(kāi)發(fā)板試用連載】智能垃圾桶
【樂(lè)鑫ESP32-DevKitC-32D模組開(kāi)發(fā)板試用連載】智能語(yǔ)音垃圾桶
【大聯(lián)大品佳 Nuvoton ISD9160語(yǔ)音識(shí)別試用申請(qǐng)】語(yǔ)音控制的智能垃圾分類(lèi)垃圾桶
人工智能分類(lèi)垃圾桶原理
基于stm32的智能垃圾桶設(shè)計(jì)
怎樣去設(shè)計(jì)一種基于STM32的智能語(yǔ)音識(shí)別垃圾桶
基于51單片機(jī)的一個(gè)語(yǔ)音識(shí)別分類(lèi)智能垃圾桶設(shè)計(jì)
求大佬分享STM32實(shí)現(xiàn)的語(yǔ)音識(shí)別智能垃圾桶的代碼
基于小凌派RK2206的智能垃圾桶設(shè)計(jì)
智能語(yǔ)音識(shí)別分類(lèi)垃圾桶的設(shè)計(jì)資料合集

『開(kāi)源項(xiàng)目』基于STM32的智能垃圾桶之舵機(jī)控制(HAL庫(kù))

『開(kāi)源項(xiàng)目』基于STM32的智能垃圾桶之語(yǔ)音播報(bào)

『開(kāi)源項(xiàng)目』基于STM32的智能垃圾桶之綜合代碼(HAL庫(kù))

評(píng)論