鄺愛(ài)華
(鄭州市電子信息工程學(xué)校 現(xiàn)代制造部, 鄭州 450007)
隨著微電子技術(shù),計(jì)算機(jī)技術(shù),以及網(wǎng)絡(luò)技術(shù)的快速發(fā)展,弱電控制技術(shù)發(fā)展越來(lái)越快,弱電控制技術(shù)具體實(shí)現(xiàn)在日常生活中的家居服務(wù)上使得智能家居獲得極大的發(fā)展。特別是伴隨著人們生活水平的提高,對(duì)家居的要求也越來(lái)越高,簡(jiǎn)單更具人性化的操作,方便的統(tǒng)一平臺(tái)的智能家居系統(tǒng)越來(lái)越受到人們的歡迎。
智能家居作為以住宅為平臺(tái)的高效的住宅設(shè)施與家庭日程事務(wù)管理系統(tǒng)自提出及相繼實(shí)現(xiàn)以來(lái)受到了人們熱切的歡迎。自1984年美國(guó)聯(lián)合科技公司應(yīng)用首棟智能型建筑揭開(kāi)智能家居派的序幕之后,全世界爭(zhēng)相建造智能家居。在國(guó)內(nèi)智能家居是一個(gè)新生產(chǎn)業(yè),處于一個(gè)導(dǎo)入期和成長(zhǎng)期的臨界點(diǎn)。隨著智能家居市場(chǎng)的推廣以及普及,智能家居市場(chǎng)的潛力與前景必然是十分巨大的。智能家居的最初發(fā)展主要是由燈光遙控控制,電器遠(yuǎn)程控制和電動(dòng)窗簾的控制為主。隨著技術(shù)的進(jìn)步,現(xiàn)在的智能控制功能越來(lái)越多,控制對(duì)象不斷擴(kuò)展,甚至延伸到所有傳統(tǒng)的弱電行業(yè),現(xiàn)在的家居系統(tǒng)對(duì)于安全方面的兼顧也越來(lái)越全面一個(gè)系統(tǒng)可能嵌入像煤氣、火災(zāi),門禁等方面的檢測(cè)報(bào)警。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展以及家庭網(wǎng)絡(luò)的完善,手持設(shè)備越來(lái)越方便,家居的操作控制系統(tǒng)與手持設(shè)備的結(jié)合是必然趨勢(shì),一個(gè)主平臺(tái)可以由多個(gè)家庭成員的子平臺(tái)操作,這些極大地方便了人們的使用。
該智能家居系統(tǒng)主要實(shí)現(xiàn)智能電動(dòng)窗簾,室溫實(shí)時(shí)監(jiān)測(cè),家用電器開(kāi)關(guān),萬(wàn)年歷,鬧鐘音樂(lè)播放,無(wú)線遠(yuǎn)程控制,繼電器控制等功能,整個(gè)系統(tǒng)在一塊MCU的協(xié)調(diào)與控制下運(yùn)行,整體的設(shè)計(jì)功能框圖如圖1所示。
圖1中基本確定了整體設(shè)計(jì)需要的各個(gè)功能模塊,接下來(lái)的工作就是相關(guān)模塊的具體選型與設(shè)計(jì),考慮到對(duì)于功能的要求,硬件的選型非常重要。
在系統(tǒng)實(shí)現(xiàn)的時(shí)候,硬件選擇也是非常重要的,通過(guò)上邊的系統(tǒng)結(jié)構(gòu)框圖,接著就是選擇功能模塊的芯片來(lái)搭建電路實(shí)現(xiàn)對(duì)應(yīng)的功能。以下著重分析相關(guān)模塊的芯片選型問(wèn)題。

圖1 整體設(shè)計(jì)框圖
2.2.1 MCU的選擇
本設(shè)計(jì)對(duì)處理器的性能和速度的要求較高,且觸摸屏的操作提示音的提取等要用到的內(nèi)存也較大,還要求處理器有豐富的定時(shí)器,較多的IO口,復(fù)雜的時(shí)鐘系統(tǒng)等。
考慮到整個(gè)系統(tǒng)的功能的不斷擴(kuò)展,要求主芯片具有更為完善的各種功能,而且對(duì)于控制類的芯片對(duì)于時(shí)效的要求非常嚴(yán)格,為了儲(chǔ)存參數(shù)信息等也需要有較快速度的數(shù)據(jù)讀寫口。此處確定采用SPI接口,為了減少成本及使用方便,芯片最好自帶FLASH以及RAM,考慮整體的性能以及高分辨率顯示屏的驅(qū)動(dòng),決定采用32位處理器。
可供選擇的32位處理器有MSP,STM32,ATMEL等。通過(guò)以上幾點(diǎn)的需求的分析,本設(shè)計(jì)系統(tǒng)選擇STM32作為主控芯片,采用的是STM32系列的STM32F4ZGT6芯片,該芯片是ST(意法半導(dǎo)體)公司開(kāi)發(fā)的基于Cortex-M4微內(nèi)核的高性能微控制器,該系列CPU工作允許頻率可達(dá)到168 MHz,帶有1M的程序FLASH,192 Kb的片內(nèi)RAM,12個(gè)16位的定時(shí)器,2個(gè)32位定時(shí)器,3個(gè)12位A/D轉(zhuǎn)換,2個(gè)D/A轉(zhuǎn)換,含有I2S,UART等一些列通訊接口,工作電壓在1.8-3.6 V之間。這些外設(shè)及性能完全滿足本設(shè)計(jì)要求及日后功能擴(kuò)展需要所以最終選定STM32F4ZGT6。
2.2.2 步進(jìn)電機(jī)控制芯片選擇
步進(jìn)電機(jī)的動(dòng)作主要是靠驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)的,所以步進(jìn)電機(jī)也叫作脈沖電機(jī),步進(jìn)電機(jī)常用的控制芯片有THB6128,A3983,A3977,三洋的PMM8713,三菱的M54640等。
根據(jù)本系統(tǒng)的要求窗簾必須要求步進(jìn)電機(jī)具有一定的功率要求,本系統(tǒng)采用的是12 V供電所以此處采用的A3983芯片。
2.2.3 溫度傳感器選擇
該系統(tǒng)具有室溫檢測(cè)顯示功能,可以實(shí)時(shí)為室溫的調(diào)節(jié)提供數(shù)據(jù)源,且系統(tǒng)具有溫度過(guò)高火情報(bào)警設(shè)置。經(jīng)過(guò)比較分析,美信公司的單總線數(shù)字溫度傳感器DS18B20比較合適,該數(shù)字溫度傳感器將檢測(cè)的溫度信息轉(zhuǎn)化為相應(yīng)的數(shù)字量,獨(dú)特的單總線接口,只需要一個(gè)IO口線就可以對(duì)該器件進(jìn)行相應(yīng)的讀寫了,寫入命令和讀取溫度操作簡(jiǎn)單,并且無(wú)需外部元件可用數(shù)據(jù)總線供電和備用電源,電壓范圍為3.0 V至5.5 V,外圍電路簡(jiǎn)單。該芯片的測(cè)量溫度范圍為-55 ℃至+125 ℃,且自帶溫度校準(zhǔn),無(wú)需外部進(jìn)行處理,操作簡(jiǎn)單。在-10 ℃至+85 ℃范圍內(nèi)精度為±0.5 ℃可以滿足本系統(tǒng)的要求,且最高溫度達(dá)到+125 ℃,也完全滿足報(bào)警所需要的溫度要求。
2.2.4 功率放大芯片選擇
本系統(tǒng)主要用到放大芯片來(lái)放大從IO口輸出的音頻信號(hào),且用來(lái)驅(qū)動(dòng)喇叭。
功率的放大根據(jù)喇叭的功率來(lái)選擇,該系統(tǒng)采用的是3 W的喇叭,功放的芯片有TDA2822,HT6872,PAM8403等,該系統(tǒng)采用的是PAM8403,該芯片電路是D類立體聲音頻功率放大器,該放大器采用D類結(jié)構(gòu),通過(guò)PAM公司獨(dú)有的低EMI(電磁輻射)調(diào)制方式可以省去低通濾波器所需電路從而達(dá)到經(jīng)濟(jì)實(shí)用的目的。
經(jīng)過(guò)前面的分析介紹,整個(gè)硬件系統(tǒng)由MCU(STM32F407)作為控制中心,各個(gè)模塊電路設(shè)計(jì)在一下幾節(jié)進(jìn)行詳細(xì)的介紹,整個(gè)系統(tǒng)框圖如圖2所示。

圖2 硬件系統(tǒng)框圖
通過(guò)方框圖確定了模塊與MCU之間連接及關(guān)系,從框圖2可以看出,整個(gè)系統(tǒng)是在MCU核心STM32F407的控制下,通過(guò)協(xié)調(diào)控制各個(gè)模塊的工作來(lái)使各個(gè)模塊正常工作并達(dá)到整個(gè)系統(tǒng)預(yù)定的功能。
2.4.1 MCU最小系統(tǒng)電路設(shè)計(jì)
MCU最小系統(tǒng)需要晶振電路復(fù)位電路等,為了斷電時(shí)間不跑,還需要電池供電,需要一個(gè)時(shí)間時(shí)鐘使用的32.768 K的晶振。另外對(duì)芯片的3.3 V供電也需要進(jìn)行相應(yīng)的濾波,這樣才能提供更加穩(wěn)定的電平,最小系統(tǒng)是整個(gè)系統(tǒng)的核心,是系統(tǒng)運(yùn)行的基礎(chǔ)。
2.4.2 MCU和DS18B20模塊電路設(shè)計(jì)
由于溫度傳感器DS18B20是單總線結(jié)構(gòu)所以其硬件電路比較簡(jiǎn)單,通過(guò)一個(gè)簡(jiǎn)單的RC濾波電路給其供電,通過(guò)一個(gè)MCU的普通IO口PC4來(lái)實(shí)現(xiàn)MCU和DS18B20的連接。整個(gè)模塊電路如圖3所示。

圖3 DS18B20模塊電路
2.4.3 步進(jìn)電機(jī)驅(qū)動(dòng)模塊電路設(shè)計(jì)
步進(jìn)電機(jī)控制采用的芯片是A3983步進(jìn)電機(jī)控制,該芯片與MCU通信的數(shù)據(jù)端口由步距控制MS1和MS2,復(fù)位RESET,方向控制DIR,位置檢測(cè),脈沖提供STEP,整體的電路如圖4所示。

如圖4電路連接四個(gè)OUT口分別控制了電機(jī)的正轉(zhuǎn)反轉(zhuǎn),不同的組合有不同的方向步距,該芯片驅(qū)動(dòng)12 V步進(jìn)電機(jī)所以VBB直接連接電源系統(tǒng)的12 V,其它幾個(gè)控制引腳以及原點(diǎn)檢測(cè)與MCU的引腳對(duì)應(yīng)如下表1所示。

表1 A3983各信號(hào)線與STM32連接關(guān)系
上表中MS1和MS2控制步距,STEP提供脈沖,ENABLE使能芯片低電平有效,DIR控制電機(jī)方向,原點(diǎn)檢測(cè)在系統(tǒng)中的作用是檢測(cè)系統(tǒng)初始狀態(tài)下窗簾的位置,以初始化系統(tǒng)參數(shù)。
2.4.4 SPI-FLASH存儲(chǔ)電路設(shè)計(jì)
W25Q128采用的是SPI接口進(jìn)行讀取和存儲(chǔ)數(shù)據(jù)的,所以在系統(tǒng)中存儲(chǔ)器的接口接在MCU的SPI1接口,這個(gè)SPI接口為MCU自帶的硬件接口。整個(gè)模塊電路如圖5所示。

圖5 W25Q128電路
2.4.5 觸摸屏控制電路和TFTLCD驅(qū)動(dòng)電路設(shè)計(jì)
TFTLCD驅(qū)動(dòng)電路如圖6所示。
該部分電路設(shè)計(jì)簡(jiǎn)單,STM32的IO口可以直接與觸摸屏相連接所有引腳全部直接與MCU連接,供電的5 V與

圖6 觸摸屏控制電路
3.3 V電源過(guò)一個(gè)104的電容進(jìn)行濾波。
2.4.6 WIFI接口電路
WIFI模塊與MCU之間的通信采用的是串口通信,MCUSTM32F4集成的有多個(gè)硬件串口接口,在此使用串口4(UART4)作為與WIFI模塊通信的串口,WIFI模塊的14個(gè)引腳中第3、4引腳是串口通信接口,由于使用的為串口通信,所以除電源外的引腳可以空置不接,直接將3,4引腳接MCU的串口4接口PC10和PC11,電路如圖7所示。

圖7 WIFI接口電路
2.4.8 功放模塊電路
功放模塊為外置模塊由MCU的PG15提供模塊的單聲道信號(hào)源,在此不再贅述,功放模塊的電路,如圖8所示。

圖8 功放模塊電路
功放在接電時(shí)必須保證是有負(fù)載,否則的話可能會(huì)燒芯片。
從整個(gè)系統(tǒng)的設(shè)計(jì)功能來(lái)說(shuō),根據(jù)其是否與外設(shè)直接相關(guān),可以分為與外圍硬件電路相關(guān)的驅(qū)動(dòng)子程序和與外圍無(wú)關(guān)的MCU內(nèi)嵌外設(shè)的應(yīng)用軟件,子系統(tǒng)軟件又可以細(xì)分為許多功能模塊,系統(tǒng)的軟件框圖如圖9所示。

圖9 系統(tǒng)軟件設(shè)計(jì)框圖
對(duì)于底層硬件的驅(qū)動(dòng)軟件包括如下程序模塊:LCD驅(qū)動(dòng)模塊、觸摸屏驅(qū)動(dòng)模塊,F(xiàn)lash_SPI驅(qū)動(dòng)模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊,WIFI驅(qū)動(dòng)模塊,溫度傳感器驅(qū)動(dòng)模塊,繼電器驅(qū)動(dòng)、音樂(lè)產(chǎn)生等模塊。
溫度傳感器采用單總線數(shù)字溫度傳感器DS18B20,命令讀取DS18B20的溫度讀取操作過(guò)程如圖10所示。

圖10 DS18B20操作流程
每次開(kāi)啟轉(zhuǎn)換之前都要對(duì)傳感器進(jìn)行復(fù)位檢查操作,讀取寄存器的時(shí)候獲得的數(shù)據(jù)是二進(jìn)制數(shù)據(jù)先發(fā)整個(gè)數(shù)據(jù)的高八位后發(fā)低八位,需要對(duì)數(shù)據(jù)進(jìn)行一定的處理。
通過(guò)以上操作獲取DS18B20的溫度值,將之進(jìn)行相應(yīng)的轉(zhuǎn)換后進(jìn)行處理顯示,在進(jìn)行數(shù)據(jù)轉(zhuǎn)換的時(shí)候如果采集到的溫度是零下,需要對(duì)數(shù)據(jù)進(jìn)行取補(bǔ)碼操作。
萬(wàn)年歷是使用STM32F407內(nèi)部的時(shí)鐘系統(tǒng)RTC時(shí)鐘來(lái)完成的,參考STM32的芯片手冊(cè),得到RTC實(shí)時(shí)時(shí)鐘的初始化過(guò)程如圖11所示。

圖11 RTC配置流程
RTC時(shí)鐘在完成配置后,就會(huì)每隔固定的時(shí)間,對(duì)秒寄存器進(jìn)行加1操作。此操作為MCU自動(dòng)操作,全部硬件執(zhí)行。通過(guò)對(duì)RTC時(shí)鐘的時(shí)間數(shù)據(jù)進(jìn)行顯示,實(shí)現(xiàn)萬(wàn)年歷功能,RTC時(shí)鐘的固定時(shí)間由分頻系數(shù)確定,理論上根據(jù)外部低頻晶振的頻率,只要在分頻系數(shù)內(nèi)寫入合適的數(shù)據(jù)就可以得到精確的1秒了,但是由于晶振的誤差,所以需要進(jìn)行相應(yīng)調(diào)整以達(dá)到比較準(zhǔn)確的時(shí)鐘。
硬件調(diào)試的時(shí)候主要有下面幾點(diǎn)問(wèn)題,而且也是不好處理的點(diǎn)。
問(wèn)題1,SPI-Flash寫入不成功或者亂碼問(wèn)題:在使用前系統(tǒng)的啟動(dòng)過(guò)程中一定要初始化而且相鄰的地線接在一起時(shí)不要直接在引腳上進(jìn)行連線一定要從引腳引出一段后可以走一根總線,如果直接在引腳上進(jìn)行連接PCB制作好之后將會(huì)增加焊接難度而且容易造成數(shù)據(jù)不穩(wěn)定。
問(wèn)題2,觸摸屏中斷問(wèn)題:這個(gè)問(wèn)題是在不斷的調(diào)試中發(fā)現(xiàn)且出現(xiàn)的不固定,調(diào)試的時(shí)候發(fā)現(xiàn)觸摸屏總是出現(xiàn)無(wú)緣無(wú)故的中斷,致使MCU一直在處理觸摸屏而無(wú)暇處理其它模塊,起初認(rèn)為是程序中斷優(yōu)先級(jí)配置問(wèn)題,在配置不同的優(yōu)先級(jí)無(wú)果且討教后,開(kāi)始懷疑硬件問(wèn)題。通過(guò)調(diào)試中斷程序并用示波器觀察中斷信號(hào)線上的信號(hào),發(fā)現(xiàn)一旦發(fā)生一次觸摸屏中斷,就會(huì)在不停的產(chǎn)生時(shí)間不定的中斷。通過(guò)查看ADS7846的芯片手冊(cè)以及參閱相關(guān)文章后,發(fā)現(xiàn)中斷線上的速度太快可能是參考電平不穩(wěn)定,于是結(jié)合系統(tǒng)的需要,在中端輸入線上加入濾波電路。
問(wèn)題3,3.3 V芯片濾波問(wèn)題:之前3.3 V濾波采用了單電容及采用一個(gè)104的電容,后來(lái)發(fā)現(xiàn)這樣ASM1117容易燒毀,且系統(tǒng)運(yùn)行不穩(wěn)定,后來(lái)增加一個(gè)大電容和小電容一起工作解決這個(gè)問(wèn)題。
問(wèn)題1,MCU直接產(chǎn)生音頻信號(hào)問(wèn)題和音頻打斷問(wèn)題:由于硬件上的設(shè)計(jì)缺陷,功放模塊并未接在芯片內(nèi)部的D/A轉(zhuǎn)換上和硬件的PWM引腳上,一度以為這塊功能要廢掉,后來(lái)經(jīng)過(guò)請(qǐng)教查資料和鉆研,采用普通的IO口模擬PWM產(chǎn)生高中低三組各七個(gè)的不同頻率信號(hào)根據(jù)音樂(lè)樂(lè)譜進(jìn)行編寫終于實(shí)現(xiàn)了輕音樂(lè)的播放,但是在鬧鐘提示的過(guò)程中卻又產(chǎn)生了不能被打斷的問(wèn)題,配置不同的中斷優(yōu)先級(jí)后依然不行,經(jīng)過(guò)多天的排查,發(fā)現(xiàn)為了實(shí)現(xiàn)WIFI串口接收數(shù)據(jù)的完整性而啟用的系統(tǒng)滴答定時(shí)器的優(yōu)先級(jí)沒(méi)有定時(shí)器優(yōu)先級(jí)高二產(chǎn)生無(wú)法被打斷的情況,經(jīng)過(guò)多次試驗(yàn)終于實(shí)現(xiàn)了這一塊的功能。
問(wèn)題2,WIFI搜索信號(hào)死機(jī)問(wèn)題:這個(gè)問(wèn)題在調(diào)試中一度經(jīng)常出現(xiàn),而且原因不明,主要有兩種情況就是WIFI熱點(diǎn)太多的時(shí)候死機(jī)或者沒(méi)有WIFI信號(hào)死機(jī),經(jīng)過(guò)反復(fù)的調(diào)試和論證,最終發(fā)現(xiàn),開(kāi)機(jī)后WIFI模塊會(huì)返回一系列版本信息,之后返回?zé)狳c(diǎn)信息串口接收定義數(shù)組不夠大。對(duì)于搜不到信號(hào)死機(jī)問(wèn)題,最終經(jīng)過(guò)查資料發(fā)現(xiàn)是分隔字符串函數(shù)strtok使用要注意最后的結(jié)尾符一定要有,如果為空字符串就不要再使用本函數(shù)進(jìn)行字符串分隔。
問(wèn)題3,在驅(qū)動(dòng)串口時(shí)首次字符串發(fā)送不完整:這個(gè)問(wèn)題在開(kāi)機(jī)第一次使用串口時(shí)出現(xiàn),要發(fā)送的串首字符無(wú)故丟失,剛開(kāi)始一直在查找程序問(wèn)題,發(fā)現(xiàn)寫的并沒(méi)有問(wèn)題,然后查找硬件,沒(méi)問(wèn)題只有上電第一次出現(xiàn)數(shù)據(jù)丟失,后來(lái)發(fā)現(xiàn)為MCU的小缺陷,經(jīng)過(guò)修改開(kāi)機(jī)后首先發(fā)一個(gè)標(biāo)志位,從而解決這個(gè)問(wèn)題。
本次設(shè)計(jì)的智能家居系統(tǒng)初步達(dá)到了預(yù)期的效果,起到了對(duì)智能家居進(jìn)行試探性研究的目的,實(shí)現(xiàn)了比如智能窗簾,遠(yuǎn)程電器開(kāi)關(guān),萬(wàn)年歷鬧鐘,室溫檢測(cè)等功能。未來(lái)智能家居一定會(huì)隨著技術(shù)的不斷進(jìn)步與發(fā)展,進(jìn)入千家萬(wàn)戶,智能的家居產(chǎn)品一定會(huì)是家居服務(wù)市場(chǎng)的主流。