花 1 小时,开源设计 LoRa 烟感烟雾报警器
提示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
#endifvoid setup()
{pinMode(buzzerPin, OUTPUT);Serial.begin(57600); // for LoRa Node
#if DEBUGdebugSerial.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 16int val, sum;int array[1];val = analogRead(photodiodePin);
#if DEBUG debugSerial.println(val);
#endif if (smokeThreshold < val) // sentry observation{// Check fire danger after sentry alertsum = 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 valueif (smokeThreshold < val){array[0] = val;LoRa.write(array, sizeof(array));digitalWrite(buzzerPin, HIGH);delay(3000);digitalWrite(buzzerPin, LOW);#if DEBUGdebugSerial.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 检测电池容量
花 1 小时,开源设计 LoRa 烟感烟雾报警器相关推荐
- 花 1 小时,开源设计 LoRa 继电器开关
提示1:锐米所有 LoRa 产品严格遵循国际标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup ...
- 毕业论文 | 基于单片机的烟雾报警器设计(完整源代码、流程图、电路图)
=========================================== github:https://github.com/MichaelBeechan CSDN:https://bl ...
- 【毕业设计】52-基于单片机的车厢智能烟雾报警器设计与仿真(原理图_仿真_配套设计文档_PPT_流程图_外文翻译)
[毕业设计]52-基于单片机的车厢智能烟雾报警器设计与仿真(原理图/仿真/配套设计文档/PPT/流程图/外文翻译) 文章目录 [毕业设计]52-基于单片机的车厢智能烟雾报警器设计与仿真(原理图/仿真/ ...
- 基于AT89C52和MQ-2的烟雾报警器设计
基于AT89C52和MQ-2的烟雾报警器设计 摘要:介绍了一种基于AT89C52单片机和MQ-2型半导体电阻式烟雾传感器的烟雾报警器设计.该烟雾报警器具有声光报警.浓度显示以及与上位机串口通信等功能. ...
- 开源设计_开源设计500
开源设计 by Gregory Wolanski 格雷戈里·沃兰斯基(Gregory Wolanski) 开源设计500 (Open Source Design 500) 五百个需要设计帮助的开源项目 ...
- 企业信息化建设,花小钱导入开源ERP不香吗?
企业信息化建设,花小钱导入开源ERP不香吗? 笔者前段时间有关注某北方邻国的一个客户的SAP ERP实施项目.该客户实施SAP之前,有使用Odoo ERP系统.后来笔者惊奇的发现,Odoo ERP系统 ...
- 【源码共享】我花2小时写了微信官网的响应式布局HTML+CSS 换成旅行主题风格更炫酷了
微信官网仿写效果 ↑ 移动端响应式效果 ↑ 微信官网首页,简约干净,能学习写好这个首页,就能掌 握HTML网页设计前端盒子的布局.嵌套,及css效果的 使用... 微信官网首页主要有以下几个需要关注的 ...
- 【Sass/SCSS】我花4小时整理了的Sass的函数
[Sass/SCSS]我花4小时整理了的Sass的函数 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 Sass 定义了各 ...
- 少年,看你异于常人,有空花2小时来参加有3000人的源码共读嘛~
大家好,我是若川.按照从易到难的顺序,前面几期(比如:validate-npm-package-name.axios工具函数)很多都只需要花2-3小时就能看完,并写好笔记.但收获确实很大.开阔视野.查 ...
最新文章
- tomcat环境部署
- iOS 不要使用tag传递TableViewCell的indexPath值
- django.db.utils.DataError: (1406, Data too long for column 'gender' at row 1)
- 函数return,有些地方你可能还没掌握
- 基于Redis实现分布式锁实战
- linux python3安装教程_linux python3安装
- 配置文件keepalived.conf详解
- 为什么本地图片都不能直接浏览器_抖音精选答疑解惑!你的视频为什么不能被下载?...
- [计算机网络] - TCP三次握手和四次挥手
- mpandroidchart 设置x轴数据_Flowjo软件下的流式数据基本分析
- Python学习笔记(三)Python安装及设置环境变量
- 大数据分析方法管不管用
- web.config点滴:更改login控件对密码安全性的要求
- JAVA 项目中使用 H2 数据库
- 打开ps显示计算机内存不足怎么办,电脑PS提示内存不足怎么解决
- 树莓派4B连接显示器 黑屏、左上角有光标问题
- 直接下载:Windows 10正式版官方原版镜像!
- 实现一个简单的抽奖系统
- 【Docker系列】Docker的网络
- DolphinDB智臾科技CEO周小华:《从反向控制的终极目标谈时序数据库的架构设计》