資料介紹
描述
關于該項目
我目前居住在印度南部美麗的山站烏蒂。主要問題是大象經常進入村莊。我們有時會被他們的聲音驚醒,但大多數時候他們是沉默的,所以我們不會被驚動。
所以我計劃制作一個可以檢測大象并發送警報的設備。
為您的項目制造 PCB
?
您可以以便宜的價格制造 10 塊優質 PCB,并將其運送到您家門口。您還將獲得首次訂單的運費折扣。將您的 Gerber 文件上傳到PCBWAY ,以便以高質量和快速的周轉時間制造它們。PCBWay 現在可以提供從設計到外殼生產的完整產品解決方案。查看他們的在線 Gerber 查看器功能。使用獎勵積分,您可以從他們的禮品店獲得免費的東西。
項目流程:
首先,我們必須訓練一些機器學習來檢測大象。這個 SenseCAP K1100 套件包含 Grove AI 視覺模塊和 Wio 終端,因此我們可以訓練視覺模塊檢測大象并將數據發送到 Wio 終端,然后將數據傳遞到云端,并發出警報。比如電子郵件和短信。
步驟1:
這個 Grove AI Vision 模塊可以通過使用 Roboflows ML 檢測進行訓練以檢測模型。這是 Seeedstudio 創建和上傳自定義模型的指南。https://wiki.seeedstudio.com/Grove-Vision-AI-Module/
這是我可以檢測大象的模型。這不是一個很好的模型,但它工作得很好。
Seeedstudio 正在使用 Edge 脈沖集成,因此我將使用 Edge Impulse 模型對其進行更新,這將是一個更加自信的模型。
現在我們的 Wio 終端將得到模型檢測結果,下一步是將模型分類結果發送到云端并發出警報。
第2步:
我最初的計劃是集成 LoRa 和 TTN,但我沒有 LoRaWAN 或 Helium 網關,所以我只是制定了使用 Wi-Fi 或蜂窩物聯網的計劃。然后我使用蜂窩移動來完成這項工作。
在這個項目中,我使用了 Blues Wireless notecard,它是一種基于蜂窩的物聯網硬件,還允許與多個云平臺集成。
我已經在 Wio 終端的 UART 端口(第 8 和第 10 針)中連接了 Blue 的記事卡。我添加了一個可以在夜間打開并在白天關閉的燈光系統,為視覺分類提供一些燈光。您必須在 Blues note hub 上創建一個新項目并對該項目進行編程,我將進入 Wio 終端以將數據發送到云端。
首先從 Blues Notehub 獲取項目 ID 并將其粘貼到以下代碼中。
接下來,編譯代碼并將其上傳到 Wio 終端,現在這個 wio 終端將檢測到串行數據并將其轉發到 Blues Notecard。所以這現在將發送模型狀態、模型置信度和計數。
這是我的完整代碼
?
#define LGFX_AUTODETECT #define LGFX_USE_V1 #include#include static LGFX lcd; static LGFX_Sprite sprite(&lcd); int count; #include #define txRxPinsSerial Serial1 #define productUID "com.gmail.pradeeplogu26:wio_gate_keeper" Notecard notecard; #include "Seeed_Arduino_GroveAI.h" #include GroveAI ai(Wire); uint8_t state = 0; String Status; double conf; void setup() { pinMode(WIO_LIGHT, INPUT); notecard.begin(txRxPinsSerial, 9600); J *req = notecard.newRequest("hub.set"); JAddStringToObject(req, "product", productUID); JAddStringToObject(req, "mode", "continuous"); notecard.sendRequest(req); delay(1000); Wire.begin(); Serial.begin(115200); Serial.println("begin"); if (ai.begin(ALGO_OBJECT_DETECTION, MODEL_EXT_INDEX_1)) // Object detection and pre-trained model 1 { Serial.print("Version: "); Serial.println(ai.version()); Serial.print("ID: "); Serial.println( ai.id()); Serial.print("Algo: "); Serial.println( ai.algo()); Serial.print("Model: "); Serial.println(ai.model()); Serial.print("Confidence: "); Serial.println(ai.confidence()); state = 1; } else { Serial.println("Algo begin failed."); } lcd.init(); lcd.setRotation(1); lcd.setBrightness(128); lcd.fillScreen(0xffffff); lcd.fillScreen(0x6699CC); lcd.setTextColor(0xFFFFFFu); lcd.setFont(&fonts::Font4); lcd.drawString("Gate Keeper", 90, 100); delay(2000); } void loop(){ if (state == 1) { uint32_t tick = millis(); if (ai.invoke()) // begin invoke { while (1) // wait for invoking finished { CMD_STATE_T ret = ai.state(); if (ret == CMD_STATE_IDLE) { break; } delay(20); } uint8_t len = ai.get_result_len(); // receive how many people detect if (len) { int time1 = millis() - tick; Serial.print("Time consuming: "); Serial.println(time1); Serial.print("Number of people: "); Serial.println(len); object_detection_t data; //get data for (int i = 0; i < len; i++) { Serial.println("result:detected"); count=len; Status = "Positive"; Serial.print("Detecting and calculating: "); Serial.println(i + 1); ai.get_result(i, (uint8_t*)&data, sizeof(object_detection_t)); //get result Serial.print("confidence:"); Serial.print(data.confidence); conf=data.confidence; Serial.println(); J *req = notecard.newRequest("note.add"); if (req != NULL) { JAddStringToObject(req, "file", "sensors.qo"); JAddBoolToObject(req, "sync", true); J *body = JCreateObject(); if (body != NULL) { JAddNumberToObject(body, "confidence", data.confidence); JAddNumberToObject(body, "count", len); JAddStringToObject(body, "result", "positive"); JAddItemToObject(req, "body", body); } notecard.sendRequest(req); } } } else { Serial.println("No identification"); Status="Negative"; conf=0.0; len=0; } } else { delay(1000); Serial.println("Invoke Failed."); } } else { state == 0; } lcd.fillScreen(0xffffff); lcd.fillRect(10, 3, 300, 30, 0x6699CC); lcd.setTextColor(0xFFFFFFu); lcd.setFont(&fonts::Font4); lcd.drawString("Gate Keeper", 90, 8); lcd.fillRect(10, 45, 140, 90, 0x9900FF); lcd.fillRect(170, 45, 140, 90, 0x9900FF); lcd.fillRect(10, 145, 140, 90, 0x9900FF); lcd.fillRect(170, 145, 140, 90, 0x9900FF); lcd.setTextSize(0.5, 0.5); lcd.setTextColor(0xFFFFFFu); lcd.drawString("Status", 60, 50); lcd.drawString("Light", 220, 50); lcd.drawString("Confidence", 35, 150); lcd.drawString("Count", 220, 150); int j = analogRead(WIO_LIGHT); int k = rand() % 100; lcd.setCursor( 35, 80); lcd.setTextSize(1, 1); lcd.print(Status); lcd.setCursor( 220, 80); lcd.setTextSize(1, 1); lcd.print(j); lcd.setCursor( 35, 170); lcd.setTextSize(1, 1); lcd.print(conf); lcd.setCursor( 220, 170); lcd.setTextSize(1, 1); lcd.print(count); delay(1000); // lcd.fillScreen(0xffffff); lcd.setFont(&fonts::Font4); lcd.setTextSize(1, 1); }
?
這是從 Blues Notehub 上的 Wio 終端接收到的數據,現在我們的數據到達了云端,接下來我們必須添加一些可視化和警報系統。
對于這種可視化,我們將使用 Qubitro Cloud 平臺,Qubitro 允許可視化來自多個數據源(如 MQTT、TTN、HTTPS、Helium 等)的數據。有關更多詳細信息,請訪問 Qubitro.com 。轉到portal.qubitro.com并創建一個新項目并添加一個具有 MQTT 連接的設備。您可以看到連接憑據,只需記下這些憑據,因為您將在下一步中需要這些憑據。
首先,轉到 Blues Note hub 上的 Route 選項卡,然后選擇類型為 MQTT 并以以下格式輸入憑據。
現在我們需要做另一個程序,只需轉到 Blues Device 上的環境部分,然后將內容更改如下。
這就是我們現在的最后一步。
第 3 步:
打開 Qubitro 門戶并查找來自筆記中心的傳入數據。
現在您看到我們也從筆記中心獲得了如此多的數據,我們需要對它們進行整理。為此,只需轉到 Blues Route 選項卡并向下滾動并添加一個 JSON 整流器,如下所示。
讓我們再看一下數據,它現在更具可讀性和合理性。(另外,我添加了位置)
下一步是將此導航的視覺效果添加到監控部分并創建一個新儀表板。
您可以根據需要添加不同的小部件。最后,我們將添加一個警報系統,為此我們將使用 webhook 和 make。
轉到eu1.make.com并創建一個新帳戶,
然后接下來創建一個像這樣的新場景,
在這里,我添加了帶有 Twilio 和電子郵件的 webhook,因此一旦觸發了 webhook,它將啟動 SMS 和電子郵件警報。
然后轉到 Qubitro 門戶并導航到規則部分,在此處添加一個新規則我添加了一個規則,例如模型分數 =100,因此每當檢測到模型時,它都會觸發 webhook,然后所有操作都將由 make 執行。
Webhook 警報流
這是電子郵件警報的最終輸出。
這是 SMS 警報的最終輸出。
結論:
在本教程中,我向您展示了如何使用 Qubitro Cloud 的 webhook 和 Twilio 集成的蜂窩通信構建基于視覺的大象檢測警報系統。
- 物聯網感知技術及系統應用 1次下載
- 集成計費和檢測系統的基于物聯網的沼氣監測
- 探究機械工程物聯網系統遠程解決方案 15次下載
- 什么是智能工廠-物聯網系統 7次下載
- 基于ZigBee和物聯網的智能草莓大棚控制系統 38次下載
- 物聯網工程概述課件下載 0次下載
- 基于區塊鏈的物聯網訪問控制系統 45次下載
- 一種面向物聯網服務的Web攻擊向量檢測方法 7次下載
- 物聯網實驗室管理系統的設計方案 17次下載
- 物聯網實訓室管理系統的設計方案 33次下載
- 物聯網操作系統的技術路線有哪些之中國廠商的機遇有哪些
- 如何使用物聯網操作系統Zephyr實現“連續集成”開源軟件的詳細說明
- 物聯網是什么?現在物聯網通信標準和協議有哪些?物聯網應用的概述
- 物聯網的真正價值是什么?
- 基于物聯網的礦井溫、濕度檢測系統設計 49次下載
- 基于阿里云物聯網平臺的智能燈光控制系統設計 4365次閱讀
- 基于物聯網的水管理系統設計方案 2079次閱讀
- 如何使用物聯網實現智能垃圾監控系統的設計 2611次閱讀
- 基于電子標簽和物聯網實現工業企業物聯網系統的設計 3827次閱讀
- Inventek物聯網照明解決方案系統架構分析 2021次閱讀
- 物聯網操作系統到底是什么 4191次閱讀
- 物聯網操作系統到底是什么? 3086次閱讀
- 物聯網系統評價的模型如何去構建實現 1570次閱讀
- 物聯網技術綜合實驗系統III型參數 3939次閱讀
- 你知道水泵物聯網監控系統嗎 2186次閱讀
- 物聯網十大經典開源操作系統 1w次閱讀
- 基于物聯網的智能電表系統的設計及原理 3990次閱讀
- 物聯網網關概述及系統設計 9518次閱讀
- 物聯網有哪些操作系統?物聯網操作系統匯總 5.5w次閱讀
- 物聯網操作系統的架構和基本功能 5701次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多