0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

火灾警报和有毒一氧化碳气体警报的制作

454398 来源:wv 2019-10-15 11:28 次阅读

步骤1:必需的硬件

1。粒子光子

光子是一种微型Wi-Fi IoT设备,用于为物联网创建连接的项目和产品。它易于使用,功能强大且已连接到云。该开发板本身使用赛普拉斯Wi-Fi芯片(可在Nest Protect,LIFX和Amazon Dash中找到该芯片)以及功能强大的STM32 ARM Cortex M3微控制器

2。 I2C端口朝外的粒子电子或光子I2C屏蔽

使用PEI2C扩展,使用粒子电子/光子为扩展控制器世界提供云连接。

PEI2C提供了一个5伏I2C扩展端口,允许您的粒子电子或光子连接到不同的I2C设备。连接用于光度监视,气体水平检测,温度和湿度监视的传感器,以及多种类型的运动,加速度和方向传感器。

3。一路继电器(5V)

4。 MQ9

使用我们的I2C迷你模块形状因子,MQ-9气体传感器可轻松监控一氧化碳和可燃气体浓度。 MQ9连接到ADC121C 12位模数转换器,该转换器只需使用两个地址跳线即可充分扩展到每个I2C端口9个气体传感器(充分利用了浮动地址系统)。

MQ-9能够检测介于10和1,000ppm之间的一氧化碳空气浓度水平以及介于100和10,000ppm之间的可燃气体浓度。 MQ9的理想感测条件是在65%±5%的湿度下20°C±2°C

5。 SHT30

SHT30是Sensirion的下一代温度和湿度传感器

与之前的产品相比,SHT30具有更高的智能性,可靠性和改进的精度指标。其功能包括增强的信号处理,以便可以使用I2C通信读取温度和湿度。

步骤2:与粒子光子的连接

必要的连接(参见图片)如下:

1。这将在I2C上工作。取一个用于粒子光子的I2C屏蔽,然后将其轻轻地连接到粒子光子的引脚上。

2。将I2C电缆的一端连接到SHT30的端口,另一端连接到I2C屏蔽。

3。使用I2C电缆将MQ9传感器入口连接到SHT30上。

4。要打开继电器电源,请使用光子的3V和GND引脚。将光子的D7引脚连接到继电器的IN引脚。

5。最后,使用USB电缆为粒子光子供电。您还可以使用光子的力量之盾来提供外部电源。

步骤3:使用粒子Webhooks将粒子光子连接到Ubidots

了解您可以访问以下链接的Particle Webhook功能。

1。要开始使用您的粒子光子设备,请单击此处。

2。安装完设备后,请执行以下步骤:

登录到您的粒子帐户,转到粒子控制台,将鼠标指针移到集成。

单击“新集成”

选择“ Webhook”

将事件命名为Ubidots。

添加URL

https://industrial.api.ubidots.com/api/v1.6/devices/{{{PARTICLE_DEVICE_ID}}}

选择请求类型 POST,请求格式“自定义正文”, 设备任意。

转到“高级设置”并插入文本“ {{{PARTICLE_EVENT_VALUE}}} ” ”。

现在移至 HTTP头并插入:

Host | industrial.api.ubidots.com X-Auth-Token | YOUR_UBIDOTS_TOKEN_HERE Content-Type | application/json

单击创建网络并确认数据正在流式传输到Ubidots。

步骤4:对光子进行编程

使用Webhooks成功将您的Particle帐户连接到Ubidots之后,就可以对Photon进行编程了。

1。创建新应用,单击 Particle IDE 。

2。为您的应用命名。

3。将Ubidots库添加到新项目中:

转到“粒子IDE”右侧面板上的“库”选项,然后单击它。

在社区图书馆中搜索Ubidot,单击它。

单击包含在项目中。

单击您的应用名称,确认,然后将插入库。

4。复制并粘贴以下“火灾-一氧化碳(CO)警报系统.ino”代码。

// This #include statement was automatically added by the Particle IDE.

// This code is designed for Particle Photon to work with the SHT30 and MQ9 I2C Mini Module available from dcubestore.com

// This code is written for Fire and Carbon Monoxide Alert System

// Ubidots using Particle Webhooks.

/****************************************

Include Libraries

****************************************/

#include

#include

#include

/****************************************

Define Instances and Constants

****************************************/

#define interval 1000

#define Addr 0x44

#define Addr2 0x50

double cTemp = 0.0, fTemp = 0.0, humidity = 0.0;

int raw_adc_MQ9 = 0;

double ppm_MQ9 = 0.0;

int relay = D7;

int i = 0;

const char* WEBHOOK_NAME = “Ubidots”;

Ubidots ubidots(“webhook”, UBI_PARTICLE);

/****************************************

Main Functions

****************************************/

void setup() {

Serial.begin(115200);

ubidots.setDebug(true); // Uncomment this line for printing debug messages

// Set variable for SHT30

Particle.variable(“i2cdevice”, “SHT30”);

Particle.variable(“cTemp”, cTemp);

Particle.variable(“humidity”, humidity);

// Initialise I2C communication as MASTER

Wire.begin();

// Initialise serial communication, set baud rate = 9600

Serial.begin(9600);

delay(300);

// Set variable for MQ9

Particle.variable(“i2cdevice”, “ADC121C_MQ9”);

Particle.variable(“PPM”, ppm_MQ9);

// Initialise I2C communication as MASTER

Wire.begin();

// Initialise serial communication, set baud rate = 9600

Serial.begin(9600);

delay(300);

pinMode(relay, OUTPUT);

}

void loop() {

// SHT30

unsigned int data[6];

// Start I2C Transmission

Wire.beginTransmission(Addr);

// Send 16-bit command byte

Wire.write(0x2C);

Wire.write(0x06);

// Stop I2C transmission

Wire.endTransmission();

delay(300);

// Start I2C Transmission

Wire.beginTransmission(Addr);

// Stop I2C Transmission

Wire.endTransmission();

// Request 6 bytes of data

Wire.requestFrom(Addr, 6);

// Read 6 bytes of data

// temp msb, temp lsb, crc, hum msb, hum lsb, crc

if (Wire.available() == 6)

{

data[0] = Wire.read();

data[1] = Wire.read();

data[2] = Wire.read();

data[3] = Wire.read();

data[4] = Wire.read();

data[5] = Wire.read();

}

delay(500);

// Convert the data

cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;

fTemp = (cTemp * 1.8) + 32;

humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);

// Output data to dashboard

Particle.publish(“Temperature in Celsius: ”, String(cTemp));

Particle.publish(“Temperature in Fahrenheit: ”, String(fTemp));

Particle.publish(“Relative Humidity: ”, String(humidity));

float value2 = humidity ;

float value1 = cTemp ;

if (cTemp 》= 60)

{

digitalWrite(relay, HIGH);

delay(interval);

digitalWrite(relay, HIGH);

delay(interval);

} else {

digitalWrite(relay, LOW);

delay(interval);

digitalWrite(relay, LOW);

delay(interval);

}

delay(1000);

// MQ9

unsigned int data2[2];

// Start I2C transmission

Wire.beginTransmission(Addr2);

// Select data register

Wire.write(0x00);

// Stop I2C transmission

Wire.endTransmission();

// Request 2 bytes of data

Wire.requestFrom(Addr2, 2);

// Read 2 bytes of data

// raw_adc msb, raw_adc lsb

if (Wire.available() == 2)

{

data2[0] = Wire.read();

data2[1] = Wire.read();

}

delay(300);

// Convert the data to 12-bits

raw_adc_MQ9 = ((data2[0] & 0x0F) * 256) + data2[1];

float sensor_voltage = raw_adc_MQ9 / 1024.0 * 5.0;

float RS_gas = (5.0 - sensor_voltage) / sensor_voltage;

float ratio = RS_gas / 3.78;

// Output data to dashboard

Particle.publish(“Carbon Monoxide Concentration : ”, String(ratio));

float value3 = ratio;

delay(1000);

ubidots.add(“Variable_Name_One”, value1); // Change for your variable name

ubidots.add(“Variable_Name_Two”, value2);

ubidots.add(“Variable_Name_Three”, value3);

bool bufferSent = false;

bufferSent = ubidots.send(WEBHOOK_NAME, PUBLIC); // Will use particle webhooks to send data

if (bufferSent) {

// Do something if values were sent properly

Serial.println(“Values sent by the device”);

}

delay(5000);

}

5。验证代码并刷新它。

步骤5:创建Ubidots事件

一旦使用粒子IDE将代码刷新到Photon,数据便开始出现在Ubidots。

Ubidots支持已经集成的事件,使您可以将事件,警报和通知发送给需要知道的人。您可以在创建条件事件和警报中了解有关它们的更多信息

创建事件的步骤:

1。登录到您的Ubidots仪表板。

2。转到 DATA ,然后选择事件。

3。单击Ubidots控制台左侧的 + 符号以创建事件。

4。选择如果触发器标签,以组织事件逻辑或条件。

5。单击选择变量:温度和湿度。

6。创建条件:如果“温度”或“湿度”的值在0分钟内大于或等于60。

7。选择然后采取行动标签以执行计划的事件或警报,在本例中,我们将使用语音和短信警报。

8。确定要执行的动作以及发送给接收者的消息。

9。确定时间。

10。确认事件

步骤6:输出

步骤7:应用

该系统允许您在Ubidots平台中分析实时数据。

火灾产生的热量和烟雾会严重损坏或完全破坏无法维修的物品。这种带有自动继电器控制的紧急警报可以连接到洒水系统,可以挽救许多生命和财产。

我们还可以连接GPS以获取实时位置,该位置可以与附近的消防局和医院共享,以便它们可以及时到达。

该系统可用于多种用途,例如火灾警报和有毒一氧化碳气体警报。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 警报器
    +关注

    关注

    2

    文章

    71

    浏览量

    19505
收藏 人收藏

    评论

    相关推荐

    HOLTEK新推出BA45F6956复合型感烟与一氧化碳/燃气探测器MCU

    Holtek新推出感烟与一氧化碳/燃气探测专用Flash MCU BA45F6956,适用于复合型感烟探测产品,例如LCD感烟与一氧化碳/燃气探测报警器、语音型LCD感烟与一氧化碳/燃气探测报警器等。
    的头像 发表于 11-20 15:21 422次阅读

    基于金属氧化物的一氧化碳传感器的挑战与发展

    由于具有高毒、无色、无味的特性,一氧化碳(CO)气体成为近年来工矿作业、日常生活中的“隐形杀手”。目前,市面上涌现出许多基于电学、电化学以及光学原理的一氧化碳传感装置。应用于一氧化碳
    的头像 发表于 11-06 09:04 704次阅读
    基于金属<b class='flag-5'>氧化</b>物的<b class='flag-5'>一氧化碳</b>传感器的挑战与发展

    基于单片机的一氧化碳检测系统设计

    一氧化碳检测仪是种用于公共场所具有检测及超限报警功能的仪器,能起到预防一氧化碳中毒的效果,使人们安全放心的工作。系统以单片机为核心,利用一氧化碳检测传感器检测环境中的
    发表于 09-25 06:39

    基于STM32单片机的CO(一氧化碳)气体检测报警通风系统仿真设计

    基于STM32单片机的CO(一氧化碳)气体检测报警通风系统仿真设计
    的头像 发表于 09-01 09:33 1491次阅读
    基于STM32单片机的CO(<b class='flag-5'>一氧化碳</b>)<b class='flag-5'>气体</b>检测报警通风系统仿真设计

    一氧化碳控制系统不要主机有影响吗

    一氧化碳浓度,当一氧化碳浓度超25PPM时,会发处报警信号,并上传至空气质量控制器,控制器会联动排烟风机将多余的一氧化碳气体排出,保持空气的清新。所以不安装主机不会影响
    的头像 发表于 08-29 14:36 379次阅读
    <b class='flag-5'>一氧化碳</b>控制系统不要主机有影响吗

    地下车库一氧化碳浓度为多少时启动一氧化碳监测系统

    报警值设置: 根据一氧化碳的毒性可以看到50ppm为健康成年人八小时内可承受的最大极限,蓝锐报警值设定在25ppm。当一氧化碳浓度值超过25ppm时,就会启动一氧化碳监测,联动排风将一氧化碳
    的头像 发表于 08-24 10:40 378次阅读
    地下车库<b class='flag-5'>一氧化碳</b>浓度为多少时启动<b class='flag-5'>一氧化碳</b>监测系统

    在线式固态电化学一氧化碳报警仪的特点和应用

    一氧化碳是一种无色无味的气体,对人体有极高的毒性,大量吸入会导致严重的健康问题,甚至可能致命。因此,一氧化碳的实时监测和报警至关重要。在线式固态电化学一氧化碳报警仪凭借其高精度、快速响
    的头像 发表于 08-11 11:30 372次阅读

    消防民用一氧化碳监控系统的原理

    关键词:消防、民用、一氧化碳监控系统、原理 消防民用一氧化碳监控系统的原理:消防民用一氧化碳监控系统主要用于地下车库或人防空间内的一氧化碳气体
    的头像 发表于 08-07 10:34 590次阅读
    消防民用<b class='flag-5'>一氧化碳</b>监控系统的原理

    一氧化碳传感器在车内开空调预防中毒的应用

    救治。据悉,救护车医生到达现场给患者查体后,考虑现场发生了一氧化碳中毒事件,随后将患者送至医院进一步治疗。 一氧化碳作为一种无色无味的有毒性气体,人们中毒时很难及时发觉120表示,当发动机急速运行时,由于汽油燃烧不充分,
    的头像 发表于 08-01 14:57 213次阅读
    <b class='flag-5'>一氧化碳</b>传感器在车内开空调预防中毒的应用

    Arduino带继电器的一氧化碳探测器报警器

    电子发烧友网站提供《Arduino带继电器的一氧化碳探测器报警器.zip》资料免费下载
    发表于 07-10 10:47 0次下载
    Arduino带继电器的<b class='flag-5'>一氧化碳</b>探测器报警器

    地下车库为什么一定要安装一氧化碳浓度监控系统

    关键词:地下车库、安装、一氧化碳浓度监控系统 地下车库是封闭或者半封闭的建筑,由于汽车的尾气排放,加上空气流通不流通,就会 一氧化碳等有害气体,这些气体对人体组织缺氧,心脏和大脑的影响
    的头像 发表于 07-03 11:43 603次阅读
    地下车库为什么一定要安装<b class='flag-5'>一氧化碳</b>浓度监控系统

    【开源】4G_Lora远程一氧化碳监测器

    概述: ​ SB-FSS12 是款基于C2M低代码核心模组开发的《4G_Lora远程一氧化碳监测器》设备,可实现4G或Lora远程获取一氧化碳浓度值的功能。该设备的配置方式极其简单,用户无需在电脑
    发表于 06-27 09:28

    地下车库一氧化碳浓度监控系统——一氧化碳浓度探测器接线方式

    关键词:地下车库、一氧化碳浓度监控系统、一氧化碳探测器、接线 地下车库一氧化碳的产生主要源自于汽车发动机,由于燃烧不充分会产生大量的尾气,车库属于密闭环境空气流通不好,车辆尾气不易排出,尾气中含有
    的头像 发表于 06-13 15:09 2150次阅读
    地下车库<b class='flag-5'>一氧化碳</b>浓度监控系统——<b class='flag-5'>一氧化碳</b>浓度探测器接线方式

    甲烷一氧化碳双气传感器保护家庭用气安全

    ,燃烧过程中因为各种原因泄漏的一氧化碳、甲烷等气体,也时刻威胁着家庭中家人的生命安全。冬季人们往往门窗紧闭,空气流通不畅,而在厨房中一氧化碳、甲烷等有害气体的浓度会随着燃气灶、燃气热水
    的头像 发表于 06-13 09:51 217次阅读
    甲烷<b class='flag-5'>一氧化碳</b>双气传感器保护家庭用气安全

    停车场,车库一氧化碳(CO)报警器存在的意义是什么?

    车库安装一氧化碳报警器是非常有必要的,因为一氧化碳是一种无色、无味、无臭的有毒气体,人类无法感知其存在,但在高浓度下会对人体造成严重危害,甚至会导致死亡。一氧化碳通常由燃烧设备产生,例
    的头像 发表于 05-19 14:54 676次阅读