步驟1:必需的硬件
1。粒子光子
光子是一種微型Wi-Fi IoT設(shè)備,用于為物聯(lián)網(wǎng)創(chuàng)建連接的項目和產(chǎn)品。它易于使用,功能強大且已連接到云。該開發(fā)板本身使用賽普拉斯Wi-Fi芯片(可在Nest Protect,LIFX和Amazon Dash中找到該芯片)以及功能強大的STM32 ARM Cortex M3微控制器。
使用PEI2C擴展,使用粒子電子/光子為擴展控制器世界提供云連接。
PEI2C提供了一個5伏I2C擴展端口,允許您的粒子電子或光子連接到不同的I2C設(shè)備。連接用于光度監(jiān)視,氣體水平檢測,溫度和濕度監(jiān)視的傳感器,以及多種類型的運動,加速度和方向傳感器。
3。一路繼電器(5V)
4。 MQ9
使用我們的I2C迷你模塊形狀因子,MQ-9氣體傳感器可輕松監(jiān)控一氧化碳和可燃氣體濃度。 MQ9連接到ADC121C 12位模數(shù)轉(zhuǎn)換器,該轉(zhuǎn)換器只需使用兩個地址跳線即可充分擴展到每個I2C端口9個氣體傳感器(充分利用了浮動地址系統(tǒng))。
MQ-9能夠檢測介于10和1,000ppm之間的一氧化碳空氣濃度水平以及介于100和10,000ppm之間的可燃氣體濃度。 MQ9的理想感測條件是在65%±5%的濕度下20°C±2°C
5。 SHT30
SHT30是Sensirion的下一代溫度和濕度傳感器。
與之前的產(chǎn)品相比,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。要開始使用您的粒子光子設(shè)備,請單擊此處。
2。安裝完設(shè)備后,請執(zhí)行以下步驟:
登錄到您的粒子帳戶,轉(zhuǎn)到粒子控制臺,將鼠標指針移到集成。
單擊“新集成”
選擇“ Webhook”
將事件命名為Ubidots。
添加URL
https://industrial.api.ubidots.com/api/v1.6/devices/{{{PARTICLE_DEVICE_ID}}}
選擇請求類型 POST,請求格式“自定義正文”, 設(shè)備任意。
轉(zhuǎn)到“高級設(shè)置”并插入文本“ {{{PARTICLE_EVENT_VALUE}}} ” ”。
現(xiàn)在移至 HTTP頭并插入:
Host | industrial.api.ubidots.com X-Auth-Token | YOUR_UBIDOTS_TOKEN_HERE Content-Type | application/json
單擊創(chuàng)建網(wǎng)絡(luò)并確認數(shù)據(jù)正在流式傳輸?shù)経bidots。
步驟4:對光子進行編程
使用Webhooks成功將您的Particle帳戶連接到Ubidots之后,就可以對Photon進行編程了。
1。創(chuàng)建新應(yīng)用,單擊 Particle IDE 。
2。為您的應(yīng)用命名。
3。將Ubidots庫添加到新項目中:
轉(zhuǎn)到“粒子IDE”右側(cè)面板上的“庫”選項,然后單擊它。
在社區(qū)圖書館中搜索Ubidot,單擊它。
單擊包含在項目中。
單擊您的應(yīng)用名稱,確認,然后將插入庫。
4。復制并粘貼以下“火災-一氧化碳(CO)警報系統(tǒng).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
// 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:創(chuàng)建Ubidots事件
一旦使用粒子IDE將代碼刷新到Photon,數(shù)據(jù)便開始出現(xiàn)在Ubidots。
Ubidots支持已經(jīng)集成的事件,使您可以將事件,警報和通知發(fā)送給需要知道的人。您可以在創(chuàng)建條件事件和警報中了解有關(guān)它們的更多信息。
創(chuàng)建事件的步驟:
1。登錄到您的Ubidots儀表板。
2。轉(zhuǎn)到 DATA ,然后選擇事件。
3。單擊Ubidots控制臺左側(cè)的 + 符號以創(chuàng)建事件。
4。選擇如果觸發(fā)器標簽,以組織事件邏輯或條件。
5。單擊選擇變量:溫度和濕度。
6。創(chuàng)建條件:如果“溫度”或“濕度”的值在0分鐘內(nèi)大于或等于60。
7。選擇然后采取行動標簽以執(zhí)行計劃的事件或警報,在本例中,我們將使用語音和短信警報。
8。確定要執(zhí)行的動作以及發(fā)送給接收者的消息。
9。確定時間。
10。確認事件
步驟6:輸出
步驟7:應(yīng)用
該系統(tǒng)允許您在Ubidots平臺中分析實時數(shù)據(jù)。
火災產(chǎn)生的熱量和煙霧會嚴重損壞或完全破壞無法維修的物品。這種帶有自動繼電器控制的緊急警報可以連接到灑水系統(tǒng),可以挽救許多生命和財產(chǎn)。
我們還可以連接GPS以獲取實時位置,該位置可以與附近的消防局和醫(yī)院共享,以便它們可以及時到達。
該系統(tǒng)可用于多種用途,例如火災警報和有毒一氧化碳氣體警報。
-
警報器
+關(guān)注
關(guān)注
2文章
71瀏覽量
19693
發(fā)布評論請先 登錄
相關(guān)推薦
評論