提示1:銳米所有 LoRa 產品嚴格遵循國標標準的 LoRaWAN 協議,
提示2:您可以免費復制,修改和商用本專案,請注明銳米原創,
提示3:如果您有其他 LoRa 需求或建議,歡迎聯系銳米 [email protected]
LoRa 煙霧報警器
LoRa 煙霧報警器智能判斷火災,基于 LoRa 傳送到服務器和 App,既可現場聲光報警,又可以遠程聯網報警,
物聯網 Arduino LoRa LoRaWAN 煙霧報警
運行效果
如下圖所示,偵測到煙霧濃度超過閾值,LoRa 煙霧報警器進行聲光報警,通過 LoRa 發送訊息,App 顯示本次火災事件,
專案介紹
全國每年大約會發生 23 萬起火災,有近 2000 人死于火災,經濟損失高達 200 億元,防火從古以來都是社會的基本需求,
LoRa 煙霧報警器能預先感知火災,現場聲光報警,通知周圍的人們;更重要的是,它能遠程聯網報警,及時通知處理火情;聯網使它維保便捷---故障自檢,電池容量等,
LoRa 煙霧報警器可以部署在:家庭,學校,酒店,寫字樓,工廠,倉庫,古建筑等場景,
LoRa 智慧消防系統
無線設計 安裝便利
相比傳統的產品,LoRa 煙霧報警器具備的優點為:
- 安裝簡單便捷,不需要布線
- 遠程報警,維保便捷
- 成本低廉,沒有流量費用
- 超低功耗,2節5號電池作業數年
本專案開源設計 LoRa 煙霧報警器的核心---軟體和硬體,用戶選擇一個漂亮的外殼和電池,即可組成一個產品,
同時,簡介了 LoRa 網路組件,輕松構建一個商用的智慧消防物聯網,
組件和材料
LoRa 擴展板 x 1 采購鏈接
Arduino UNO x 1 采購鏈接
光電式煙霧傳感器 x 1 采購鏈接
蜂鳴器 x 1 采購鏈接
(220歐姆電阻x2 + 10M歐姆電阻x1) 采購鏈接
天線 x 1 采購鏈接
杜邦線 x 8 采購鏈接
LED x 1 采購鏈接
面包板 x 1 采購鏈接
軟體和網路
LoRa網關 采購鏈接
LoRaServer 下載鏈接
LoRaApp 下載鏈接
Arduino IDE 下載鏈接
技術細節
元器件介紹
這是專為 Arduino 而設計的 LoRa 擴展板,既可以安裝在 Arduino UNO 上,也能使用杜邦線連接到 Arduino Pro Mini,
它能達到空曠 10km 的通信距離,休眠電流僅 1.3uA,精心設計的軟體庫,使其開發極為容易:
- 發送資料
LoRa.write("123", 3);
- 接收資料
if (LoRa.availabe()) {
len = LoRa.read(buf, MAX_LEN);
}
Arduino UNO 是最常用的開發板,它便宜簡單,接線方便,
光電式煙霧傳感器,通過一束紅外光和一個光敏感應器來測量煙的濃度,功耗低,成本低,穩定可靠,
470MHz 膠棒天線,增益 3.5dB,特別適合中國 LoRa 頻段范圍(470~510MHz),
硬體接線
如下圖所示,使用杜邦線連接 Arduino、光電式煙霧傳感器、LED和蜂鳴器,
- 光電式煙霧傳感器的紅外發光二極管串聯 220 歐姆的電阻
- 光電式煙霧傳感器的光電二極管串聯 10M 歐姆的電阻
- 蜂鳴器和 LED 串聯 220 歐姆的電阻
通信邏輯
如下圖所示,LoRa 煙霧報警器上報煙霧濃度給服務器和 App
為此,需要配置如下的網路組件:
- LoRa 網關重定向到本地 Server
- 在 LoRa Server 上添加終端
- LoRa App 連接到 LoRa Server
- 配置 LoRa App
行業第一的超低功耗---休眠僅 1.4uA
如下圖所示(實物拍攝),ArduinoLoRa+ 的低功耗可達 1.4uA,這不僅是行業第一的超低功耗,而且達到了器件極限!
如下圖所示,2 節 5 號堿性電池容量約 2890mAH,因為 LoRa 煙霧報警器是”平時休眠,觸發供電“,設平均 10 分鐘作業一次,電池可作業近 6 年,終端電池壽命計算器
Arduino 代碼
編譯本工程需要添加LoRa 驅動庫
使用 Arduino IDE 打開工程,點擊"Sketch -> Include Library -> Add .ZIP Library..."
Arduino 的 zip 庫安裝路徑一般為:C:\Users\Administrator\Documents\Arduino\libraries
Arduino 的代碼簡潔,容易理解,下載鏈接
- DEBUG 設定為 0 禁止除錯功能;設定為 1 它將通過 8 和 9 兩個引腳列印除錯資訊(使用“USB轉串口”連接到 PC),
- 哨兵觀察與快速采樣演算法原理:無煙時每秒僅讀取 1 次,一旦發現煙霧濃度超過閾值(哨兵觀察),以每 0.12 秒頻率快速采集 16 次,計算煙霧濃度平均值,
#include <lora.h>
lora LoRa;
const int buzzerPin = 13;
const int photodiodePin = 0; // A0
const int smokeThreshold = 80; // 0 <= no smoke < 80, 80 < thin smoke < 200, 200 < thick smoke <= 1023
#define DEBUG 0 // 0=disable, 1=enable
#if DEBUG
#include <SoftwareSerial.h>
SoftwareSerial debugSerial(8, 9); // 8=RX, 9=TX
#endif
void setup()
{
pinMode(buzzerPin, OUTPUT);
Serial.begin(115200); // for LoRa Node
#if DEBUG
debugSerial.begin(115200); // for debug
#endif
}
void loop()
{
// perfect interval for Arduino watchdog timer is: 15, 30, 60, 120, 250, 500, 1000, 2000, 4000, 8000
#define FAST_SAMPLE_INTERVAL 120 // 120ms
#define NORMAL_SAMPLE_INTERVAL 1000 // 1000ms
#define SAMPLE_NUMBER 16
int val, sum;
int array[1];
val = analogRead(photodiodePin);
#if DEBUG
debugSerial.println(val);
#endif
if (smokeThreshold < val) // sentry observation
{
// Check fire danger after sentry alert
sum = 0;
for (int count = 0; count < SAMPLE_NUMBER; ++count)
{
val = analogRead(photodiodePin);
sum += val;
delay(FAST_SAMPLE_INTERVAL);
}
val = sum / SAMPLE_NUMBER; // get the average value
if (smokeThreshold < val)
{
array[0] = val;
LoRa.write(array, sizeof(array));
digitalWrite(buzzerPin, HIGH);
delay(3000);
digitalWrite(buzzerPin, LOW);
#if DEBUG
debugSerial.print("get fired, val = ");
debugSerial.println(val);
#endif
}
}
delay(NORMAL_SAMPLE_INTERVAL);
}
低成本批量生產
LoRa 煙霧報警器的硬體成本約 ¥60,這依賴于批量數目和供貨渠道,
批量生產的一些技術挑戰:尺寸,成本,功耗,燒錄,升級,
我們為您準備好解決方案:低成本快速開發LoRa終端:從1到10000
作業原理
光電式煙霧傳感器原理
- 光電式煙霧傳感器由光學模塊和一個黑暗的煙霧迷宮組成,光學模塊采用紅外發光二極管(IRED)和光電二極管(PD),2 者的位置是偏離的,
- 無煙情況下,IRED 沿腔室直線發送光束(類似于激光指示器),PD 接收不到紅外光,不產生光電流,
- 有煙情況下,煙霧粒子會將部分光束散射到 PD 上,使其阻抗發生變化,產生光電流,
光電式煙霧傳感器實物與內部結構
光電式煙霧傳感器作業原理
計算 IRED 串聯電阻
紅外發光二極管(IRED)需要一個串聯電阻來控制電流,否則它會很快啥訓,
與 IRED 串聯的電阻被用于控制 IRED 導通時的電流量,為了計算電阻值,需要知道輸入電源電壓(Vs,Arduino UNO 為 5V,有些 Arduino Pro Mini 為 3.3V),IRED 的正向電壓(Vf)和流過 IRED 的電流(I)的數值,
其電阻歐姆值的計算公式(稱為歐姆定律)為:
R = (Vs - Vf) / I
在本設計中,用 5V 的輸入電源電壓和 15mA 電流來驅動正向電壓為 1.8V 的 IRED 會使用以下值:
Vs = 5V, Vf = 1.8V, I = 0.015A
代入公式則有
R = (5V - 1.8V) / 0.015A = 213 歐姆
231 歐姆不是一個標準電阻值,所以把它取整為 220 歐姆,
該電阻器如接線圖所示連接在電源和 IRED 的陽極之間,但它也可以被連接到 LED 的另一側(陰極和地之間),
Arduino 的引腳具有 40mA 的額定最大電流,如果 IRED 需要比這更大的電流,這需要使用晶體管驅動電路,
計算 PD 串聯電阻
如下圖所示,光電二極管是加反向電壓,無光時,反向電阻為無窮大;如果有光照,反向電阻隨光照強度減小,
(如果和普通二極管一樣加正向電壓,光電二極管只有單向導電性,無法表現出它的光電效應,)
A0 模擬計數的值由負載電阻 R 和 PD 的阻抗決定,即有:
analogRead() = 1023 * R / (R + PD)
在本設計中選用的負載電阻 R 為 10M 歐姆,因此有:
- 無光時,PD 阻抗為無窮大,analogRead() 讀數為 0~80
- 弱光時,PD 阻抗約為 80M 歐姆,analogRead() 讀數為 80~200
- 強光時,PD 阻抗約為 1K 歐姆,analogRead() 讀取為 200~1023
延伸應用
-
降低功耗
如上設計所示,紅外發光二極管的作業電流達到 15mA,要提升電池的續航時間,這需要降低電流,一種可行的辦法是間歇驅動,如以每秒 1ms 的脈沖,由于它的占空比為 1/1000 秒,15mA 電流除以 1000,平均僅 15μA 的電流,
-
提高靈敏度
行業里,用戶經常抱怨煙霧報警器靈敏度不好 --- 對著設備點香煙也不報警!為此,可以通過 LoRaApp 下行設定報警閾值,這樣,可以按用戶的意愿對煙霧濃度做出反應,
-
避免誤判
電路的噪音可能導致光電二極管阻抗變化,為避免誤判火災,這需要軟體在檢測到光電流后,多次采樣多次判斷, -
及時靜音
當煙霧報警器蜂鳴器響起后,持續的高分貝聲音會讓周圍的人們難受,除了添加按鈕靜音外,還可以通過 LoRaApp 下行設定靜音,后者特別適合不方便接觸設備的場景, -
檢測電池容量
電池容量對于 LoRa 煙霧報警器的維保意義重大,下面鏈接的方法可以讓 LoRa 煙霧報警器定時檢測電池容量,LoRaApp 實時顯示和低壓提醒,
花 1 小時,開源設計 LoRa 檢測電池容量
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14309.html
標籤:其他
