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

电子说

1.3w人已加入

描述

步骤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以获取实时位置,该位置可以与附近的消防局和医院共享,以便它们可以及时到达。

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
h1654156022.1315 2022-08-23
0 回复 举报
http://house.china.com.cn/sousou/%25D3%25E9%25C0%25D6%252C%2B%25C3%25E5%25B1%25B1%25D3%25C0%25B2%25FDB2024.cN%252C%25E4%25F0%25BA%25D3%25D2%25BD%25B1%25A3_69s.htm http://house.china.com.cn/sousou/%25B9%25FB%25B8%25D2%252C%2B%25C3%25E5%25B5%25E9%25BD%25F0%25B6%25A6%25B9%25AB%25CB%25BEB2024.cN%252C%25D2%25C1%25B4%25BA%25C8%25CB%25C1%25A6%25D7%25CA%25D4%25B4_2s.htm http://house.china.com.cn/sousou/%25D3%25E9%25C0%25D6%252C%2B%25C3%25E5%25B5%25E9%25C1%25FA%25CC%25DA%25B9%25FA%25BC%25CA%25B6%25B7%25C5%25A3B2024.cN%252C%25CE%25E2%25D6%25D2%25B7%25D6%25D5%25BE_2s.htm http://house.china.com.cn/sousou/%25D6%25B1%25D3%25AA%252C%2B%25C3%25E5%25B5%25E9%25CC%25DA%25C1%25FA%25BC%25AF%25CD%25C5%25B6%25B7%25C5%25A3B2024.cN%252C%25C9%25CF%25C8%25C4%25C3%25C0%25CA%25B3_2s.htm http://house.china.com.cn/sousou/%25C3%25E5%25B5%25E9%252C%2B%25C3%25E5%25B5%25E9%25D3%25C0%25F6%25CE%25B9%25FA%25BC%25CA%25BC%25AF%25CD%25C5B2024.cN%252C%25D0%25A2%25B8%25D0%25CE%25C0%25C9%25FA%25BE%25D6_2s.htm 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分