精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

使用樹莓派的AI驅動報警系統的制作

454398 ? 來源:wv ? 2019-09-03 16:04 ? 次閱讀

第1步:大計劃

在這個教學中我們將展示如何:

使用OpenCV和TensorFlow設置Raspberry Pi

通過長USB電纜連接網絡攝像頭

編寫OpenCV算法檢測運動

使用TensorFlow進行對象檢測

在Raspberry Pi上設置Web服務器以顯示有趣的圖像

與IFTTT集成以在發現人時觸發移動警報

將繼電器HAT連接到Raspberry Pi,并將其連接到可為水池添加水的電磁閥

將水位傳感器連接到Raspberry Pi并使用Pi的GPIO與其連接

寫一些代碼將它們粘合在一起

第2步:購物清單

所有組件均可從亞馬遜購買。隨意嘗試和交換組件 - 這是一半的樂趣!

Raspberry Pi

Raspberry Pi電源(不要在這里吝嗇)

記憶卡(越大越好)

案例(這個大到足以容納Pi和HAT)

USB網絡攝像頭(任何網絡攝像頭都可以,但你想要一個

USB延長線(如果需要 - 測量Pi與攝像機放置位置之間的距離)

繼電器板HAT(這個有3個繼電器,我們只需要一個,但你很快就會發現其他用途!)

電磁閥

電磁閥配件1和配件2(這真的取決于你安裝螺線管,但這些對我有用)

電磁閥電源(任何24V AC都可以)

電纜(再次,幾乎任何2股電纜都可以 - 電流是最小)

水位浮動開關(這只是一個例子,檢查可以輕松連接到游泳池的東西)

一些跳線和電線連接器

第3步:設置您的Raspberry Pi

格式化SD卡。這需要特別小心 - Raspberry Pi只能從FAT格式的SD卡啟動。請遵循這些說明。

將Raspberry Pi連接到USB鍵盤和鼠標,再加上HDMI顯示器,并按照Raspberry Pi NOOBS教程中的說明進行操作。確保設置WiFi并啟用SSH訪問。不要忘記為默認的pi帳戶設置密碼。

在您的家庭網絡上為Raspberry Pi設置靜態IP - 這將使SSH更加容易。

確保您的臺式機/筆記本電腦上安裝了ssh客戶端。對于PC,我會推薦Putty,您可以從這里安裝。

將Raspberry Pi中的USB和HDMI取下,重新啟動它,然后插入它 - 如果一切正常,你應該看到這樣的東西:

Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

Last login: Mon May 13 10:41:40 2019 from 104.36.248.13

pi@raspberrypi:~ $

步驟4:設置OpenCV

OpenCV是一個用于計算機視覺的圖像處理功能的驚人集合。它將允許我們從網絡攝像頭讀取圖像,操縱它們以查找運動區域,保存它們等等。 Raspberry Pi上的安裝并不困難,但需要一些小心。

首先安裝virtaulenvwrapper:我們將使用python來完成所有的編程,virtualenv將幫助我們將OpenCV和TensorFlow的依賴關系分開Flask或GPIO:

pi@raspberrypi:~ $ sudo pip install virtualenvwrapper

現在您可以執行“mkvirtualenv”來創建一個新環境,“workon”來處理它,等等。

所以,讓我們為我們的圖像處理創建一個環境,使用python 3作為默認解釋器(它是2019年,沒有理由堅持使用舊的python 2):

pi@raspberrypi:~ $ mkvirtualenv cv -p python3

。..

(cv) pi@raspberrypi:~

我們現在準備安裝OpenCV。我們將主要遵循Learn OpenCV中的優秀教程。特別是按照他們的第1步和第2步:

sudo apt -y update

sudo apt -y upgrade

## Install dependencies

sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm

sudo apt-get -y install git gfortran

sudo apt-get -y install libjpeg8-dev libjasper-dev libpng12-dev

sudo apt-get -y install libtiff5-dev

sudo apt-get -y install libtiff-dev

sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev

sudo apt-get -y install libxine2-dev libv4l-dev

cd /usr/include/linux

sudo ln -s -f 。./libv4l1-videodev.h videodev.h

sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default

sudo apt-get -y install libatlas-base-dev

sudo apt-get -y install libmp3lame-dev libtheora-dev

sudo apt-get -y install libvorbis-dev libxvidcore-dev libx264-dev

sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev

sudo apt-get -y install libavresample-dev

sudo apt-get -y install x264 v4l-utils

sudo apt-get -y install libprotobuf-dev protobuf-compiler

sudo apt-get -y install libgoogle-glog-dev libgflags-dev

sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

sudo apt-get install libqtgui4

sudo apt-get install libqt4-test

現在我們可以使用

就是這樣!我們在Raspberry Pi上安裝了OpenCV,準備捕獲照片和視頻,操作它們并且很酷。

通過打開python解釋器并導入opencv來檢查是否存在錯誤:

pip install opencv-contrib-python

步驟5:設置TensorFlow

TensorFlow是由Google開發和維護的機器學習/人工智能框架。它為各種任務的深度學習模型提供了廣泛的支持,包括圖像中的對象檢測,現在在Raspberry Pi上安裝相當簡單。它在輕微Pi上的輕量級模型的性能大約是每秒1幀,這對于像我們這樣的應用來說非常合適。

我們基本上會遵循Edje Electronics的優秀教程,通過以下方式進行修改:更新的TensorFlow發行版:

(cv) pi@raspberrypi:~ $ python

Python 3.5.3 (default, Sep 27 2018, 17:25:39)

[GCC 6.3.0 20170516] on linux

Type “help”, “copyright”, “credits” or “license” for more information.

》》》 import cv2

》》》

現在我們需要編譯Google的protobuf。只需按照相同優秀教程的步驟4中的說明進行操作

最后,克隆并設置TensorFlow的模型定義 - 按照Edje Electronics教程中的步驟5進行操作

隨意按照步驟中的步驟進行操作同樣,它是對Raspberry Pi上物體檢測的一個很好的介紹。

步驟6:使用OpenCV進行運動檢測

讓我們首先測試OpenCV是否可以與我們的網絡攝像頭連接:ssh進入Raspberry Pi,轉移到cv virtualenv(workon cv) ),打開一個python解釋器(只需輸入python),然后輸入以下python命令:

pi@raspberrypi:~ $ workon cv

(cv) pi@raspberrypi:~ $ pip install tensorflow

(cv) pi@raspberrypi:~ $ sudo apt-get install libxml2-dev libxslt-dev

(cv) pi@raspberrypi:~ $ pip install pillow lxml jupyter matplotlib cython

(cv) pi@raspberrypi:~ $ sudo apt-get install python-tk

運氣好的話,你會發現OpenCV能夠從攝像頭讀取高清幀。

您可以使用cv2.imwrite(path,frame)將該幀寫入磁盤并將其重新掃描以實際查看。

檢測運動的策略非常簡單:

處理較低分辨率的幀 - 此處無需在全高清上運行

此外,模糊圖像以確保盡可能少的噪點。

保持最后N幀的運行平均值。對于此應用,幀速率約為1 FPS(僅因為TensorFlow每幀需要一些時間),我發現N = 60會返回良好的結果。并且由于仔細實現不會占用更多的CPU,而且可以使用更多的幀(它確實需要更多內存 - 但是當我們使用較低分辨率的幀時,這可以忽略不計)

從運行中減去當前圖像平均值(只需要小心輸入 - 你需要允許正值和負值[-255 。. 255],所以幀需要轉換為int)

你可以在灰色上執行減法 - 幀的轉換(和平均值),或者為每個RGB通道單獨進行轉換,然后合并結果(這是我選擇的策略,使其對顏色變化敏感)

使用

最后查找具有三角形的區域的輪廓 - 這些區域是運動發生的位置,當前圖像與先前圖像的平均值不同。如果需要,我們可以進一步找到這些輪廓的邊界框。

我已經在DeltaFinder python類中封裝了代碼來執行此操作,您可以在我的github中找到它

步驟7:使用TensorFlow檢測對象

如果您已按照TensorFlow安裝程序進行操作,則表明您已經測試過安裝了TensorFlow并正常工作。

為了檢測一般室外場景中的人,在COCO數據集上預訓練的模型表現相當不錯 - 這正是我們在TensorFlow安裝結束時下載的模型。我們只需要使用它進行推理!

同樣,我已經在TFClassify python類中封裝了模型加載和推理,以使事情變得更容易,你可以在這里找到。

步驟8:在Raspberry Pi上設置Web服務器

訪問對象檢測結果的最簡單方法是使用Web瀏覽器,所以讓我們來看看在Raspberry Pi上設置Web服務器。然后我們可以將其設置為從給定目錄提供圖片。

Web服務器框架有多個選項。我選擇了Flask。它非常易于配置,并且易于使用Python進行擴展。由于我們需要的“規模”是微不足道的,所以綽綽有余。

我建議將它安裝在一個新的virtualenv中,所以:

import cv2

cap = cv2.VideoCapture(0)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)

cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

ret, frame = cap.read()

print(‘Read frame size: {}x{}’.format(frame.shape[1], frame.shape[0])

請注意,只要您的瀏覽器與Raspberry在同一個無線局域網上,只有正常的網絡設置才能訪問它皮。您可以在Internet路由器上創建端口映射/NAT配置以允許外部訪問 - 但我建議不要這樣做。我寫的代碼并不試圖提供在允許對Raspberry Pi進行一般Internet訪問時所需的安全性。

按照Flask快速入門指南測試您的安裝

步驟9:來自Raspberry Pi的移動通知使用IFTTT

我真的希望在事件發生時獲得移動通知。在這種情況下,當檢測到人并且水位變低時。我發現這樣做的最簡單方法是使用IFTTT而不必編寫自定義移動應用程序。 IFTTT代表“If This Then That”并啟用多種類型的事件來觸發多種類型的操作。在我們的例子中,我們對IFTTT Maker Webhook觸發器感興趣。這允許我們通過向IFTTT服務器發出HTTP POST請求來觸發IFTTT操作,該請求具有分配給我們帳戶的特殊密鑰,以及指定發生的事件的數據。我們采取的行動就像使用IFTTT移動應用程序在我們的移動設備上創建通知一樣簡單,或者比這更復雜的任何事情。

以下是如何做到這一點:

在ifttt.com上創建IFTTT帳戶

登錄后,轉到Webhook服務設置頁面并在瀏覽器中輸入URL(例如https://maker.ifttt.com/use/。該網頁將顯示您的密鑰和用于觸發操作的URL。

創建一個IFTTT小程序,當Webhook被觸發時將生成移動通知,其中包含事件的詳細信息

單擊“我的小程序”,然后單擊“新小程序”。

單擊“+ this”并選擇“webhooks”。單擊“接收Web請求”以繼續查看詳細信息

為您的活動命名,例如“PoolEvent”并點擊“創建觸發器”

點擊“+ that”并選擇“通知”。然后選擇“從IFTTT應用程序發送豐富通知”

對于“標題”選擇類似“PoolPi”的內容

對于“消息”寫“Pool Pi檢測到:”并點擊“添加成分”。.“Value1”。

返回到您在步驟2中復制的URL。它將顯示用于調用新創建的applet的URL。復制該URL,將占位符{event}替換為事件名稱(在示例中為PoolEvent)

下載,安裝并登錄到IFTTT應用程序移動設備

在Raspberry Pi上運行此python腳本以查看它是否正常工作(注意可能需要幾秒鐘或幾分鐘才能在您的移動設備上觸發):

pi@raspberrypi:~ $ mkvirtualenv webserv

(webserv)pi@raspberrypi: ~ $ pip install Flask

步驟10:向Raspberry Pi添加一個Relay HAT并將其連接到電磁閥

在繼續此步驟之前,請關閉Raspberry Pi:ssh并輸入“sudo shutdown now”,然后斷開電源

我們的目標是打開和關閉電源電磁閥 - 一種閥門,可以根據電源提供的24V交流電源打開或關閉供水。繼電器是可以根據我們的Raspberry Pi可提供的數字信號打開或關閉電路的電子元件。我們在這里做的是將繼電器連接到Raspberry Pi的這些數字信號引腳,并使其關閉24V AC電源和電磁閥之間的電路。

Raspberry Pi上的引腳可以充當數字輸入或輸出的稱為GPIO - 通用輸入/輸出,它們是Pi側面的40個引腳的行。關閉Pi并將繼電器HAT牢牢插入其中。我選擇的HAT中有3個繼電器,我們只使用其中一個。想象一下你可以用其他兩個做的所有事情:)

現在重新打開Raspberry Pi。繼電器HAT上的紅色“電源”LED應該亮起,表示它正從Pi通過GPIO獲得電源。讓我們測試一下我們可以控制它:再次進入Pi進入Pi,輸入python并輸入:

import requests

requests.post(‘https://maker.ifttt.com/trigger/PoolEvent/with/key/’, json={“value1”:“Hello Notifications”})

您應該聽到一聲“咔嗒”聲,表示繼電器正在使用,并看到一個LED亮起表示第一個繼電器處于連接位置。您現在可以輸入

import gpiozero

dev = gpiozero.DigitalOutputDevice(26, initial_value = True)

dev.off()

這會將繼電器轉到“關閉”位置(奇怪,我知道。..。..)和從python退出()。

現在使用跨接電纜和更長的電纜連接24V電源和電磁閥之間的繼電器。見圖。最后,使用適配器將電磁閥連接到水龍頭,并通過重復上述命令準備好測試它們 - 它們應該打開和關閉水。

將軟管連接到電磁閥并放入另一端在游泳池深處。您現在有一個計算機控制的池頂關系統,是時候連接傳感器告訴它何時運行。

步驟11:連接水位傳感器

水位傳感器只是一個浮子,當浮子是浮子時連接電路向下,當它漂浮時打破它。如果將其插入池中正確的高度,當水位足夠時,浮子將上升,但當水量不足時,浮子會下降。

為了讓Raspberry Pi了解水位傳感器的狀態,我們需要Pi來感應開路或閉路。幸運的是,這很簡單:我們用作控制繼電器的數字輸出的相同GPIO連接器可以作為輸入(因此GPIO中的I)。具體來說,如果我們將傳感器的一根導線連接到GPIO連接器上的+ 3.3V,另一根傳感器導線連接到我們配置為下拉輸入的引腳(意味著它通常處于GND電壓電平),該引腳將測量僅當水位傳感器關閉電路時 - 水位低時,才會產生數字“高”或“開”電壓。我使用GPIO引腳16作為輸入,我在上圖中標記了它。

將引腳配置為輸入并測試其當前狀態的python代碼是:

dev.on()

一個潛在的挑戰是,當傳感器剛剛改變狀態時,它將在開啟和關閉狀態之間快速振蕩。解決方案被稱為“去抖動”,并在采取行動之前尋找一致的狀態變化。 GPIOZERO庫有代碼可以執行此操作,但由于某些原因,代碼對我來說效果不佳。我寫了一個簡單的循環,當檢測到一致的狀態變化時觸發IFTTT警報,您可以在我的存儲庫中找到它。

步驟12:編寫代碼將所有內容綁定在一起

就是這樣。我們的設置已經完成。您可以編寫自己的代碼將事物組合到一個完整的系統中,或者使用我提供的代碼。要做到這一點,只需創建目錄結構并克隆存儲庫,如下所示:

import gpiozero

level_input = gpiozero.Button(16)

water_low = level_input.is_pressed

接下來,編輯motion_alert和water_level目錄中名為ifttt_url.txt的文件,以獲得您自己的URL使用您的密鑰進行IFTTT Web掛鉤。您可以使用兩個不同的Web掛鉤進行不同的操作。

最后,我們希望此代碼自動運行。實現這一目標的最簡單方法是通過Linux crontab服務。我們可以為兩個主要任務添加一些crontab行:

運行我們的三個程序:每次重啟時對象檢測器,水位傳感器和Web服務器

清理輸出目錄,刪除舊圖片和舊視頻文件(我選擇刪除文件超過1天且超過7天的圖片 - 隨意進行實驗)

要執行此類型的crontab -e,它將打開您的納米文本編輯器。將以下行添加到文件的底部:

mkdir poolpi

cd poolpi

git clone https://github.com/rafitzadik/PoolPiGuy.git

最后,重新啟動Raspberry Pi。它現在已準備好讓您的游泳池充滿安全。

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

    關注

    5

    文章

    647

    瀏覽量

    75161
  • 樹莓派
    +關注

    關注

    116

    文章

    1698

    瀏覽量

    105524
收藏 人收藏

    評論

    相關推薦

    樹莓新推AI HAT+:26 TOPS高性能版本震撼登場

     在成功推出樹莓AI套件與AI攝像頭后,樹莓再次擴大其A
    的頭像 發表于 11-07 13:44 ?304次閱讀

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    一、樹莓GPIO的用途 樹莓(Raspberry Pi)是一款小巧、功能強大的單板計算機,廣泛應用于編程教育、物聯網項目、家庭媒體中心等領域。GPIO(General Purpos
    的頭像 發表于 10-22 18:09 ?487次閱讀

    什么是樹莓樹莓是什么架構的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會”開發的一款為學習計算機編程教育而設計的微型電腦。
    的頭像 發表于 10-22 17:33 ?530次閱讀

    樹莓和單片機的優缺點是什么

    樹莓(Raspberry Pi)和單片機(Microcontroller)是兩種廣泛應用于電子項目和嵌入式系統的硬件平臺。它們各自具有獨特的優缺點,適用于不同的應用場景。 樹莓
    的頭像 發表于 08-30 18:21 ?1455次閱讀

    樹莓的功能用途是什么

    樹莓(Raspberry Pi)是一款由英國樹莓基金會研發的信用卡大小的單板計算機,自2012年推出以來,已經發展出多個型號和版本。樹莓
    的頭像 發表于 08-30 18:01 ?2245次閱讀

    樹莓gui開發用什么ide

    樹莓(Raspberry Pi)是一款功能強大的微型計算機,可以運行多種操作系統,如Raspbian、Ubuntu等。在樹莓派上進行GUI(圖形用戶界面)開發,可以使用多種集成開發環
    的頭像 發表于 08-30 16:49 ?678次閱讀

    樹莓裝ubuntu和raspbian哪個更好

    樹莓(Raspberry Pi)是一款由英國樹莓基金會開發的單板計算機,廣泛應用于教育、科研、物聯網等領域。樹莓
    的頭像 發表于 08-30 15:41 ?1054次閱讀

    樹莓5,Raspberry Pi 5 評測

    會觸發安全關機。這種關機更像是待機模式,樹莓的功耗為1.4瓦。按下電源按鈕將啟動樹莓5。你還可以編程操作系統,將按鈕設置為執行其他功能,
    發表于 06-19 14:51

    電池電量計樹莓驅動

    電池電量計樹莓驅動
    發表于 06-07 11:12 ?0次下載

    Hailo聯手樹莓,開創人工智能新紀元

    近日,人工智能處理器領導品牌Hailo正式宣布與樹莓展開深度合作。Hailo將為樹莓推出專用AI套件,支持
    的頭像 發表于 06-06 16:08 ?690次閱讀

    樹莓攜手Hailo為其新品注入人工智能功能

    摘要:Hailo近期推出虛擬社區論壇,旨在促進合作、共享知識,同樣對樹莓用戶開放。 邊緣人工智能(AI)處理器的領先芯片制造商Hailo近日宣布與樹莓
    的頭像 發表于 06-06 10:18 ?377次閱讀

    Waveshare推出樹莓紅外熱像儀,可智能檢測報警和過熱問題

    Waveshare近日推出針對樹莓的紅外線熱像儀。此設備能借助GPIO接口與樹莓派對接,拓展其功能領域。除正常的樹莓外,該設備亦兼容
    的頭像 發表于 05-20 14:45 ?614次閱讀

    樹莓基金會更新樹莓OS,支持最新瀏覽器,優化電源管理

    首先,樹莓 OS 對于電源系統進行了優化提升,新增了對樹莓 5 SBC 的兼容支持。其次,還在屏幕配置功能中新增了無頭模式分辨率選項,并
    的頭像 發表于 03-14 14:55 ?660次閱讀

    樹莓主板如何連接電腦

    連接樹莓派到電腦是一個非常有用的功能,它可以讓我們在電腦上進行樹莓的操作和管理。本文將詳細介紹如何連接樹莓主板到電腦。我會從準備工作開始
    的頭像 發表于 01-07 15:40 ?1814次閱讀

    基于樹莓的環境監測系統

    樹莓(Raspberry Pi)是一種小型而功能強大的計算機,其性能和功能足以支持許多應用領域。在環境監測系統中,樹莓也被廣泛應用。本文
    的頭像 發表于 01-04 15:15 ?1922次閱讀