目的
構(gòu)建一個具有 3D 面部識別功能的智能開門器
適用于一個或兩個家庭的房子。
所需材料
英特爾實(shí)感 ID F455 攝像頭
樹莓派 4B >= 4 GB 內(nèi)存
Geeek Pi Raspberry Pi 4 護(hù)甲箱
16 GB 或更高的 microSD 存儲卡,例如 Samsung EVO Select 64 GB microSD
明緯 IRM-60-5ST 5V 10A 電源
Lindby 的傳感器外墻燈 Severina 作為外殼
RGB LED 64x32 P2,5 矩陣模塊 160mm x 80mm 例如 Adafruit 5036
E18-D80NK IR反射鏡+10KΩ上拉電阻
40 針 GPIO 帶狀電纜或 10x 公/母跳線,20x 母/母跳線
M3 黃銅間隔螺栓 4x 40mm、4x15mm、2x 10mm
8 個 M3 螺母,用于將間隔螺栓固定到外殼的后面板
4x M2.5 螺釘 12mm,用于將 Raspi 連接到外殼的后面板
? 英寸螺絲,用于將相機(jī)固定在機(jī)箱底部
外殼底部用于 USB 電纜的電纜索環(huán)
用于絕緣低壓電源端子的收縮管
用于前門蜂鳴器的基于 IP 的接口,例如 Siedle 網(wǎng)關(guān)(德國品牌內(nèi)部對講機(jī))
可選:帶有 40 針間距堆疊接頭的 Adafruit RGB 矩陣式發(fā)動機(jī)罩 - 增加矩陣式發(fā)動機(jī)罩與電路板的距離,使其突出于裝甲箱
可選:PIR 傳感器 HC-SR 501 作為替代存在檢測器和 E18-D80NK 回歸反射傳感器的替代品
所需工具
鉆頭
螺絲刀
烙鐵
前提
2021 年初,英特爾通過發(fā)布 RealSense ID F455 攝像頭采納了這一原則,并為制造商提供了一款有趣的產(chǎn)品,可集成到自制解決方案中。該相機(jī)通過大量文檔、適用于 Linux、Windows 和 Android 的開源 SDK 以及 C、C++、C# 和 Python 語言來評分。與 Apple 相比,它允許對多個人進(jìn)行身份驗(yàn)證,他們的個人資料要么集中存儲在服務(wù)器上,要么存儲在相機(jī)本身的數(shù)據(jù)庫中。英特爾和蘋果給出的“錯誤錄取率”——即被錯誤錄取的人數(shù)——為 1:100 萬。相機(jī)的整個認(rèn)證過程不到一秒鐘。
功能性
智能開門器取代了過時的入口照明,因此被安置在一個外殼中。該系統(tǒng)僅由主電壓供電,并通過內(nèi)部 WIFI 進(jìn)行通信。因此,必須確保準(zhǔn)入控制的位置具有適當(dāng)?shù)?WIFI 接收。
由于相機(jī)本身沒有存在檢測器,它由紅外反射光屏障觸發(fā)。要求入場的人將手擦過擋光板或靠近他們的臉。可以短暫看到機(jī)箱底部倒置攝像頭的紅外照明器發(fā)出微弱的紅光。攝像頭現(xiàn)在將波長為 850 nm 的不可見紅外點(diǎn)投射到面部,通過側(cè)面集成的兩個全高清攝像頭記錄它們,并使用它們形成三維點(diǎn)云,并通過 AI 與存儲的面部輪廓進(jìn)行比較推理。相機(jī)需要不到一秒鐘的時間進(jìn)行此身份驗(yàn)證過程,并通過 USB 電纜將結(jié)果(在肯定的情況下是識別人的姓名)傳輸?shù)?Raspberry Pi 計(jì)算機(jī)。
由于我們只使用一臺相機(jī),這些配置文件本地存儲在相機(jī)上。對于具有多個訪問權(quán)限的身份驗(yàn)證,攝像機(jī)提供了一種服務(wù)器模式,其中訪問配置文件存儲在中央服務(wù)器上,因此可以由多個攝像機(jī)使用。如果驗(yàn)證通過,則被識別人的姓名會在 LED 矩陣顯示屏上顯示幾秒鐘,然后通過 WIFI 使用 MQTT 命令打開門。空閑時,LED 矩陣面板顯示時間、星期幾和當(dāng)前日期。您可以在此處通過 YouTube 視頻找到其工作原理的演示:識別出的人名會在 LED 矩陣顯示屏上顯示幾秒鐘,然后通過 WIFI 使用 MQTT 命令打開門。空閑時,LED 矩陣面板顯示時間、星期幾和當(dāng)前日期。您可以在此處通過 YouTube 視頻找到其工作原理的演示:識別出的人名會在 LED 矩陣顯示屏上顯示幾秒鐘,然后通過 WIFI 使用 MQTT 命令打開門。空閑時,LED 矩陣面板顯示時間、星期幾和當(dāng)前日期。
硬件設(shè)置
在這里我使用了帶有 Raspberry PI OS aka Raspian 的 Raspberry 4B 用作主機(jī)。
我們決定在不銹鋼外殼中安裝戶外燈,當(dāng)放置在前門前時,它會散發(fā)出不顯眼的圖像。除了 Raspi 之外,它還包含一個功率為 50 瓦的 5V 電源、一個回歸反射傳感器和一個分辨率為 64x32 RGB LED 的 Adafruit 5036 LED 矩陣顯示器。它使用 4 個間隔螺栓連接到外殼的底板,每個間隔螺栓的長度為 55 毫米(40 毫米 + 15 毫米)。矩陣模塊的厚度為 15 毫米,因此底板和磨砂丙烯酸玻璃之間的距離為 70 毫米。為確保 LED 矩陣內(nèi)容不會因緞面處理而變得過于模糊,LED 矩陣模塊與丙烯酸玻璃直接接觸非常重要。
接線
將 RGB 矩陣顯示器連接到 Raspberry PI 有 2 個選項(xiàng):
Adafruit RGB Matrix Hat/Bonnet:此插件板通過 LED 矩陣模塊隨附的 HUB75 連接器提供整齊的布線。為了避免插件板不妨礙 Raspi Armor Case,必須使用 40 針間距堆疊接頭將其抬起。這造成了更高設(shè)計(jì)的缺點(diǎn)。6厘米。由于 Raspi 安裝在與傳感器相對的外殼下部,因此可以使用 PIR 傳感器 HC-SR 501,但在組裝外殼長度為 5.5 厘米的 E18-D80NK 紅外光柵時會導(dǎo)致碰撞的燈殼。因此,在使用 E18-D80NK 光柵時,我們建議使用如下所示的分立接線或交換位置 - 電源單元在外殼下部,Raspi 在上部!Raspi 通過插頭或 Adafruit 閥蓋上的螺絲端子供電。此外,Adafruit Bonnet 使用其他用于通信的GPIO端口,因此在 Adafruit Bonnet 案例中,我們使用 GPIO 19 作為存在傳感器。因此,傳感器輸出的跨接電纜必須焊接到閥蓋上。
使用跨接電纜或帶狀電纜的離散接線稍微復(fù)雜一點(diǎn),但功能相同。存在傳感器(PIR 或光電傳感器)用于在離散接線的情況下連接到GPIO 引腳 5。Meanwell 電源在低壓輸出端有一個 4 針螺釘端子,通過隨附的電源線為 RGB 矩陣和 Raspi 通過 GPIO 引腳 2 提供 5V 電源和 GPIO 引腳 39 用于接地。我們不建議使用跨接電纜為 Raspi 供電,而是使用具有更高橫截面和更快速端子的更粗電纜。為此,我們重新使用了 LED Matrix 電源的 2 個冗余電纜夾,用小螺絲刀將它們拉出,并用收縮管覆蓋它們,這樣就不會有 GPIO 引腳 2 短路的風(fēng)險(xiǎn)。
PIR傳感器
為 PIR 傳感器的鏡頭預(yù)留的前部外殼孔,通過用兩個封閉的塑料螺母將反射式紅外光屏障的內(nèi)外擰緊,將反射式紅外光屏障填充。傳感器通過矩陣式閥蓋提供 5V 電壓。如果使用 Adafruit Matrix Bonnet,棕色電纜將連接到標(biāo)有“5V Out”的端子。
使用離散接線,有幾種方法可以從GPIO引腳獲得 5V 電壓。例如,引腳 4 上的 +5V 和 GND - 藍(lán)色電纜 - 引腳 34 上。傳感器輸出 - 黑色電纜 - 連接到引腳 29 或邏輯 GPIO 端口 5。
如果您沒有對面的墻壁或類似的反射紅外光的物體,您可以使用 PIR 傳感器,例如 HC-SR 501,而不是光柵。在我們的案例中,這記錄了許多誤報(bào)事件,因此經(jīng)常觸發(fā)相機(jī),因?yàn)?LED 矩陣模塊對人眼來說是不可見的閃爍,并通過對面的墻壁刺激 PIR 傳感器。
機(jī)箱安裝
Severina by Lindby 傳感器控制的戶外壁燈外殼采用 160 毫米 x 80 毫米尺寸的 RGB LED 矩陣,并提供足夠的空間來容納所有組件。要安裝它,您必須在后面板上鉆幾個孔。
攝像機(jī)用 1/4 英寸螺釘從外殼內(nèi)部擰到下部不銹鋼板上。為了防止貴重的相機(jī)簡單地扭斷,它用兩個 10 毫米長的間隔螺栓固定。
軟件安裝
對于軟件安裝,我們假設(shè)一個新安裝的 Raspberry Pi OS aka Raspian,它通過內(nèi)部 WIFI 連接到 Internet。我們還建議通過 Raspberry Pi 系統(tǒng)配置打開 ssh 和 vnc 服務(wù)以進(jìn)行遠(yuǎn)程訪問。
程序“dooropenerF455”基于兩個軟件模塊:第一,英特爾的 RealSense ID SDK,用于控制 3D 攝像頭,第二,Henner Zeller 的 RPI LED 矩陣模塊。我們使用 MQTT 接口打開門,因此將 Mosquitto 安裝為 MQTT 代理:
# installation of smartdoorF455
# bring Raspi up2date and get additional software developement tools
sudo apt update -y
sudo apt upgrade -y
# install essential development tooling
sudo apt install cmake build-essential -y
# mosquitto is the MQTT broker
sudo apt install mosquitto mosquitto-dev libmosquittopp-dev mosquitto-clients -y
# libgraphicsmagick++-dev is required to build rpi-rgb-led-matrix utilities
sudo apt install libgraphicsmagick++-dev libwebp-dev -y
# you may want to encrypt network communication
sudo apt install libssl-dev libcurl4-openssl-dev -y
# let's build the RealSense ID SDK by Intel
cd ~
git clone https://github.com/IntelRealSense/RealSenseID.git
cd RealSenseID
mkdir build
cd build
cmake ..
make -j4
# let's build the rpi-rgb-led-matrix library by Henner Zeller
cd ~
git clone https://github.com/hzeller/rpi-rgb-led-matrix.git
cd rpi-rgb-led-matrix/
make -C examples-api-use
# let's build the smartdoorF455 application
cd ~
git clone https://github.com/joergwall/smartdoorF455.git
cd smartdoorF455
mkdir build
cd build
cmake ..
make -j4
編譯后的 C++ 二進(jìn)制可執(zhí)行文件“smartdoorF455”或 C 掛件“smartdoorF455_c”現(xiàn)在應(yīng)該存在于 ~/smartdoorF455/bin 目錄中。源代碼可以在 ~/smartdoorF455/cpp 或 ~/smartdoorF455/c 中找到。該程序通過帶有 sudo 的 shell 腳本啟動:
cd ~/smartdoorF455/bin
sudo ./run_smartdoorF455.sh
或者誰更喜歡編程語言 C 的變體:
sudo ./run_smartdoorF455_c.sh
并根據(jù)用戶名和時間/日期提供以下輸出:
/home/pi/log created
smartdoorF455 started successfully
watch /home/pi/log/20211216_092446_smartdoorF455.log for errors
即使相機(jī)還沒有排練一張臉,時間、星期幾和日期現(xiàn)在也應(yīng)該是可見的。如果不是這種情況,請轉(zhuǎn)到故障排除一章。
人臉進(jìn)行身份驗(yàn)證
為了將授權(quán)用戶的臉帶入相機(jī),我們使用了一個帶有命令行界面的工具。如果設(shè)備 /dev/ttyACM0 丟失,請改用 /dev/ttyACM1。當(dāng)前存儲在相機(jī)中的參數(shù)和選擇菜單現(xiàn)在出現(xiàn)。旋轉(zhuǎn)參數(shù)可以在“s”菜單中設(shè)置為 0 或顛倒設(shè)置為 180,具體取決于相機(jī)是否倒置 - 即取決于相機(jī)是倒置在外殼上還是直立,例如在隨附的 mini 上三腳架。菜單項(xiàng)“e”提供了在相機(jī)上使用本地配置文件存儲的培訓(xùn)。臉部應(yīng)距離相機(jī)約 30 至 50 厘米。然后該過程如下所示:
# enroll user for authentication
cd ~/RealsenseID/build/bin
sudo ./rsid-cli /dev/ttyACM0
Connected to device
Authentication settings::
* Rotation: 0 Degrees
* Security: High
* Algo flow Mode: All
* Face policy : Single
* Dump Mode: CroppedFace
* Matcher Confidence Level : High
Please select an option:
'e' to enroll.
'a' to authenticate.
'd' to delete all users.
'c' to capture images from device.
's' to set authentication settings.
'g' to query authentication settings.
'u' to query ids of users.
'n' to query number of users.
'b' to save device's database before standby.
'v' to view additional information.
'x' to ping the device.
'q' to quit.
server mode options:
'E' to enroll with faceprints.
'A' to authenticate with faceprints.
'U' to list enrolled users
'D' to delete all users.
> e
User id to enroll: Julia
Connected to device
*** Hint Success
*** Hint Success
這樣,所有授權(quán)人員的面部輪廓都被學(xué)習(xí)了。指定名稱時,請注意RGB LED 矩陣模塊只能顯示少量字母。使用我們使用的字體,這些只有 5 個字符。如有需要,請?jiān)谠创a第 99 行使用縮寫或縮小 BDF 字體的大小,這樣一行最多可以顯示 8 個字符
#define FONT_NAME FONT_PATH "4x6.bdf"
源代碼
~/smartdoorF455/cpp 或 ~/smartdoorF455/c 下的源代碼必須適應(yīng)情況。是使用 MQTT 還是使用 Adafruit Bonnet 來連接 LED RGB 矩陣模塊?這將在源代碼中使用適當(dāng)?shù)?define 常量定義進(jìn)行調(diào)整。例如,如果使用 Adafruit Bonnet,則使用 GPIO 19 而不是 GPIO 5 用于紅外反射光柵,因?yàn)?RGB 矩陣是通過其他 GPIO 引腳控制的:
/* START SYSTEM CONFIGURATION SECTION */
#define MOSQUITTO_IN_USE /* comment this line, if MQTT is not used to open door */
#define ADAFRUIT_BONNET_IN_USE /* comment this line, if you have direct cable wiring from Raspi to LED Matrix */
#define STDOUT_ADDTL_INFO /* provides additional information on stdout e.g. prints date/time when movement sensor triggers camera */
/* END SYSTEM CONFIGURATION SECTION */
開門指令
為了能夠使用此處介紹的解決方案解鎖前門,門對講機(jī)必須提供 IP 接口。如果你想解決這個項(xiàng)目的副本,你應(yīng)該首先詳細(xì)分析貝爾系統(tǒng)的當(dāng)前狀態(tài),并嘗試找到添加IP接口的方法。
我們需要處理基于 Siedle 總線的門禁對講機(jī),因此使用 Oskar Neumann 的網(wǎng)關(guān),該網(wǎng)關(guān)通過 WIFI 將 MQTT 命令轉(zhuǎn)換為 Siedle 總線,但是市場上不再提供。Siedle 提供 Smart Gateway SG-150 作為 IP 接口,然而,對于自建項(xiàng)目來說,價格超過 600 美元是一大筆錢。我們尚未檢查的 Siedle IP 接口的其他替代方案是第三方網(wǎng)關(guān),例如Hamares或SMS Guard的智能開門器,它也提供 MQTT 接口。
任何已經(jīng)在使用基于 IP 的門對講系統(tǒng)的人都可以擺脫困境,并且可以在標(biāo)有“TRIGGER DOOR OPENER START”和“TRIGGER DOOR OPENER END”的 C/C++ 代碼之間調(diào)整源代碼來觸發(fā)開門器。例如,如果此觸發(fā)器是一個 http 請求,則可以使用 Linux 系統(tǒng)調(diào)用將其插入到 ~/smartdoorF455/c/main.c 或 ~/smartdoorF455/cpp/main.cpp 文件中:
/* TRIGGER DOOR OPENER START - ADAPT THIS CODE according to your interface to
your door buzzer */
/* exemplary adaptation of the C/C++ code */
/* Assumption: the door opener can be opened with the http request */
/* ------- http://192.168.178.27:8083/fhem?cmd=set%20Siedle%20open */
/* Make sure the curl module is installed in Raspian: */
/* sudo apt install curl */
/* Since no MQTT protocol is used for the door opener */
/* remove those enclosed between "#ifdef MOSQUITTO_IN_USE" and "#endif" */
/* lines. */
system("curl http://192.168.178.27:8083/fhem?cmd=set%20Siedle%20open");
/* TRIGGER DOOR OPENER END */
Mosquitto MQTT 代理
如果使用 MQTT 與開門機(jī)通信,則必須創(chuàng)建以下配置文件用于 Raspi 上的 MQTT 代理的配置:
sudo nano /etc/mosquitto/conf.d/mymosquitto.conf
# add following lines
listener 1883
listener 1884
allow_anonymous true
之后,重新啟動代理:
sudo systemctl restart mosquitto
mosquitto 客戶端允許我們竊聽代理交換的消息以進(jìn)行調(diào)試
mosquitto_sub -d -t "#"
攝像頭安全
英特爾在 RealSense ID SDK 中提供了一種安全通信模式。此模式使相機(jī)能夠與主機(jī)系統(tǒng)配對并加密通信。這消除了不速之客通過另一個實(shí)感 ID 攝像頭(通過 USB-C 快速插入)和其他面部配置文件獲得未經(jīng)授權(quán)訪問的可能性。由于復(fù)雜的原因,我們這里沒有使用這種模式。
優(yōu)化
為了從進(jìn)程調(diào)度程序的管理中刪除四個處理器內(nèi)核之一,以便將其留給我們的應(yīng)用程序獨(dú)占使用,必須修改以下文件:
sudo nano /boot/cmdline.txt
“isolcpus=3” 附加到行尾,使其看起來像這樣:
console=serial0,115200 console=tty1 root=PARTUUID=e0d8ecc0-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles isolcpus=3
此步驟在重新啟動計(jì)算機(jī)后生效,旨在防止 LED 矩陣顯示屏出現(xiàn)任何閃爍。我們程序的處理器親和性在 run_smartdoor_F455.sh 使用 taskset 命令的啟動腳本結(jié)束時分配給釋放的 CPU。
結(jié)論
三維生物特征面部識別的用戶身份驗(yàn)證是一個新領(lǐng)域,為創(chuàng)客社區(qū)開辟了令人興奮的應(yīng)用場景。但很可惜,英特爾在宣布僅僅8個月后就埋下了這個新的業(yè)務(wù)領(lǐng)域。盡管如此,我們還是對這款 3D 相機(jī)充滿熱情,并且作為開門器(或者,正確地說,作為門釋放器,因?yàn)槟匀槐仨氉约捍蜷_前門),他們一直在可靠地完成他們的工作。
-
攝像頭
+關(guān)注
關(guān)注
60文章
4872瀏覽量
96466 -
面部識別
+關(guān)注
關(guān)注
1文章
375瀏覽量
26730 -
PIR傳感器
+關(guān)注
關(guān)注
3文章
57瀏覽量
9753
發(fā)布評論請先 登錄
相關(guān)推薦
SciChart 3D for WPF圖表庫
![SciChart <b class='flag-5'>3D</b> for WPF圖表庫](https://file1.elecfans.com/web3/M00/06/FA/wKgZPGeR2MGACTO-AAB0dyVzDd0112.png)
騰訊混元3D AI創(chuàng)作引擎正式發(fā)布
高分子微納米功能復(fù)合材料3D打印加工介紹
![高分子微納米<b class='flag-5'>功能</b>復(fù)合材料<b class='flag-5'>3D</b>打印加工介紹](https://file1.elecfans.com/web3/M00/06/DA/wKgZPGeQahyAWfftAAAXJAExRC4610.jpg)
騰訊混元3D AI創(chuàng)作引擎正式上線
開源項(xiàng)目 ! 利用邊緣計(jì)算打造便攜式視覺識別系統(tǒng)
TAS3103 EVM用于具有3D效果的數(shù)字音頻處理器
![TAS3103 EVM用于<b class='flag-5'>具有</b><b class='flag-5'>3D</b>效果的數(shù)字音頻處理<b class='flag-5'>器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
實(shí)現(xiàn)具有多個TMS320C31 DSP的快速3D視覺傳感器
![實(shí)現(xiàn)<b class='flag-5'>具有</b>多個TMS320C31 DSP的快速<b class='flag-5'>3D</b>視覺傳感<b class='flag-5'>器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
安寶特產(chǎn)品 安寶特3D Evolution:增材制造零件查找器
![安寶特產(chǎn)品 安寶特<b class='flag-5'>3D</b> Evolution:增材制造零件查找<b class='flag-5'>器</b>](https://file1.elecfans.com//web2/M00/00/FE/wKgZomazBP2ALIhxAAA4HJIjAPA30.webp)
安寶特產(chǎn)品 3D Evolution : 基于特征實(shí)現(xiàn)無損CAD格式轉(zhuǎn)換
![安寶特產(chǎn)品 <b class='flag-5'>3D</b> Evolution : 基于特征實(shí)現(xiàn)無損CAD格式轉(zhuǎn)換](https://file1.elecfans.com//web2/M00/00/CF/wKgZomax7C2AFSFlAABXrBENEj498.webp)
AGV導(dǎo)航精度怎么更準(zhǔn)確?利用3D相機(jī)打造更智能的AGV輔助系統(tǒng)
![AGV導(dǎo)航精度怎么更準(zhǔn)確?利用<b class='flag-5'>3D</b>相機(jī)打造更<b class='flag-5'>智能</b>的AGV輔助系統(tǒng)](https://file1.elecfans.com//web2/M00/E7/E8/wKgZomZNbPOAVUKwAARjOs_bdYA74.jpeg)
我用香橙派做了一個Klipper 3D打印控制器
基于3D結(jié)構(gòu)光的智能B柱方案
![基于<b class='flag-5'>3D</b>結(jié)構(gòu)光的<b class='flag-5'>智能</b>B柱方案](https://file1.elecfans.com/web2/M00/C8/1C/wKgZomYY1QCATOOcAABHoKr5DrY224.png)
評論