花 1 小时,开源设计 LoRa 按钮

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

LoRa按钮终端

LoRa 按钮

一键式紧急按钮,基于 LoRa 传送到服务器,通过手机 / PC / 电子显示屏 / 语音等通知工作人员快速处理事件。
LoRa LoRaWAN 按钮终端 开源设计 Arduino

运行效果

如下图所示,当用户压下按钮,LoRa 终端闪烁 LED 灯,App 显示本次紧急事件。

ArduinoLoRa+按钮演示视频


App显示数据

项目介绍

应急处理保障生命财产安全,一直是社会的基本需求,LoRa 紧急报警系统广泛应用于:部队、学校、医院、银行、养老院等场景。

LoRa 紧急报警系统
LoRa 紧急报警系统
相比传统的产品,LoRa 按钮终端具备的优点为:

  • 安装简单便捷,不需要布线
  • 长距离通信,防止数据丢失
  • 超低功耗,2节5号电池工作数年

本项目开源设计 LoRa 按钮终端的核心—软件和硬件,用户选择一个漂亮的外壳和电池,即可组成一个产品。
同时,简介了 LoRa 网络组件,轻松构建一个商用的应急物联网。

组件和材料

LoRa 开发板 x 1 采购链接


按钮按钮 x 1 采购链接


LEDLED x 1 采购链接


杜邦线杜邦线 x 2 采购链接

软件和网络

LoRa网关 LoRa网关 采购链接


LoRaServerLoRaServer 下载链接


LoRaAppLoRaApp 下载链接


Arduino IDEArduino 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(串联 220 欧姆的电阻)
接线图

通信逻辑

如下图所示,按钮终端上报事件给 App。

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

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

如下图所示(实物拍摄),Arduino LoRa+ 的低功耗可达 1.4uA,这不仅是行业第一的超低功耗,而且达到了器件极限 ArduinoLoRa 休眠极限 1.4uA

如下图所示,2 节 5 号碱性电池容量约 2890mAH,因为 LoRa 按钮终端是”平时休眠,触发供电“,设平均 10 分钟工作一次,电池可工作近 9 年。终端电池寿命计算器
电池工作寿命近 9 年

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)
  • debounce() 可靠地检测按钮的闭合,它使用”去抖“算法,仅当在指定周期(本例为 50ms)按钮保持稳定,才返回状态值(按下为真,不按为假)。
  • 不同的开关有自己的”弹性系数“,这需要打开调试功能,跟踪 count 的打印值,修改 debounceDelay 值直到计数保持与按钮动作同步
#include <lora.h>

lora LoRa;
const int inputPin = 2;        // the number of the input pin
const int ledPin = 13;         // the number of the output pin
const int debounceDelay = 50;  // milliseconds to wait until stable

#define DEBUG    0  // 0=disable, 1=enable

#if DEBUG
#include <SoftwareSerial.h>
SoftwareSerial debugSerial(8, 9);  // 8=RX, 9=TX
int count;   // add this variable to store the number of presses
#endif

boolean debounce(int pin)
{
  boolean state;
  boolean previousState;
  previousState = digitalRead(pin);          // store switch state
  for (int counter=0; counter < debounceDelay; counter++)
  {
      delay(1);                  // wait for 1 millisecond
      state = digitalRead(pin);  // read the pin
      if (state != previousState)
      {
         counter = 0; // reset the counter if the state changes
         previousState = state;  // and save the current state
      }
  }
  // here when the switch state has been stable longer than the debounce period
  if (LOW == state)
    return true;
  else
    return false;
}

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(inputPin, INPUT);
  digitalWrite(inputPin, HIGH);  
  Serial.begin(57600);
#if DEBUG
  debugSerial.begin(9600); // add this to the setup function
#endif
}

void loop()
{
  boolean array[1];
        
  if (debounce(inputPin))
  {
    array[0] = true;
    LoRa.write(array, sizeof(array[0]));

    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
#if DEBUG
    count++;        // increment count
    debugSerial.println(count);  // display the count on the Serial Monitor
#endif
  }
}

低成本批量生产

批量生产的一些技术挑战:尺寸,成本,功耗,烧录,升级
我们为您准备好解决方案:低成本快速开发LoRa终端:从1到10000

更多按钮的应用

2 个按钮

3 个按钮
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值