1535| 0
|
[K10项目分享] E-nose 电子鼻:用行空板 K10和Arduino IDE进行MEMS AI气体检测 |
本帖最后由 zoey不种土豆 于 2025-2-21 19:35 编辑 E-nose(电子鼻)是基于行空板K10的AI气体检测设备,它利用气味、烟雾、VOC(挥发性有机化合物)、H2S(硫化氢)这四种类型的气味传感器,从大蒜和咖啡豆中采集实时气体数据。然后将这些数据用于在 Edge Impulse平台上训练 AI模型。经过训练的模型被部署在行空板K10上,从而可以智能识别和区分出这两种气味。通过简单的用户交互,它可以识别不同的气味,使其适用于智能气味监测、环境检测和更多应用。 ![]() 系统组件 硬件平台 以行空板K10为主控平台,以Arduino IDE作为编程环境。行空板K10具备内置显示屏和按钮,能够显示推理结果并接收用户输入。 气体传感器 四种类型的气体传感器,包括气味、烟雾、VOC(挥发性有机化合物)、H2S(硫化氢),负责捕获大蒜和咖啡豆的气味数据。通过分析传感器数据的变化,来检测不同气味的独特特征。 Edge Impulse Edge Impulse平台用于使用收集到的气味数据训练AI模型,从而创建气味识别模型。 推理引擎: 部署在行空板K10上的推理引擎负责执行实时 AI 推理,将传感器输入数据转换为可解释的结果。 所需硬件 行空板K10 Fermion: MEMS 硫化氢传感器 Fermion: MEMS VOC传感器 Fermion: MEMS臭味传感器 Fermion: MEMS 烟雾传感器 Gravity: I2C ADS1115 16位AD转换模块 风扇、连接线和 3D打印部件 项目步骤 1.环境设置
![]()
![]()
![]() 完成 ![]()
2.硬件连接 ![]()
![]() 3. 数据收集和标记
![]()
标签:咖啡豆、大蒜 采样长度:800ms 传感器:H2S、VOC、气味、烟雾
![]() 4.训练模型 在为E-nose收集数据之后,你可以着手创建自己的 Impulse。一个完整的 Impulse 由三个主要构建模块构成:输入模块、处理模块以及学习模块。一个项目可以包含多个 Impulse,或Experiments,每个 Impulse 可以包含相同或不同的模块组合。这使得你可以使用相同的输入训练和测试数据集,查看不同学习和处理模块的准确性和模型预测结果。 ![]() Flatten模块对信号进行统计分析。它适用于温度数据等变化缓慢的平均值计算,并可与其他模块配合使用。 Flatten 模块参数: 缩放轴(Scale axes):将轴乘以这个数值。 平均值(Average):计算窗口内的平均值。 最小值(Minimum):计算窗口内的最小值。 最大值(Maximum):计算窗口内的最大值。 均方根值(Root-mean square):计算窗口内的均方根值。 标准差(Standard deviation):计算窗口内的标准差。 偏度(Skewness):计算窗口内的偏度。 峰度(Kurtosis):计算窗口内的峰度。 移动平均窗口数量:通过维护最后 N 个窗口的滚动平均来计算移动平均值。注意,没有填充零,模块会累积到最多 N 个窗口的平均值。(例如,在样本的第一个窗口中,移动平均值等于窗口的平均值。) 在训练期间,每个样本的移动平均值都会重置,并且在推理时调用 run_classifier_init() 时也会重置。注意,如果启用此功能,则可能不希望在训练时有重叠的窗口。 ![]() 在我们的大多数 DSP 模块中,你都可以选择计算特征重要性。Edge Impulse Studio 随后会输出一份特征重要性列表(Feature Importance list),这将帮你确定在想要训练模型时,来自 DSP 模块的哪些轴在分析中最为重要。 ![]() 通过信号处理从原始信号中提取出有意义的特征后,你便可以利用学习模块来训练模型了。 ![]() 实时分类功能让你能利用直接从任意设备或受支持的开发板捕获的数据来验证你的模型。这让你可以了解模型在处理真实世界数据时的表现。 ![]() Impulse 可以作为 Arduino 库进行部署。这将所有的信号处理模块、配置以及学习模块打包成一个单一的包。你可以将它包含在你的草图中,以在本地运行 Impulse。在E-nose的教程中,你需要导出一个 Impulse,并将其集成到一个草图中,以对传感器数据进行分类。 ![]() 5.部署
![]() ![]() 代码分析 E-nose的代码分为多个功能模块,主要包括: 1.库导入和全局变量: DFRobot_ADS1115:用于从ADS1115模数转换器读取电压值,适用于气体传感器数据采集。 unihiker_k10:用于控制K10显示屏,提供绘图和显示功能。 enose2025_inferencing:用于气味识别的推理库。 2.全局变量: 包括屏幕方向设置、用于存储传感器数据的数组以及用于存储特征数据的数组。 3.图像数据和特征数组: image_data数组:存储背景、加载界面和推理结果的图像,以显示用户界面。 features数组:存储从传感器收集的特征数据,这些数据在推理过程中使用。 4.函数定义: setup():初始化串口通信、行空板K10屏幕,设置背景图像,并配置按钮回调函数。 loop():主循环实时读取传感器数据并更新显示。当数据达到8组时,会移除旧数据,仅保留最新的8组数据。 drawLine():绘制实时传感器数据曲线,便于观察数据趋势。 onButtonAPressed():当用户按下A按钮时,系统开始收集传感器数据,并调用run_classifier()推理函数。根据推理结果,显示相应的图像。 5.推理结果处理: 根据推理结果的概率,系统判断气味是大蒜还是咖啡豆,并在屏幕上显示相应的图像。同时,还会打印推理时间以及任何潜在的异常检测结果。 结论 这款基于 K10 硬件的 AI 驱动的气味检测设备E-nose(电子鼻)完成了从数据收集到 AI 推理的全过程。通过使用四个气体传感器收集大蒜和咖啡豆的数据,在Edge Impulse 平台上训练模型,并将模型部署在行空板K10上,系统可以进行气味识别。 ![]() 相关教程 如何通过Arduino IDE在行空板K10 (ESP32 S3) 上使用TensorFlow Lite Micro 代码下载: ![]() 项目作者:jenna 原文链接:https://community.dfrobot.com/makelog-315191.html 进阶阅读:TinyML电子鼻E-nose:使用MEMS气体传感器和edge impulse平台 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed