基于GSM的中央空調(diào)末端控制器研究
為了解決以上問題,本文設(shè)計實現(xiàn)了一種基于手機SIM卡GSM網(wǎng)絡(luò)的中央空調(diào)末端風(fēng)閥異地控制模塊。GSM除語音業(yè)務(wù)外,另有短消息數(shù)據(jù)傳輸業(yè)務(wù)[4-8]。該模塊不但可以完成室內(nèi)溫度信息通過GSM網(wǎng)絡(luò)以短信息的形式報告用戶,同時也可以由用戶通過該模塊發(fā)送期望設(shè)定室內(nèi)溫度給末端控制器,完成遠程控制。
本文以Samsung公司的S3C2410芯片作為處理器,以Linux2.6為嵌入式操作系統(tǒng),基于PID控制策略,通過手機短信的方式對中央空調(diào)末端裝置進行遠程控制,實現(xiàn)了對室內(nèi)溫度的設(shè)置和監(jiān)控,取得了很好的實際效果。
1 末端控制器系統(tǒng)設(shè)計
1.1 控制器系統(tǒng)硬件設(shè)計
本文基于ARM9平臺,采用Linux嵌入式操作系統(tǒng),以S3C2410處理器為核心。系統(tǒng)硬件主要由以下模塊組成:
(1)GSM/GPRS射頻模塊。用來與GPRS網(wǎng)絡(luò)進行通信的射頻模塊,本文選用Simcom公司推出的工業(yè)級GSM/GPRS雙頻Modem模塊SIM300,具有完整的Modem信號,在網(wǎng)絡(luò)通信時可以作為一個Modem而存在。模塊采用串行接口通信,主要為語音傳輸、短信息和數(shù)據(jù)業(yè)務(wù)提供無線接口,帶GPRS功能[9]。SIM300芯片的外圍電路采用了芯片的典型連接,利用阻容充電和施密特觸發(fā)器整形獲得上電后大約1.5 s低電平延時來啟動。
(2)16C550串行接口。16C550是一種用于將并口數(shù)據(jù)轉(zhuǎn)換成串口數(shù)據(jù)的高速UART芯片,并自帶16位FIFO緩存通道,而且波特率可選。一方面可獲得完整的Modem控制,另一方面也是為了獲得精準的UART波特率,本文在SIM300射頻模塊與處理器組成的控制單元進行串行通信時使用16C550芯片。16C550芯片的虛擬地址為0xdb000000,工作在帶中斷的FIFO方式;其波特率設(shè)置為115200,傳輸無校驗,8位數(shù)據(jù)位,1位停止位,忽略輸入BREAK、幀錯誤和奇偶校驗錯,使用標準模式傳輸。
(3)CPU中央處理單元。采用Samsung公司生產(chǎn)的32/16位高性能基于ARM920T內(nèi)核的RISC微處理器S3C2410,具有低功耗、自帶8通道10位ADC和DAC、并支持NAND Flash和SDRAM存儲器等特點。該單元包括S3C2410微控制器的最小系統(tǒng)、時鐘電路、復(fù)位電路等部分。
(4)輸入輸出單元:模擬房間內(nèi)的溫度傳感器信號輸入到處理器的A/D轉(zhuǎn)換器;處理器通過PID算法得到的輸出量由D/A轉(zhuǎn)換器輸出以控制送風(fēng)執(zhí)行閥的開度,調(diào)整房間內(nèi)的送風(fēng)量從而達到調(diào)節(jié)室內(nèi)溫度的目的。
圖1為系統(tǒng)硬件框圖。本文引用地址:http://www.biyoush.com/article/163402.htm
1.2 控制器系統(tǒng)軟件設(shè)計
操作系統(tǒng)采用實時性強的Linux2.6內(nèi)核,編譯器使用gcc 4.0.2版本,完成了各個功能模塊的接口函數(shù)。由于在進行嵌入式系統(tǒng)內(nèi)核開發(fā)時,若交叉編譯工具(特別是gcc)版本較低則無法編譯高版本內(nèi)核,版本過高也不行。因此本文為配合要采用的Linux2.6.18內(nèi)核開發(fā)末端控制器,進行定制開發(fā)交叉編譯環(huán)境。具體如下:crosstool-0.43,binutils-2.16.1.tar.bz2,gcc-4.0.2,glibc-2.3.5,glibc-linuxthreads-2.3.5,linux-libc-headers-2.6.12.0,gdb-6.5,生成交叉編譯工具為arm-9tdmi-linux-gcc。其中短消息通信線程的初始化和主循環(huán)共分為以下4個步驟:
(1)完成串口初始化。系統(tǒng)啟動并完成初始化后,開始反復(fù)讀取16C550芯片發(fā)來的串口數(shù)據(jù)。當GSM模塊收到新短信后,通過串口向處理器發(fā)送1個字符串。該字符串格式、長度及內(nèi)容都是固定的,以+CMTI開頭,以此為依據(jù)判斷是否新短信到來。
(2)向SIM300模塊發(fā)送讀取短消息的AT指令,判斷短消息內(nèi)容。首先通過手機號來判斷短消息是否由用戶發(fā)來。如果短消息由用戶發(fā)來,則判斷用戶發(fā)送的指令,否則直接刪除。
(3)如果用戶發(fā)送的內(nèi)容是“設(shè)定溫度XX”(XX代表二位溫度值),則將“XX”通過解碼函數(shù)解碼成ASCII字符,再通過換算得到用戶期望設(shè)置的溫度發(fā)送給溫度控制模塊,最后刪除該信息。如果用戶發(fā)送的內(nèi)容是“查詢狀態(tài)”,則將當前溫度值和室內(nèi)狀態(tài)以短消息的形式發(fā)送給用戶手機,最后同樣刪除該信息。
(4)處理器繼續(xù)讀取串口數(shù)據(jù)。
短消息通信程序流程如圖2所示。
處理器通過串口與GSM模塊通信,串行通信的基本參數(shù)有:波特率、數(shù)據(jù)位、停止位及校驗方式等。串口驅(qū)動程序?qū)崿F(xiàn)了對串口的讀寫操作,給應(yīng)用程序提供發(fā)送接收數(shù)據(jù)的接口。串口正常工作之前,需要進行初始化設(shè)置,選擇串口工作方式,設(shè)置波特率、數(shù)據(jù)格式及中斷,建立數(shù)據(jù)隊列和信號量。應(yīng)用程序只要調(diào)用相應(yīng)的函數(shù),就可以實現(xiàn)相應(yīng)的功能。
以串口發(fā)送一個字符串為例介紹發(fā)送程序,其中buf表示要發(fā)送的字符串,nbytes表示字符的個數(shù):
int tty_write(char*buf,int nbytes)
{
int i;
for(i=0;inbytes;i++) {
write(tty_fd,buf[i],1);
usleep(100);
}
return tcdrain(tty_fd);
}
pid控制器相關(guān)文章:pid控制器原理
評論