首页 > 其他 > 详细

花 1 小时,开源设计 LoRa 烟雾报警器

时间:2020-03-03 11:03:40      阅读:126      评论:0      收藏:0      [点我收藏+]

提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议
提示2:您可以免费复制,修改和商用本项目,请注明锐米原创
提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 support@rimelink.com

技术分享图片

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

为此,需要配置如下的网络组件:

技术分享图片

行业第一的超低功耗---休眠仅 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 检测电池容量

花 1 小时,开源设计 LoRa 烟雾报警器

原文:https://www.cnblogs.com/rimelink/p/12400338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!