任海燕,王宇,耿爽,陳思羽
(南京工程學院 自動化學院,南京 211167)
基于Arduino平臺的停車場智能引導系統*
任海燕,王宇,耿爽,陳思羽
(南京工程學院 自動化學院,南京 211167)
設計了一種基于Arduino的車位信息采集和車位信息顯示系統。系統通過超聲波傳感器采集車位信息,再通過nRF24L01系統將車位信息發送到車位信息顯示模塊。該系統能可靠地引導停車,在停車場管理方面有一定實用價值。
智能引導;Arduino;超聲波傳感器;nRF24L01
隨著國家經濟的不斷發展,人民的生活水平也在不斷提高,越來越多的人們選擇駕駛私家車出行。這種現象雖然極大地便利了人們的生活,但是也帶來了一些問題,比如停車耗時長。研究科學有效的停車場智能引導系統可以在一定程度上緩解停車問題,幫助司機在停車場快速找到位置。該系統利用了Arduino便捷靈活,超聲波測距成本低、精度高、速度快等技術特點,并結合無線通信技術,可將車位信息在OLED上進行實時顯示。
該停車場智能引導系統主要包括兩個部分:車位信息采集模塊和車位信息顯示模塊。車位信息采集模塊包括車位探測、車位信息紅綠燈顯示,以及無線發射模塊;車位信息顯示模塊包括整個停車場車位信息顯示以及無線接收模塊。
司機在停車場入口便可了解車位信息以及空車位所在區域,并且在進入該區域后,通過紅綠燈指示準確找到空車位。系統整體結構圖如圖1所示。

圖1 停車場智能引導系統總體框圖
1.1 車位信息采集模塊
車位信息采集模塊位于每個車位的中央。超聲波傳感器將探測的車位信息送入Arduino處理,并通過紅綠燈來標識車位信息(紅燈表示車位被占用,綠燈反之)。與此同時,Arduino通過無線模塊nRF24L01將每個車位信息發至車位信息顯示模塊。
1.2 車位信息顯示模塊
車位信息顯示模塊位于停車場入口處。停車場被劃分為4個區域:A、B、C、D。它通過無線模塊接收每個車位信息后,在顯示屏OLED上集中車位信息,車位信息包括車位剩余總數以及剩余車位所在ABCD任一區域。
2.1 硬件總體設計
Arduino是一個開源的、擁有簡單輸入/輸出(I/O)的電路板,它沿用Processing語言的開發環境。Arduino可以用來開發獨立運作互動裝置,或者可以連接到計算機上的軟件[1]。
該系統利用超聲波傳感器檢測車輛信息,送入Arduino集中處理,然后再通過無線收發模塊,將信息發送給顯示模塊。它主要由硬件平臺Arduino、超聲波傳感器HC-SR04、無線收發模塊nRF24L01、顯示屏OLED以及LED燈組成。
2.2 車位信息采集模塊
車位信息采集模塊由Arduino、超聲波傳感器、紅綠LED燈以及無線收發模塊組成。
(1) 超聲波傳感器HC-SR04
超聲波測距模塊型號為HC-SR04,可提供2~400 cm的非接觸式距離感測功能,測距精度可達高到3 mm。它采用I/O口TRIG 觸發測距,給最少10 μs的高電平信號。模塊自動發送8 個40 kHz的方波,自動檢測是否有信號返回;有信號返回,則通過I/O口ECHO 輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間×聲速(340 m/s))/2。[2]
HC-SR04用來探測車位的信息,它由上而下發出超聲波,精確測量出反射面到探測器的距離。如果距離小于1.5 m,則表示車位被占用,從而可以準確判斷車位是否被占用。
(2) 紅綠LED指示燈
LED燈用來指示每個車位占有情況。當車位被占用,給紅色指示燈高電平,從而紅燈亮,表示車位被占用;當車位空閑,給綠色指示燈高電平,則綠燈亮,表示車位未被占用工作。LED燈的電壓一般為1.5~2.0 V,工作電流一般為10~20 mA,反向擊穿電壓為5 V,控制板邏輯電路供電為5 V。根據限流電阻=(總電壓-LED電壓)/電流,本次硬件設計采用的限流電阻為220 Ω。
(3) 無線收發模塊nRF24L01
無線收發模塊將Arduino處理過的信息發送給車位顯示模塊。nRF24L01 是一款新型單片射頻收發一體器件,工作于2.4~2.5 GHz ISM 頻段[3],其內置頻率合成器、功率放大器、晶體振蕩器、調制器、低噪聲放大器等功能模塊,并融合了增強型 ShockBurst 技術,其中輸出功率和通信頻道可通過程序進行配置。 nRF24L01 具有極低的電流消耗,當工作在發射模式下發射功率為0 dBm 時,電流消耗為11.3 mA,接收模式時為13.5 mA,掉電模式和待機模式下電流消耗更低。這里的nRF24L01設置為發射模式。[4]
車位信息采集模塊的電路圖如圖2所示。圖中A0與紅色指示燈相連,該模擬值A0通過無線發送模塊發送至車位信息顯示模塊。

圖2 車位信息采集模塊電路連接圖
2.3 車位信息顯示模塊
車位信息顯示模塊的硬件電路由Arduino、OLED和無線接收模塊nRF24L01組成。
該系統采用OLED來顯示停車場整體剩余車位信息,以及剩余車位所在的具體區域。OLED,即有機發光二極管(Organic Light-Emitting Diode),它是以有機半導體和發光材料作為其材料,在電場驅動下通過載流子注入并導致發光的現象。OLED在顯示和照明兩大應用領域都顯示了巨大的發展潛力和光明前景[5]。相比傳統LCD顯示屏,其更輕更薄,可視角度更大,柔軟環保且更省電,同時nRF24L01設置為接收模式。Arduino、OLED和nRF24L01的電路連接圖如圖3所示。

圖3 車位信息顯示模塊電路連接圖
該停車場智能引導系統是在Arduino平臺上進行編程。Arduino語言是建立在C/C++基礎上的,它將AVR單片機(微控制器)相關的一些參數設置都函數化。Arduino通過超聲波傳感器測量到的距離,來判斷車位信息,并將這一車位信息通過無線收發裝置送入車位顯示模塊。
3.1 車位信息采集模塊
車位信息采集模塊主要由兩部分組成:一部分是車位信息的探測,另一部分是車位信息的無線發射。它的軟件流程圖如圖4所示。

圖4 車位信息采集模塊軟件流程圖
(1) 超聲波探測
每個車位安裝一個超聲波測距裝置,當車輛進入車位,只需提供一個10 μs以上脈沖觸發信號,該模塊內部會發出8個40 kHz周期電平并檢測回路,一旦檢測到有回波信號則輸出回響信號,回響信號的脈沖寬度輸出與所測距離成正比,由此通過發射信號到收到的回響信號時間間隔可以通過計算得到距離。感知到有車輛停放,則紅色LED燈亮。
下面是超聲波測距主要功能實現的代碼:
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
(2) 無線發射模塊
無線發射模塊首先先進行初始化,然后設置nRF24L01為發送模式,再通過MOSI寫入數據,從MISO端口讀出數據。輸入數據保存到寄存器,并開始發送。在發送之后,輸出端口開始檢測是否有信號傳出,如果有則說明發送成功;如果沒有,再次發送,如此循環。
其核心代碼為:
pinMode(A0,OUTPUT);
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
Mirf.setRADDR((byte *)"Sen01");
//設置接收標識符"Sen01"
adata = analogRead(A0); //讀取A0值到adata
byte data[Mirf.payload];
//data高低8位拆分
data[0] = adata & 0xFF; //低8位給data[0]
data[1] = adata >> 8; //高8位給data[1]
//設置向"serv1"發送數據
Mirf.setTADDR((byte *)"Rec01");
Mirf.send(data);
while(Mirf.isSending())
3.2 車位信息顯示模塊
車位信息顯示模塊主要由兩部分組成:一是它接收從車位信息收集端發送的A0的模擬值,二是顯示車位信息。它的軟件流程圖如圖5所示。

圖5 車位信息顯示模塊軟件流程圖
(1) 無線接收模塊
無線接收模塊先進行初始化,再設置nRF24L01為接收模式。值得注意的是,接收端必須與發射端的配置相匹配,通過讀取狀態存儲器判斷接是否收到有數據。如果有,將接收端數據與發射端數據相比較,如果地址相匹配,說明數據接收成功。如果數據不同,則舍棄這個數據,重新接收,直到接收到正確的數據為止。
它的核心代碼為:
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
Mirf.setRADDR((byte *)"Rec01");
Mirf.payload = sizeof(unsigned int);
Mirf.channel = 3;
Mirf.config();
Serial.println("I'm Receiver...");
byte data[Mirf.payload];
if(Mirf.dataReady())//等待接收數據準備好
Mirf.getData(data);//接收數據到data數組
//data[1]重組數據
adata = (unsigned int)((data[1] << 8) | data[0]);
//Serial.print輸出數據
Serial.print("A0=");
Serial.println(adata);}
(2) 顯示屏模塊
顯示屏OLED上顯示停車場剩余量以及剩余車位所在具體位置。它顯示的信息主要由無線接收模塊將接收的信息送到Arduino處理后得到的車位信息。
本文主要的OLED顯示函數如下:
display.println("107PARK");
display.setTextColor(WHITE);//設置文本顏色
display.println(" ");//顯示空白行
display.setTextSize(2);//設置文本大小
display.print("parking:");//顯示文本內容
display.println(x);//x為車位數量為整型變量
……

[1] 班茲.愛上Arduino[M].北京:人民郵電出版社,2011:5-6.
[2] 蘇琳.基于HC-SR04的超聲波測距器的設計[J].科技信息,2012(9).
[3] 孫志遠.2.4 GHz無線傳感器網絡節點通信模塊的設計與實現[D].長沙:國防科學技術大學,2010.
[4] 劉衛國,王紅彬.基于nRF24L01+與Arduino的超聲波測距系統設計[J].電子設計工程,2015, 23(22):150-152 .
[5] 何豪,張臘花.OLED[J].科技創新導報,2012(20).
任海燕(本科),主要研究領域為自動控制方向。
Intelligent Guide Parking System Based on Arduino
Ren Haiyan,Wang Yu,Geng Shuang,Chen Siyu
(School of Automation,Nanjing Institute of Technology,Nanjing 211167,China)
An intelligent guide parking system is designed which is based on Arduino,in order to collect and display the parking information.The system collects the parking information by the ultrasonic sensor,then the system sends the parking information to the display module by nRF24L01.The system can reliably guide the parking,which has practical value in the parking management.
intelligent guide;Arduino;ultrasonic sensor;nRF24L01
南京工程學院大學生科技創新基金項目(項目名稱:停車場智能引導系統設計研究,項目編號為TB20160553)。
TP271
A
?迪娜
2016-08-19)