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