<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>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>智能對講機開源設計

智能對講機開源設計

2023-06-19 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

?

我們這個名為 Human-firewall 項目的項目的目的是引入一種智能對講機,能夠在消息應用程序上通過按門鈴的人的照片通知您,并實時提供對個人的評估。

通過這種方式,您會立即知道您是否可以信任相關人員,如果此人不值得信任,您將避免讓自己、您的積蓄和您的家面臨危險。

注意:我們的目標不是創建一個完全成熟的對講機,而是創建一個可以連接到現有對講機的原型。

從現有的對講機中,我將捕獲門鈴輸入,這將觸發相機拍攝對象的照片,使用這張照片和一些幕后魔術(劇透:這是機器學習)我將把對象評估發送到房主。

使用 LAN 上的常識評估對象

此時,您可能會問:“您如何評價按對講機的人?”。

我們選擇了同行評審的方法,每個房主都能夠對在他家敲門的人進行分類,這樣就建立了一種常識。

這些知識將在同一網絡上存在的所有對講機之間共享,例如,即使您的鄰居來到您家門口,也能正確檢測到已被您的鄰居標記的騙子。

公寓作為我們的目標環境

我們的項目真正在公寓中大放異彩,那里有多個建筑物,每個建筑物都有自己的對講機,并且有共享網絡(無線或有線無關緊要)。

?
poYBAGOSl22AKSHGAACxWAQrxyo162.jpg
?

這也可以用于較小的環境,但這會導致更差的檢測率和減少智能對講機的常識。

我們想象這也可以被店主用來保護他們的生意。

硬件與服務

對于我們的智能對講機演示,我們采用了 Raspberry Pi 3(使用 Raspbian 作為其操作系統)作為我們的參考板,但只要可以建立與本地網絡的連接,較新的版本也不錯。

連同電路板,我們使用了 Pi Camera 模塊 V2,它提供了按鈴對象的高清圖像。

您還需要一切才能為電路板提供能量(誰會猜到?)和一個模擬用戶在門鈴上輸入的按鈕。

云服務?不,謝謝,人類防火墻項目不需要它們,一切都將通過專門使用 LAN 來工作,這樣我們就可以為將要使用(但永遠不會存儲)的敏感數據提供最高級別的隱私。

建筑學

?
pYYBAGOSl3CAdl6aAADNP8mwR7g364.png
架構的表示
?

我們的項目由三部分組成:

  • 從屬子系統,用于捕獲門鈴輸入拍照并與它們一起識別人。
  • 機器人子系統,托管公寓的電報機器人。
  • 主子系統,這是我們共享知識架構的焦點。

鑒于這三個子系統,我們有兩種類型的板,主板和從板,但是,用戶看不出主板和從板之間有任何區別。

所有的板子都應該在同一個 NATed WiFi/有線局域網中,不需要開放的互聯網端口,除了機器人子系統使用的 Telegram 服務器的端口。

主控系統_

主板托管一個主子系統的實例,該子系統由一個 Web 服務器、一個 MQTT 代理組成,包含公寓的 Telegram 機器人,并使用從屬子系統作為門鈴。

Web 服務器用于與從站通信,并提供幾個端點:

  • Identification endpoint: 使網絡中新的slaves可以發現它正在掃描局域網。
  • Ring 端點:用于管理事件,當有人按響連接到網絡的門鈴時,master 會將照片和評估數據發送給 Telegram bot,允許它向用戶通知事件并識別誰按鈴。
  • 時間戳端點:當被詢問時,它會給出數據庫中的最后一個時間戳,讓從屬了解它們是否是最新的。
  • Recovery endpoints:允許slaves下載從給定時間戳到最后一個時間戳的反饋和識別數據。

這些端點由從系統使用,因此需要在任何從系統之前初始化主系統。

奴隸制度

從板僅包含從子系統的一個實例。

從屬子系統由一個 SQLite 數據庫組成,用于維護用戶的反饋和一個內存中的特征向量數據庫,以及一個磁盤副本以支持重啟,這是我們表示人臉的方式。

反饋數據庫使用復合鍵,由以下組成:

  • 特征向量,標識響鈴的人,需要分類
  • 聊天 ID,用于識別提供反饋的人

使用此模式,即使在多個門鈴和多個響鈴事件中,一個用戶也只能對響鈴的人進行一次反饋,因此我們更新了用戶對特定人給出的舊的且可能不正確的反饋,而不是添加到數據庫更新的反饋。這樣做是為了保持我們的分類有意義和可更新。

啟動后,它將通過掃描網絡定位標識端點來定位主控,然后,在找到主控后,它將啟動恢復程序,檢查其數據是否已更新并在必要時下載更新。

在找到主節點并更新數據庫后,它將訂閱 MQTT 代理以接收來自整個系統的新更新,并將等待本地環事件。

這個恢復過程在第一次初始化和災難恢復的情況下都非常方便(例如,一個從屬已經斷電,可能以一個與主或其他從屬相關的不同步的數據庫結束)。

當本地響鈴事件被攔截時(即當有人按從屬門鈴時),將捕獲一張照片,并通過使用Dlibface_recognition庫定位人臉并將其編碼為特征向量。然后,slave 詢問它本地的反饋數據庫,看看是否有針對那個人的任何反饋;然后照片、電路板 ID 和反饋通過環端點發送到主板。

?
pYYBAGOSl3-AMVkRAAD5XIGmfMQ435.png
可視化門鈴被觸發時發生的情況
?

如果在任何時候收到來自 MQTT 代理的消息,其內容將被添加到反饋和編碼數據庫中,從而增加董事會知識。

機器人子系統

機器人子系統僅托管在主板上,用于與用戶交互、通知他們響鈴事件以及收集和分發他們的反饋。

通知通過使用 Telegram API 發送到用戶的 Telegram 帳戶。

我們選擇使用 Telegram 是因為這樣做,我們可以輕松訪問每個平臺(iOS、Android、Windows、Mac、Linux),而無需實施我們自己的移動應用程序和服務器基礎架構,同時用戶不會他心愛的設備上又裝了一個應用程序。

Telegram 機器人使用聊天 ID 來識別用戶,并使用通過散列面板序列號獲得的面板 ID 來識別門鈴。

機器人由用戶在指定它將接收通知的門鈴 ID 時進行配置,為了更加用戶友好的應用程序,我們讓用戶為配置的每個門鈴指定一個名稱,這比 ID 更容易記住.

這些配置設置保存在用戶數據庫中,我們在其中存儲用戶聊天 ID 和配置的門鈴。

當響鈴事件被通知到主板時,它會通知機器人子系統,機器人子系統將向每個配置了門鈴的用戶發送通知,其中包含照片和人的分類,根據可用反饋計算出多數票與相應的事件板 ID。

然后用戶可以在他們的手機上看到事件,如果系統找到了人的臉,那么用戶還可以看到人的分類,如果以前的反饋可用,并給出他們自己的分類。

當給出分類時,bot 子系統會將消息發布到 MQTT 隊列中,所有從屬都訂閱了該隊列,其中包含聊天 ID、我們用來識別人員的特征向量和用戶給出的分類。

技術

人臉識別庫

dlib最先進的人臉識別庫接口,提供多種人臉定位算法和預訓練的矢量化模型。

我們使用 HOG 模型 (O(#pixels)) 來定位人臉,而不是 dlib 的默認 CNN 模型,這是一種不太準確的模型,但CPU 密集度也較低。

為了計算編碼,預訓練模型基于 ResNet,一種深度 CNN

我們在歐幾里得產品中使用 0.6 的閾值來檢測兩個編碼是否指的是同一個人,規模有點高,但對于公寓來說是可以的。

蚊子和帕霍

我們選擇Eclipse Mosquitto作為我們的代理,它是 MQTT 代理的開源實現。

Mosquitto 重量輕,適合在 CPU 時鐘較低的設備上使用。

我們選擇不持久存儲消息,以免浪費磁盤空間。

我們選擇的 MQTT 客戶端是Eclipse Paho項目,它為多種編程語言(包括 Python)提供 MQTT 和 MQTT-SN 消息傳遞協議的開源客戶端實現。

在 Raspberry Pi 3 上,dlib 的多進程執行會導致死鎖,因此我們不得不使用以下變通方法強制在單線程上執行 dlib 庫,該變通方法已包含在我們的設置腳本中:

export OPENBLAS_NUM_THREADS=1 
export OPENBLAS_MAIN_FREE=1

燒瓶

Flask是基于 Werkzeug 和 Jinja 2 的 Python 微框架。

我們使用它來托管主板 Web 服務器,因為它是一個可擴展的框架,可以輕松地針對多種用途進行定制。

對于項目的基本需求,我們只選擇了 Flask 核心模塊和一些使我們的 Web 服務器輕量級和快速的基本擴展。

python電報機器人

為了在 bot 子系統中與 Telegram 的 API(通過 HTTP)交互,我們選擇了一個名為python-telegram-bot的社區制作的包裝器。

包裝器實現了從發送消息到對話處理的廣泛功能,同時防止出現同步問題。

它內存占用小,CPU 使用率低,因為它使用 webhook 來防止輪詢 Telegram 的服務器。

如何部署和測試

  • 部署應用程序:獲取master_scripts
    中的代碼并執行 install.py 以設置主板。它既可以在裝有 Ubuntu 的筆記本電腦上運行,也可以在裝有 Raspbian 操作系統的 Raspberry 上運行。該腳本會要求您提供電報 API 密鑰。如果要添加一個或多個slave,可以使用slave_scripts中的代碼來實現。在 Raspbian 上,服務也被添加到 systemd 并在啟動時啟動。

  • 在電報上設置電路板:
    啟動機器人并提供 /configure 命令,以命名和添加電路板
  • 使用門鈴:
    按下門鈴上的按鈕以接收通知并留下反饋,一旦給出反饋,系統將使用它進行未來預測。(為了讓我們的代碼生效,門鈴必須連接到樹莓派上的 3 號引腳。)
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品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>