基于A(yíng)RM7的路燈監控通信終端的設計
0 引言
本文引用地址:http://dyxdggzs.com/article/272614.htm對于城市路燈管理部門(mén)來(lái)說(shuō),防盜、節能等一直是一件非常頭疼的事情,需要投入大量的人力、物力和財力,因為路燈數量眾多,地理位置分散,給工作人員帶來(lái)極大的困難。 GPRS即通用分組無(wú)線(xiàn)業(yè)務(wù)[1],英文全稱(chēng)為General Packet Radio Service,這種無(wú)線(xiàn)業(yè)務(wù)是在現有GSM網(wǎng)絡(luò )上開(kāi)通的一種新型的分組數據傳輸業(yè)務(wù)。GPRS采用分組交換技術(shù),它可以讓多個(gè)用戶(hù)共享某些固定的信道資源。GPRS特別適用于間斷的、突發(fā)性的或頻繁的、少量的數據傳輸,也適用于偶爾的大數據量傳輸,具有實(shí)時(shí)在線(xiàn)、按量計費、快捷登錄、高速傳輸、自如切換等優(yōu)點(diǎn)。因此,利用GPRS組建的無(wú)線(xiàn)通信系統是一種造價(jià)低,易于維護和推廣,無(wú)制約,可靠性高,穩定性好,具有一定的先進(jìn)性,標準性且易于擴充的系統??梢哉f(shuō),將GPRS應用于路燈監控系統的數據傳輸是目前最理想的選擇。
本系統設計一種基于ARM7處理器以及利用GPRS技術(shù)的路燈監控通信系統的終端,實(shí)現遠程無(wú)線(xiàn)的各路現場(chǎng)數據的傳輸。結合上位機軟件,將各路數據實(shí)時(shí)傳遞到集中監控中心,以實(shí)現對路燈運行情況的統一監控和分布式管理。系統結構模型圖如圖1所示。

圖1 GPRS路燈監控通信系統模型圖
1 主要芯片簡(jiǎn)介
1.1 LPC2106芯片[2]
LPC2106處理器是菲利普公司的ARM7TDMI-S 處理器,該芯片帶有一個(gè)支持實(shí)時(shí)仿真和跟蹤的ARM7TDMI-SCPU,并嵌入了128KB的高速Flash存儲器。具有ISP 和IAP 功能,128位的儲存器接口和特別的允許在最高時(shí)鐘周期執行32位代碼的加速體系,在代碼長(cháng)度起關(guān)鍵作用的程序中,可選的16位的Thumb模式在最少的代價(jià)下能夠減少了超過(guò)30%的代碼,CPU 操作頻率可達60MHz ;LPC2106體積很小,它有兩個(gè)低功耗模式:空閑和掉電,使系統保證在低功耗使用,非常省電,在路燈監控系統中,它是非常理想的選擇。它內部RAM達到64K大小,提供I2C 串行和SPI 串行接口等接口,使得LPC2106在GPRS系統中能夠進(jìn)行各種擴充;它的兩個(gè)定時(shí)器,分別具有4 路捕獲/比較通道,適合路燈控制多路數據處理,看門(mén)狗定時(shí)器確保了系統的安全,雙電源技術(shù)保證了系統的可靠性。
1.2 P87LPC760芯片[3]
P87LPC760是14 腳封裝的單片機,適合于許多要求高集成度低成本的場(chǎng)合,可以滿(mǎn)足多方面的性能要求。它是菲利普公司小型封裝系列中的一員,P87LPC760提供高速和低速的晶振和RC 振蕩方式,可編程選擇具有較寬的操作電壓范圍,可編程I/O口線(xiàn)輸出模式選擇,可選擇施密特觸發(fā)輸入LED 驅動(dòng),輸出有內部看門(mén)狗定時(shí)器,P87LPC760采用加速80C51處理器結構,指令執行速度是標準80C51 MCU的兩倍特性。在路燈監控通信終端中作為從處理器。
2 硬件系統結構
2.1 GPRS通信終端硬件結構
GPRS路燈監控系統終端安裝在路燈的各個(gè)數據采集點(diǎn),通過(guò)RS232口和RS485口與GPRS透明數據傳輸終端連接,數據經(jīng)過(guò)協(xié)議封裝后發(fā)送到中國移動(dòng)的GPRS數據網(wǎng)絡(luò ),通過(guò)GPRS數據網(wǎng)絡(luò )將數據傳送至路燈監控中心,實(shí)現路燈終端和路燈監控中心系統的實(shí)時(shí)在線(xiàn)連接。GPRS通信終端硬件結構采用主從CPU的設計方法,這樣提高系統的可靠性和運行速度,主處理器采用菲利普公司的ARM7TDMI-S 處理器LPC2106,主要負責協(xié)議的封裝,與GPRS通信的實(shí)現;從處理器采用菲利普公司的P87LPC760,主要負責對ARM7芯片和GPRS模塊的控制。GPRS監控通信終端的實(shí)現結構圖如圖2所示。

圖2 GPRS監控通信終端結構圖
2.2 監控通信硬件的實(shí)現
在路燈監控通信終端中,主處理器是基于A(yíng)MR7核心的LPC2106處理器,它是整個(gè)系統的硬件核心,連接結構圖如圖3所示,主要功能是實(shí)現GPRS下的通信協(xié)議封裝及數據傳輸,同時(shí)采用適用于GPRS的AT指令,使用TCP/IP協(xié)議將數據打成IP包,經(jīng)GPRS接口接入無(wú)線(xiàn)GPRS網(wǎng)絡(luò ),并應用Winsock控件來(lái)實(shí)現接收數據及數據交換。
2.3 監控通信控制的實(shí)現
從處理器使用P87LPC760,主要功能是對LPC2106處理器與GPRS模塊的數據傳輸通信控制;
2.4 監控通信接口的實(shí)現
由于監控通信終端是3.3V的系統,而且核心處理器LPC2106的UART1帶有完全的調制解調器接口,使用TTL電平,所以使用8 路的RS232 轉換芯片SP3238進(jìn)行RS232電平轉換及串口通信,SP3238芯片是+3.0V和+5.5V的RS232轉換器。具有低功耗、高數據速率、增強型ESD保護等特性。MAX3485是RS485電平轉換,這些口線(xiàn)可保留給用戶(hù)作為其它功能使用。
2.5 GPRS模塊的實(shí)現
中興ZTE815主要是用來(lái)實(shí)現GPRS模塊,使用SIM卡進(jìn)行實(shí)現。SIM卡的1和4腳接電源,2腳接地,3腳是復位,與ZTE815的41腳相連;5腳是時(shí)鐘,與ZTE815的45腳相連;6腳是通信讀寫(xiě)I/O引腳,與ZTE815的43腳相連。

圖3 LPC2106連接結構圖
3 GPRS通信軟件的設計
軟件的設計是本監控通信終端的核心,其中通信模塊設計是整個(gè)終端軟件設計主要部分,軟件設計采用ARM公司的ADS集成開(kāi)發(fā)環(huán)境,使用C語(yǔ)言進(jìn)行編程,主要是對LPC2106處理器進(jìn)行控制,實(shí)現協(xié)議的封裝及與GPRS系統的通信,從初始化串行通訊模塊設計到與帶SIM 卡的GPRS終端的通信流程設計,需要兼顧軟件的各個(gè)功能模塊,包括參數設置、自動(dòng)接收數據、請求數據以及信號判斷等。
3.1 通信命令處理
通信數據處理主要是針對需要發(fā)送的數據和接收到的信息進(jìn)行相關(guān)處理。通過(guò)在A(yíng)RM7模塊建立AT指令實(shí)現數據的收發(fā),并實(shí)現對AT指令的分析和控制。本系統用到的AT指令是:建立TCP/socket連接命令"AT+ISTCP:";發(fā)送數據命令"AT+ISSND%:";查詢(xún)數據命令"AT+ISRCV:";查詢(xún)數據鏈路命令"AT+ISST:";模塊退出傳輸模式命令"AT+IMCM";查詢(xún)模塊信號值命令"AT+CSQ";模塊返回數據傳輸模式命令"ATO";DTU返回控制命令模式命令"AT+I";關(guān)閉SOCKET命令"AT+ISCLS: "。
3.2 系統主要函數介紹
通信控制是比較復雜的過(guò)程,本系統主要的函數有:(1)接收的字符串與目標pSrc字符串對比函數unsigned char Recive_GpCmp(const unsigned char *pSrc,unsigned char unNum),用于對接收指令的檢測;(2)提取信號強度函數unsigned char Achieve_IMFSrong(void),信號強度為0~30;(3)對比連接返回值函數unsigned char Achieve_Socket(void);(4)建立SOCKET連接函數void Connect_Socket(unsigned char *pIp),該函數負責發(fā)送IP地址及端口號,等待時(shí)間是一分鐘,在數據返回值中,I/000 表明連接成功,字柄號為000,I/ERROR 表明連接超時(shí)或不成功;(5)查詢(xún)信號強度函數void Check_IMFSrong(void),等于1為查詢(xún)信號強度狀態(tài),等于0為空閑狀態(tài),在查信號強度,最長(cháng)時(shí)間3.2秒,時(shí)間間隔為6分鐘,并在主循環(huán)調用該函數;(6)查詢(xún)在線(xiàn)狀態(tài),秒間隔調用函數void Check_Gprs(void),設置在線(xiàn)查詢(xún)時(shí)間間隔為3分鐘,兩次判斷掉線(xiàn)就確認掉線(xiàn)了。
3.3 數據收發(fā)函數的實(shí)現
由于篇幅的限制,不能對各函數進(jìn)行詳細的描述,下面主要對數據收發(fā)函數進(jìn)行實(shí)現。
3.3.1 接收數據函數的實(shí)現
void Recive_Data_Socket(void)
{
unsigned char buf[20],i;
Check_IMFSrong();
if(ucGPRSMode&&ucGprsLink)
{
for(i=0;i
buf[i]=pGPRSCMD[2][i];
buf[i++]=0x0d;
ucGPRSMode="1"; //接收數據
UART1_SendStr(buf,i);
}
}
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
通信相關(guān)文章:通信原理
晶振相關(guān)文章:晶振原理
評論