资料介绍
描述
关于该项目
我目前居住在印度南部美丽的山站乌蒂。主要问题是大象经常进入村庄。我们有时会被他们的声音惊醒,但大多数时候他们是沉默的,所以我们不会被惊动。
所以我计划制作一个可以检测大象并发送警报的设备。
为您的项目制造 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和物联网的智能草莓大棚控制系统 37次下载
- 物联网工程概述课件下载 0次下载
- 基于区块链的物联网访问控制系统 45次下载
- 一种面向物联网服务的Web攻击向量检测方法 7次下载
- 物联网实验室管理系统的设计方案 17次下载
- 物联网实训室管理系统的设计方案 33次下载
- 物联网操作系统的技术路线有哪些之中国厂商的机遇有哪些
- 如何使用物联网操作系统Zephyr实现“连续集成”开源软件的详细说明
- 物联网是什么?现在物联网通信标准和协议有哪些?物联网应用的概述
- 物联网的真正价值是什么?
- 基于物联网的矿井温、湿度检测系统设计 49次下载
- 基于阿里云物联网平台的智能灯光控制系统设计 4026次阅读
- 基于物联网的水管理系统设计方案 1887次阅读
- 如何使用物联网实现智能垃圾监控系统的设计 2392次阅读
- 基于电子标签和物联网实现工业企业物联网系统的设计 3698次阅读
- Inventek物联网照明解决方案系统架构分析 1866次阅读
- 物联网操作系统到底是什么 3988次阅读
- 物联网操作系统到底是什么? 2904次阅读
- 物联网系统评价的模型如何去构建实现 1328次阅读
- 物联网技术综合实验系统III型参数 3701次阅读
- 你知道水泵物联网监控系统吗 2111次阅读
- 物联网十大经典开源操作系统 1w次阅读
- 基于物联网的智能电表系统的设计及原理 3853次阅读
- 物联网网关概述及系统设计 9432次阅读
- 物联网有哪些操作系统?物联网操作系统汇总 5.4w次阅读
- 物联网操作系统的架构和基本功能 5530次阅读
下载排行
本周
- 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次下载 | 免费
评论
查看更多