基于ESP或ESP8266 单通道Lorawan网关硬件制作

news2025/1/20 19:12:54

软件代码设计资料下载链接》》

基于 Comresult PCB 的单通道网关

介绍

这是 ESP8266 LoRa 网关的最新版本。基于 ESP8266 mcu 的 LoRa 网关在过去几年里有了很大的发展。您想构建一个小型网关并保持尽可能多的 GPIO 引脚可用,Hallard 板是无与伦比的。另一种解决方案是 Comresult 制造的电路板。该 PCB 比 Hallard 的大,但可以放入标准 IP56 盒中。如果您使用更传统的 PCB,请确保至少 DIO0 和 DIO1 连接到 Wemos 上的引脚。这样的板如上所示。

使用的引脚必须(!)在 ESP-sc-gway.h 文件中定义和描述,网关才能工作。

限制

全功能网关能够在随机信道上同时接收多个具有不同扩频因子的 LoRa 数据包。1 通道网关没有执行所有这些操作的性能。它与传感器发送的 LoRa 数据格式有点兼容,但它没有实现 LoRa 规范的“至少支持 3 个频率”部分,因此不兼容。
与其较大的兄弟相比,1 通道网关具有以下限制:

  • 仅 1 通道(频率):因此网关不会接收通过其他频率发送的消息。如果您在生产中没有任何其他网关,我建议您为此目的使用通道 0。 

裸板

  • 将引脚焊接到 Wemos D1-mini 板上。
     

  • 将 ESP 适配器板推入其中一个实验面包板(因此焊接时它会冷却引脚)。
  • 将天线 SMA 连接器焊接到天线引脚附近,然后连接中心引脚和接地引脚(底部)。
  • 按照下面“连接”表中的指示,使用小段电线连接 RFM 和 ESP。

我还没有找到一个不错的便宜盒子来装网关,但这可能不会持续很长时间。

RFM95 引脚输出

网关板上两个器件的引脚分配如下:

ESP8266的pin out如下(注意:各种ESP8266器件之间的pin out存在差异)

 

Com结果

ComResult PCB 是裸板解决方案的下一个版本,并使用相同的引脚定义。请确保用线将 dio1 连接到电路板上的 D2(并将 dio2 连接到 D3/GPIO0,以便稍后将网关用作节点)。

您在上面看到了一张最新版本的 ComResult 板的图片。请不要连接 ESP8266 的 D2 引脚和 RFM95 的 dio1 引脚以及可选的 D3 引脚和 dio2 引脚的 2 根电线。

连接

对于裸板解决方案,需要进行的连接如下:

RFM95 pinESP8266 pin
3.3VVCC3.3V
GNDGND
MISOD6 GPIO12/MISO
MOSID7 GPIO13/MOSI
SCKD5 GPIO14/CLK (*)
NSSD8 GPIO15/CS
RESET*nc
DIO0D1, GPIO5
DIO1D2, GPIO4
DIO2D3, GPIO0 (**)

* 看起来不必连接复位引脚。它仅在设置时用于读取芯片标识
**当前版本的网关不需要此连接,但对于下一个版本或其他用途更通用

可以看到,ESP8266 的 reset 和 GPIO0 都没有用到。不连接最后一个使 ESP8266 网关更稳定,闪存和正常模式之间的行为是相同的。

Hallard

Carles Hallard 设计了一个非常小的电路板,可用于构建您自己的网关。这些电路板可从 pcbs.io 获得 abs 将在世界任何地方免费运送 5 件。

在左上角,您可以看到将连接 dio0、dio1 和 dio2 的 3 个二极管焊接到 GPIO15 的位置。

Hallard 板与裸板或 ComResult pcb 略有不同,因为它将通过 3 个二极管共享 dio0、dio1 和 dio2 以及相同的 GPIO 引脚。如果您想使用此 PCB 构建节点,这需要对 LMIC 软件进行小的改动,如果您喜欢使用最新版本的网关,则确实需要在网关上进行一些额外的工作。

连接

对于裸板解决方案,需要进行的连接如下:

RFM95 pinESP8266 pin
3.3VVCC3.3V
GNDGND
MISOD6 GPIO12/MISO
MOSID7 GPIO13/MOSI
SCKD5 GPIO14/CLK (*)
NSSD0 GPIO16/CS
RESET*nc
DIO0D8, GPIO15 (**)
DIO1D8, GPIO15 (**)
DIO2D8, GPIO15 (**)

* 看起来不必连接复位引脚。仅在setup时用于读取芯片标识
** 在上图位置焊接小二极管是相当困难的!此外,一旦将 ESP8266 焊接到该板上,您就再也无法到达二极管位置。所以(!)确保在继续使用该板之前焊接所有 3 个二极管(但至少 2 个)。

可以看到,ESP8266 的 reset 和 GPIO0 都没有用到。不连接最后一个使 ESP8266 网关更稳定,闪存和正常模式之间的行为是相同的。

 

软件

该软件目前正在开发中,并且很可能永远都在开发中。为了使这个 ESP 版本更可靠和更实用,RaspberryPI 版本已经添加了一些内容。但是,仍然可以包含一些功能,例如动态设置 SSID 和密码(ESP 将充当接入点,以便您的 PC 可以连接到它,并设置 SSID 和密码)。

预计 TTN(和其他公司)将在 2017/2018 年的某个时间段发布低价的完整 Lora 网关。到那时,单通道网关将为那些喜欢在家里安装网关进行测试或演示的人提供很多好处。

Wifi管家

网关的用户界面将使它更有用。毕竟,对于我们这些没有 Linux 或类似背景的人来说,大多数完整的 Lora 网关的价格很贵。

 

 

域名系统

ESP 库支持开箱即用的 DNS 主机名。显然 DNS 功能在 mcu 上很难,并且可能导致崩溃和看门狗重置,我决定只获取一次 LoRa 路由器的 IP 地址,并从那一刻起在程序中使用该 IP 地址。

时钟功能是使用NTP实现的。一旦有了 IP 连接,我们就会尝试连接到时间服务器以获取当前时间。通过这种方式,我们可以知道自上次打开设备以来该设备运行了多长时间,并且我们可以在必要时计时。

网络服务器

由于 ESP8266 不是 Linux 机器,因此它没有本地磁盘存储,至少不是开箱即用的。它还无法像使用 RaspberryPI 那样建立 SSH 连接。我们仍然想知道设备的运行情况,以及它可以正常运行多长时间。如果我们查看网关运行的时间,则后者很容易衡量。如果那个时间是在我们插入网关​​之后,它可能遭受了 Watchdog 重置并从那以后重新启动。

有机发光二极管

在过去的几个月里,有几个人试图让我相信在单通道网关中支持 OLED 的价值。所以我从网关的软件版本 4.0.8 开始支持 OLED。

因此,尽管我并不总是相信它的用途,但我已将 OLED 代码包含在网关软件中。目前,在运行时和初始化后,代码在 _loraModem.ini 文件中执行。因此,当通过空中接收消息时会直接调用它。这使得它可以快速响应传入的消息,但同时会使中断中的执行时间更长,这可能会导致意外的异常/看门狗重置。

 

(由于 OLED 的刷新率,并非所有文本都可读)

 

如果发生这种情况,请考虑仅填充统计缓冲区并在用户时间的 loop() 函数中获取最新值。

用于 OLED 的引脚是用于 SDA 的 pin4/D2 和用于 SCL 的 pin5/D1。这些引脚可免费用于 Hallard 配置。

 以上只介绍了硬件的制作 软件代码设计资料下载链接》》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++多态练习题

文章目录 1.虚函数的调用过程2.虚函数例题例题一例题二例题三例题四例题四 1.虚函数的调用过程 从汇编上面来看: []代表指针解引用操作 1.op指向test对象的首地址(存放vptr),并存放在eax里面; 2.将eax所指之物(虚表…

使用不同的梯度下降法优化算法

本篇将使用以下几个梯度下降算法进行对比: 不使用任何的优化算法(即整批数据集作为一次迭代更新梯度,也叫batch梯度下降,BGD) mini-batch梯度下降法(Mini-batchGD) 使用具有动量的梯度下降算法&…

无标签背景图(负样本)的拼图代码

训练目标检测模型有个很令人头疼的问题,就是有些特征与要训练的特征较为相似的背景区域也被误检出来(作为本应不该检测出来的负样本却被误检出为正样本的FP)。 根据这一问题的解决办法,除了可以对正样本特征较为模糊或者有歧义的样…

Intel SGX学习笔记(2):用数组向Enclave传递5个数实现自增操作

写在前面 1、实现一个简单的Intel SGX的应用:非安全区定义初始化一个数组,数组里面存储5个数,然后向安全区(enclave)传入,在安全区中进行加减乘除,然后返回。 2、Intel SGX开发初学整体思路&a…

代码随想录算法训练营day39 | 62.不同路径,63. 不同路径 II

代码随想录算法训练营day39 | 62.不同路径,63. 不同路径 II 62.不同路径解法一:动态规划解法二:深度搜索(明天补充)解法三:数论(明天补充) 63. 不同路径 II解法一:动态规…

RuoYi-Vue下载与运行

一、源码下载 若依官网:RuoYi 若依官方网站 鼠标放到"源码地址"上,点击"RuoYi-Vue 前端分离版"。 跳转至Gitee页面,点击"克隆/下载",复制HTTPS链接即可。 源码地址为:https://gitee.…

左值引用、右值引用,std::move() 的汇编解释

1:左值引用 引用其实还是指针,但回避了指针这个名字。由编译器完成从地址中取值。以vs2019反汇编: 如图,指针和引用的汇编代码完全一样。但引用在高级语言层面更友好,对人脑。比如可以少写一个 * 号和 -> 。 &…

F280049C实现Simulink调制,以及多个PWM实例之间的同步

文章目录 前言基本概念调制发波载波同步问题 前言 最近作实验碰到了载波不同步的问题,以前也有碰到过这个问题,现在终于解决了,做个记录。 为了以示区分,实例指ePWMx,x1,2,3,4,5,6,7,8;通道指ePWMxA/B&am…

如何使用jmeter进行压测

目录 1.概述 2.测试计划、线程组、取样器 3.调试运行 4.请求默认值 5.流量录制 6.模拟时间间隔 7.压力测试 8.报表 1.概述 一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是…

看大老如何用Postman+Jmeter实现接口实例

一、接口基础 为什么要单独测试接口? 1. 程序是分开开发的,前端还没有开发,后端已经开发完了,可以提前进入测试 2. 接口直接返回的数据------越底层发现bug,修复成本是越低的 3. 接口测试能模拟功能测试不能测到的异常…

数十位高级测工联合讲解Selenium自动化测试框架工作原理

一、Selenium是什么?   用官网的一句话来讲:Selenium automates browsers. Thats it!简单来讲,Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持…

uvm寄存器模型

一、基础知识 前门访问与后门访问是两种寄存器的访问方式。 所谓前门访问, 指的是通过模拟cpu在总线上发出读指令, 进行读写操作。 在这个过程中, 仿真时间( $time函数得到的时间) 是一直往前走的。而后门访问是与前门访问相对的概念。 它并不通过总线进行读写操作, 而是…

2023/5/14周报

目录 摘要 论文阅读 1、标题和现存问题 2、准备知识 3、模型结构 4、实验准备 5、实验结果 深度学习 1、大气数据和水质数据 2、数据清洗 3、项目框架设定 总结 摘要 本周在论文阅读上,阅读了一篇时空图卷积网络:交通预测的深度学习框架的论文。文章的时…

oracle使用with as创建临时表

一、业务需求 在oracle项目的开发过程中,使用sql编写好对应的分析报表内容后,由于sql分析报表涉及到的一些线别丢失,导致呈现的报表分类统计时固定用醒目颜色标识的统计行数据显示错位;因此需要修复分析报表填充完整的线别。 二、…

LeetCode 62 不同路径

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径&#…

云上高校导航 小程序 开发教程

Gitee仓库:云上高校导航 GitHub仓库:云上高校导航 “云上高校导航”是一套基于小程序云开发的校园导航类系统开发方案,该开发方案可供开发者进行二次开发,用于解决师生和访客的校园出行需求。 项目优势及创新: 使…

Flink 常用API(2)——转换算子+聚合算子

转换算子(Transformation) 映射(map) 用于将数据流中的数据进行转换,形成新的数据流 “一一映射”,消费一个元素就产出一个元素 参数:接口 MapFunction 的实现 方法:map 返回值…

C#串口通信从入门到精通(13)——多个串口发送数据

文章目录 前言1、多串口数据的发送2、源码前言 我们在开发串口通信程序时,有时候会需要连接不止一个串口,这时候该怎么写程序呢?本文就来介绍多个串口数据的发送 1、多串口数据的发送 我们在之前的专栏中介绍了串口数据的发送,当时有提到过,我们是通过创建一个SerialPo…

支付系统设计三:渠道网关设计06-业务处理

文章目录 前言一、业务服务工厂二、业务处理服务1. 业务处理服务2. 业务处理抽象服务3. 流量控制4. 报文提交4.1 获取交易的服务端通讯列表4.2 循环请求支付渠道4.2.1 报文组装4.2.2 报文发送4.2.2.1 协议处理器获取4.2.2.2 构建通讯客户端4.2.2.3 发送请求4.2.2.4 响应报文读取…

【rust】| 06——语言特性 | 所有权

系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础 | 变量(不可变?)和常量 【rust】| 03——语法基础 | 数据类型 【rust】| 04——语法基础 | 函数 【rust】| 05——语法基础 | 流程控制 【rust】| 06——语言特…