zoukankan      html  css  js  c++  java
  • 花 1 小时,开源设计 LoRa 继电器远程开关

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

    LoRa 继电器开关

    LoRa 继电器开关,用于无线远程控制电气设备,通过 App 下发指令能实时控制:电器,灯光,电机,阀门等。
    物联网 Arduino LoRa LoRaWAN 继电器开关

    运行效果

    如下图所示,通过 App 下发控制命令给 LoRa 继电器开关(RY 是 Relay(继电器) 的缩写)

    • RY:1 接通继电器,点亮灯光
    • RY:0 断开继电器 ,熄灭灯光

    项目介绍

    一个城市有上 100,000 盏路灯,一栋楼宇有上 10,000 电器,一个工厂有上 1,000 电气设备,大型农场有上 1,000 阀门。。。。远程实时控制这些电气设备,不但可以节能减排,而且降低运营维护成本

    LoRa 继电器开关,使用 App 实时远程控制电气设备。它的实时性好,一般在 2 秒内响应;操作简单,业余人员使用手机即可操作;成本低廉,硬件物料批量生产仅 ¥60

    LoRa 继电器开关可以应用在:工厂,楼宇,农场,鱼塘,学校,路灯等场景。

    LoRa 继电器开关_应用场景

    LoRa 继电器开关_App远程控制

    相比传统的产品,LoRa 继电器开关具备的优点为:

    • 安装简单便捷,不需要布线
    • App远程控制,简单便捷
    • 成本低廉,没有流量费用
    • 实时控制,响应时间 < 2 秒

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

    组件和材料

    **LoRa 扩展板 x 1** [采购链接](https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-13955217965.27.715f421cEkbQLU&id=612648762230) **Arduino UNO x 1** [采购链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.773d2e8dmYIyUF&id=593401940517&_u=k201cu1luac7c6) **5V继电器模块 x 1** [采购链接](https://detail.tmall.com/item.htm?id=41231430731&spm=a1z09.2.0.0.3c6a2e8dtYyRTi&_u=l34jp72pd125&skuId=3764441873869) **天线 x 1** [采购链接](https://detail.tmall.com/item.htm?spm=a230r.1.14.20.43dc71de9WHs3W&id=17521693052&ns=1&abbucket=7) **1K欧姆 x 1** [采购链接](https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16538328900.60.560c3d6c1fIOpf&id=542721590093&rn=ee1348ad4dd04ab3700b67c8996f7925&abbucket=18&skuId=3769488045642) **杜邦线 x 3** [采购链接](https://detail.tmall.com/item.htm?id=41254478179&spm=a1z09.2.0.0.7b0d2e8dkRdPtj&_u=k201cu1luab121&skuId=3108862773142)

    软件和网络

    **LoRa网关** [采购链接](https://item.taobao.com/item.htm?spm=2013.1.w4023-13955217959.11.38c65d3aDTFBlO&id=559152286301) **LoRaServer** [下载链接](http://www.rimecloud.com/) **LoRaApp** [下载链接](https://github.com/rimelink-lorawan/csharp-app-sdk/releases/download/v1.0/RDemoConfig1.0.zip) **Arduino IDE** [下载链接](https://www.arduino.cc/en/main/software)

    技术细节

    元器件介绍

    这是专为 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 是最常用的开发板,它便宜简单,接线方便。 继电器模块,带光耦隔离,5V/5mA 直流驱动 220V/10A 交流负载。 470MHz 胶棒天线,增益 3.5dB,特别适合中国 LoRa 频段范围(470~510MHz)。

    硬件接线

    如下图所示,使用公对公杜邦线连接 Arduino、继电器模块和1K欧姆电阻。
    (在本设计案例中,继电器的输出回路(NO 和 COM)连接到 220V 火线上,绝缘处理要严格,否则可能导致触电危险!)

    电路图

    实物图

    通信逻辑

    如下图所示,通过 App 可以控制继电器开关的接通或断开

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

    Arduino 代码

    编译本工程需要添加 LoRa 驱动库

    使用 Arduino IDE 打开工程,点击"Sketch -> Include Library -> Add .ZIP Library..."

    Arduino 的 zip 库安装路径一般为:C:UsersAdministratorDocumentsArduinolibraries

    Arduino 的代码简洁,容易理解,下载链接

    • DEBUG 设置为 0 禁止调试功能;设置为 1 它将通过 8 和 9 两个引脚打印调试信息(使用“USB转串口”连接到 PC)

    • 按 LoRaWAN 协议,Class C 的节点入网后,必须先发送一帧数据并且服务器成功接收后,节点才能处于持续接收状态。因此,在 setup() 中节点发送了 2 帧数据。

    • 当 LoRa 节点接收到来自 App 的下发数据帧时,它通过拉低 Pin2 引脚来通知 Arduino。这里,loop() 持续检测该引脚并接收数据帧。
      (为了简化设计,此处使用的是查询机制;如果要求高效率和低功耗,需要切换为中断机制,代价是复杂度大增)

    #include <lora.h>
    
    lora LoRa;
    const int wakeupPin = 2;  // LoRaNode LOW wakeup connected to pin 2
    const int solenoidPin = 5;  // Solenoid connected to pin 5
    
    #define DEBUG    0
    
    #if DEBUG
    #include <SoftwareSerial.h>
    SoftwareSerial debugSerial(8, 9);  // 8=RX, 9=TX
    #endif
    
    void setup()
    {
      Serial.begin(115200);  // for LoRa node
      pinMode(wakeupPin, INPUT);
      pinMode(solenoidPin, OUTPUT);
      
    #if DEBUG
      pinMode(LED_BUILTIN, OUTPUT);
      debugSerial.begin(115200); // start software serial port at 115200-8-N-1
      debugSerial.println("debug begin");
    #endif
    
      for (int i = 0; i < 2; ++i) {
        LoRa.write("hi", 2);
        delay(5000);
      }
    }
    
    void loop()
    {
      #define MAXINSZ    20  // like as: RY:x
      char instr[MAXINSZ];  // Input buffer
      int  len;
      int  val;
    
      do {
        val = digitalRead(wakeupPin);
      } while (HIGH == val);  // check looply until the pin is LOW
    
      delay(10);  // waiting until the LoRa message have been received
    
      if (LoRa.available()) {
        len = LoRa.read(instr, MAXINSZ);
        if (('R' == instr[0]) && ('Y' == instr[1]) && (':' == instr[2]))  // match the "RY:0" or "RY:1"
        {      
          if ('1' == instr[3])  // turn ON
          {
            digitalWrite(solenoidPin, HIGH); // activates the solenoid
          }
          else if ('0' == instr[3])  // turn OFF
          {
            digitalWrite(solenoidPin, LOW);  // deactivates the solenoid
          }
          else  // do nothing for the noise
          {
          }
        }
    
      #if DEBUG
        digitalWrite(LED_BUILTIN, HIGH);
        debugSerial.write(instr, len);
        digitalWrite(LED_BUILTIN, LOW);
      #endif
      }
    }
    

    低成本批量生产

    LoRa 继电器开关的硬件成本约 ¥60,这依赖于批量数目和供货渠道。

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

  • 相关阅读:
    【网易官方】极客战记(codecombat)攻略-森林-加农炮之舞forest-cannon-dancing
    【网易官方】极客战记(codecombat)攻略-森林-森林慢跑forest-jogging
    https://developer.android.com/codelabs/java-to-kotlin
    今日英语
    架构师技能图谱
    java接口防重提交如何处理
    看看人家那后端API接口写得,那叫一个优雅!
    MySQL不推荐使用uuid或者雪花id作为主键
    “12306”是如何支撑百万QPS的?
    阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
  • 原文地址:https://www.cnblogs.com/rimelink/p/12388766.html
Copyright © 2011-2022 走看看