<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

M5Stack IOT智能門禁系統–基礎篇(Blockly+MQTT)

jf_cVC5iyAO ? 來源:易心Microbit編程 ? 2023-01-05 10:20 ? 次閱讀

隨著進入智能化時代后,云端智能通訊裝置在我們的生活中已是非常的普及,本文章將使用M5Stack的UiFlow開發接口(Blocky)完成具備云端紀錄功能的門禁系統,包含4種認證開鎖(手機遠程遙控開鎖、RFID磁卡、擊鍵密碼、指紋辨識),并透過MQTT協議傳送門禁紀錄。

硬件配置

門禁系統使用M5Stack Faces模塊化套件包,FACES套件包含有一個控制核心(M5Stack Core)加上GBA、計算器、QWERTY鍵盤等不同的輸入設備,在這里我們使用計算器鍵盤模塊進行擊鍵,特別注意更換Faces模塊時請握住模塊兩側拔插,避免排針毀損。

接下來設定3個Unit 模塊,M5Stack RFID模塊使用的通訊界面是I2C,接入Core左側的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))。

d942b8a8-8c4d-11ed-bfe3-dac502259ad0.png

三種Unit模塊接線配置完成后,接著制作連接繼電器模塊的電路(如圖)控制電磁鎖,這次使用的電磁鎖工作電壓為DC 12V,M5Stack 繼電器模塊最高支持DC 30V 3A 的電源輸入。

d94b0382-8c4d-11ed-bfe3-dac502259ad0.png

配置完繼電器電路后硬件配置就大功告成了,本次撰寫程序將使用M5Stack官方開發界面Uiflow,由于目前UiFlow脫機主機版本更新速度緩慢,筆者建議如果無線Wifi速度夠快,盡量使用遠程寫入Blocky,接下來將介紹透過Wifi無線的方式對M5Stack Core進行程序撰寫。

UiFlow 設定

Step 1 更新韌體

在建立聯機以前,必須先下載官方刻錄器(M5Burner)將韌體版本更新至最新。接上傳輸線后刻錄器會顯示COM Port編號,選擇最新版本的CORE UiFlow韌體版本,按下”Burn”完成刻錄。

d9522a04-8c4d-11ed-bfe3-dac502259ad0.png

Step 2 建立聯機

更新完韌體后,將Core切換至”Internet Mode”,選擇”Wi-Fi via AP”,進入聯機頁面后會看到地球符號閃爍。

d9771620-8c4d-11ed-bfe3-dac502259ad0.png

打開筆電的Wifi搜尋AP熱點SSID名稱,每臺Core的名稱都不一樣筆者這里預設是M5-FB50 ,成功聯機后開啟瀏覽器分頁,在搜尋欄輸入 : [192.168.4.1]導入聯機設定頁面,輸入欲聯機的SSID與密碼。

d9841ce4-8c4d-11ed-bfe3-dac502259ad0.png

成功聯機后瀏覽器顯示如下圖,Core的顯示器左上角的Wifi與聯機的圖標皆會顯示綠色,下方會顯示遠程聯機所使用到的API KEY,透過這樣的設定,Core會存取SSID與密碼,之后使用網絡模式就可以直接聯機,使用過多臺AP也可以至Setup > Server select 進行選擇。

d99c0494-8c4d-11ed-bfe3-dac502259ad0.png

接下來打開計算機的瀏覽器,重新連上因特網,進入Uiflow 網頁版,將API KEY 填入,選擇Core的類型后按下”OK”。

d9a90ebe-8c4d-11ed-bfe3-dac502259ad0.png

最下方的狀態欄會顯示目前建立聯機裝置的API KEY ,并顯示”Connected”,表示成功遠程聯機,可以開始使用Blocky積木撰寫程序。

功能設計與程序撰寫

Step1 設定模塊

在開始撰寫Blocky前導入這次使用的Unit模塊函式庫,點選左下加號,繼電器模塊選擇Port B,指紋辨識模塊選擇Port C,RFID模塊選擇Port A ,選定模塊后記得按下右下角的OK確認。

d9b8593c-8c4d-11ed-bfe3-dac502259ad0.png

導入模塊后會顯示在左方顯示面板,打開Unit選單確認是否正確導入模塊。

d9c2f31a-8c4d-11ed-bfe3-dac502259ad0.png

Step 2 撰寫門禁系統常用之子程序

導入模塊后,為了避免程序過于冗長首先撰寫門禁系統會重復使用到的幾個子程序。

1.系統默認狀態(STAY) : 在執行完任何程序后,回歸此默認程序狀態。擊鍵的顯示功能與AC清除功能建立于此,找到AC按鈕的初始值(intial value)給予按下按鈕時之定義。Uiflow使用到的功能列 : 建立函式、判斷邏輯函式 、 鍵盤輸入功能 、UI組件、繼電器復歸 。

d9cb3976-8c4d-11ed-bfe3-dac502259ad0.png

2.身分確認正確時之動作(UNLOCK) : 透過RFID、指紋辨識、密碼輸入、遠程遙控時如果身分確認正確時之動作,為了確保繼電器實作之安全在繼電器開啟后3秒自動關閉繼電器。Uiflow使用到的功能列 : 建立函式、蜂鳴器、判斷邏輯函式、UI組件、繼電器開啟與復歸。

d9d42982-8c4d-11ed-bfe3-dac502259ad0.png

3.身分確認錯誤時之動作(LOCK) : 透過RFID、指紋辨識、密碼輸入、遠程遙控時如果身分確認正確時之動作。Uiflow使用到的功能列 : 建立函式、蜂鳴器、判斷邏輯函式、UI組件。

d9e9e7a4-8c4d-11ed-bfe3-dac502259ad0.png

Step3 設定網絡聯機與MQTT功能

設定網絡與聯機,這次的實作會透過Wifi聯機因特網并使用MQTT協議傳送每筆開門的數據并儲存于暫時的云端空間,MQTT是一種基于「發布∕訂閱」機制的訊息傳輸協議,類似社群媒體或是YOUTUBE的發影片和訂閱機制。

MQTT訊息發送端,相當于YOUTUBE的頻道或是IG的賬號,影片發布或是IG發文之后并不直接寄給訂閱者,而是交給服務器或者第三方(broker),來統籌管理發布和訂閱事宜。每一個訊息來源(影片/文章內容)都有個唯一的主題名稱(影片名稱/文章名稱),代理人是個服務器軟件,向服務器發送主題的一方是發布者(publisher),從服務器獲取主題的一方則是訂閱者(subscriber)。

以下圖為例,傳送傳感器數據的一邊是發布者,接收傳感器數據的一邊則是訂閱者。每個傳感器∕微控器的訊息都需要有個主題名稱以利識別,像下圖的主題A、B和C。代理人(broker)可儲存發布者的訊息,在發布者中斷聯機的情況下,提供訂閱者最近更新的訊息。

「訂閱者」需要告知代理人想要訂閱的主題,每當「發布者」傳入新訊息時,代理人就會依照主題,傳送給所有訂閱者?!赴l布者」和「訂閱者」都是客戶端,代理人是服務器。由于兩個客戶端之間有服務器當作中繼站,所以兩邊并不需要知道彼此的IP地址。

d9f1dfb8-8c4d-11ed-bfe3-dac502259ad0.png

首先設定門禁Core的Wifi聯機功能,打開Uiflow的Advanced選單,選擇Network中的“Connect ti Wi-Fi SSID”” PASSWORD ”并填入欲架設門禁系統位置可以聯機到的AP名稱與密碼。

為了確認Wifi是否聯機,加上一個判斷邏輯函式與屏幕的UI卷標組件,當Wifi聯機時呈現綠色,為聯機時呈現紅色,網絡聯機設定結束。Uiflow使用到的功能列 : 判斷邏輯函式、Wifi設定、UI組件。

d9fb0638-8c4d-11ed-bfe3-dac502259ad0.png

門禁系統使用的MQTT Broker是HiveMQ 提供給所有使用者的免費broker,

打開瀏覽器進到Public Broker 里面查看Broker的 Host 與TCP Port,

接下來打開UiFlow的Advanced選單,使用MQTT主機設定與開啟MQTT功能,將Broker的TCP通訊端口與server填入,client設定一個用戶名稱,設定完成后Core就會在Wifi聯機的情況下開啟MQTT服務。Uiflow使用到的功能列 : MQTT功能

da06425a-8c4d-11ed-bfe3-dac502259ad0.png

da0e8f50-8c4d-11ed-bfe3-dac502259ad0.png

設定接收/發送MQTT訊息的手機端,在GOOGLE PLAY或是Apple app store 搜尋IoT MQTT Panel并下載開啟,IOT MQTT Panel 是一款輕巧方便的MQTT工具,內含許多已經設定好的Ui模板,付費的版本可以提供實時串聯手機通知的服務,在接收到新訊息的時候跳出通知。

da171620-8c4d-11ed-bfe3-dac502259ad0.png

開啟App后先安照先前設定CORE的broker TCP Port 跟 server (BrokerWeb)依序填入,Client同樣設定一個用戶的名字,這里記得增加一個功能Dashboard否則無法創建,筆者這里使用SmartLock_log 。

da1df558-8c4d-11ed-bfe3-dac502259ad0.png

創立好Dashboard以后接著建立UI功能模塊(Add panel),我們總共要搭建兩個屬性的功能模塊,一個是紀錄門禁觸發的Text Log,一個則是遠程遙控的Switch開關。

da2a1a40-8c4d-11ed-bfe3-dac502259ad0.png

Step4 門禁紀錄

建立一個門禁記錄功能,當門禁系統觸發確認身分功能時發送確認結果至此紀錄,工作原理為建立一個Topic(筆者這里設定為M5Stack_Log),提供門禁系統Core發送訊息至此Topic。功能模塊設定 : 調整顯示訊息的數量與字體大小、時間戳,手機實時通知功能(Enable notification)必須付費才能使用,設定完成后按下SAVE即完成創建。

da322082-8c4d-11ed-bfe3-dac502259ad0.png

Step5.門禁功能——遠程遙控開鎖

遠程遙控開關 : 工作原理為在手機端設定一個Topic,根據手機上的UI開關狀態(ON/OFF)發出一則msg(筆者這里取作unlock/lock),門鎖上的Core透過訂閱手機端的Topic讀取msg,即可控制門鎖開關。

下方的勾選功能列,可以把下方的Show received timestamp以及Show sent timestamp勾選起來紀錄時間點,手機實時通知功能(Enable notification)必須付費才能使用,設定完成后按下SAVE即完成創建。

da3c958a-8c4d-11ed-bfe3-dac502259ad0.png

開啟Uiflow,建立遠程遙控功能,設定門禁CORE訂閱broker的Topic(Lock_Action)當手機端開啟開關時執行開鎖子程序(UNLOCK)打開門鎖,并傳送門禁紀錄至手機的Topic(M5Stack_Log),訊息名稱為Remote_OPEN,注意名稱的大小寫是否正確,輸入錯誤的Topic會導致無法接收與傳送訊息。Uiflow使用到的功能列 : MQTT功能、判斷邏輯函式、文字、導入子程序函式。

da481c98-8c4d-11ed-bfe3-dac502259ad0.png

遠程遙控結果成功電磁閥會作動一次,并顯示于Core屏幕上。手機端的紀錄模塊會顯示含時間戳的數據。

da51f92a-8c4d-11ed-bfe3-dac502259ad0.png

Step6 門禁功能——RFID

設定RFID門禁功能,首先在目前的MQTT設定功能底下加入一個主程序(Main)循環,作為觸發判斷的主程序,并加入當有RFID卡靠近時功能觸發函式。Uiflow使用到的功能列 : MAIN函式建立、判斷邏輯函式 、RFID函式庫

da595d3c-8c4d-11ed-bfe3-dac502259ad0.png

建立RFID的判斷函式(RFID_decision)、RFID子程序(RFID_OK)、RFID子程序(RFID_Denied)。判斷函式(RFID_decision)作為當RFID正確時執行子程序(RFID_OK)加上系統子程序(UNLOCK),或是當RFID錯誤時執行子程序(RFID_Denied)加上系統子程序(LOCK)。

完成后記得在兩個RFID子程序內加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log),RFID的UID可以透過Uiflow RFID功能取得。Uiflow使用到的功能列 : 建立RFID子程序函式、判斷邏輯函式 、RFID函式庫、UI組件、MQTT功能、文字、導入子程序函式。

da6302a6-8c4d-11ed-bfe3-dac502259ad0.png

RFID辨識功能成功電磁閥會作動一次并在Core上顯示正確,感應到錯誤的卡片顯示錯誤。

手機端的紀錄模塊顯示正確與錯誤(含時間戳)的資料。

da6c3452-8c4d-11ed-bfe3-dac502259ad0.png

Step6 門禁功能——按鍵密碼輸入

設定擊鍵密碼功能,在主程序(Main)循環下加入一個按鍵功能觸發函式,當鍵盤輸入的數字大于等于7個時觸發。Uiflow使用到的功能列 : 函式、判斷邏輯函式、文字 、鍵盤模塊函式。

da7fc454-8c4d-11ed-bfe3-dac502259ad0.png

建立密碼輸入的判斷函式(Password_decision)、密碼輸入子程序(RFID_OK)、密碼輸入子程序(RFID_Denied)。判斷函式(Password_decision)作為當密碼輸入正確時執行子程序(Type_OK)加上系統子程序(UNLOCK),或是當密碼輸入錯誤時執行子程序(Type_Denied)加上系統子程序(LOCK)。

完成后記得在兩個密碼輸入子程序內加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log)。Uiflow使用到的功能列 : 建立密碼輸入子程序函式、判斷邏輯函式 、 鍵盤模塊函式、UI組件、MQTT功能、文字、導入子程序函式。

da863d48-8c4d-11ed-bfe3-dac502259ad0.png

密碼輸入正確電磁閥會作動一次并在Core上顯示正確,輸入錯誤顯示錯誤。

手機端的紀錄模塊顯示密碼輸入正確與錯誤(含時間戳)的數據。

da92ecc8-8c4d-11ed-bfe3-dac502259ad0.png

Step7 門禁功能——指紋辨識

建立指紋辨識輸入功能以前,必須先建立儲存權限機制,使用UiFlow EVENT功能加入按鍵觸發,按下A時清除所有權限,按下B時設定權限存取。Uiflow使用到的功能列 : EVENT、UI組件、指紋辨識模塊函式庫、導入子程序函式。

daab9c14-8c4d-11ed-bfe3-dac502259ad0.png

指紋辨識的判別函式有別于前述之RFID與密碼輸入,可以直接使用Unit模塊選單中的Finger模塊函式庫設定判別函式,完成后記得在兩個指紋辨識子程序內加入MQTT推送功能,不管正確或是錯誤都會推送訊息到Topic(M5Stack_Log)。Uiflow使用到的功能列 : 指紋辨識模塊函式庫、判斷邏輯函式、UI組件、MQTT功能、導入子程序函式。

dab3f6f2-8c4d-11ed-bfe3-dac502259ad0.png

辨識到已訪問權限的指紋,電磁閥會作動一次并在Core上顯示正確,無權限的指紋會顯示錯誤。(注意指紋辨識模塊須將手指按壓在模塊上一段時間方可存取數據)

手機端的紀錄模塊顯示指紋是否含有權限(含時間戳)的資料。

dabb7968-8c4d-11ed-bfe3-dac502259ad0.png

Step8 門禁功能——攝影機

檢視門禁攝影機影像,將APCAM插上TypeC傳輸線供電,APCAM上的電源指示燈開啟,將計算機的Wifi設定開啟,與APCAM聯機后,打開瀏覽器在網址列輸入 : 192.168.4.1后即可串流影像。

dacf155e-8c4d-11ed-bfe3-dac502259ad0.png

小結

這次實作的門禁系統使用了RFID、指紋辨識、擊鍵等模塊快速地建立起硬設備,并使用MQTT通訊協議遠程遙控開啟門鎖與建立門禁紀錄,受限于Blocky的功能,像是AI人臉辨識等功能無法在UiFlow上實現,影像串流后的YOLO偵測進階功能將在后續與大家做介紹。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RFID
    +關注

    關注

    384

    文章

    5843

    瀏覽量

    235428
  • IOT
    IOT
    +關注

    關注

    186

    文章

    4039

    瀏覽量

    193860
  • MQTT
    +關注

    關注

    5

    文章

    555

    瀏覽量

    22152
  • 智能門禁系統

    關注

    0

    文章

    15

    瀏覽量

    4984

原文標題:M5Stack IOT智能門禁系統 – 基礎篇(Blockly+MQTT)

文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    從0到1學習M5stack系列教程(一)Hello World

    `是否你已經厭倦了傳統的開發板,是否你需要一種更快捷的方式來堆疊硬件、編寫程序?本系列教程帶你認識一種全新的開發硬件——M5Stack。上圖就是M5Satck和具備各種功能的模塊,根據使用需要進行
    發表于 08-09 20:00

    從0到1學習M5Stack系列教程(三)掃描WiFi網絡

    M5Stack支持wifi因此可以方便的連接到WiFi網絡,本節介紹如何使用M5Stack掃描附近的WiFi網絡,顯示到屏幕上。以下內容主要涉及到WiFi庫的使用以及簡單的屏幕菜單繪制
    發表于 08-22 17:25

    M5Stack學習Arduino(四)WebServer服務

    本帖最后由 M5Stack 于 2019-8-26 11:03 編輯 M5Stack內置了TF卡槽,因此可以方便的讀寫文件,本節將利用M5Stack做一個Markdown的網絡服務器
    發表于 08-26 10:42

    適用于Arduino和M5Stack的MH-Z19B二氧化碳傳感器

    描述MH-Z19B 用于 M5StackMH-Z19B是一款易于使用的二氧化碳傳感器,適用于 Arduino 和 M5Stack。我做了這個板來檢查工作中的二氧化碳水平。通過將其安裝在 M5Stack 旁邊,您可以節省空間并消除
    發表于 08-16 07:03

    是否有機會看到ESP BASIC的ESP32或M5Stack版本?

    我們是否有機會看到 ESP BASIC 的 ESP32 或 M5Stack 版本?如果在 M5Stack 中安裝帶有 FACES 鍵盤的解釋器,那將是不可思議的!
    發表于 05-10 08:22

    M5Stack設備裝飾圣誕樹

    電子發燒友網站提供《用M5Stack設備裝飾圣誕樹.zip》資料免費下載
    發表于 11-18 09:45 ?0次下載
    用<b class='flag-5'>M5Stack</b>設備裝飾圣誕樹

    配備M5Stack智能工廠

    電子發燒友網站提供《配備M5Stack智能工廠.zip》資料免費下載
    發表于 12-09 10:19 ?0次下載
    配備<b class='flag-5'>M5Stack</b>的<b class='flag-5'>智能</b>工廠

    M5Stack的音頻頻譜顯示

    電子發燒友網站提供《帶M5Stack的音頻頻譜顯示.zip》資料免費下載
    發表于 12-28 11:32 ?0次下載
    帶<b class='flag-5'>M5Stack</b>的音頻頻譜顯示

    基于M5Stack的抗COVID安全門

    電子發燒友網站提供《基于M5Stack的抗COVID安全門.zip》資料免費下載
    發表于 02-09 09:55 ?0次下載
    基于<b class='flag-5'>M5Stack</b>的抗COVID安全門

    樂高機械組M5Stack溫度監控器

    電子發燒友網站提供《樂高機械組M5Stack溫度監控器.zip》資料免費下載
    發表于 06-14 15:27 ?0次下載
    樂高機械組<b class='flag-5'>M5Stack</b>溫度監控器

    M5Stack智能植物澆水開源項目

    電子發燒友網站提供《M5Stack智能植物澆水開源項目.zip》資料免費下載
    發表于 06-14 09:58 ?2次下載
    <b class='flag-5'>M5Stack</b><b class='flag-5'>智能</b>植物澆水開源項目

    M5Stack的工廠監控系統

    電子發燒友網站提供《帶M5Stack的工廠監控系統.zip》資料免費下載
    發表于 06-26 11:43 ?1次下載
    帶<b class='flag-5'>M5Stack</b>的工廠監控<b class='flag-5'>系統</b>

    M5Stack圣誕雪球開源分享

    電子發燒友網站提供《M5Stack圣誕雪球開源分享.zip》資料免費下載
    發表于 06-28 10:26 ?0次下載
    <b class='flag-5'>M5Stack</b>圣誕雪球開源分享

    StickC M5Stack LED閃爍

    電子發燒友網站提供《StickC M5Stack LED閃爍.zip》資料免費下載
    發表于 06-29 11:35 ?0次下載
    StickC <b class='flag-5'>M5Stack</b> LED閃爍

    樂鑫科技宣布收購M5Stack(明棧信息科技)的控股權

    樂鑫科技 (688018.SH) 宣布收購 M5Stack(明棧信息科技)的控股權。這一戰略舉措對于物聯網和嵌入式系統領域的兩家公司來說都是一個重要的里程碑,也契合了樂鑫和 M5Stack 共同推動 AIoT 技術民主化的愿景。
    的頭像 發表于 04-22 15:46 ?477次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>