隨著進入智能化時代后,云端智能通訊裝置在我們的生活中已是非常的普及,本文章將使用M5Stack的UiFlow開發(fā)接口(Blocky)完成具備云端紀錄功能的門禁系統(tǒng),包含4種認證開鎖(手機遠程遙控開鎖、RFID磁卡、擊鍵密碼、指紋辨識),并透過MQTT協(xié)議傳送門禁紀錄。
硬件配置
門禁系統(tǒng)使用M5Stack Faces模塊化套件包,F(xiàn)ACES套件包含有一個控制核心(M5Stack Core)加上GBA、計算器、QWERTY鍵盤等不同的輸入設(shè)備,在這里我們使用計算器鍵盤模塊進行擊鍵,特別注意更換Faces模塊時請握住模塊兩側(cè)拔插,避免排針毀損。
接下來設(shè)定3個Unit 模塊,M5Stack RFID模塊使用的通訊界面是I2C,接入Core左側(cè)的Port-A,M5Stack 指紋辨識模塊使用的通訊界面是UART,接入Core Port-C,欲使用Core的GPIO可以翻到Core背面會有提示相對應界面的PIN,Core后方的GPIO接口(GND、5V、R2(16)、T2(17) ) ,M5Stack 繼電器模塊透過I/O控制,接入Core port-B(GND、5V、DA(26)、AD(36))。
三種Unit模塊接線配置完成后,接著制作連接繼電器模塊的電路(如圖)控制電磁鎖,這次使用的電磁鎖工作電壓為DC 12V,M5Stack 繼電器模塊最高支持DC 30V 3A 的電源輸入。
配置完繼電器電路后硬件配置就大功告成了,本次撰寫程序?qū)⑹褂肕5Stack官方開發(fā)界面Uiflow,由于目前UiFlow脫機主機版本更新速度緩慢,筆者建議如果無線Wifi速度夠快,盡量使用遠程寫入Blocky,接下來將介紹透過Wifi無線的方式對M5Stack Core進行程序撰寫。
UiFlow 設(shè)定
Step 1 更新韌體
在建立聯(lián)機以前,必須先下載官方刻錄器(M5Burner)將韌體版本更新至最新。接上傳輸線后刻錄器會顯示COM Port編號,選擇最新版本的CORE UiFlow韌體版本,按下”Burn”完成刻錄。
Step 2 建立聯(lián)機
更新完韌體后,將Core切換至”Internet Mode”,選擇”Wi-Fi via AP”,進入聯(lián)機頁面后會看到地球符號閃爍。
打開筆電的Wifi搜尋AP熱點SSID名稱,每臺Core的名稱都不一樣筆者這里預設(shè)是M5-FB50 ,成功聯(lián)機后開啟瀏覽器分頁,在搜尋欄輸入 : [192.168.4.1]導入聯(lián)機設(shè)定頁面,輸入欲聯(lián)機的SSID與密碼。
成功聯(lián)機后瀏覽器顯示如下圖,Core的顯示器左上角的Wifi與聯(lián)機的圖標皆會顯示綠色,下方會顯示遠程聯(lián)機所使用到的API KEY,透過這樣的設(shè)定,Core會存取SSID與密碼,之后使用網(wǎng)絡(luò)模式就可以直接聯(lián)機,使用過多臺AP也可以至Setup > Server select 進行選擇。
接下來打開計算機的瀏覽器,重新連上因特網(wǎng),進入Uiflow 網(wǎng)頁版,將API KEY 填入,選擇Core的類型后按下”O(jiān)K”。
最下方的狀態(tài)欄會顯示目前建立聯(lián)機裝置的API KEY ,并顯示”Connected”,表示成功遠程聯(lián)機,可以開始使用Blocky積木撰寫程序。
功能設(shè)計與程序撰寫
Step1 設(shè)定模塊
在開始撰寫B(tài)locky前導入這次使用的Unit模塊函式庫,點選左下加號,繼電器模塊選擇Port B,指紋辨識模塊選擇Port C,RFID模塊選擇Port A ,選定模塊后記得按下右下角的OK確認。
導入模塊后會顯示在左方顯示面板,打開Unit選單確認是否正確導入模塊。
Step 2 撰寫門禁系統(tǒng)常用之子程序
導入模塊后,為了避免程序過于冗長首先撰寫門禁系統(tǒng)會重復使用到的幾個子程序。
1.系統(tǒng)默認狀態(tài)(STAY) : 在執(zhí)行完任何程序后,回歸此默認程序狀態(tài)。擊鍵的顯示功能與AC清除功能建立于此,找到AC按鈕的初始值(intial value)給予按下按鈕時之定義。Uiflow使用到的功能列 : 建立函式、判斷邏輯函式 、 鍵盤輸入功能 、UI組件、繼電器復歸 。
2.身分確認正確時之動作(UNLOCK) : 透過RFID、指紋辨識、密碼輸入、遠程遙控時如果身分確認正確時之動作,為了確保繼電器實作之安全在繼電器開啟后3秒自動關(guān)閉繼電器。Uiflow使用到的功能列 : 建立函式、蜂鳴器、判斷邏輯函式、UI組件、繼電器開啟與復歸。
3.身分確認錯誤時之動作(LOCK) : 透過RFID、指紋辨識、密碼輸入、遠程遙控時如果身分確認正確時之動作。Uiflow使用到的功能列 : 建立函式、蜂鳴器、判斷邏輯函式、UI組件。
Step3 設(shè)定網(wǎng)絡(luò)聯(lián)機與MQTT功能
設(shè)定網(wǎng)絡(luò)與聯(lián)機,這次的實作會透過Wifi聯(lián)機因特網(wǎng)并使用MQTT協(xié)議傳送每筆開門的數(shù)據(jù)并儲存于暫時的云端空間,MQTT是一種基于「發(fā)布∕訂閱」機制的訊息傳輸協(xié)議,類似社群媒體或是YOUTUBE的發(fā)影片和訂閱機制。
MQTT訊息發(fā)送端,相當于YOUTUBE的頻道或是IG的賬號,影片發(fā)布或是IG發(fā)文之后并不直接寄給訂閱者,而是交給服務器或者第三方(broker),來統(tǒng)籌管理發(fā)布和訂閱事宜。每一個訊息來源(影片/文章內(nèi)容)都有個唯一的主題名稱(影片名稱/文章名稱),代理人是個服務器軟件,向服務器發(fā)送主題的一方是發(fā)布者(publisher),從服務器獲取主題的一方則是訂閱者(subscriber)。
以下圖為例,傳送傳感器數(shù)據(jù)的一邊是發(fā)布者,接收傳感器數(shù)據(jù)的一邊則是訂閱者。每個傳感器∕微控器的訊息都需要有個主題名稱以利識別,像下圖的主題A、B和C。代理人(broker)可儲存發(fā)布者的訊息,在發(fā)布者中斷聯(lián)機的情況下,提供訂閱者最近更新的訊息。
「訂閱者」需要告知代理人想要訂閱的主題,每當「發(fā)布者」傳入新訊息時,代理人就會依照主題,傳送給所有訂閱者?!赴l(fā)布者」和「訂閱者」都是客戶端,代理人是服務器。由于兩個客戶端之間有服務器當作中繼站,所以兩邊并不需要知道彼此的IP地址。
首先設(shè)定門禁Core的Wifi聯(lián)機功能,打開Uiflow的Advanced選單,選擇Network中的“Connect ti Wi-Fi SSID”” PASSWORD ”并填入欲架設(shè)門禁系統(tǒng)位置可以聯(lián)機到的AP名稱與密碼。
為了確認Wifi是否聯(lián)機,加上一個判斷邏輯函式與屏幕的UI卷標組件,當Wifi聯(lián)機時呈現(xiàn)綠色,為聯(lián)機時呈現(xiàn)紅色,網(wǎng)絡(luò)聯(lián)機設(shè)定結(jié)束。Uiflow使用到的功能列 : 判斷邏輯函式、Wifi設(shè)定、UI組件。
門禁系統(tǒng)使用的MQTT Broker是HiveMQ 提供給所有使用者的免費broker,
打開瀏覽器進到Public Broker 里面查看Broker的 Host 與TCP Port,
接下來打開UiFlow的Advanced選單,使用MQTT主機設(shè)定與開啟MQTT功能,將Broker的TCP通訊端口與server填入,client設(shè)定一個用戶名稱,設(shè)定完成后Core就會在Wifi聯(lián)機的情況下開啟MQTT服務。Uiflow使用到的功能列 : MQTT功能
設(shè)定接收/發(fā)送MQTT訊息的手機端,在GOOGLE PLAY或是Apple app store 搜尋IoT MQTT Panel并下載開啟,IOT MQTT Panel 是一款輕巧方便的MQTT工具,內(nèi)含許多已經(jīng)設(shè)定好的Ui模板,付費的版本可以提供實時串聯(lián)手機通知的服務,在接收到新訊息的時候跳出通知。
開啟App后先安照先前設(shè)定CORE的broker TCP Port 跟 server (BrokerWeb)依序填入,Client同樣設(shè)定一個用戶的名字,這里記得增加一個功能Dashboard否則無法創(chuàng)建,筆者這里使用SmartLock_log 。
創(chuàng)立好Dashboard以后接著建立UI功能模塊(Add panel),我們總共要搭建兩個屬性的功能模塊,一個是紀錄門禁觸發(fā)的Text Log,一個則是遠程遙控的Switch開關(guān)。
Step4 門禁紀錄
建立一個門禁記錄功能,當門禁系統(tǒng)觸發(fā)確認身分功能時發(fā)送確認結(jié)果至此紀錄,工作原理為建立一個Topic(筆者這里設(shè)定為M5Stack_Log),提供門禁系統(tǒng)Core發(fā)送訊息至此Topic。功能模塊設(shè)定 : 調(diào)整顯示訊息的數(shù)量與字體大小、時間戳,手機實時通知功能(Enable notification)必須付費才能使用,設(shè)定完成后按下SAVE即完成創(chuàng)建。
Step5.門禁功能——遠程遙控開鎖
遠程遙控開關(guān) : 工作原理為在手機端設(shè)定一個Topic,根據(jù)手機上的UI開關(guān)狀態(tài)(ON/OFF)發(fā)出一則msg(筆者這里取作unlock/lock),門鎖上的Core透過訂閱手機端的Topic讀取msg,即可控制門鎖開關(guān)。
下方的勾選功能列,可以把下方的Show received timestamp以及Show sent timestamp勾選起來紀錄時間點,手機實時通知功能(Enable notification)必須付費才能使用,設(shè)定完成后按下SAVE即完成創(chuàng)建。
開啟Uiflow,建立遠程遙控功能,設(shè)定門禁CORE訂閱broker的Topic(Lock_Action)當手機端開啟開關(guān)時執(zhí)行開鎖子程序(UNLOCK)打開門鎖,并傳送門禁紀錄至手機的Topic(M5Stack_Log),訊息名稱為Remote_OPEN,注意名稱的大小寫是否正確,輸入錯誤的Topic會導致無法接收與傳送訊息。Uiflow使用到的功能列 : MQTT功能、判斷邏輯函式、文字、導入子程序函式。
遠程遙控結(jié)果成功電磁閥會作動一次,并顯示于Core屏幕上。手機端的紀錄模塊會顯示含時間戳的數(shù)據(jù)。
Step6 門禁功能——RFID
設(shè)定RFID門禁功能,首先在目前的MQTT設(shè)定功能底下加入一個主程序(Main)循環(huán),作為觸發(fā)判斷的主程序,并加入當有RFID卡靠近時功能觸發(fā)函式。Uiflow使用到的功能列 : MAIN函式建立、判斷邏輯函式 、RFID函式庫
建立RFID的判斷函式(RFID_decision)、RFID子程序(RFID_OK)、RFID子程序(RFID_Denied)。判斷函式(RFID_decision)作為當RFID正確時執(zhí)行子程序(RFID_OK)加上系統(tǒng)子程序(UNLOCK),或是當RFID錯誤時執(zhí)行子程序(RFID_Denied)加上系統(tǒng)子程序(LOCK)。
完成后記得在兩個RFID子程序內(nèi)加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log),RFID的UID可以透過Uiflow RFID功能取得。Uiflow使用到的功能列 : 建立RFID子程序函式、判斷邏輯函式 、RFID函式庫、UI組件、MQTT功能、文字、導入子程序函式。
RFID辨識功能成功電磁閥會作動一次并在Core上顯示正確,感應到錯誤的卡片顯示錯誤。
手機端的紀錄模塊顯示正確與錯誤(含時間戳)的資料。
Step6 門禁功能——按鍵密碼輸入
設(shè)定擊鍵密碼功能,在主程序(Main)循環(huán)下加入一個按鍵功能觸發(fā)函式,當鍵盤輸入的數(shù)字大于等于7個時觸發(fā)。Uiflow使用到的功能列 : 函式、判斷邏輯函式、文字 、鍵盤模塊函式。
建立密碼輸入的判斷函式(Password_decision)、密碼輸入子程序(RFID_OK)、密碼輸入子程序(RFID_Denied)。判斷函式(Password_decision)作為當密碼輸入正確時執(zhí)行子程序(Type_OK)加上系統(tǒng)子程序(UNLOCK),或是當密碼輸入錯誤時執(zhí)行子程序(Type_Denied)加上系統(tǒng)子程序(LOCK)。
完成后記得在兩個密碼輸入子程序內(nèi)加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log)。Uiflow使用到的功能列 : 建立密碼輸入子程序函式、判斷邏輯函式 、 鍵盤模塊函式、UI組件、MQTT功能、文字、導入子程序函式。
密碼輸入正確電磁閥會作動一次并在Core上顯示正確,輸入錯誤顯示錯誤。
手機端的紀錄模塊顯示密碼輸入正確與錯誤(含時間戳)的數(shù)據(jù)。
Step7 門禁功能——指紋辨識
建立指紋辨識輸入功能以前,必須先建立儲存權(quán)限機制,使用UiFlow EVENT功能加入按鍵觸發(fā),按下A時清除所有權(quán)限,按下B時設(shè)定權(quán)限存取。Uiflow使用到的功能列 : EVENT、UI組件、指紋辨識模塊函式庫、導入子程序函式。
指紋辨識的判別函式有別于前述之RFID與密碼輸入,可以直接使用Unit模塊選單中的Finger模塊函式庫設(shè)定判別函式,完成后記得在兩個指紋辨識子程序內(nèi)加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log)。Uiflow使用到的功能列 : 指紋辨識模塊函式庫、判斷邏輯函式、UI組件、MQTT功能、導入子程序函式。
辨識到已訪問權(quán)限的指紋,電磁閥會作動一次并在Core上顯示正確,無權(quán)限的指紋會顯示錯誤。(注意指紋辨識模塊須將手指按壓在模塊上一段時間方可存取數(shù)據(jù))
手機端的紀錄模塊顯示指紋是否含有權(quán)限(含時間戳)的資料。
Step8 門禁功能——攝影機
檢視門禁攝影機影像,將APCAM插上TypeC傳輸線供電,APCAM上的電源指示燈開啟,將計算機的Wifi設(shè)定開啟,與APCAM聯(lián)機后,打開瀏覽器在網(wǎng)址列輸入 : 192.168.4.1后即可串流影像。
小結(jié)
這次實作的門禁系統(tǒng)使用了RFID、指紋辨識、擊鍵等模塊快速地建立起硬設(shè)備,并使用MQTT通訊協(xié)議遠程遙控開啟門鎖與建立門禁紀錄,受限于Blocky的功能,像是AI人臉辨識等功能無法在UiFlow上實現(xiàn),影像串流后的YOLO偵測進階功能將在后續(xù)與大家做介紹。
審核編輯:湯梓紅
-
RFID
+關(guān)注
關(guān)注
388文章
6142瀏覽量
237748 -
IOT
+關(guān)注
關(guān)注
187文章
4202瀏覽量
196680 -
MQTT
+關(guān)注
關(guān)注
5文章
650瀏覽量
22487 -
智能門禁系統(tǒng)
+關(guān)注
關(guān)注
0文章
15瀏覽量
5053
原文標題:M5Stack IOT智能門禁系統(tǒng) – 基礎(chǔ)篇(Blockly+MQTT)
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論