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

2023-05-16

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

LoRa 烟雾报警器

LoRa 烟雾报警器智能判断火灾,基于 LoRa 传送到服务器和 App,既可现场声光报警,又可以远程联网报警。
物联网 Arduino LoRa LoRaWAN 烟雾报警

运行效果

如下图所示,侦测到烟雾浓度超过阈值,LoRa 烟雾报警器进行声光报警,通过 LoRa 发送消息,App 显示本次火灾事件。

LoRa 烟雾报警器_演示视频

项目介绍

全国每年大约会发生 23 万起火灾,有近 2000 人死于火灾,经济损失高达 200 亿元,防火从古以来都是社会的基本需求。

LoRa 烟雾报警器能预先感知火灾,现场声光报警,通知周围的人们;更重要的是,它能远程联网报警,及时通知处理火情;联网使它维保便捷—故障自检,电池容量等

LoRa 烟雾报警器可以部署在:家庭,学校,酒店,写字楼,工厂,仓库,古建筑等场景。

LoRa 智慧消防系统

无线设计 安装便利

相比传统的产品,LoRa 烟雾报警器具备的优点为:

  • 安装简单便捷,不需要布线
  • 远程报警,维保便捷
  • 成本低廉,没有流量费用
  • 超低功耗,2节5号电池工作数年

本项目开源设计 LoRa 烟雾报警器的核心—软件和硬件,用户选择一个漂亮的外壳和电池,即可组成一个产品。
同时,简介了 LoRa 网络组件,轻松构建一个商用的智慧消防物联网。

组件和材料

LoRa 开发板 x 1 采购链接


光电式烟雾传感器 x 1 采购链接


蜂鸣器 x 1 采购链接


(100/220/10M欧姆电阻) 采购链接


杜邦线 x 8 采购链接


LED x 1 采购链接


面包板 x 1 采购链接

软件和网络

LoRa网关 采购链接


LoRaServer 下载链接


LoRaApp 下载链接


Arduino IDE 下载链接

技术细节

元器件介绍

LoRa 开发板遵循 LoRaWAN 国际标准,兼容 SX130x 八通道和 SX127x 单/双通道网关,接入 loraserver

软硬件 100% 兼容 Arduino,借助全球开源软件降低开发成本,串口下载程序(无须仿真器)。

它能达到空旷 10km 的通信距离,休眠电流仅 1.4uA。精心设计的软件库,使其开发极为容易:

  • 发送数据
LoRa.write("123", 3);
  • 接收数据
if (LoRa.availabe()) { 
    len = LoRa.read(buf, MAX_LEN); 
}

光电式烟雾传感器,通过一束红外光和一个光敏感应器来测量烟的浓度,功耗低,成本低,稳定可靠。

硬件接线

如下图所示,使用杜邦线连接 LoRa 开发板、光电式烟雾传感器、LED和蜂鸣器。

  • 光电式烟雾传感器的红外发光二极管串联 100 欧姆的电阻
  • 光电式烟雾传感器的光电二极管串联 10M 欧姆的电阻
  • 蜂鸣器和 LED 串联 220 欧姆的电阻

通信逻辑

如下图所示,LoRa 烟雾报警器上报烟雾浓度给服务器和 App

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

  • LoRa 网关重定向到本地 Server
  • 在 LoRa Server 上添加终端
  • LoRa App 连接到 LoRa Server
  • 配置 LoRa App

行业第一的超低功耗—休眠仅 1.4uA

如下图所示(实物拍摄),Arduino LoRa+ 的低功耗可达 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(57600);  // for LoRa Node
#if DEBUG
  debugSerial.begin(9600); // 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终端:从1到10000

工作原理

光电式烟雾传感器原理

  • 光电式烟雾传感器由光学模块和一个黑暗的烟雾迷宫组成。光学模块采用红外发光二极管(IRED)和光电二极管(PD),2 者的位置是偏离的。
  • 无烟情况下,IRED 沿腔室直线发送光束(类似于激光指示器),PD 接收不到红外光,不产生光电流
  • 有烟情况下,烟雾粒子会将部分光束散射到 PD 上,使其阻抗发生变化,产生光电流

光电式烟雾传感器实物与内部结构

光电式烟雾传感器工作原理

计算 IRED 串联电阻

红外发光二极管(IRED)需要一个串联电阻来控制电流,否则它会很快烧坏

与 IRED 串联的电阻被用于控制 IRED 导通时的电流量。为了计算电阻值,需要知道输入电源电压(LoRa 开发板电压为 3.3V),IRED 的正向电压(Vf)和流过 IRED 的电流(I)的数值。
其电阻欧姆值的计算公式(称为欧姆定律)为:

R = (Vs - Vf) / I

在本设计中,用 3.3V 的输入电源电压和 15mA 电流来驱动正向电压为 1.8V 的 IRED 会使用以下值:

Vs = 3.3V, Vf = 1.8V, I = 0.015A

代入公式则有

R = (3.3V - 1.8V) / 0.015A = 200 欧姆

该电阻器如接线图所示连接在电源和 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 检测电池容量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

花 1 小时,开源设计 LoRa 烟感烟雾报警器 的相关文章

  • CMake 编译时报错 ninja: error: ......missing and no known rule to make it

    Build command failed Error while executing process F Android sdk cmake 3 6 4111459 bin cmake exe with arguments build E
  • 数据类型和Json格式

    1 前几天 xff0c 我才知道有一种简化的数据交换格式 xff0c 叫做yaml 我翻了一遍它的文档 xff0c 看懂的地方不多 xff0c 但是有一句话令我茅塞顿开 它说 xff0c 从结构上看 xff0c 所有的数据最终都可以分成三种
  • golang语言rsa加解密及签名验签

    golang语言rsa加解密及签名验签 96 rsa 96 算法概述 96 Rsa 96 结构体封装封装的优点使用案例 rsa算法 概述 rsa是一种非对称的可逆的加密算法 xff0c 对加密数据长度有限制 xff0c 同时rsa也提供了数
  • 异常与错误处理

    异常与错误处理 PHP的异常与错误是分开的 xff0c 当程序出现异常时会throw一个 Exception 或子类 对象 xff0c 但是当出现错误时会触发一个错误 1 异常处理 1 1 通过try catch主动处理异常 span cl
  • 设计模式

    1 什么是模式 设计模式是对某些典型易变问题的特定解决方案 xff0c 这些问题和解决方案经过分类总结 xff0c 并且为了方便交流给每个解决方案都起了特定的名字 模式是为了解决变化的问题 xff0c 将变化的问题进行封装 xff0c 让变
  • 最新完美解决Python第三方库安装出现Microsoft Visual C++ 14.0 is required的问题

    安装库出现报错 xff1a Microsoft Visual 14 0 or greater is required 怎么办 xff1f 使用Python下载第三方库 xff0c pip也更新了 xff0c 镜像也使用了 xff0c 网络也
  • pdo-mysql

    pdo mysql PHP连接数据库推荐使用PDO xff0c PDO扩展为PHP访问数据库定义了一个轻量级接口 我们可以通过实现PDO接口的每个数据库驱动来访问数据库服务 访问mysql数据库服务 xff0c 我们使用PDO MYSQL驱
  • db封装

    db封装 以下Connection类封装支持以下几个特性 1 参数绑定防止sql注入2 读写分离3 多主多从 xff0c 多节点负载均衡4 故障自动摘除及自动恢复 代码实现 span class token delimiter import
  • 数据结构

    1 数据结构 提到算法不能不提数据结构 xff0c 数据结构就是数据元素按照一种或多种关系的集合 xff0c 按照逻辑结构划分 xff0c 可以分为 xff1a 1 1 集合 集合是由一堆无序的 相关联的 xff0c 且不重复的数据元素组成
  • 数据切分——Atlas介绍

    Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目 它在MySQL官方推出的MySQL Proxy 0 8 2版本的基础上 xff0c 修改了大量bug xff0c 添加了很多功能
  • Nginx负载均衡:分布式/热备Web Server的搭建

    Nginx是一款轻量级的Web 服务器 反向代理服务器 及电子邮件 xff08 IMAP POP3 xff09 代理服务器 xff0c 并在一个BSD like 协议下发行 由俄罗斯的程序设计师Igor Sysoev所开发 xff0c 供俄
  • 数据切分——Atlas读写分离Mysql集群的搭建

    关于数据切分的原理可以参见博客 xff1a http blog csdn net jhq0113 article details 44226789 关于Atlas的介绍可以参见博客 xff1a http blog csdn net jhq0
  • 数据切分——Mysql分区表的建立及性能分析

    Mysql的安装方法可以参考 xff1a http blog csdn net jhq0113 article details 43812895 Mysql分区表的介绍可以参考 xff1a http blog csdn net jhq011
  • 利用C++求解一元二次方程

    题目 xff1a 求解一元二次方程 xff1a ax 43 bx 43 c 61 0 的解 xff0c 其中a 61 1 b 61 3 c 61 2 分析 xff1a 大家都知道一元二次方程的解有三种情况 xff0c 即考虑 61 xff0
  • windows server 2016 中users组用户权限实探

    users 组用户不可删除他人创的文件和文件夹 但可在他人创建的文件夹中创文件夹 xff08 系统文件夹除外 xff09 并在创建的文件夹中创建文件 users 组用户不可以在磁盘根目前下创建文件 users 组用户不可在c盘windows
  • FFMPEG通过管道将图片推送流媒体

    最近遇到个需求 xff0c 将私有协议的码流 xff0c 就是比较老的视频设备啦 xff0c 新设备都支持标准H264 H265了 xff0c 或者私有平台协议的视频 xff0c 将这些私有协议视频通过转码推送到标准的流媒体服务器 xff0
  • 【VxWorks 6.x之FTP服务器】

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 FTP是什么 xff1f 二 使用步骤使用FTP需要添加的组件 最后就可以通过FTP软件去访问VxWorks FTP服务
  • spring详解(IDEA版)

    在这个世界上取得成就的人 xff0c 都努力去寻找他们想要的机会 xff0c 如果找不到机会 xff0c 他们便自己创造机会 你好 xff0c 我是梦阳辰 期待与你相遇 xff01 文章目录 01 spring简介02 IOC理论03 快速
  • PPTV面试题——括号消除

    题目 xff1a 给定一个字符串 xff0c 设计一个算法消除其中承兑的括号 xff0c 如果括号不成对 xff0c 提示异常 xff08 error xff09 如 xff08 1 xff0c xff08 2 3 xff09 xff0c
  • java实现下载网络图片到本地

    文章目录 前言一 示例二 代码 1 代码示例2 运行结果总结 前言 当我们在网络上看到自己想要保存的照片 xff0c 有的网站设置了权限 xff0c 不能保存情况下 xff0c 我们可以借助Java的文件流读取网络上的图片 xff0c 并保

随机推荐

  • Unable to get package info for [包路径]; is package not installed

    这个问题引起原因是 简单的卸载app 没有卸载干净 xff0c 然后再次运行 当dalvik重新安装 apk文件并试图重用以前的活动从同一个包
  • 算法导论->算法基础->2.1插入排序 (从小到大)

    1 伪代码 2 执行过程图 3 c语言实现完整代码 include lt stdio h gt include lt malloc h gt typedef struct MyArray int pbase int length MyArr
  • 【实习面试】阿里&腾讯offer的点点滴滴(内附干货)

    前言 4月8号下午6点 xff0c 突然接到腾讯hr的电话 xff0c 本来已经不抱希望的我一脸懵逼 xff0c 差点连自我介绍都不会说了 之所以不抱希望 xff0c 是因为距离上次面试已经9天了 xff0c 然而正式的实习生面试将近 xf
  • PE 自己做

    windows11快正式发布了 xff0c 很多不达标的老旧电脑是不能直接装的 事先准备好一个纯净PE吧 以下文字全部粘贴到 cmd 文件 xff0c 运行就可以生成一个 boot wim 文件 xff0c 放到任意一个可以启动的 win1
  • 找回忘记的Ubuntu账号密码

    前端时间使用VMWare安装了个Ubuntn的虚拟机 xff0c 但是烦于安装后显卡驱动的问题 xff0c 看着操作界面就有点厌烦 xff0c 就扔下了 今天打开虚拟机登陆的时候忘了密码 xff0c 寻思着难道要重装不行 xff1f 现在记
  • KVM虚拟化解决方案系列之KVM部署篇(1-4)

    通过 KVM虚拟化解决方案系列之KVM架构篇 我们了解了KVM的基本架构之后 xff0c 那么接下来继续介绍如何使用KVM来搭建自己的虚拟化环境 xff0c 搭建环境如表1所示 表1 KVM搭建环境 主机名角色操作系统IP地址备注kvm01
  • ArduinoLoRa 休眠极限 1.4uA

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • SElinux 读懂.te 定义自己的 .te【转】

    本文转载自 https blog csdn net kongbaidepao article details 61417291 一 te 文件定义中的一些宏 1 1 unix socket connect 1 1 2 3 这个其实是一个宏
  • ArduinoLoRa 休眠定时器唤醒 5.5uA

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • 花 1 小时,开源设计 LoRa 按钮

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • 花 1 小时,开源设计 LoRa 红外感应终端

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • ArduinoLoRa 休眠中断唤醒 1.4uA

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • 花 1 小时,开源设计 LoRa 检测电池容量

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • 10 分钟内安装“干净”的 win10 和常用软件

    背景需求 因为毕业于计算机专业 xff0c 这 10 多年来经常帮助家人和朋友安装 Windows 系统和软件 xff0c 消耗了大量的业余时间 2020年春节 xff0c 新冠爆发 xff0c 不宜外出 xff0c 特地抽了几天时间组织下
  • Linux 快速排查网络故障

    背景需求 Linux 因为其强大的网络处理能力 xff0c 被广泛用于网关 实例链接 和服务器 实例链接 实际工作中 xff0c 快速排查这些 Linux 设备的网络故障成为解决问题的利器 为此 xff0c 本文列出高频使用的 Linux
  • Linux 系统安全关键命令

    背景需求 Linux 因为其强大的处理能力和开源免费 xff0c 被广泛用于网关 实例链接 和服务器 实例链接 实际工作中 xff0c 保护 Linux 设备的安全成为产品设计的挑战 为此 xff0c 本文列出保护 Linux 系统安全的关
  • LoRa Server 运维常用命令

    背景需求 LoRa Server 是一个开源的 LoRaWAN 网络服务器 xff0c 它具备很多优点 xff1a 工程性 xff0c 模块化 xff0c 功能实现 xff0c 维护活跃度上都是其他项目无法比拟的 xff0c 它是 LoRa
  • 抗击新型冠状病毒肺炎,开源设计 LoRa 红外检测体温

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf
  • AS--›Groovy/Gradle操作使用实例记录(持续更新)

    Groovy gradle 构建脚本使用的 groovy 语言编写 官方地址 http groovy lang org documentation html API文档地址 http groovy lang org api html API
  • 花 1 小时,开源设计 LoRa 烟感烟雾报警器

    提示1 xff1a 锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议 提示2 xff1a 您可以免费复制 xff0c 修改和商用本项目 xff0c 请注明锐米原创 提示3 xff1a 如果您有其他 LoRa 需求或建议 xf