鄭嘉泓 裴航 董昌龍



摘? ?要:隨著信息技術的發展,現代人對家庭環境的要求越來越高,智能家居的概念逐漸成為人們的關注熱點。智能鎖作為智能家居中的重要部分,具有廣闊的市場前景。文章使用Arduino開發板作為核心,根據開發要求實現了基于NFC技術的工號牌系統。
關鍵詞:智能家居;Arduino開發板;NFC技術
隨著“萬物互聯”概念的提出,物聯網技術得到了飛速發展,越來越多的企業對近場通信技術(Near Field Communication,NFC)進行重點關注,NFC支持的終端產品也得到了快速增長。不過在NFC基礎上,此種技術通常都是應用于移動支付,而在其他方面卻很少得到有效應用。NFC虛擬成一張一卡通應用,稱為閉環應用。目前NFC的閉環應用在國內的發展不太理想,雖然在有些城市的公交系統已經開放了手機的NFC功能,但并沒有得到普及。隨著NFC手機的普及和技術的不斷成熟,一卡通系統會逐漸支持NFC手機的應用,正如如今的工號牌一樣。隨著技術的不斷進步,以手機為主體的NFC工號牌系統將會替代現在的刷卡系統,能夠便于企業的規范化管理,提高企業的管理效率。
1? ? 系統方案設計
系統總體框架如圖1所示。手機NFC通過傳感器模塊與Arduino主控板進行通信實現簽到等功能,同時利用Arduino主控板的數字引腳5控制單路繼電器的吸起和落下,從而控制電子鎖電源的導通和斷開,進而實現NFC對電子鎖的控制。
2? ? 硬件設計
2.1? Arduino主控板
Arduino是基于開放源代碼的軟硬體平臺,硬件具有豐富的接口,有數字I/O口、模擬I/O口,同時支持SPI,IIC,UART串口通信。Arduino編程語言沒有復雜的單片機底層代碼,沒有難懂的匯編程序,只有簡單而實用的函數。直接調用就可以完成各種需要的功能,而且簡便的編程環境擁有極大的自由度,可拓展性能非常高。標準化的接口模式、豐富的開放源代碼,從而使復雜命令的編程工作變得簡單。
常用的Arduino主控板有:Arduino Uno,Arduino Mega 2560,Arduino Nano,LilyPad Arduino,Arduino Leonardo等。本系統中所使用的ArduinoUNOR3是一個基于ATmega328核心的微控制器板,由14個數字輸入/輸出引腳(其中6個可以用作PWM輸出)、6個模擬輸入、一個16 MHz的陶瓷諧振器、USB接口、電源插孔、ICSP頭和一個復位按鈕組成。開發板在出廠時已完成了啟動程序的固化,使用過程中可以直接使用USB線進行程序下載。
2.2? NFC識別模塊
本系統對于NFC讀取采用了與之相近的RFID-RC522板塊,如圖2所示,該板塊讀取手機NFC的標簽,然后利用串口通信發給服務器端,由服務器端來運行開鎖、簽到等功能。
2.3? 單路繼電器
單路繼電器模塊是一個小電流信號控制大功率設備的常用電子模塊,可實現單片機控制大功率器件,廣泛用于單片機系統設計的智能家居項目。
2.4? 電磁鎖
電磁鎖的原理:電磁鎖內部有電磁線圈,利用電生磁的原理,當電流通過硅鋼片時,電磁鎖會產生強大的吸力,緊緊地吸住門上鐵片,達到鎖門的效果。只要小小的電流,電磁鎖就會產生莫大的磁力。當控制電磁鎖電源系統識別人員正確后則會斷電,電磁鎖失去吸力即可開門。開門后經預設延時后電磁鎖恢復通電狀態與門上鐵片吸合,門再次鎖緊。
硬件系統連接順序是:NFC識別模塊連接Arduino主控板,Arduino數字引腳5控制單路繼電器的吸起和落下,單路繼電器控制電磁鎖的電源。
3? ? 軟件設計
3.1? 硬件端程序代碼
設計思路:NFC讀寫模塊識別到手機NFC的ID,通過串口發送給服務器端,服務器端判斷該ID是否為該企業員工,如果是,則發送5給Arduino,Arduino控制繼電器使電磁鎖電源斷開,門鎖打開;延遲10 s,讓繼電器落下,電磁鎖電源合上,門鎖閉合。打開Arduino開發編碼環境界面,輸入以下代碼,編譯通過后下載到Arduino主控板。
#include”rfid1.h”
RFID1 rfid;
uchar serNum[5];
void setup()
{
pinMode(11,OUTPUT);
Serial.begin(9600);
rfid.begin(7,5,4,3,6,2);
delay(100);
rfid.init();
}
void loop()
{
char a;
if(Serial.available()){
a = Serial.read();
if (a==5) {
analogWrite(11,255);
delay(10000);
analogWrite(11,0);
}
else {analogWrite(11,0);}
}
uchar status;
uchar str[MAX_LEN];
status = rfid.request(PICC_REQIDL, str);
if (status != MI_OK)
{
return;
}
status = rfid.anticoll(str);
if (status == MI_OK)
{
memcpy(serNum, str, 5);
rfid.showCardID(serNum);
}
delay(1000);
rfid.halt();
}
3.2? 服務器端程序
該系統中的服務器端,采用Java語言進行編寫,利用串口通信與Arduino進行操作交互,調用MySQL數據庫進行員工的數據處理,同時還用Java Web編寫了簡易、方便的后臺管理系統,便于企業管理者操作。
(1)員工注冊。員工入職,需要利用APP用手機NFC通過注冊程序注冊信息到數據庫中,如圖3所示。
(2)簽到程序。員工注冊之后,手機就可當做工號牌使用,可以用于每天的簽到、開鎖。只需把手機靠近NFC識別模塊即可,如圖4所示。
(3)后臺管理系統。利用Java Web編寫簡易的、可視化后臺管理系統,用于員工信息的增、刪、改、查等操作,
3.3? 手機客戶端程序
手機客戶端采用Android studio進行編寫,實現了用戶的登陸、對手機NFC模塊的寫入、個人信息的獲取等操作。手機客戶端與服務器端利用socket進行數據通信處理。
4? ? 結語
本系統是基于NFC的手機企業工號牌設計,內容包括方案的設計、硬件選型、軟件編程。經實驗測試,系統工作可靠、運行穩定、功耗低,能實現簽到、開鎖等功能。此外,本設計還可以推廣到校園一卡通、公交一卡通、手機支付、TSM平臺等領域,為NFC技術在物聯網技術發展中的應用提供一定的參考價值。
[參考文獻]
[1]梁晶,史記征.基于Arduino的智能鎖系統設計與實現[J].電腦知識與技術,2019(32):86-88.