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

步骤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以获取实时位置,该位置可以与附近的消防局和医院共享,以便它们可以及时到达。
该系统可用于多种用途,例如火灾警报和有毒一氧化碳气体警报。

全面无短板的iQOO 8 Pro,会成为引爆手机市场的存在吗?
realmeCEO正式宣布realme正式进入国内市场
中国信息通信研究院发布《物联网白皮书(2020年)》
Vishay发布可替代机械继电器的新型高可靠混合固态继电器
华为云耀云服务器 L 实例 _ 为跨境电商提升“钞”能力
火灾警报和有毒一氧化碳气体警报的制作
影驰推出HOF EXTREME 限量版内存:三星B-Die颗粒
手持式气象站使用说明介绍
回首前尘往事 七大没落软件排名(上)
西门子博途: 存储器间接寻址的应用
加拿大肯德基推出比特币全家桶顾客可以用比特币支付
高分辨率A-D转换器保真度测试及实现方法介绍
设计一个封闭环境内的眼刺激系统
人形机器人的落地思考
Linux 内核/sys 文件系统介绍
中国电信和联通迎来2.1GHz频段
图形用户界面为电源设计困境提供解决方案
设计高速ADC电源
因湃电池科技公司助力埃安完成电池自主产业化布局
贝尔金发布TrueFreedom Pro无线充电器:双设备10W快充