王鴻彬
摘要:Arduino平臺,開源、方便上手、便捷靈活的特點,使得它非常適用于快速搭建基于各種傳感器的物聯(lián)網(wǎng)應(yīng)用原型。該文以停車場為應(yīng)用場景,使用Arduino電子原型平臺結(jié)合C#編寫的上層管理程序設(shè)計并實現(xiàn)了一套用于高職層次物聯(lián)網(wǎng)專業(yè)教學(xué)與實訓(xùn)的智能車輛管理系統(tǒng)模擬沙盤。
關(guān)鍵詞:Arduino;C#;智能車輛管理;物聯(lián)網(wǎng)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)09-0199-01
Arduino是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的Arduino板和傳感器)和軟件(Arduino IDE)。Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達(dá)和其他的裝置來反饋、影響環(huán)境[1]?;贏rduino平臺,可以快速搭建各種模擬物聯(lián)網(wǎng)應(yīng)用的電子原型[2]。C#是面向?qū)ο蟮木幊陶Z言。它簡單、快速的特點,使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應(yīng)用程序[3],特別是在實現(xiàn)Windows應(yīng)用程序方面優(yōu)勢非常明顯。本文中的智能車輛管理系統(tǒng)正是利用上述兩項的優(yōu)勢設(shè)計并實現(xiàn)了一套集門禁管理、停車場實時監(jiān)控、燈光控制、停車指引等功能為一體的用于物聯(lián)網(wǎng)專業(yè)教學(xué)與實訓(xùn)的電子原型。
1 設(shè)計思路與系統(tǒng)結(jié)構(gòu)
該電子原型使用Arduino Uno開發(fā)板作為下位機,運行使用C#編寫的通信Service和管理程序的PC作為上位機,通過一臺數(shù)據(jù)庫/通信服務(wù)器存儲數(shù)據(jù)和傳送指令,配合各種傳感器和網(wǎng)絡(luò)構(gòu)成了整個原型的軟硬件環(huán)境。如圖1。
圖中數(shù)據(jù)庫/通信服務(wù)器和Arduino開發(fā)版聯(lián)合組成了控制和通信的中樞,用于讀取各傳感器狀態(tài)信息,發(fā)送控制信號,控制進/出口閘機、照明系統(tǒng)、LED顯示屏,并為管理客戶端提供基礎(chǔ)數(shù)據(jù)。
2 功能描述
圖1對系統(tǒng)的總體結(jié)構(gòu)進行了描述,本節(jié)將對系統(tǒng)中各個部分的功能及實現(xiàn)原理進行詳細(xì)描述。
LED顯示屏:讀取數(shù)據(jù)庫信息,顯示停車場實時顯示車位占用情況,下停車場示意圖中顯示為占用停車位位置,同時顯示總車位數(shù),停車書和剩余車位數(shù)。
對射開關(guān)組(停車場):停車場每個車位均裝有對射開關(guān)用于探測車位占用情況,系統(tǒng)實施讀取開關(guān)狀態(tài),并將數(shù)據(jù)寫入數(shù)據(jù)庫。
對射開關(guān)組(路):探測道路上車輛行駛情況,當(dāng)有車輛在道路上行駛時,按照車輛行駛路線,分段開啟道路照明,實現(xiàn)照明系統(tǒng)智能開啟。
進門RFID讀卡器:用于讀取進出門車輛卡片信息,判斷該車是否為授權(quán)車輛,同時將車輛信息以語音播報的方式在進門控制室進行播報,以方便相關(guān)人員核對實際進門車輛是否與登記信息相符。
出門RFID讀卡器:用于讀取出門車輛卡片信息,結(jié)合該車進門信息生成計費數(shù)據(jù),并進行計費管理。
車位狀態(tài)指示燈:與車位對射開關(guān)組合,通過點亮或關(guān)閉指示燈,指示車位占用狀態(tài),并通過燈光指引車輛快速找到為占用車位。
光感開關(guān):避免照明系統(tǒng)在光線充足的情況下開啟,以節(jié)省能源。
Arduino控制板:讀取停車場對射開關(guān)狀態(tài),生成停車場占用信息數(shù)據(jù),讀取道路對射開關(guān)狀態(tài),獲取車輛在道路行駛的路徑,將上述信息按通信協(xié)議編碼并發(fā)送到數(shù)據(jù)庫/通信服務(wù)器。通過RFID讀卡器讀取車輛卡片信息,查詢數(shù)據(jù)庫核對卡片授權(quán)信息、車輛登記信息、進門信息,控制進/出門閘機進行開閘和畢閘操作。根據(jù)道路車輛行駛信息控制照明系統(tǒng)分段開啟照明。
數(shù)據(jù)庫/通信服務(wù)器:由于本系統(tǒng)數(shù)據(jù)量和通信量都不大,故將數(shù)據(jù)庫和通信兩類服務(wù)安裝在同一臺服務(wù)器。數(shù)據(jù)庫用于本系統(tǒng)所有數(shù)據(jù)存儲和查詢。通信服務(wù)負(fù)責(zé)根據(jù)各種通信協(xié)議從Arduino主控板讀取各類傳感器數(shù)據(jù)。另外,該服務(wù)器還負(fù)責(zé)驅(qū)動用于顯示停車場實施狀態(tài)的LED顯示屏。
管理客戶端:主要負(fù)責(zé)停車場示意圖生成與維護;停車卡的制卡、銷卡,車輛信息維護;閘機、照明系統(tǒng)的手動控制;停車場實時數(shù)據(jù)的監(jiān)控。
3 系統(tǒng)實現(xiàn)
本文所述系統(tǒng)是為物聯(lián)網(wǎng)專業(yè)學(xué)生實訓(xùn)開發(fā)的,系統(tǒng)中分別應(yīng)用了C#(PC端程序和通信服務(wù))、SQL-SERVER和Ardunio,篇幅所限下面只列出部分核心代碼。
Arduno代碼:
void loop()
{
uchar i,tmp;
uchar status;
uchar RC_size;
uchar blockAddr;
char data1;
int val,isCardRead;
isCardRead=0;
val=Serial.read();
if(val=='U')
{
steperUp();
}
if(val=='D')
{
steperDown();
}
if(val=='O')
{
digitalWrite(relay,HIGH);
}
if(val=='C')
{
digitalWrite(relay,LOW);
}
}
4 結(jié)束語
本文所述原型已在教學(xué)實踐中的得到應(yīng)用,C#結(jié)合Arduino快速、簡單、易用、可拓展性強的特點使得本套系統(tǒng)在實訓(xùn)教學(xué)中非常受學(xué)生的歡迎,不但能夠加強學(xué)生對物聯(lián)網(wǎng)各層應(yīng)用的理解,而且能夠極大的調(diào)動學(xué)生的積極性、主動性,培養(yǎng)學(xué)生的創(chuàng)新思維。這些正是Arduino自身的優(yōu)點所在。
參考文獻(xiàn):
[1] 施智雄. Arduino 在大學(xué)工科教學(xué)中應(yīng)用探索[J]. 西昌學(xué)院學(xué)報, 2012(3).
[2] 蔡睿妍. Arduino的原理及應(yīng)用[J]. 電子設(shè)計工程, 2012(16).
[3] Christian Nagel, Jay Glynn, Morgan Skinner. C#高級編程[M]. 北京: 清華大學(xué)出版社, 2013.