一、項目設計背景及概述
物聯網是新一代信息技術的重要組成部分。顧名思義,物聯網就是物物相連的互聯網。這有兩層意思:第一,物聯網的核心和基礎仍然是互聯網,是在互聯網基礎上的延伸和擴展的網絡;第二,其用戶端延伸和擴展到了任何物品與物品之間,進行信息交換和通信。物聯網就是“物物相連的互聯網”,其中智能家居是物聯網的一部分。
隨著人們生活水平的不斷提高,人們對生活質量的要求不斷提高,方便快捷是人們永恒追求的目標。在家居娛樂和電器控制方面,智能家居有突出表現,包括背景音樂系統、數字網絡客廳、家居綜合布線、燈光控制和電器控制等功能在內的系統,使人們的生活從各個方面變得更加安全、舒適、簡單。
目前市場上,智能家居的主要接受人群仍然是一部分高端人群。業內人士認為,阻撓智能家居發展腳步的主要是價格和消費理念兩方面的原因。智能家居還屬于高檔消費,一套系統要幾萬元不等。盡管接受度和認同度與以前相比已經大有提高,但仍主要局限于買別墅的高端人群和熱愛生活、享受生活的年輕白領一族。另外,目前許多人對智能家居系統功能的認識不足,許多設計師 也缺乏相應的專業知識去向業主推廣,導致一部分實際上有需求的業主對智能家居還一無所知。但是近年來,智能家居的普及度正在慢慢提高,隨著國外同行業產品不斷涌入我國,以及與國內智能家居行業的競爭加劇,客觀上逐漸加大了宣傳力度,并產生互補。今后我國的智能家居應走品質與服務并重的路線,未來智能家居發 展前景廣闊。
2013年前三季度,我國網民數量達6.08億,互聯網普及率45.4%,基于以上分析,以及通用性方面的考慮設計了基于深聯華單片機的無線智能插座。安裝了ADSL寬帶的用戶簡單設置路由器以后就可以將插座接入互聯網,通過Android客戶端就可以實現遠程控制。該插座有四個單獨插座,用戶可以根據需求將需要控制的電器插到插座上。每個單獨的插座都可以單獨設定開啟和關閉,也可以設定定時開啟或者定時關閉,同時無線智能插座還有過流保護的功能,通過Android客戶端設定插座最大額定功率(四個單獨插座的總功率),如果實際額定功率大于設定額定功率時四個單獨插座全部關閉,同時關閉定時功能,這樣就能防止過流燒毀線路,避免更大的損失。
二、項目設計原理
1、原理概述
基于深聯華單片機的無線智能插座由電源單元、功率輸出單元、控制單元、電流采集單元、存儲單元、實時時鐘單元、WIFI模塊以及手機客戶端組成。
電源單元包括兩部分,一部分是將220V交流輸入轉換成12V直流輸出,為整個系統提供電源;另一部分是將12V直流電源轉換成正負5V,為控制單元,電流采集單元,存儲單元,實時時鐘單元,WIFI模塊提供電源。功率輸出單元控制插座的開啟和關閉,為要控制的電器提供220V電源。控制單元是整個系統的核心,為各個單元提供控制信號。電流采集單元用來采集插座的電流,然后將信號輸入給控制單元,用于電流檢測,防止過流。存儲單元用來保存四個單獨插座的狀態,系統下次上電的時候就會從存儲單元讀取數據。實時時鐘單元為定時功能提供時鐘信號,同時這個單元有備用電池保證系統掉電后時鐘單元正常計時。WIFI模塊負責插座和無線路由器的通信,使用之前將模塊的端口號在無線路由上做端口映射,這樣就能實現遠程控制。
手機客戶端是基于Android系統的,可以向智能插座發送指令,智能插座接收到指令后執行相應的操作,同時向手機客戶端返回數據。
2、硬件設計原理
電源單元設計原理:
電源單元由兩部分構成,其中220V交流電源轉12V直流電源模塊使用的是成品的開關電源模塊,可以提供最大1A的電流,滿足系統需求,并且開關電源體積小效率高。將這個模塊集成在系統上另一個原因是方便用戶使用,直接通上220V電源就可以使用。
電源單元的另一部分是將12V直流轉換為正負5V。這部分使用兩片MC34063電源芯片,通過設計合理的外圍電路,可實現分別輸出+5V電壓和-5V電壓。其中電流采集單元需要雙極性電源,所以其中一路MC43063產生-5V電壓。MC34063電源芯片可以達到較高的效率,價格低廉,性能可以滿足系統設計要求,故而選該芯片作為電源芯片。
功率輸出單元設計原理:
功率輸出單元主要包括繼電器,三極管等。繼電器用來控制對應插座的電源通斷,三極管則用來控制繼電器的通斷,單片機通過控制三極管進而實現對插座的控制。其中繼電器型號為HJR-3FF,240V時可以通過7A電流,該繼電器需要12V電源供電,這樣可以起到與控制單元電氣隔離的作用。三極管采用8050,最大可以提供1A的驅動電流,完全可以滿足設計要。
控制單元設計原理:
該系統的主控芯片選用深聯華SC89F5162單片機,SC89F5162是一種高速高效率8051兼容單片機。在同樣的震蕩頻率之下,較之傳統的8051單片機它具有更快的速度,性能更優越。
該系統的設計使用了單片機的定時器0、SPI、ADC、EUART1、IO資源。定時器是為串口接收數據提供定時時間,用來判斷一幀數據是否接收完畢;SPI控制93C46,保存和讀出插座的狀態數據;ADC用來采集電流采集單元的輸出電壓,為檢測是否過流提供數據;EUART1是和WIFI模塊進行通信的,接收來自手機客戶端的數據,并向客戶端返回數據。IO用來控制時鐘單元和功率單元等。
控制單元是系統的核心,也是知識產權保護的核心,保護好單片機不被破解是重要方面,深聯華單片機采用了多種防破解技術,高達32位的密碼生成器,白噪聲密碼沒有規律可循等等這些特點決定了代碼的安全性很高,這就能很好的保護開發者的利益。
電流采集單元設計原理:
對交流電流進行采集需要用到交流互感器,該系統采用DL-CT03C1.0精密電流互感器,變比為1:1000,最大可測電流為10A,輸出端最大可接電阻為50歐姆,這里選擇47歐姆電阻。由于電阻上電壓很低,所以不可以直接對電阻上的交流電壓進行整流,因此在整流之前使用LM358對交流電壓信號進行7.8倍放大。運放所放大的信號為交流信號,需要一個雙極性電源進行供電,正好使用電源模塊提供的正負5V電源。將放大的電壓信號通過橋整流電路進行整流,然后使用電容濾波,再通過一個低通濾波電路將信號送入單片機AD引腳。
存儲單元設計原理:
存儲芯片選用93C46芯片,該芯片使用SPI通信方式,具有128個字節的容量。系統需要保存的數據量小,該芯片可以滿足需求。
實時時鐘單元設計原理:
實時時鐘單元采用DS1302芯片,該芯片在掉電時可以使用備用電源,數據通信使用串行方式,占用IO較少,芯片價格低廉計時精確,完全能滿足系統設計需求。
WIFI模塊單元:
WIFI模塊使用的是成品模塊,通過串口與單片機通信。該模塊可通過電腦設置參數,使用方便。
3、軟件設計原理
在單片機軟件設計時采用模塊化編程的方法以及分層設計的思想。首先設計使用到的單片機資源的驅動程序,然后設計使用到的芯片的驅動程序,最后設計應用層的程序。
下面介紹各個.c文件的主要內容:
Initial.c文件主要是單片機系統時鐘、定時0、串口1的初始化函數,以及串口發送數據的函數。
SPI.c文件包括單片機SPI資源的初始化,以及93C46芯片的驅動程序。
DS1302.c文件包括DS1302芯片的驅動程序,主要是對芯片的初始化,讀寫函數等。
ADC.c文件主要包括對單片機ADC資源的初始化函數,以及對采集到的數據進行處理的函數,文件使用的是官網提供的,但是有些地方有問題,進修改后可以正常使用。
OutletStatuePro.c文件主要是對插孔的結構體數據進行處理的函數,包括設置插孔的狀態,得到插孔的狀態,設置插到打開或者關閉的定時時間等等。
Main.c文件是項目的主文件,這里首先是調用各個模塊的初始化函數,以及調用相應的驅動函數完成對應的功能。
下面具體介紹程序執行流程:
程序開始運行后首先調用各個模塊的初始化函數,完成對單片機以及其他芯片的初始化工作。下一步就是讀取93C46中數據,然后就是就如主循環。在主循環中首先判斷串口是否正在接收數據,如果正在接收數據則不執行解析,如果接收完畢則開始解析接收到的數據。根據不同的指令執行相應的操作,具體操作可看代碼注釋。解析工作完成后讀取一次DS1302的數據,然后開始根據各個插孔的當前狀態執行相應的操作,在這個處理過程中使用了狀態機的概念,根據插孔的狀態執行相應的操作,并且判斷是否有插座處于開啟狀態,如果有的話就啟動AD,判斷當前功率是否超過設定功率,如果超過了設定功率則關閉所有插孔。
4、通信數據幀設計原理
手機客戶端與智能插座的通信是通過互聯網實現的,在這個系統的設計中我們采用UDP協議,在這個基礎上設計了簡單的通信協議,下面就具體說明一下數據格式的定義。
幀頭指令數據
表2.41 幀結構
表2.41表示的是基本的幀結構,一幀數據由三部分構成,幀頭為0xFF占用一個字節。指令占用一個字節,用來表示該幀數據的作用。數據部分表示傳輸的數據,占用的字節數不固定。
表2.42 指令和數據說明
表2.42詳細說明了各個指令的作用,以及指令后要跟的數據的作用,通過簡單的協議可以實現智能插座功能。指令和數據都是以一個字節為單位,方便程序處理。
5、手機客戶端與智能插座的通信過程
這里具體說明一下手機客戶端與智能插座的通信過程,并非講解手機客戶端如何使用,手機客戶端的使用說明可以查看手機客戶端說明書。
手機客戶端可以通過域名和IP地址兩種方式與插座通信,在這里使用的是花生殼的域名解析服務。使用域名的好處是即使ADSL撥號的IP地址改變了也能與插座通信(具體原理不做解釋),但是網絡狀況不好的情況下域名解析服務會有一些延時。使用IP地址的好處是速度快一些,不需要域名解析服務,但是一旦ADSL重新撥號就不知道新的IP地址是什么。所以可以根據實際情況作出選擇。
手機客戶端打開以后做一些基本設置,然后客戶端就是周期性的向智能插座發送查詢插座狀態的指令,保持客戶端與智能插座狀態保持同步。如果不能正常通信,客戶端的插座列表是無法列出的。用戶可以根據需求設定各個插孔的狀態,設定完成后就可以關閉客戶端。如果想知道插座的狀態可以打開客戶端,刷新一下可以獲取插座狀態。客戶端與智能插座在同一個局域網內也實現通信,將客戶端與智能插座連接到同一個路由上,設置客戶端的IP地址為插座的IP地址即可,這樣客戶端與插座便可實通信。
三、項目設計框圖
1、硬件設計框圖
2、軟件設計框圖
四、測試結果
四個插座基本開關功能可以實現,關閉狀態下定時開啟的功能可以實現,開啟狀態下定時關閉功能可以實現,關閉后定時開始和定時關閉同時設定功能可以實現。實際功率大于額定功率后所有插座關閉,刪除定時器功能可以實現,也就是過流保護功能可以實現。
通過視頻可以查看具體功能實現。
五、軟硬件及客戶端待優化和改進方面
由于時間關系一些地方做的不夠完善,以下說明為下一步的改進方向:
硬件方面:原理圖上面設計了按鍵功能,通過按鍵可以打開和關閉,但是作品中并沒有加上這個功能,下一步將按鍵加上,這樣更方便使用。
將手工焊接的板子設計成PCB,向實際產品靠近。
將8050三極管換成8550三級,避免上電后關閉的插座會接通一下。
軟件方面:進一步優化代碼,實際中不用實時檢測各個插座的狀態,一秒鐘檢測三到四次即可,其他時間讓單片機進入低功耗狀態,降低功耗。
使用看門狗功能,保證系統的穩定性。
客戶端方面:客戶端上可以增加登陸驗證,登陸的時候必須輸入碼,保證安全。另一方面客戶端與插座之間也可以增加通信驗證,進一步提供安全性。
以上就是基于目前情況提出的改進措施。
由于比賽側重單片機的使用,所以這個文檔中沒有具體介紹手機客戶端的開發,只提供了手機客戶端app和使用說明書。手機客戶端是有夏勝飛同學完成,我主要做硬件方面的工作。在這個系統的開發過程中我們共同討論客遇到的問題,合作很默契,雖然作品有待改進,但是主要功能都已經上實現。
評論
查看更多