【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.mzph.cn/news/92728.shtml

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

相关文章

OpenCV查找和绘制轮廓:findContours和drawContours

1 任务描述: 绘制图中粗线矩形的2个边界,并找到其边界的中心线 图1 原始图像 2.函数原型 findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, …

移动端 [Android iOS] 压缩 ECDSA PublicKey

移动端 [Android & iOS] 压缩 ECDSA PublicKey AndroidiOS 使用 Android KeyStore 和 iOS 的 Secure Enclave 提供的安全能力使用 P-256 来对 API 请求进行签名,服务器端再进行验证。 但是发现不论是 iOS 还是安卓都没有提供一个便捷的方式从 iOS 的SecKeyCopyE…

0/1背包问题

例题HDU-2602 Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone collector had a big bag wi…

2021-06-11 51蛋骗鸡用小数点作秒指示,分钟计时.(怎么用二个数码管做分的倒计时,DP亮灭来计秒)

缘由怎么用二个数码管做分的倒计时,DP亮灭来计秒,求思路 - 24小时必答区 #include "REG52.h" sbit K1 P1^5; sbit K2 P1^6; sbit K3 P1^7; sbit BUZ1P1^0; bit k0; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,111,128};//0-9. unsign…

RPC协议

问题一:如何规定远程调用的语法?客户端如何告诉服务端,我是一个加法,而另一个是乘法。我是用字符串“add”传给你,还是传给你一个整数,比如 1 表示加法,2 表示乘法?服务端该如何告诉…

mysql json字段使用以及常用json函数,配合springBoot和mybatis-plus简化开发

Mysql JSON 类型分享 Mysql json字段了解: MySQL 中的 JSON 类型是一种用于存储和处理 JSON(JavaScript Object Notation)数据的数据类型。JSON 是一种轻量级的数据交换格式,常用于表示结构化的数据。MySQL 的 JSON 类型提供了以…

Fragment之间进行通信的最佳实现方式

前言 在Android应用程序中,片段(Fragments)是一种组件,用于构建灵活且可重用的用户界面。然而,当在应用程序中使用多个片段时,它们之间的通信变得非常重要。本文将介绍在Android应用程序中实现片段之间和片…

Polygon Miden:扩展以太坊功能集的ZK-optimized rollup

1. 引言 Polygon Miden定位为zkVM,定于2023年Q4上公开测试网。 zk、zkVM、zkEVM及其未来中指出,当前主要有3种类型的zkVM,括号内为其相应的指令集: mainstream(WASM, RISC-V)EVM(EVM bytecod…

Java:正则表达式的命名捕获组

命名捕获组格式 (?<year>.*)-(?<month>.*)-(?<date>.*)完整示例 package com.example.demo;import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexTests {public static void main(String[] args) {String text "2…

3.css的各种选择器

元素选择器 body中的形式 <span class"cls" id"time">2023年03月02日 21:50</span> <span class"cls">央视网</span>head中的形式 <style>h1 {color: #4D4F53;}/* 元素选择器 */span {color: red;} }</styl…

Kubernetes 学习总结(38)—— Kubernetes 与云原生的联系

一、什么是云原生&#xff1f; 伴随着云计算的浪潮&#xff0c;云原生概念也应运而生&#xff0c;而且火得一塌糊涂&#xff0c;大家经常说云原生&#xff0c;却很少有人告诉你到底什么是云原生&#xff0c;云原生可以理解为“云”“原生”&#xff0c;Cloud 可以理解为应用程…

C++:stl:list的常用接口及其模拟实现

本文主要介绍c&#xff1a;stl中list常用接口的功能及使用方法&#xff0c;比较list与vector的区别&#xff0c;并对list的常用接口进行模拟实现。 目录 一、list的介绍和使用 1.list介绍 2.list使用 1.list的构造 2.list iterator的使用 3.list 容量相关 4.list元素访…

[NOIP2011 提高组] 选择客栈

[NOIP2011 提高组] 选择客栈 题目描述 丽江河边有 n n n 家很有特色的客栈&#xff0c;客栈按照其位置顺序从 1 1 1 到 n n n 编号。每家客栈都按照某一种色调进行装饰&#xff08;总共 k k k 种&#xff0c;用整数 0 ∼ k − 1 0 \sim k-1 0∼k−1 表示&#xff09;&am…

机器学习——seaborn实用画图方法简介

0、seaborn简介: 前言:下面的总结只是介绍seaborn有哪些方法和属性,至于具体使用,通过下面给出的名称稍作查找即可。重点应该关注本文介绍的seaborn的使用方法seaborn与机器学习的关系: 知识图谱 0.1、了解即可的知识: seaborn:在matplotlib的基础上画一些更好看的图,在…

Mysql集群高可用架构MHA

Mysql集群高可用架构MHA 一、MHA概述1.1、 MHA 是什么1.2、 MHA 的组成1.3、 MHA 的特点 二、MHA高可用实例2.1、配置主从复制2.1、 安装 MHA 软件2.2、故障模拟2.3、故障修复 一、MHA概述 1.1、 MHA 是什么 MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的M…

计算机毕设 大数据全国疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的…

【C++刷题笔记】螺旋矩阵的两种写法

螺旋矩阵有两种判断大循环结束的方式&#xff0c;第一种是判断需要循环多少次&#xff0c;奇数的话需要额外处理&#xff1b;第二种通过取多少个数判断&#xff0c;不需要额外处理 方法一&#xff1a; class Solution { public:vector<int> spiralOrder(vector<vect…

OpenCV之直线曲线拟合

直线拟合fitLine void fitLine( InputArray points, OutputArray line, int distType,double param, double reps, double aeps ); points:二维点的数组或vector line:输出直线,Vec4f (2d)或Vec6f (3d)的vector distType:距离类型 param:距离参数 reps:径向的精度参数 a…

【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;加速科技杯三等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼…

Centos7 安装mysql 5.7

Centos7 安装mysql 5.7 准备工作 centos7 服务器 xshell 安装教程 安装并配置 在安装MySQL之前&#xff0c;我们应该确保系统已经更新到最新的软件包和安全补丁。打开终端&#xff0c;输入以下命令来更新系统 yum update为了方便安装MySQL&#xff0c;我们需要下载并安装…