新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM-Linux和GPRS的家庭智能控制終端設計與實現

        基于ARM-Linux和GPRS的家庭智能控制終端設計與實現

        作者: 時間:2012-02-07 來源:網絡 收藏

        1 引言

        本文引用地址:http://www.104case.com/article/149767.htm

        隨著科技的不斷進步,智能家居逐漸成為可能,而智能家居網絡則是智能家居的關鍵。本文介紹采用RS485工業總線,了一種嵌入式系統的器。用戶可以通過短信及互聯網等方式現遠程無線監控,在手機和互聯網相當普及的今天,為用戶提供了更簡單、方便的選擇。同時由于該控制器RS485接口的特殊,外掛節點可以由原來的32個擴展到64個,解決了家用設備的布線組網以及控制等問題。

        2 系統

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

        3 硬件設計

        硬件部分的結構框圖如圖1所示,控制器是整個系統的核心部分,經過串口擴展與模塊相連;通過電平轉換芯片提供RS485總線接口與家用設備相連接;同時還提供LCD,鍵盤等交互接口??刂破鞯闹骺匦酒捎萌荢3C44B0,使用ARM7TDMI核,工作頻率在66MHz.處理器外接 4MFlash(用于存儲控制器的啟動代碼和系統代碼以及當天事件的文本日志)分配到存儲器Bank0空間和4M×16的SDRAM,分配到存儲器的 Bank6空間。

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

        4 RS485總線協議設計

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

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

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

        5 軟件設計

        5.1 RS485總線控制

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

        5.2 GPRS的無線數據傳輸

        5.2.1接收和發送SMS短信

        (1)編碼轉換:要發送中文短信就需要使用PDU模式的16-bit編碼。在Linux系統中默認用GB2312保存中文字符。發送短信前,要先進行編碼轉換,要將GB2312轉換為Unicode編碼,再將Unicode編碼轉換為 PDU 的16-bit 編碼。這里使用Linux中的iconv () 函數,該函數可以實現Linux支持的任意的兩種編碼之間的轉換。實現的方法:首先用iconv_open(),打開一個轉換句柄,指定兩種轉換前的編碼和轉換后的編碼。然后用 icnov() 作轉換。最后用 iconv_close()關閉句柄,釋放資源。完成轉換后,即可以正確的發送。

        (2)發送:向MC35模塊發送一條AT指令,得到OK響應,則表示控制器與GPRS模塊通訊正常,通過AT+CSCA=***及AT+CSCA=0命令設置設置短信中心號碼及短信格式(PDU)。然后發送 AT+CMGS = 電話號碼,得到提示符號>,此時可以向MC35模塊發送編輯好的PDU編碼并以CTRL+Z結束。得到響應OK,則發送成功;如果收到 ERROR則表示發送失敗,重新初始化MC35模塊,發送信息。

        (3)接收:當收到短信時,發送AT+CMGR=X從SIM卡讀取短消息并調用短信處理程序作相應轉換。

        5.2.2 GPRS聯網在Linux下的實現

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

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

        5.3系統軟件流程

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

        6 結語

        本文介紹了一種和GPRS技術的,文中從軟、硬件兩方面給出了詳細的設計思路和實現方法。對器系統實現中存在的主要問題提出詳細的解決方案,并且在實踐中證明了其可實施性。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岚皋县| 拉萨市| 浙江省| 那曲县| 拉孜县| 沂南县| 龙里县| 河津市| 新余市| 民权县| 五家渠市| 辉南县| 长沙市| 大埔县| 潜江市| 台江县| 武鸣县| 汕尾市| 济阳县| 神池县| 开江县| 上饶县| 沙河市| 望城县| 土默特右旗| 丽水市| 昆明市| 榆树市| 蓬安县| 葫芦岛市| 古浪县| 新干县| 安宁市| 佛学| 民县| 合江县| 台北县| 丰台区| 古交市| 甘南县| 西乌珠穆沁旗|