通过Arduino和机器学习检测有害气体(Bhopal 84)

0 794 中等的

使用化学药品工作的行业始终会遭受泄漏,可能会损害附近的工人和人员。有时,这些泄漏是由不适合货架传感器不适合的特定气体组合形成的。

可以训练机器学习模型以识别所有气体读数之间的微妙关系吗?

这个项目使用Dfrobot MICS-4514多气体传感器。传感器能够检测到以下气体:

甲烷(CH4)(1000–25000)ppm

乙醇(C2H5OH)(10-500)ppm

氢(H2)(1-1000)ppm

氨(NH3)(1-500)ppm

一氧化碳(CO)(1-1000)ppm

二氧化氮(NO2)(0.1-10)ppm

该设备将读取Multigas传感器X时间Y秒,然后计算最小,最大和平均值。这些值将转发到推理的机器学习模型,然后获得分数。示例:“有害”气体95%“常规”气体0%


重要的是:该项目是100%实验性的。没有任何形式的保证。作为一个与健康相关的项目,您应该始终在生产之前使用专业人士建议。

材料


Arduino BLE 33 Sense(您可以使用其他基于ARM的Arduino。该项目中没有使用板载传感器)

MICS-4514气体传感器

5V冷却器(更强的冷却器的性能更好)

OLED屏幕128x32

蜂鸣器

3D打印零件

DC女性连接器

5V电源

项目图

连接

电路模式将作为参考。详细说明,您需要将蜂鸣器连接到D2和GND。OLED屏幕VCC到Arduino 3.3V,GND到Arduino GND,SDA至A4,SCL到A5。重力气体传感器到Arduino 3.3V,GND,SDA至A4,SCL至A5

数据采集

项目图

有关数据采集脚本和详细信息,请访问此链接

模型培训

首先检查您是否有所有数据进行培训和测试,并使用正确的标签上传。然后去冲动设计,创造冲动。什么是冲动?冲动采用原始数据,使用信号处理来提取功能,然后使用学习块对新数据进行分类。


在Times Series数据中,我们将使用1500ms Windows大小和0,6列表。窗口增加在这里并不重要,因为样品是在x秒正好采集的。


处理块将是所有轴检查的原始数据。对于分类,我们将使用具有2个输出功能的Keras:常规和有害。


在原始数据中,您可以看到每个窗口大小内部的常规和有害的所有值。然后,您必须点击生成功能。


对于NN分类器,我们将使用60个培训周期,0.0005学习率,验证20和自动化数据集。它对我有用,增加了额外的层Droput速率0.1单击“开始训练”并检查您是否获得良好的准确性。在我的情况下,有害有害检测良好,有96%的常规气体检测。


如果您可以使用结果,则可以使用新数据进行模型测试并检查性能。如果有很多错误的读数,则应再次检查数据采集过程。

项目图

部署


在成功进行模型测试之后,一切都准备好进行部署。去部署。选择Arduino库,然后保存zip文件。现在转到Arduino IDE,草图,包括库,添加ZIP库,然后选择已下载的ZIP文件。

下载并安装执行脚本bhopalx.ino

使用USB电缆将Arduino连接到计算机并上传代码。请注意,上传需要很长时间。

3D打印零件

下载该链接的3D零件。用PLA打印。

设置


如果您想在几分钟内更改校准时间,请使用

#Define Calibration_Time 3

如果您的OLED屏幕有不同的I2C地址

#Define Screen_Address 0x3c

如果您想为蜂鸣器使用另一个PIN

#定义pinbuzzer 2

如果您想使用更多的读数,则最大和平均

int measurenumber = 4;

如果您想更改措施时间范围

int MeasureStimeFrame = 1500;// 1.5秒

如果您想更改百分比以识别气体

Float Scorelimit = 0.8;


项目图

使用Bhopal 84


显示Bhopal和Edge Impulse徽标后,该设备将开始校准阶段。在此阶段,不在传感器单元下放置任何物质或气体。它应该读取正常的空气条件。完成此步骤后,您可以将泄漏的物质放在传感器单元下,应在1.5秒内检测到。为什么要1.5秒?将进行4次读数以获得所有气体的混合,最大和平均水平。该信息将转发给模型,并将返回分类。

执照
所有权利
预订的
许可
0