隨著人類文明的進(jìn)步,人們對(duì)健康衛(wèi)生越來(lái)越重視,特別是在當(dāng)前新冠疫情的情景下,出門戴口罩,回家消毒洗手尤為重要,其中洗手已經(jīng)成為人們?nèi)粘I钪斜夭豢缮俚囊粋€(gè)環(huán)節(jié)。這就誕生了很多與洗手有關(guān)的產(chǎn)品,這里主要分析一款接近感應(yīng)自動(dòng)出液的產(chǎn)品—智能語(yǔ)音感應(yīng)洗手液器。
智能語(yǔ)音感應(yīng)洗手液器相對(duì)于傳統(tǒng)的按壓式洗手液器,它有幾方面的優(yōu)勢(shì):1、非接觸式,更加衛(wèi)生;2、自動(dòng)出液,更加便捷;3、出液量可調(diào),缺液提醒,更加智能;4、語(yǔ)音提示,更加人性化?;谝陨蟽?yōu)勢(shì),它得到了市場(chǎng)的大力認(rèn)可,在各大網(wǎng)購(gòu)平臺(tái)都能看到它的身影,而且銷量可觀。
那么它的工作原理呢?
智能語(yǔ)音感應(yīng)洗手液器它主要由幾大功能部件組成:
1、主控MCU;
2、紅外接近傳感器;
3、減速馬達(dá);
4、按鍵和LED燈;
5、語(yǔ)音IC和喇叭。
工作原理是紅外接近傳感器檢測(cè)到有物體接近,然后把信號(hào)傳給主控MCU,主控MCU收到信號(hào)后控制馬達(dá)轉(zhuǎn)動(dòng),從而帶動(dòng)液體從出液口流出。在整個(gè)過(guò)程和按鍵操作時(shí)都會(huì)有語(yǔ)音提示,它是由主控MCU發(fā)指令控制語(yǔ)音IC播放聲音的。
如果想開發(fā)這樣一款產(chǎn)品,在多、快、好、省的前提下,如何選擇開發(fā)方案呢?
這里推薦一套解決方案,主控MCU+WT588F02B語(yǔ)音IC(帶紅外接近傳感功能code)。理由是WT588F02B語(yǔ)音IC解決了紅外接近傳感這部分的功能,減少了主控MCU的開發(fā)工作量,以及前期驗(yàn)證調(diào)試時(shí)間。而且接近信號(hào)的傳輸和控制聲音播放指令都是統(tǒng)一用標(biāo)準(zhǔn)的uart接口,這方便了主控MCU的選型以及降低代碼編寫的難度,很大程度上減少了產(chǎn)品開發(fā)的失敗率。
WT588F02B是一顆怎樣的IC呢?
首先,WT588F02B這顆芯片是一顆多功能的語(yǔ)音芯片,它有16位的PWM輸出,能夠直接驅(qū)動(dòng)8歐0.25W的喇叭;其次,它還是一顆強(qiáng)大的數(shù)據(jù)處理芯片(DSP),自帶乘累加器,能夠快速的處理壓縮和解碼算法;再者,它有豐富的引腳,兼容很多通信協(xié)議,如一線通信、UART、IIC、SPI等;最后,WT588F02B還是一顆FLASH型的芯片,可以重復(fù)擦寫,支持掉電記憶功能,還可以不需要多用IO引腳實(shí)現(xiàn)電壓檢測(cè)功能。
下面我們?cè)敿?xì)的了解這個(gè)方案:
智能語(yǔ)音感應(yīng)洗手液器設(shè)計(jì)方案
1.智能語(yǔ)音感應(yīng)洗手液器設(shè)計(jì)方案概述
1.1、應(yīng)用框架圖
1.2框架圖介紹:
1、主控MCU通過(guò)Uart發(fā)送指令控制WT588F0B播放聲音,停止播放;
2、主控MCU通過(guò)Uart獲取紅外傳感器信號(hào)(或者主動(dòng)發(fā)送接近信號(hào));
3、主控MCU控制馬達(dá)出液;
4、通過(guò)按鍵設(shè)置出液量;
1.3語(yǔ)音提示內(nèi)容:
1、缺液語(yǔ)音提示;
2、低電量語(yǔ)音提示;
3、按鍵操作語(yǔ)音提示;
4、講文明、講衛(wèi)生的宣傳語(yǔ)(主要應(yīng)用于公共場(chǎng)所)
如何科學(xué)洗手的教學(xué)語(yǔ)音(主要適用于兒童,幫助他們養(yǎng)成正確的洗手習(xí)慣)
2.1.1 WT588F02B 基本功能和特性
1)16位DSP語(yǔ)音芯片、32Mhz內(nèi)部振蕩;
2)工作電壓2.0~5.5V;
3)16bit的PWM/DAC輸出,可直接驅(qū)動(dòng)8R 0.5W喇叭;
4)支持6K~32Khz的WAV文件;
5)客戶可以通過(guò)配套下載測(cè)試板在線更換芯片內(nèi)部語(yǔ)音內(nèi)容;
6)支持32768段地址,有更多需求可以擴(kuò)展;
7)芯片內(nèi)部有200K byte 的存儲(chǔ)空間(不包括主控程序);
8)低電壓檢測(cè)功能;
2.2設(shè)計(jì)原理圖:
2.2.2接口介紹:
3. WT588F02B功能介紹:
WT588F02B-8S內(nèi)置標(biāo)準(zhǔn)UART異步串口接口,屬于3.3V TTL電平接口。通訊數(shù)據(jù)格式是:起始位:1位;數(shù)據(jù)位:8位;奇偶位:無(wú);停止位:1位。使用電腦串口調(diào)試助手,需要正確設(shè)置串口的參數(shù),設(shè)置如圖:
語(yǔ)音類串口指令:只有指令長(zhǎng)度和校驗(yàn)是正確的,才會(huì)判斷命令;命令不存在時(shí),沒有返回值,參數(shù)過(guò)多也沒有返回值,參數(shù)錯(cuò)誤返回01
注意:“長(zhǎng)度”是指長(zhǎng)度(1字節(jié))+命令碼(若干字節(jié))+參數(shù)(若干字節(jié))+校驗(yàn)和(1個(gè)字節(jié))的長(zhǎng)度(字節(jié)數(shù));
“累加和校驗(yàn)”是指長(zhǎng)度+命令碼+參數(shù)的累加和的低字節(jié);
3.2語(yǔ)音播放指令
3.3紅外檢測(cè)指令:
1. 程序范例
串口/定時(shí)器初始化Init()
/*************************************************************************/
void Init(void)
{
/* *************串口1初始化****************/
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
/**************IO供電時(shí)鐘芯片初始化****************/
P2M0|=0X02;
P21=1; //推挽輸出高電平,可提供十幾毫安電流給時(shí)鐘芯片
/* *************定時(shí)器0初始化****************/
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x00; //設(shè)置定時(shí)初始值
TH0 = 0xA8; //設(shè)置定時(shí)初始值
TF0 = 0; //清除TF0標(biāo)志
ET0 = 1; //使能定時(shí)器中斷
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
/* *************看門啟動(dòng)****************/
WDT_CONTR = 0x04; // //18.432M : 0.68s
WDT_CONTR|=0x20;
EA = 1; //Open master interrupt switch
}
/***********************************************************************/
串口發(fā)送函數(shù)SendData(byte dat)
/*----------------------------
Send a byte data to UART
Input: dat (data to be sent)
Output:None
----------------------------*/
void SendData(BYTE dat)
{
//Wait for the completion of the previous data is sent
while (busy1);
busy1 = 1;
SBUF = dat; //Send data to UART buffer
}
/*************************************************************************/
語(yǔ)音播放函數(shù)send_uart_play()
voidsend_uart_play(unsigned char len) // 7E 05 A0 00 01 A6 EF
{
unsigned char i,j,sum=0;
j=len+2;
send2_buf[0]=0x7e;//
send2_buf[1]=len+2;
for(i=0;i<len;i++)send2_buf[2+i]=tempdata[i];
for(i=1;i<j;i++)sum+=send2_buf[i];
send2_buf[len+2]=sum;
send2_buf[len+3]=0xEF;
SendData(0x00);//低電平喚醒串口
for(i=0;i<(len+4);i++)SendData(send2_buf[i]);
}
聯(lián)系方式:4008-122-919