敖 翔
(呼和浩特鐵路局 建設(shè)管理處,呼和浩特 010010)
基于Arduino微控器的立交橋水位監(jiān)控及報警系統(tǒng)
敖 翔
(呼和浩特鐵路局 建設(shè)管理處,呼和浩特 010010)
利用Arduino微控器控制GSM模塊SIM900A,以發(fā)送短信的方式實現(xiàn)了對公鐵立交橋下水深的遠程安全監(jiān)控。系統(tǒng)由Arduino微控器、水位監(jiān)控模塊、LED顯示屏警示模塊、GSM遠程報警模塊4部分組成。HC-SR04超聲波測距儀探測水位,當其超過警戒線時LED屏閃動警示,同時利用GSM模塊發(fā)送短信(SMS),遠程報警。相關(guān)人員收到水位報警信息后及時采取措施處置險情。經(jīng)過試驗,結(jié)果證明該系統(tǒng)準確可靠。
Arduino微控器;GSM模塊;水位監(jiān)控
公鐵平交道口改建立交是鐵路發(fā)展的趨勢[1],但由于立交橋下的排水功能不完善和設(shè)備的故障、缺陷,近年來立交橋下因降雨積水造成的交通堵塞甚至人身傷害事故頻發(fā)。為提示水深、警示行人,及時報請作業(yè)人員現(xiàn)場抽排水、排除險情,亟待研發(fā)一種可以準確監(jiān)控橋下水位并及時發(fā)送水深報警信息的智能監(jiān)控系統(tǒng)。
系統(tǒng)主要由Arduino微控器、水位監(jiān)控模塊、LED顯示屏警示模塊、GSM遠程報警模塊4部分組成。結(jié)構(gòu)簡圖見圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)簡圖
此系統(tǒng)采用兩組監(jiān)控傳感器分別安裝于框構(gòu)涵洞頂板兩側(cè),兩組傳感器數(shù)據(jù)相互校核,經(jīng)濾波算法產(chǎn)生準確的水位信息并傳輸至Arduino微控器。由于Arduino微控器體積小巧,可與GSM通信模塊一并安裝在LED顯示屏防水外殼內(nèi),形成簡單可靠的戶外監(jiān)控系統(tǒng)。
圖2顯示的是本系統(tǒng)的工作原理流程,其中實線表示水深觸發(fā)一級水位報警的工作流程圖,虛線表示水深觸發(fā)二級水位報警的工作流程圖。
圖2 系統(tǒng)工作原理流程圖
當系統(tǒng)處于正常監(jiān)控狀態(tài)時,超聲波測距儀以每秒一次的頻率從框構(gòu)橋兩側(cè)位置對水位進行測量,20 s后測出的20組數(shù)據(jù)進入數(shù)組,并經(jīng)過濾波算法進行校核,輸出一個準確的水位信息,利用預(yù)定的警戒線對水位信息進行評估,水位30 cm以下為正常水位,不激活報警程序。
如果水位超過30 cm,則觸發(fā)一級水位報警,微控器通過控制繼電器點亮LED顯示屏,屏幕顯示紅色的警告字樣并閃爍。警告信息根據(jù)不同水位自動調(diào)整。
如果水位超過50 cm,則觸發(fā)二級水位報警,微控器通過繼電器給GSM模塊通電,模塊通電后自動連接GSM網(wǎng)絡(luò),微控器通過AT命令向GSM模塊發(fā)送短信(SMS)通知手機、GSM手持設(shè)備或者上位機,信息處理人員迅速響應(yīng)。SMS警告信息根據(jù)不同水位自動調(diào)整。
2.1 水位監(jiān)控模塊
2.1.1 超聲波水位計原理
超聲波指向性強,在介質(zhì)中傳播的距離較遠,遇到不同介質(zhì)分界面時產(chǎn)生反射。因而超聲波經(jīng)常用于距離的測量,尤其適合液面測量。
圖3 聲波時序圖
圖3為聲波時序圖,程序控制微控器給HCSR04D模塊的Trig引腳發(fā)送一個最少10 us的高電平信號,模塊變自動發(fā)送8個40 kHz的方波,自動檢測并計算Echo返回高電平的時間,距離=(高電平時間×聲速(340 M/S))/2。該模塊精度高,可精確測距(誤差3 mm左右),性能穩(wěn)定可作為可靠的液位監(jiān)測模塊。
2.1.2 監(jiān)控模塊硬件設(shè)計
監(jiān)控模塊硬件設(shè)計如圖4所示。Vcc引腳和GND引腳分別接入Arduino微控器的5 V電源和接地接口,Echo和Trig接口分別引入I/O接口2和3。程序控制Arduino的I/O接口3發(fā)送高電平信號,并監(jiān)測2接口返回高電平時間完成液面測量。
圖4 監(jiān)控模塊硬件設(shè)計圖
2.1.3 微控器編程
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
void setup()
{
// 初始化串口通信及連接SR04的引腳
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
// 設(shè)置為輸入狀態(tài),檢測引腳高電平時間
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
}
void loop()
{
// 產(chǎn)生一個10us的高脈沖觸發(fā)TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
// 檢測高電平時間,并計算出距離(cm)
distance = pulseIn(EchoPin, HIGH) / 58.00;
delay(1000);
}
2.1.4 濾波算法
非接觸式測距雖然精度高,且可靠性、抗干擾性強,但考慮到由于設(shè)備裝在戶外,偶爾存在通行人員對水位監(jiān)控裝置產(chǎn)生干擾的情況,雖然系統(tǒng)設(shè)計為兩組測距儀分開布置,被同時干擾的幾率已大大降低,但為了數(shù)據(jù)穩(wěn)定,仍需采取一種適合的濾波算法來修正水位信息。
本系統(tǒng)選擇防脈沖干擾平均濾波法來進行數(shù)據(jù)修正,對于偶然出現(xiàn)的脈沖性干擾,可消除由其引起的采樣值偏差。對周期干擾也有良好的抑制作用,
平滑度高,適于高頻振蕩的超聲波測距系統(tǒng)。對于液面等變化較為緩慢的環(huán)境尤為合適。
原理是通過冒泡法去掉數(shù)組中最大和最小的值,剩余所有數(shù)據(jù)求平局值。
//采樣值從小到大排列(冒泡法)
for(j=0;j<N-1;j++)
{
for(i=0;i<N-j;i++)
{
if(value_buf1[i]>value_buf1[i+1])
{
temp = value_buf1[i];
value_buf1[i]= value_buf1[i+1];
value_buf1[i+1]= temp;
}
if(value_buf2[i]>value_buf2[i+1])
{
temp = value_buf2[i];
value_buf2[i]= value_buf2[i+1];
value_buf2[i+1]= temp;
}
}
}
//去掉最大值和最小值,兩個超聲波傳感器獲得的剩余8個值分別求和并相加求出最終液面高度
for(i=1;i<N-1;i++)
{
sum1 += value_buf1[i];
sum2 += value_buf2[i];
value = ((sum1+sum2)/(N-2))/2;
}
2.2 LED顯示屏警示模塊
現(xiàn)一般公鐵立交橋下均有油漆涂刷的水位尺作為警示標志用來提示水深。這種方式隨時間清晰度也會下降,而且夜間不可見,形成安全隱患。戶外常用LED顯示屏作為提示窗口,它有亮度高、響應(yīng)快、壽命長的優(yōu)點。當水深超過30 cm時,警示顯示屏便點亮并不斷閃爍,提醒過往行人車輛注意水深。
LED顯示屏警示模塊工作流程如下:(1)把需要顯示的漢字利用取模軟件生成字模,見圖5所示,儲存到一個數(shù)組里;(2)調(diào)用Arduino的硬件SPI通訊接口,把每8個LED看成是一個十六進制編碼;(3)一行行發(fā)送出去,發(fā)完一行后,再發(fā)出換行指令。
2.3 GSM遠程報警模塊
2.3.1 GSM收發(fā)模塊簡介
SIM900A屬于雙頻GSM/GPRS模塊,采用完全SMT封裝形式,專為中國市場設(shè)計,其性能穩(wěn)定,外觀精巧,性價比高。該模塊采用工業(yè)標準接口,工作頻率為GSM/GPRS 850/900/1 800/1 900 MHz,可以實現(xiàn)低功耗語音、SMS、數(shù)據(jù)和傳真信息的傳輸。此模塊打破了距離的限制并且可以實現(xiàn)監(jiān)控信息的可靠高效傳輸。SIM900A采用標準AT命令控制。
圖5 文字取模
mySerial.println("AT");
//發(fā)送AT命令同步
while (!mySerial.available()) {}
//判斷串口狀態(tài)
mySerial.readBytes(buffer,32);
//讀串行通訊內(nèi)存 (正常,返回OK)
mySerial.println("AT+CMGF=1");
// 發(fā)送短信格式,1=文本
mySerial.println("AT+CMGS="189********"");
//接收報警信息的手機或上位機號碼
while (!mySerial.available()) {}
mySerial.readBytes(buffer,32);
2.3.2 SMS報警通知
GSM通信模塊報警流程見圖6所示,其中實線表示觸發(fā)水深二級報警后微控器的動作,虛線代表微控器控制GSM模塊遠程報警的動作。
二級水位報警觸發(fā)后,給SIM900A通信模塊通電,將該模塊Powkey引腳接地后可設(shè)置為上電自啟動,見圖7所示,根據(jù)水深發(fā)送不同報警信息至終端機。
本系統(tǒng)利用Arduino微控器控制GSM模塊SIM900A,實現(xiàn)了對公鐵立交框構(gòu)橋內(nèi)水深探測的遠程安全監(jiān)控。既可以給過往行人、車輛以警示,又可以及時通知相關(guān)作業(yè)人員到場抽排水,縮短阻塞時間。經(jīng)過多次試驗,結(jié)果證明本系統(tǒng)具有良好的準確性和可靠性。
圖6 GSM通信模塊報警流程
圖7 SIM900A自啟動電路圖
[1]郭 湛,鄒 波,李 海. 公鐵平交道口技術(shù)裝備安全評價模型研究[J].鐵道運輸與經(jīng)濟,2012(7):3-4.
[2]程 晨. Arduino開發(fā)實戰(zhàn)指南:AVR篇[M]. 北京:機械工業(yè)出版社,2012,2.
[3](美)班茲(Banzi,M).愛上Arduino [M]. 北京:人民郵電出版社,2011,8.
責任編輯 方 圓
Water Level Monitoring and Alarming System based on Arduino microcontroller
AO Xiang
( Construction Management Off i ce, Hohhot Railway Administration, Hohhot 010010, China )
The GSM module SIM900A was controlled by Arduion microcontroller to implement remote security monitoring under the overpass water depth in the form of sort message. The Water Level Monitoring and Alarming System consisted of the Arduino microcontroller, water level monitoring module, LED display warning module, GSM remote alarm module. HC-SR04 ultrasonic rangef i nder was used to detect the water level. The LED would fl ash and alarming when the water was over cordon, at the same time, the GSM module given remote alarming in the form of SMS short message. Relevant staff would take measures to dispose when he receipted the information. After many experiments, the testing results showed that the System was accurate and reliable.
Arduino microcontroller; GSM module; water level monitoring
U213.81∶TP39
A
1005-8451(2015)05-0013-04
2014-10-29
敖 翔,工程師。