資料介紹
描述
介紹
野生動物監測對于跟蹤動物運動模式、棲息地利用、人口統計、誘捕和偷獵事件和突圍至關重要。通過保護野生動物,我們確保后代能夠享受我們的自然世界和生活在其中的令人難以置信的物種。為了幫助保護野生動物,重要的是要了解物種在其生態系統中的相互作用,以及它們如何受到環境和人類影響的影響。
動物追蹤數據幫助我們了解個人和種群如何在當地移動、跨越海洋和大陸遷移以及世代相傳。
該項目的目的是建立一個野生動物監測系統。該項目簡稱為Wild A n I mal Tracker WAiT 。顧名思義,傳感器節點等待野生動物的運動,并在檢測到它時立即跟蹤它的運動。該系統可以在需要動物追蹤的國家公園、森林和森林附近的人類居住區實施。
我非常覺得這個系統的必要性。曾幾何時,2003 年,我參觀了印度的一個國家公園。在那里我想看到老虎,但我很少能看到老虎,我必須等待更長的時間才能看到它,因為當時沒有系統來識別看到老虎的地方并通知我可以去看。許多游客在參觀國家公園時甚至都看不到老虎,這種情況就會發生。如果我可以在可以看到老虎的不同可疑區域實施我的系統,系統可以在看到它時立即報告給控制辦公室,以便游客/游客可以立即轉移到野生動物園的地方,一睹美景動物。這只是一個例子。對于研究野生動物的研究人員來說,這個系統非常有用。
系統如何運作?
該系統的工作原理如下圖所示。
能夠在深度睡眠中捕獲圖像并對圖像進行分類的傳感器節點等待事件發生。當 PIR 運動傳感器檢測到任何動物活動時,就會發生該事件。當此事件發生時,處于深度睡眠模式的傳感器節點將被喚醒并在 tinyML 模型的幫助下捕獲圖像并對圖像進行分類。然后它連接到網絡服務器并上傳數據并再次進入睡眠狀態。應用程序的用戶可以看到上傳到 Web 服務器的數據。系統還會發送電子郵件警報。
先決條件
在開始之前,請按照以下教程中的說明設置和測試 ESP32 CAM:
數據采集
使用默認的 ESP32 CAM 固件CameraWebServer.ino收集數據。為了構建模型,我收集了獅子和斑馬的圖像,如下所示。下圖顯示我已使用CameraWebServer.ino中的 Web 界面來捕獲數據集的圖像。
注意:我使用了我女兒的動物玩具 ;) 來制作這個模型。這僅用于測試目的,因為當前沒有相同相機配置的野生動物圖像。需要通過在真實條件下捕捉動物圖像來構建真實動物圖像模型。為此,需要構建一個傳感器節點,該節點可以在真實條件下部署,僅用于收集動物圖像并將其上傳到 Web 服務器。在本文中,我已經指定了如何構建這種類型的傳感器節點。為了使模型準確工作,捕捉真實狀態的動物圖像非常重要。
開發 tinyML 模型
登錄Edge Impulse并創建一個項目 WILD_ANIMAL_TRACKER。現在轉到數據采集,然后轉到上傳數據部分并通過指定標簽上傳圖像。您可以一次為單個標簽上傳多張圖片。例如選擇所有獅子圖像并指定獅子標簽,然后單擊開始上傳按鈕。
上傳圖片后。再次進入數據采集,您將看到所有上傳的圖像列表。
進入Impulse Design并使用下圖所示的設置創建沖動,然后單擊保存沖動按鈕。
注意:仔細觀察圖中的所有設置。
接下來,轉到圖像選項卡,觀察圖像數據并單擊保存參數按鈕。
轉到遷移學習選項卡,在神經網絡 -> 神經網絡架構下選擇MobileNetV2 0.05。為此,請單擊選擇不同的模型。
然后選擇MobileNetV2 0.05。
選擇MobileNetV2 0.05很重要,因為 ESP32 CAM 資源較少。在這一步之后點擊開始訓練按鈕。您將看到類似于下圖的輸出。
現在您可以轉到實時分類選項卡來測試模型的工作方式。要測試,請在Classify existing test sample下選擇要分類的圖像,然后單擊load sample按鈕,如下圖所示。
你會看到如下結果
您還可以轉到模型測試選項卡并單擊分類所有按鈕以測試模型的測試數據。
發現一切正常后,轉到部署選項卡,單擊Arduino 庫并向下滾動,然后單擊構建按鈕。這會將模型下載為Arduino庫。
使用Edge Impulse構建的模型高效且準確,因為它使用的內存非常少,而不會影響準確性。感謝屢獲殊榮的EON 編譯器。
最后,可以通過單擊構建按鈕來部署模型。
在設備上測試模型
要在真實傳感器節點(即 ESP32 CAM)上測試模型,您需要將此 zip 庫包含到您的Arduino IDE 中。請按照此處給出的說明進行操作。包含庫后,它必須如下所示。
在此之后從官方Edge Impulse存儲庫下載ESP32-Cam-Edge-Impulse示例。ESP32 -Cam-Edge-Impulse/Basic-Image-Classification/Basic-Image-Classification.ino示例將用于直接在 ESP32 CAM 上測試我們的模型。
現在在Arduino中打開草圖Basic-Image-Classification.ino并確保包含上面使用Edge Impulse創建的庫的頭文件。您必須包含您自己模型的頭文件。您可以在Arduino/libraries/Wild_Animal_Tracker_inferencing/src/Wild_Animal_Tracker_inferencing.h文件夾中找到它。
您必須為頭文件使用與庫文件夾中相同的名稱。
現在取消注釋我們正在使用的電路板的行,如下圖所示。
現在在代碼中提供您的 WiFi 設置。
上傳草圖啟用設置,如下圖所示。
現在您需要使用 USB 轉 TTL 模塊連接您的 ESP32 CAM,如下圖所示。
注意:不要忘記將 ESP32 CAM 上的 IO0 引腳和 GND 引腳短接以啟用上傳。
將開發板連接到計算機后,按下 ESP32 CAM 背面的重置按鈕,在Arduino中編譯和上傳代碼。確保正確的 PORT 可用。
上傳代碼后,首先從 IO0 引腳和 GND 引腳上拔下電纜,然后按下 ESP32 CAM 上的復位按鈕。現在打開串行終端,您將看到 IP 地址。打開網絡瀏覽器并使用串行終端的 IP 地址來捕獲圖像。捕獲圖像后,您將在Arduino ide 的串行終端中看到分類結果。
構建傳感器節點
下一步是上傳為此項目構建的固件代碼。(上傳前短管腳并按下復位按鈕)首先上傳本項目提供的Wild_Animal_Tracker_Firmware.ino固件。斷開您的電路板,移除所有電纜并制作電路,如下圖所示。
注意:如果您沒有電池,則可以使用 USB 轉 TTL 模塊為 ESP32 CAM 供電。僅將 USB to TTL 模塊的 5v 和 GND 引腳連接到 ESP32 CAM 的 5v 和 GND 引腳。不需要其他連接。
在代碼中,以下語句包含了我們使用Edge Impulse構建的 ML 模型
#include
我已經聲明了以下變量
char animal[20];
const int pir_sensor = 13;
變量animal
存儲分類結果,PIR 傳感器連接到 ESP32 CAM 的引腳 13。
該classify()
函數進行推理。在此函數中,推理結果animal
使用以下代碼存儲在變量中。
if(result.classification[ix].value > 0.50000)
strcpy(animal, result.classification[ix].label);
在該 classify()
函數中,調用 send_data_webserver()
函數將數據發送到 Web 服務器。
send_data_webserver(animal);
該send_data_webserver()
函數接受一個參數,該參數是推理的輸出,即檢測到的動物。此功能連接到網絡服務器上的頁面并發布數據。將 IP 地址更改192.168.157.130
為您自己的 IP 地址。
void send_data_webserver(char animal[20]){
//Open a connection to the server
HTTPClient http;
http.begin("http://192.168.157.130/wild_animal_tracker/upload.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
//format your POST request.
int httpResponseCode = http.POST("animal=" + String(animal));
if (httpResponseCode >0){
//check for a return code - This is more for debugging.
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println(response);
}
else{
Serial.print("Error on sending post");
Serial.println(httpResponseCode);
}
//closde the HTTP request.
http.end();
}
我已經定義了在函數run_classifier()
中調用的setup()
函數。該run_classifier()
函數實際上調用classifier()
執行推理的函數并調用send_data_webserver()
將數據發布到 Web 服務器的函數。函數按以下順序調用run_classifier()-->classifier() --->send_data_webserver().
以下是代碼run_classifier().
void run_classifier(){
fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Camera capture failed");
}
classify();
esp_camera_fb_return(fb);
}
最后在setup()
函數中,我借助以下代碼啟用了外部喚醒
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 1);
此外部喚醒使用來自連接在 GPIO 引腳號上的 PIR 傳感器的輸入信號。13. 因此,當檢測到運動時,ESP32 會喚醒,進行推理,將數據發送到 Web 服務器并再次進入深度睡眠。這樣我們可以節省大量的電池電量。傳感器僅在需要時執行處理,否則其余時間處于深度睡眠模式。
ESP32 在深度睡眠模式下消耗的能量非常少,并且可以用來節省大量電池能量并使傳感器節點使用電池運行更長的時間,這已經得到了很好的研究。以下鏈接描述了 ESP32 板的深度睡眠功能。
帶有 Arduino IDE 和喚醒源的 ESP32 深度睡眠
深度睡眠模式用于低功耗:在深度睡眠模式下,CPU、大部分 RAM 和所有數字外設都處于關閉狀態。芯片中唯一保持通電的部分是:RTC 控制器、RTC 外圍設備(包括 ULP 協處理器)和 RTC 存儲器(慢速和快速)。該芯片消耗大約 0.15 mA(如果 ULP 協處理器通電)至 10μA。
要啟用深度睡眠,請調用以下函數。
esp_deep_sleep_start();
該esp_deep_sleep_start()
函數將 ESP32 發送到深度睡眠。另請注意,在調用esp_deep_sleep_start()
函數之前,我已經調用WiFi.disconnect()
了函數,因為在進入睡眠模式之前斷開 WiFi 連接很重要,否則喚醒 ESP32 將無法連接到 WiFi。
部署 Web 應用程序
現在下一步是安裝 Web 服務器。此項目的 Web 服務器可以通過兩種方式使用
- 本地計算機上的網絡服務器
- 在 Internet 上托管空間的 Web 服務器
如果您購買托管空間,則無需安裝 Web 服務器。您只需要將代碼上傳到該項目提供的網絡服務器。如果您打算在本地計算機上安裝網絡服務器,那么我更喜歡 XAMPP 網絡服務器。
在本地計算機上下載XAMPP 服務器,然后導航到htdocs
webservers 根目錄中的文件夾并復制粘貼整個wild_animal_tracker文件夾。這是您的網絡應用程序。它包含如下圖所示的文件和目錄。
打開DBController.php
文件并更改以下數據庫設置
private $host = "localhost";
private $user = "root";
private $password = "";
private $database = "test";
安裝 XAMPP 網絡服務器后,請記住使用phpmyadmin
模塊創建一個名為“test”的數據庫,并創建下表來存儲數據。
CREATE TABLE wild_animal_data ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, animal_detected VARCHAR(30) NOT NULL, reading_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
DBController.php
文件包含上傳和檢索數據的所有功能。完成所有設置后,您可以連接傳感器節點,然后使用以下 URL 在瀏覽器中打開 Web 應用程序。
http://localhost/wild_animal_tracker/display.html
或者
http://192.168.157.130/wild_animal_tracker/display.html
請記住,這192.168.157.130
是您需要更改的系統 IP 地址。同樣的 IP 地址也用于Arduino代碼。如果您訪問 Web 應用程序而不是在安裝它的系統上,則需要 IP 地址。在 Windows 上,您可以使用ipconfig
命令,在 Unix/Linux 上,您可以使用ifconfig
命令來查找系統的 IP 地址。
由于 Web 應用程序也發送電子郵件警報,因此發送和接收電子郵件的設置也應更新。打開upload.php
文件并更新 sendAlert()
函數中的電子郵件設置。
//This function sends an e-mail alert
function sendAlert($animal){
$mail = new PHPMailer(true); // Passing `true` enables exceptions
date_default_timezone_set("Asia/Kolkata");
$dateTime = date("Y-m-d H:i:s");
try {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = "smtp.gmail.com";
$mail->Port = "587"; // typically 587
$mail->SMTPSecure = 'tls'; // ssl is depracated
$mail->SMTPAuth = true;
$mail->Username = "your_password";
$mail->Password = "your password";
$mail->setFrom("sender_email", "Wild Animal Tracker App");
$mail->addAddress("receipient_email", "receipient_name");
$mail->Subject = 'Alert! '.$animal.' has been detected';
$mail->msgHTML($animal. " has been detected at ". $dateTime);
$mail->AltBody = $animal. " has been detected at ". $dateTime;
//$mail->addAttachment('docs/brochure.pdf');
$mail->send();
echo 'Message has been sent!';
} catch (Exception $e) {
//error
echo "error: ". $e;
}
}
$mail->Host
如果您不使用 Gmail ,$mail->Port
請根據您的 SMTP 服務器進行更改。更新 $mail->Username = "your_password"
并 $mail->Password
使用您的電子郵件登錄憑據。在$mail->setFrom()
函數中更新發件人的電子郵件地址,并在$mail->addAddress()
函數中更新電子郵件地址和收件人姓名。
如果您使用的是 Gmail SMTP 服務器,則還需要執行一個步驟。那就是您需要在 google 中允許不太安全的應用程序,否則網絡應用程序無法發送電子郵件警報。您可以通過訪問 URLhttps://myaccount.google.com/security
并使用您的 Gmail 帳戶登錄來啟用它。
注意:僅在使用 GMail SMTP 服務器時才需要安全性較低的應用程序設置。如果您有自己的 Web 服務器和托管空間,您通常會在您的域中獲得幾個具有 SMPT 設置的電子郵件帳戶。如果您使用 SMTP 設置和電子郵件地址在您自己的域上上傳此 Web 應用程序,則此應用程序運行時無需指定任何安全設置。
結果
以下視頻和圖表顯示了系統的輸出。
視頻說明:上述視頻Sensor Node - Running Inference on EXTERNAL WAKEUP using PIR Sensor展示了 tinyML 模型的工作情況。在視頻中,首先您會在之前檢測到的 Web 應用程序界面中看到斑馬的圖像。傳感器節點處于睡眠模式。在視頻中,當我將手放在 PIR 傳感器前時,這意味著傳感器檢測到了一些動物。現在 ESP32 攝像頭被喚醒并捕捉到放置在攝像頭前面的 Lion 的圖像。ESP32 運行推理,對動物進行分類并在 Web 應用程序上上傳數據,然后再次進入睡眠狀態,如您在串行終端中看到的那樣。結果也會立即在 Web 應用程序上更改,即傳感器現在檢測到 Lion 并且還會發送電子郵件警報。
下圖顯示了 tinyML 模型在串行終端上的執行,結果反映在 Web 應用程序中。
Web 應用程序有不同的部分來顯示信息。
Web 應用程序儀表板當前顯示檢測到的動物的圖像、檢測到動物的日期和時間、數據庫中 JSON 格式的最近 15 條記錄以及檢測到前五種動物的頻率。目前界面顯示動物的靜態圖像。還可以顯示動物的實時圖像,正在開發中。
下圖顯示了通過 Gmail 帳戶發送的警報。
結論和未來范圍
該項目可用作野生動物監測中非常有用的應用程序,當研究人員無法經常訪問該位置時,它可以幫助對動物進行研究。研究人員可以對適用領域的動物進行研究。可以使用安裝在特定區域中的設備 ID 來識別動物的位置。這個想法是為每個設備提供唯一的 ID。這樣我們可以通過添加 GPS 傳感器來減少設備的額外工作量,從而可以節省更多電量。
該項目是高度可定制的,因為可以根據用戶要求輕松添加其他功能。該項目還可以定制上傳動物的實時圖像。我目前正在研究這個功能。例如,如果檢測到獅子,傳感器節點將通過創建另一個帶有日期時間的子文件夾來自動將獅子圖像上傳到網絡服務器上的獅子文件夾中。Web 界面也在開發中,它將允許生成完整的報告。
由于預算限制,我使用了 ESP32 CAM 板,它有其自身的局限性。但是,我計劃使用Luxonis LUX-ESP32并利用它的深度 AI功能,這將使該項目的傳感器節點更加強大和高效。我還計劃使用 LoRa 網絡,這將擴展該項目的連接性,并且還可以用于收集具有低功耗功能的位置數據,因為 LoRa 消耗的能量比 WiFi 低得多。已經證明 LoRa 可以在森林環境中使用。添加太陽能電池是另一個問題。
- 野生動物驅蟲劑傳感器開源硬件
- 基于Arduino Nano的TinyML空中森林火災探測器 1次下載
- 野生動物探測器開源分享
- Xiraffe桅桿上的智能野生動物觀測站
- 555定時器構成的野生動物驅避傳感器
- 探討高度計在健身追蹤器中的作用 17次下載
- 動物群體逃生行為及群體虛擬仿真實驗 11次下載
- 基于灰狼優化算法的機器人源定位追蹤 5次下載
- 基于LoRa無線射頻信號的行走追蹤系統 8次下載
- 一種基于多智能體協同強化學習的多目標追蹤方法 20次下載
- 使用OpenCV的視頻對象實現運動物體檢測追蹤的資料說明 10次下載
- 蜻蜓微型無人機的介紹及用途 4次下載
- ADI民用無人機解決方案 19次下載
- 小Low成本,低功耗的一次性收音機1部分:發射機 15次下載
- 基于GPRS的溫度遠程監測系統設計 97次下載
- 雷達干擾追蹤器(RIT),使用公開數據追蹤軍事雷達 912次閱讀
- KUKA機器人WAIT FOR運用條件 3391次閱讀
- 圖解Java多線程中的wait()和notify()方法 3172次閱讀
- 動態追蹤技術分類及其使用方法 2914次閱讀
- 鏈路追蹤系統SkyWalking的原理 4208次閱讀
- 手游光線追蹤的技術實現原理、工作流程與優點 1584次閱讀
- 如何通過雷達追蹤飛機 5165次閱讀
- 什么是眼球追蹤?為什么對VR如此重要? 7887次閱讀
- OpenCV上八種不同的目標追蹤算法 3.2w次閱讀
- 光線追蹤算法匯總 1.7w次閱讀
- 運動物聯網中慣性傳感器承擔著什么作用 2323次閱讀
- 采用光電傳感器的太陽追蹤系統設計方案 6865次閱讀
- Festo以大自然為靈感設計各種仿生動物機器人 并且非常逼真 8575次閱讀
- 從原理出發,交流異步/永磁同步電動機如何產生動力? 9004次閱讀
- DRV2605:自動諧振追蹤要點剖析 9271次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多