【ESP32 + Edge Impulse平台】运行AI算法模拟多传感器数据融合实现异常检测

本篇博文主要以ESP32+MQ Sensor 气体传感器为例,通过连接 Edge Impulse 平台,实现数据的实时采集和训练,进而实现在嵌入式设备上部署 ML 机器学习。本教程介绍如何使用 Edge Impulse 和机器学习来实现ESP32 异常检测系统,系统使用一个机器学习模型,检测气体何时出现异常。

若对本文有兴趣,请一键三连+私信我免费获取博文原文

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39217004/article/details/133348184

目录

  • 1. Edge Impulse 平台简介
    • 1.1. 数据转发器
    • 1.2 Edge Impuls 平台 + ESP32
  • 2. 软硬件环境
  • 3. ESP32 + MQ Sensor + Edge Impuls 平台融合AI实现异常检测
    • 3.1 ESP32驱动 MQ Sensor传感器
    • 3.2 构建数据集
      • 3.2.1 Ubuntu 搭建开发环境
      • 3.2.2 数据集在线实时收集
      • 3.2.3 创建模型,提取特征
      • 3.2.4 设置相关参数,训练数据集
      • 3.2.5 后续工作
  • 4. 烧录官方固件,连接平台
  • 5. 参考资料

1. Edge Impulse 平台简介

Edge Impulse提供了一个易于使用的端到端平台,用于:

  • ·轻松获取传感器数据作为嵌入式机器学习模型的输入
  • ·高效创建针对内存大小和功耗(电池寿命)进行优化的嵌入式机器学习模型
  • ·使用Edge Impulse SDK和您选择的开发环境轻松将模型部署到目标传感器上

Edge Impulse通过提供端到端平台,在低功耗温度传感器上部署智能嵌入式机器学习,解决了这些挑战。我们允许您将智能(或规则逻辑)放回到数据的来源,以便设备可以做出实时决策,减少由传感器到云交互产生的往返延迟,并仅发送触发系统所有者响应所需的内容,例如当冰箱门打开太长时间时。

1.1. 数据转发器

搜集数据集进行训练,使用平台的数据转发器 data forwarder 工具,传感器数据通过PC串口和平台的web之间建立连接,平台web可以通过PC的串口实时获取传感器的数据,用于训练。使用K-Means聚类构建我们的嵌入式ML模型,并检测数据中的异常值,我们将其标记为“异常”。

1.2 Edge Impuls 平台 + ESP32

选择平台支持的硬件设备

Edge Impulse 支持在 ESP32 上处理各类传感器数据;

Espressif ESP-EYE (ESP32)

2. 软硬件环境

在这里插入图片描述

  • ESP32 DevKitC 开发板
  • MQ sensor 气体传感器
  • Arduino IDE
  • Edge Impulse 平台账户

3. ESP32 + MQ Sensor + Edge Impuls 平台融合AI实现异常检测

要实现 ESP32 异常检测系统,需要将其分为两个不同的步骤:

  • 获取 气体传感器输出的正常值
  • 构建机器学习模型并将其与 ESP32 一起使用来检测异常

3.1 ESP32驱动 MQ Sensor传感器

本部分直接参考博文: ESP32连接MQ Sensor实现气味反应

说明:气体传感器输出的值,正常情况下和向传感器吹气时,输出的值是有变化的

将以下代码录进 ESP32 开发板,可实时获取传感器输出的值, 请提前搭建好 ardunio IDE + E

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128403.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

websocket拦截

python实现websocket拦截 前言一、拦截的优缺点优点缺点二、实现方法1.环境配置2.代码三、总结现在的直播间都是走的websocket通信,想要获取websocket通信的内容就需要使用websocket拦截,大多数是使用中间人代理进行拦截,这里将会使用更简单的方式进行拦截。 前言 开发者工…

PUPANVR-UI主菜单及设置窗体框架(9)

PUPA NVR UI主菜单及设置窗体框架 在设计UI时,竟量把数据、控制、显示,分开,即MVC的一个模式吧!使用MVC这样的模式思想,会让代码简洁不少,逻辑也很清析! 具体的代码见: PUPANVR这个…

Jmeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就不…

【python】可视化-绘制带有边权重的无向图

文章目录 需求示例数据代码实现 需求 输入数据表(矩阵),绘制无向图。 示例数据 **示例数据1:**3个特征之间的关系数据 (data1.txt) featuresfeature1feature2feature3feature110.60.8feature20.610.3feature30.80.31 **示例数据2:**4个特…

string类的使用方式的介绍

目录 前言 1.什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string 5.1 为什么学习string类? 5.1.1 C语言中的字符串 5.2 标准库中的string类 5.3 string类的常用接口的使用 5.3.1 构造函数 5.3.2 string类对象的容量操作 5.3.3 string类对象…

抄写Linux源码(Day17:你的键盘是什么时候生效的?)

回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…

CANoe.Diva生成测试用例

Diva目录 一、CANoe.Diva打开CDD文件二、导入CDD文件三、ECU Information四、时间参数设置五、选择是否测试功能寻址六、勾选需要测试服务项七、生成测试用例 一、CANoe.Diva打开CDD文件 CANoe.Diva可以通过导入cdd或odx文件,自动生成全面的测试用例。再在CANoe中导…

ml-dms-dataset实验

https://github.com/apple/ml-dms-dataset 数据集的两个问题: 部分图片失效images 和 labels不匹配 evaluation运行结果 论文中的结果: inference结果:

Linux TCP协议通信 (流程 三次握手 四次挥手 滑动窗口)

TCP通信流程 Socket函数 TCP通信实现&#xff08;服务器端&#xff09; #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <string.h> #include <stdlib.h> int main() {//1.创建socketint lfd socket(AF_INET, SOCK_…

ToBeWritten之改进威胁猎杀:自动化关键角色与成功沟通经验

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

基础算法之——【动态规划之路径问题】1

今天更新动态规划路径问题1&#xff0c;后续会继续更新其他有关动态规划的问题&#xff01;动态规划的路径问题&#xff0c;顾名思义&#xff0c;就是和路径相关的问题。当然&#xff0c;我们是从最简单的找路径开始&#xff01; 动态规划的使用方法&#xff1a; 1.确定状态并…

LeetCode竞赛---第 366 场周赛

Problem: 100103. 分类求和并作差 &#x1f4da; 题目&#xff1a;给你两个正整数 n 和 m 。 现定义两个整数 num1 和 num2 &#xff0c;如下所示&#xff1a; num1&#xff1a;范围 [1, n] 内所有 无法被 m 整除 的整数之和。num1&#xff1a;范围 [1, n] 内所有 无法被 m 整…