《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于GPRS的嵌入式智能家居終端的設計與實現
基于GPRS的嵌入式智能家居終端的設計與實現
摘要: 利用GPRS技術,,結合嵌入式系統(tǒng)的ARM-Linux平臺,,設計實現了一種智能家居控制器。通過使用手機短信和互聯網等方式解決了用戶在異地對家庭智能系統(tǒng)的遠程查詢,,控制等問題,。同時采用RS485拓撲總線結構解決了家庭設備布線及控制問題。
Abstract:
Key words :

  1引言

  隨著網絡技術和通信技術的不斷發(fā)展,,人們希望即使在工作或外出時也能通過某種方式及時了解和控制家中的情況,,同時伴隨著數字化家庭的普及,,實現智能家居的遠程控制已經成為一種趨勢。家庭智能控制系統(tǒng)通過家庭總線技術,,把家庭中各種家用電器,、家庭保安裝置和各種計量設備連接到一起組成一個家庭內部網絡,由家庭智能控制器進行統(tǒng)一管理[1],。遠程控制就是通過某種通訊方式將智能家庭控制器與外界相連,,使人們能夠在本地或異地對家庭系統(tǒng)進行集中的監(jiān)視、控制,。本文中介紹的方案,,結合了GPRS(GeneralPacketRadioService)技術永遠在線,速度快,,接入范圍廣,,體積小,功耗低等優(yōu)點[2],,采用RS485工業(yè)總線,,設計實現了一種基于嵌入式系統(tǒng)的家庭智能控制器。用戶可以通過短信及互聯網等方式現遠程無線監(jiān)控,,在手機和互聯網相當普及的今天,,為用戶提供了更簡單、方便的選擇,。同時由于該控制器RS485接口的特殊設計,,外掛節(jié)點可以由原來的32個擴展到64個,解決了家用設備的布線組網以及控制等問題,。

  2系統(tǒng)設計

  從結構上看主要分為用戶,,控制器,和RS485總線的家用設備控制三個部分,。用戶通過手機短信或網絡方式向控制器的GPRS模塊發(fā)送命令,,而控制器也通過GPRS模塊向用戶反饋信息或發(fā)出報警通知。從而實現了用戶和控制器無線互聯,,實現遠程控制,。

  3硬件設計

  硬件部分的結構框圖如圖1所示,控制器是整個系統(tǒng)的核心部分,,經過串口擴展與GPRS模塊相連,;通過電平轉換芯片提供RS485總線接口與家用設備相連接;同時還提供LCD,,鍵盤等交互接口,。控制器的主控芯片采用三星S3C44B0,,使用ARM7TDMI核,工作頻率在66MHz[1],。處理器外接4MFlash(用于存儲控制器的啟動代碼和系統(tǒng)代碼以及當天事件的文本日志)分配到存儲器Bank0空間和4M×16的SDRAM,,分配到存儲器的Bank6空間。

硬件部分的結構框圖

  GPRS模塊外圍電路:GPRS模塊采用西門子公司的MC35模塊,,支持數據,、語音、短消息和傳真等多種通信方式可以通過AT命令對其實現控制,。串行線通過MAX3238電平轉換后可直接和RS232串口相連,。串口擴展:44B0通過外接雙通道的通用異步收發(fā)器ST16C2550為GPRSmodem撥號上網提供完整的9線串口。其主要特點是接收﹑發(fā)送各有16字節(jié)的FIFO(先入先出)緩沖區(qū),,獨立的波特率產生器可提供50bps到4Mbps的收發(fā)時鐘,。用戶可方便地通過芯片的狀態(tài)寄存器來進行錯誤定位和對操作狀態(tài)進行判斷,。該芯片內存空間使用保留的存儲空間bank4,。采用總線方式控制。RS485接口設計:采用TI公司的RS485接口芯片75LBC184,,可實現了44B0串行口的TTL電平與RS485電平之間的轉換,,該芯片的輸入阻抗為RS485標準輸入阻抗的2倍(≥24KΩ),故可以在總線上連接64個節(jié)點(相當于原來的兩倍),。且它有一個獨特的設計,,當輸入端開路時,其輸出為高電平,,這樣可保證接收器輸入端電纜有開路故障時,,不影響系統(tǒng)的正常工作。

  4RS485總線協(xié)議設計

  用RS-485總線進行系統(tǒng)通訊需要對其傳輸協(xié)議做規(guī)定,,最重要的就是幀結構的設計,。本系統(tǒng)數據幀的構造包括:起始,地址,,類型,,數據長度,數據,,校驗和及結束幀七個部分,,除數據幀為N字節(jié)外(根據從機傳送的數據而定),其余均占1個字節(jié),。類型字定義如表1所示,類型幀中的“SENDDATA”幀為數據幀,,用于存放從機設備的狀態(tài)信息,其它4種為指令幀,,用于存放主機發(fā)送給從機的命令字[3],。

類型字定義

  主機發(fā)查詢請求主機發(fā)讀請求從機準備好接收從機處于忙碌主/從機發(fā)送數據

  本系統(tǒng)采用LRC幀校驗的方法。LRC值由傳輸設備來計算并放到消息幀中,,接收設備在接收消息的過程中計算LRC,,并將它和接收到消息中LRC域中的值比較,,如果兩值不等,說明有傳輸錯誤,。除了幀結構的定義以外,,整個系統(tǒng)的通信還需要遵守下面的規(guī)則:(a)主機查詢方式:由主機輪詢各從機,并要求從機提交狀態(tài)信息,,從機不能主動發(fā)出請求,。(b)當主機發(fā)出“ASK”命令后,若從機反饋“BUSY”幀,,則主機啟動計時和計數,,超時3次,則任務執(zhí)行失敗,。(c)主機接收到從機發(fā)回的“READY”信號后,,向從機發(fā)送“GETDATA”指令,進入接收狀態(tài),,同時開啟超時控制,。若在規(guī)定時間未接收到從機發(fā)回的數據,則計數器加1,,并繼續(xù)發(fā)出“GETDATA”信號,。如果超時3次,則取消這次查詢,。(d)從機等待主機發(fā)送指令,,并根據具體指令作相應操作。如果接受到的指令幀錯誤,,則會直接丟棄該幀,。

   5軟件設計

  軟件部分的設計主要是基于ARM-Linux,因為該操作系統(tǒng)具有完整的TCP/IP協(xié)議,,同時還支持許多其他網絡協(xié)議,,可以為GPRSmodem連接互聯網提供完整的協(xié)議支持,并且該操作系統(tǒng)具有良好的穩(wěn)定性和實時性可以滿足家庭智能控制器對系統(tǒng)可靠性的要求,,另外Linux的源代碼開放,,可移植性強,為系統(tǒng)開發(fā)中的問題提供了良好的技術支持,。本系統(tǒng)的軟件設計主要是應用程序的兩個部分:GPRS的無線數傳,;RS485總線控制控制,。

   5.1RS485總線控制

  基于上一部分RS485的總線協(xié)議,,主從控制主要分為:輪詢,、查詢,、控制三部分。(1)輪詢:主機定時對各從機進行查詢,,如果發(fā)現報警信息,,保存后及時觸發(fā)報警并反饋給用戶,。如果出現超時或幀錯誤等狀態(tài)時主機放棄此次查詢,并將該事件存儲在主機中,。(2)查詢:查詢的工作流程和輪詢大致相同,,但是只對指定的從機和指定狀態(tài)進行查詢。(3)控制:把控制指令發(fā)到指定從機,,并要求從機反饋執(zhí)行結果,。

  5.2GPRS的無線數據傳輸

  5.2.1接收和發(fā)送SMS短信

  (1)編碼轉換:要發(fā)送中文短信就需要使用PDU模式的16-bit編碼,。在Linux系統(tǒng)中默認用GB2312保存中文字符,。發(fā)送短信前,要先進行編碼轉換,,要將GB2312轉換為Unicode編碼,,再將Unicode編碼轉換為PDU的16-bit編碼。這里使用Linux中的iconv()函數,,該函數可以實現Linux支持的任意的兩種編碼之間的轉換,。實現的方法:首先用iconv_open(),,打開一個轉換句柄,,指定兩種轉換前的編碼和轉換后的編碼。然后用icnov()作轉換,。最后用iconv_close()關閉句柄,,釋放資源。完成轉換后,,即可以正確的發(fā)送,。(2)發(fā)送:向MC35模塊發(fā)送一條AT指令,得到OK響應,,則表示控制器與GPRS模塊通訊正常,,通過“AT+CSCA=“***”及AT+CSCA=0命令設置設置短信中心號碼及短信格式(PDU)。然后發(fā)送AT+CMGS="電話號碼",,得到提示符號“>”,,此時可以向MC35模塊發(fā)送編輯好的PDU編碼并以“CTRL+Z”結束。得到響應OK,,則發(fā)送成功,;如果收到ERROR則表示發(fā)送失敗,重新初始化MC35模塊,,發(fā)送信息[4],。(3)接收:當收到短信時,發(fā)送”“AT+CMGR=X”從SIM卡讀取短消息并調用短信處理程序作相應轉換,。

  5.2.2GPRS聯網在Linux下的實現

  GPRS聯網是Linux的PPP協(xié)議實現的,。因此在編譯內核時需要增加Linux內核的PPP支持[5],。然后根據程序中提供的配置信息,包括移動的APN*/為“CMNET”,,通訊協(xié)議IP,,撥號號碼“*99***1#”,串口設備號/dev/ttyS2,,波特率9600,,用戶名,密碼等信息配置PPP協(xié)議需要的5個腳本和配置文件:ppp-on,、ppp-off,、options.gprs、dialer.gprs,、pap-secrets,。完成設置后,運行ppp-on,,就可以進行GPRS撥號,;運行ppp-off斷開連接。

  GPRS聯網流程(控制器作為客戶端):(a)當用戶希望通過網絡訪問GPRS模塊時可以通過短信方式向主機GPRS模塊發(fā)送聯網命令,,包括用戶的IP地址和相關配置信息,。(b)主機根據用戶短信獲得GPRS上網連接的配置信息,并生成對應的撥號腳本文和配置文件,。調用ppp-on腳本進行PPP撥號,。(c)判斷PPPD是否撥號成功,標志是能否生成ppp0網絡設備,。(d)在數據傳輸過程中通過看門狗實時觀測網絡連接狀態(tài),,網絡掉線時,主機保存當前數據狀態(tài),,重新啟動GPRS模塊并恢復連接,。(e)結束本次任務時,用戶在網上發(fā)送命令,,讓控制器調用ppp-off,,斷開連接。

  5.3系統(tǒng)軟件流程

  軟件流程如圖2所示,,系統(tǒng)上電啟動后,,首先對包括串口,LCD,,鍵盤,,GPRS模塊以及網絡配置文件等做相應的初始化。并檢測GPRS模塊和主機是否通訊正常。然后開始對從機進行輪詢,,發(fā)現警情時,,讀取并存儲報警信息,啟動報警器并將相應的報警信息通過撥號和短信的方式通知用戶,。當收到用戶命令時,,先判斷用戶的控制方式,再做出做出回應,。

軟件流程

  6總結與展望

  本文介紹了一種基于ARM-Linux和GPRS技術的家庭智能控制終端,,并通過RS485總線解決了家用設備的布線及控制器對設備的控制問題。文中給出了詳細的系統(tǒng)架構方案,。從軟,、硬件兩方面給出了詳細的設計思路和實現方法。整套方案對家庭智能控制器系統(tǒng)實現中存在的主要問題提出詳細的解決方案,,并且在實踐中證明了其可實施性,。此外,由于該控制器具備GPRS控制器的基本功能,,只需在應用程序部分做相應修改,,可用作其它無線遠程控制設備,具有通用性和可擴展性,。

此內容為AET網站原創(chuàng),,未經授權禁止轉載。