張 梨,吳瑪佳,祿 媛,歐陽可炳
(安順學(xué)院 電子與信息工程學(xué)院,貴州 安順 561000)
如今,越來越成熟的語音控制產(chǎn)品進(jìn)入了人們的日常生活中,讓生活變得更加便捷,其中語音控制加熱水杯更是貼近人們的生活。語音控制加熱水杯可以解放人們的雙手。目前該類研究已經(jīng)有了車載式的語音控制自動(dòng)加熱水杯,專利號(hào)為2013201966867,并發(fā)布了一款智能的車載冷熱杯[1],屬于生活用品技術(shù)范疇。這款杯子包括杯蓋、杯體及用來與汽車電源電相連的電熱杯座,杯體與杯底加熱座是拔插式的,可以分開和連在一起。在杯子內(nèi)膽和杯底之間設(shè)有冷卻片、散熱器、風(fēng)扇和PCB 晶片,內(nèi)膽底部設(shè)有溫度感應(yīng)器和加熱桿[1]。但是其價(jià)格昂貴并且使用環(huán)境單一,不能在廣大人群中推廣,且普通居家使用的加熱水杯還沒有語音加熱這個(gè)功能,因此針對(duì)這一狀況,作者設(shè)計(jì)了可以隨身攜帶的語音控制加熱水杯。
本文設(shè)計(jì)的語音加熱水杯主要功能是實(shí)現(xiàn)語音控制水杯加熱到理想溫度,本設(shè)計(jì)主要由硬件和軟件組成。由圖1 可知,將增強(qiáng)型51 單片機(jī)STC8H1K28 作為硬件部分的基礎(chǔ),接收和處理所有信號(hào),溫度采集用于檢測(cè)茶水的溫度,按鍵輸入用于設(shè)置溫度的上、下閾值。本設(shè)計(jì)的重點(diǎn)和難點(diǎn)皆為語音識(shí)別,主要是如何通過語音控制加熱與否。OLED 屏用于顯示溫度和溫度上下閾值。在超過臨界點(diǎn)時(shí),對(duì)加熱器的關(guān)閉進(jìn)行控制;在低于臨界點(diǎn)的情況下,對(duì)加熱器的開啟進(jìn)行控制。其由1 個(gè)12 V 鋰電池驅(qū)動(dòng),當(dāng)電池能量不足以支持系統(tǒng)運(yùn)行時(shí),可以利用充電器對(duì)其進(jìn)行充電。軟件方面采用C 語言編譯環(huán)境下的Keil 軟件,其能夠?qū)Τ绦蜻M(jìn)行模擬和調(diào)試并將程序燒寫在單片機(jī)上。
圖1 系統(tǒng)硬件組成
電量采集如圖2 中I 部分所示,本設(shè)計(jì)采用STC8H1K28單片機(jī)為主控核心,該單片機(jī)可以使用內(nèi)置內(nèi)部時(shí)鐘振蕩器(IRC)晶振頻率無需外置晶振,燒錄程序時(shí)可以在單片機(jī)下載編程燒錄軟件(STC-ISP)里選擇5.529 6 MHz 頻率。所以該單片機(jī)只需要給其工作電源就可以構(gòu)成單片機(jī)最小系統(tǒng)電路。由于使用的是12 V 鋰電池組,而單片機(jī)的模數(shù)轉(zhuǎn)換器(AD)轉(zhuǎn)換最大只能是5 V,不能直接將12 V 鋰電池組給單片機(jī)進(jìn)行AD 轉(zhuǎn)換,因此通過3 個(gè)10 kΩ 電阻串聯(lián)分壓原理模數(shù)轉(zhuǎn)換器(AD),當(dāng)鋰電池電壓為12 V,經(jīng)過電阻分壓后與單片機(jī)相連的P10 檢測(cè)到4 V 電壓才轉(zhuǎn)到單片機(jī)AD 轉(zhuǎn)換引腳上。隨著電池電量越來越少后,電池電壓會(huì)只剩下10 V 左右,這個(gè)時(shí)候P10 檢測(cè)的電壓只有3.3 V,單片機(jī)根據(jù)P10 口采集的電壓量就可以知道電池電量還有多少。
語音識(shí)別電路如圖2 中Ⅱ所示,采用的是天問語音模塊,利用其串口的發(fā)送串行數(shù)據(jù)(TXD)接到單片機(jī)的P30 口,而單片機(jī)P30 口的引腳復(fù)用功能就是串口13 的接收串行數(shù)據(jù)(RXD),這樣就實(shí)現(xiàn)了語音識(shí)別通信的硬件連接,而4 到12 端口為I/O 端口,本設(shè)計(jì)用不到I/O 模式因此無連接。由于天問語音識(shí)別模塊的主芯片是3.3 V 的,所以其信號(hào)輸出都是以3.3 V 為標(biāo)準(zhǔn),而STC 單片機(jī)是5 V 供電的,信號(hào)輸出都是以5 V 為標(biāo)準(zhǔn)。因此在兩者之間需采用1 kΩ 電阻進(jìn)行隔離,否則容易燒壞語音識(shí)別模塊。天問語音模塊編寫好語音識(shí)別詞匯,然后將不同的詞匯發(fā)送至不同的串口數(shù)據(jù),單片機(jī)根據(jù)與不同的數(shù)據(jù)來控制響應(yīng)的操作。
OLED 液晶屏顯示電路如圖2 中Ⅲ部分所示,用于顯示溫度、溫度上限和溫度下限數(shù)據(jù)。采用0.96 英寸的OLED 屏,1、2 腳接工作電源,3、4 腳為IIC 通信接口分別接到單片機(jī)P27 和P26 口,利用單片機(jī)I/O端口模擬IIC 通信與OLED 屏進(jìn)行通信,以達(dá)到單片機(jī)正常驅(qū)動(dòng)OLED 屏顯示的目的。
圖2 基于單片機(jī)芯片的部分電路圖
溫度傳感器電路如圖2 中Ⅳ部分所示。溫度傳感器電路是用來測(cè)量水溫的,1、3 腳接工作電源,2 腳為溫度數(shù)據(jù)輸出腳,單片機(jī)與P37 口相連讀取溫度數(shù)據(jù),由于DS18B20 是由1 根總線來進(jìn)行數(shù)據(jù)交換,其接收數(shù)據(jù)時(shí)為高電阻輸入,其發(fā)送數(shù)據(jù)時(shí)是開漏輸出[2],本身不具有輸出高電平的能力,即輸出“0”時(shí)通過場(chǎng)效應(yīng)管下拉為低電平,而輸出“1”時(shí),則為高阻,在外部接一個(gè)電阻將信號(hào)鉗位在高電平上。因此,為保證單片機(jī)讀取溫度數(shù)據(jù)的穩(wěn)定性,外置10 kΩ 的上拉電阻很有必要。從而單片機(jī)程序通過判斷P37 的高低電平的狀態(tài)就可以知道溫度傳感器接收數(shù)據(jù)還是發(fā)送數(shù)據(jù)。
按鍵檢測(cè)電路如圖3 所示,主要用于按鍵設(shè)置溫度范圍和控制加熱關(guān)閉加熱操作。以KEY1 按鍵為例,當(dāng)按鍵按下后按鍵內(nèi)部導(dǎo)通,P15 直接接地檢測(cè)為低電平,當(dāng)按鍵松開后按鍵內(nèi)部斷開,P15 懸空默認(rèn)為高電平,單片機(jī)程序通過判斷P15 的高低電平的狀態(tài)就可以知道按鍵是否有按下操作[3]。同理KEY2 和KEY3檢測(cè)也是一樣的原理,只是接到單片機(jī)I/O 不同。在本設(shè)計(jì)中,3 個(gè)按鍵分別為設(shè)置、加操作和減操作功能。
圖3 按鍵檢測(cè)電路
繼電器控制電路如圖4 所示,其用于控制加熱器的開關(guān)。由于繼電器吸合消耗的電流比較大,而單片機(jī)I/O端口啟動(dòng)能力有限,所以采用三極管啟動(dòng)的方式[4]。當(dāng)P54 輸出低電平時(shí)三極管導(dǎo)通繼電器吸合后加熱器得電后加熱,同時(shí)LED 指示燈被點(diǎn)亮,為防止LED 燈電流過大而燒壞,還需要串聯(lián)一個(gè)電阻進(jìn)行限流。當(dāng)P54輸出高電平時(shí)三極管截止,繼電器斷路LED2 熄滅,飛輪二極管4148 起到保護(hù)三極管的作用[5]。
圖4 繼電器控制
主程序包括整個(gè)系統(tǒng)及各子模塊初始化、DS18B20 溫度讀取、OLED 液晶顯示及語音調(diào)控加熱等。主程序流程圖如圖5 所示。
圖5 語音控制加熱水杯主程序流程圖
語音識(shí)別程序是能夠根據(jù)人不同的語言識(shí)別詞匯來執(zhí)行不同的操作,主要是以天問語音識(shí)別模塊將語音翻譯成串口信息傳送給單片機(jī)串口1,程序流程如圖6 所示。首先判斷語音是否被喚醒,如果說“水杯水杯”,其回答“我在”,說明語音識(shí)別喚醒成功,然后說語音識(shí)別控制詞匯,語音識(shí)別程序就會(huì)將詞匯翻譯成串口信號(hào)輸出送給單片機(jī)的串口1;單片機(jī)串口1 接收到數(shù)據(jù)后,保存到串行數(shù)據(jù)緩沖器中,并分析串口指令數(shù)據(jù),做出執(zhí)行相應(yīng)的動(dòng)作。如果使用者說“打開加熱”,語音識(shí)別會(huì)自動(dòng)反饋語音“好的,已為打開加熱”,并發(fā)送“03”數(shù)據(jù);如果說“溫度上限加一”,語音識(shí)別會(huì)反饋語音“好的,已為設(shè)置溫度上限加一”,并發(fā)送“05”數(shù)據(jù)。其他的語音識(shí)別詞以此類推。單片機(jī)串口1 根據(jù)指令的不同使執(zhí)行的功能產(chǎn)生差別。
圖6 語音識(shí)別流程圖
系統(tǒng)調(diào)試主要包括了電源輸出、單片機(jī)最小系統(tǒng)、OLED 屏顯示、溫度采集、按鍵輸入、語音識(shí)別、繼電器驅(qū)動(dòng)和LED燈指示。具體可以根據(jù)表1調(diào)試內(nèi)容表進(jìn)行調(diào)試。
表1 語音控制加熱水杯系統(tǒng)調(diào)試過程
自動(dòng)模式下加熱或關(guān)閉受溫度支配。自動(dòng)模式下的操作圖如圖7 所示。圖7 中,檢測(cè)電池電壓是12.2 V,設(shè)置溫度上限28 ℃,下限26 ℃。由圖7(a)可知,當(dāng)溫度高于23.3 ℃、低于26 ℃,繼電器的常開觸點(diǎn)吸合,開啟加熱器進(jìn)行加熱,同時(shí)綠色LED 亮起,這時(shí)溫度慢慢往上升;當(dāng)溫度高于28 ℃后控制繼電器斷開,讓加熱器斷電,同時(shí)紅色LED 亮起,如圖7(b)溫度已經(jīng)達(dá)到31.3 ℃。
圖7 溫控水杯自動(dòng)模式運(yùn)行圖
手動(dòng)模式下通過按鍵或者語音識(shí)別的方式進(jìn)行人工控制加熱的打開和關(guān)閉,手動(dòng)模式運(yùn)行圖如圖8 所示。手動(dòng)加熱超過溫度上限也會(huì)自動(dòng)關(guān)閉加熱,如圖8(a)所示。手動(dòng)打開加熱如圖8(b)所示。在加熱的過程中也可以隨時(shí)通過按鍵或者語音關(guān)閉加熱。
圖8 溫控水杯手動(dòng)模式運(yùn)行圖
本設(shè)計(jì)通過增強(qiáng)型51 單片機(jī),使用DS18B20 溫度傳感器來收集溫度數(shù)據(jù),利用按鍵和天問語音識(shí)別模塊設(shè)定溫度上下限參數(shù)及控制工作模式。當(dāng)在自動(dòng)模式下采集的溫度低于預(yù)定值,單片機(jī)就會(huì)處理信號(hào)使繼電器吸合,加熱器開始持續(xù)加熱直到溫度達(dá)到上限值,此時(shí)就會(huì)控制繼電器斷路,加熱裝置失去動(dòng)力,加熱停止。當(dāng)在手動(dòng)模式下,可以通過按鍵或者語音識(shí)別模塊人為控制加熱,當(dāng)加熱到超過溫度上限后也會(huì)強(qiáng)制斷開加熱,最終實(shí)現(xiàn)語音和自動(dòng)控制加熱的水杯,這對(duì)于市場(chǎng)上的傳統(tǒng)水杯來說是一個(gè)重大突破。