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

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

圖2 硬件系統框圖
通過方框圖確定了模塊與MCU之間連接及關系,從框圖2可以看出,整個系統是在MCU核心STM32F407的控制下,通過協調控制各個模塊的工作來使各個模塊正常工作并達到整個系統預定的功能。
2.4.1 MCU最小系統電路設計
MCU最小系統需要晶振電路復位電路等,為了斷電時間不跑,還需要電池供電,需要一個時間時鐘使用的32.768 K的晶振。另外對芯片的3.3 V供電也需要進行相應的濾波,這樣才能提供更加穩定的電平,最小系統是整個系統的核心,是系統運行的基礎。
2.4.2 MCU和DS18B20模塊電路設計
由于溫度傳感器DS18B20是單總線結構所以其硬件電路比較簡單,通過一個簡單的RC濾波電路給其供電,通過一個MCU的普通IO口PC4來實現MCU和DS18B20的連接。整個模塊電路如圖3所示。

圖3 DS18B20模塊電路
2.4.3 步進電機驅動模塊電路設計
步進電機控制采用的芯片是A3983步進電機控制,該芯片與MCU通信的數據端口由步距控制MS1和MS2,復位RESET,方向控制DIR,位置檢測,脈沖提供STEP,整體的電路如圖4所示。

如圖4電路連接四個OUT口分別控制了電機的正轉反轉,不同的組合有不同的方向步距,該芯片驅動12 V步進電機所以VBB直接連接電源系統的12 V,其它幾個控制引腳以及原點檢測與MCU的引腳對應如下表1所示。

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

圖5 W25Q128電路
2.4.5 觸摸屏控制電路和TFTLCD驅動電路設計
TFTLCD驅動電路如圖6所示。
該部分電路設計簡單,STM32的IO口可以直接與觸摸屏相連接所有引腳全部直接與MCU連接,供電的5 V與

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

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

圖8 功放模塊電路
功放在接電時必須保證是有負載,否則的話可能會燒芯片。
從整個系統的設計功能來說,根據其是否與外設直接相關,可以分為與外圍硬件電路相關的驅動子程序和與外圍無關的MCU內嵌外設的應用軟件,子系統軟件又可以細分為許多功能模塊,系統的軟件框圖如圖9所示。

圖9 系統軟件設計框圖
對于底層硬件的驅動軟件包括如下程序模塊:LCD驅動模塊、觸摸屏驅動模塊,Flash_SPI驅動模塊、步進電機驅動模塊,WIFI驅動模塊,溫度傳感器驅動模塊,繼電器驅動、音樂產生等模塊。
溫度傳感器采用單總線數字溫度傳感器DS18B20,命令讀取DS18B20的溫度讀取操作過程如圖10所示。

圖10 DS18B20操作流程
每次開啟轉換之前都要對傳感器進行復位檢查操作,讀取寄存器的時候獲得的數據是二進制數據先發整個數據的高八位后發低八位,需要對數據進行一定的處理。
通過以上操作獲取DS18B20的溫度值,將之進行相應的轉換后進行處理顯示,在進行數據轉換的時候如果采集到的溫度是零下,需要對數據進行取補碼操作。
萬年歷是使用STM32F407內部的時鐘系統RTC時鐘來完成的,參考STM32的芯片手冊,得到RTC實時時鐘的初始化過程如圖11所示。

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