用树莓派+lora shield搭建一个LoRaWAN网关

文章目录

  • 1. 创建单信道LoRaWAN网关
    • 1.1 准备工作
      • 配置树莓派上网
      • 开启树莓派SPI接口
      • 安装必需库文件
    • 1.2 正式开始
      • 把LoRa shield连接到树莓派上
      • 下载单信道LoRa网关代码到树莓派
  • 2. TTN网站相关操作
    • 2.1 注册并登录TTN
    • 2.2 注册Gateway
    • 2.3 注册Application
    • 2.4 注册device
  • 3. Client端操作
    • 3.1 下载代码
    • 3.2 修改代码
      • 3.2.1 client端代码修改
  • 4. 观察实验结果

1. 创建单信道LoRaWAN网关

1.1 准备工作

配置树莓派上网

网上教程很多,不再介绍。

开启树莓派SPI接口

  • 输入命令
    pi@raspberrypi:~ $ sudo raspi-config
  • 在"Interfacing Options"选项中,找到SPI选项,选择enable。
    在这里插入图片描述
    在这里插入图片描述

安装必需库文件

使用“ sudo apt-get installconnectionpi”为Raspberry Pi中使用的BCM2835安装以C语言编写的GPIO访问库;

1.2 正式开始

把LoRa shield连接到树莓派上

在这里插入图片描述

在这里插入图片描述

下载单信道LoRa网关代码到树莓派

  • 下载单信道LoRa网关代码到树莓派
    源代码地址:https://github.com/tftelkamp/single_chan_pkt_fwd
  • 编译代码并运行
$ make all
$ ./single_chan_pkt_fwd

在这里插入图片描述
如上图,树莓派表示已经找到连接到自己的LoRa shield了。将“Gateway ID”部分记录下来。
这边工作还没有完成,先放一放,回来再做。

2. TTN网站相关操作

2.1 注册并登录TTN

进入TTN之后,点击头像边的下拉箭头,选择“console”,进入控制台,如下所示。

在这里插入图片描述

2.2 注册Gateway

选择“GATEWAYS”,在进去的页面选择“register gateway”
在这里插入图片描述
在“Gateway ID”部分填写前面记录的ID,并在下面小方框里面打“√”。选好对应的频段之后,点击页面最下面的“Register Gateway”。
在这里插入图片描述

2.3 注册Application

点击“Applications”,进入页面。点击“add application”,进入配置页面。
在这里插入图片描述
在填写好“Application ID”之后,点击页面最下面的按钮“Add application”,生成对应的应用,具体如下图所示。
在这里插入图片描述

2.4 注册device

在对应的应用下面注册设备,点击“register device”。
在这里插入图片描述
在输入“Application ID”之后,点击生成“Register”,生成对应的设备。
在这里插入图片描述
在修改网关代码main.cpp对应部分的代码,并重新编译运行。

  1. 修改中心频率:
uint32_t freq = 868100000;

改成

uint32_t freq = 433175000;
  1. 修改服务器地址:根据自己选择的TTN服务器修改。参考链接:TTN服务器列表。网站给出的是域名,根据工具把转换为ip地址。域名/IP查询工具。
    我使用的服务器是router.eu.thethings.network,对应的IP地址为:52.169.76.203
#define SERVER1 "54.72.145.119"

改成

#define SERVER1 "52.169.76.203"  

3. Client端操作

3.1 下载代码

代码链接:https://github.com/dragino/Lora/tree/master/Lora%20Shield/Examples/lora_shield_ttn

3.2 修改代码

3.2.1 client端代码修改

  1. 根据TTN上的设备信息修改NWKSKEY、APPSKEY、DEVADDR等参数。
    在这里插入图片描述
    在这里插入图片描述
  2. 当使用的client的默认工作频率是433MHz的时候,我们需要修改一下LMIC库文件,保证双方通信。
    ① 在代码中添加433MHz相关的代码,具体参考如何添加其他频段,例如EU433
    ② 在lmic.c里面强制转化发送的中心频率为433MHz。
bit_t LMIC_setupChannel (u1_t chidx, u4_t freq, u2_t drmap, s1_t band) {
...
LMIC.channelFreq [chidx] = freq;
}

变为

bit_t LMIC_setupChannel (u1_t chidx, u4_t freq, u2_t drmap, s1_t band) {
...
freq = 433175000;//这个频率应该与gateway监听的频率相同
LMIC.channelFreq [chidx] = freq;
}

4. 观察实验结果

搭建的gateway上观察到的收包现象:
在这里插入图片描述
TTN上观察到的收包现象:
在这里插入图片描述

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

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

相关文章

基于linux的MsQUIC编译及样例运行

参考链接: https://github.com/microsoft/msquic/blob/main/docs/BUILD.md 软件相关版本 Ubuntu 20.04 编译/构建 1. 下载源代码 $ git clone --recursive https://github.com/microsoft/msquic.git 2. Powershell安装: 安装链接(根据…

转载:tcpdump抓包和Wireshark解包

转自:https://www.cnblogs.com/domestique/p/8028405.html 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头…

散列表(哈希表)

概述 什么是散列表? 如果说起它的另一个名字, 你一定很熟悉, 它的英文叫"Hash Table", 哈希表, 很熟悉吧. 散列的思想, 其实就是利用数组的随机访问特性, 将key-value形式的数据, 其中的key转换成数组下标, 即可实现将其存放到数组中, 进而实现随机访问. 而其中将…

如何让nRF52840 dongle化身为BLE sniffier (过程详细记录)

参考链接: How to install BLE Sniffer on nRF52840 Dongle and run it – Jimmys thing 软件环境: Windows 10Python v3.6 or later: 安装地址:Python Releases for Windows | Python.orgWireshark v2.4.6 or later: 安装地址:Wireshark DownloadnRF Connect: 安装地址: n…

【安全】基础概念梳理-基本加密方式、数字签名、证书

一、两种基本加密方式 1.1 对称加密 对称加密是指双方持有相同的密钥进行通信,加密速度快。常见的对称加密算法有DES、3DES、AES等。存在问题:通信双方如何获得相同的密钥? 1.2 非对称加密 非对称加密,又称为公开密钥加密&#…

【坑】云相关

1. NAT NAT(Network Address Translation,网络地址转换:当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但又想和因特网上的主机通信(并不需要加密&…

Pycharm 2019 添加 docker 解释器

打开docker的tls 点击设置: 搜索docker, 添加: 点击解释器选项 添加 选择docker 这里说缺少映射, 先不管 接下来, 创建一个新项目, 在选择解释器的时候, 如果选择刚刚添加的, 会报错, 先选一个能用的, 进到项目再换 在右下角的解释器小部件, 选择我们刚刚添加的 然后就可以正常…

【待补】Wireshark+BLE dongle: BLE数据包捕获以及分析

文章目录前言1. 捕获BLE数据包2. 分析BLE数据包2.1 过滤掉不感兴趣的BLE数据包2.2 利用Wireshark内嵌工具生成图表前言 硬件:Nordic 52840 dongle 软件: Wireshark 1. 捕获BLE数据包 待补充。 2. 分析BLE数据包 2.1 过滤掉不感兴趣的BLE数据包 以自…

js动态添加div

问题 有没有遇到过这样的需求, 在页面上会有不定个input, 点击添加按钮就添加 每次写这玩意好麻烦啊, 把他封装起来, 需要的时候调用就好了 思路 因为每个input标签的name如果相同的话, 在后端接收的时候会出错, 所以我的解决办法就是在name后加上一个数字, 后端用一个循环进…

【5G入门】MCS调制编码方案简介

​ 目录参考资料:1. MCS简介MCS是什么如何选择MCS有哪些MCS可供选择如何配置MCS示例参考资料: 链接: 5G NR Modulation and Coding Scheme – Modulation and Code Rate. 1. MCS简介 MCS是什么 MCS(Modulation and Coding Scheme&#xf…

caffe初体验

caffe是一个深度学习的框架, 具体我也不太清楚, 可以自行百度吧, 我也是刚刚知道有这么一个框架, 才疏学浅啊. 在安装完caffe, 我的第一个想法就是, 别管他是个啥东西, 总得先让我运行一些看一看吧. 刚好, 官方就准备了一些数据, 供我们运行一下看一看使用. 因为我是通过dock…

【安全】进阶的Mosquitto:搭建一个安全的MQTT服务

目录一、基础版Mosquitto安装及运行Mosquitto安装Mosquitto运行二、基础安全版Mosquitto安装及运行(需要输入密码)Mosquitto安装Mosquitto配置Mosquitto测试效果三、安全版Mosquitto安装及运行Mosquitto安装TLS安装Mosquitto配置Mosquitto测试效果注意一…

PHP 循环引用的问题

问题 为了引出问题, 先来看下面一段代码: <?php $arr [a, b,c, d, ];foreach ($arr as &$each){echo $each; } echo PHP_EOL; foreach ($arr as $each){echo $each; }这段代码很简单, 输出数组的元素两次, 感觉会输出两次 abcd? 不好意思, 输出结果如下:  是不是感…

揭开HTTPS的神秘面纱

在说HTTP前&#xff0c;一定要先介绍一下HTTP&#xff0c;这家伙应该不用过多说明了&#xff0c;大家每天都在用&#xff0c;每一次HTTP请求&#xff0c;都是一次TCP连接。遗憾的是&#xff0c;请求的内容在TCP报文中是明文传输的&#xff0c;任何人截取到请求都可以读取其中的…

递归函数两种方式的区别

概述 递归函数都不陌生&#xff0c;比如计算n的阶乘&#xff1a; function f($n){if($n < 1) return 1;return $n * f($n-1); } 当然&#xff0c;有人可能会这么写&#xff1a; function f($n, $result){if($n < 1) return $result;return f($n-1, $n*$result); } 上…

Trie树

概述 在Google中随意搜索&#xff0c;如下所示&#xff1a; 他会自动显示相关的搜索&#xff0c;不知道有没有想过这个功能是如何实现的呢&#xff1f;面对海量的数据&#xff0c;它怎么能在我输入的同时&#xff0c;如此快速的检索到相关内容呢&#xff1f;当我查找资料后&am…

Python元组是什么

引出 在使用Python过程中&#xff0c;列表、集合和字典是比较常用的数据结构。 列表简单说就是数组&#xff0c;不对&#xff0c;它就是数组 集合就是去重的元素结构&#xff0c;和JAVA中的set一样 字典就是一个key-value的键值对&#xff0c;和JAVA中的HashTable一样 但是…

B+树

引言 时隔一年&#xff0c;我又想起当初看数据库时&#xff0c;看到的B树&#xff0c;就是数据库的索引使用的数据结构。再整理一下&#xff0c;看看自己没有忘记很多吧。 概述 B树之前&#xff0c;先来看一下二叉查找树&#xff08;1,2,3,4,5,6,7&#xff09; 恩&#xff0…

Python导入运行的当前模块报错

引言 今天遇到了一个奇怪的现象&#xff0c;简单举个栗子&#xff1a; 文件结构如下&#xff1a; 其中tt.py文件中定义了一个方法&#xff1a; def tt():print(tt) 我现在要在test.py中使用tt(), 代码如下&#xff1a; from test.tt import tt ​ if __name__ __main__:t…

Python中的+=

引出 今天在运行之前写的一个Python脚本时&#xff0c;发生了一个奇怪的现象&#xff08;我怎么老遇到奇怪的现象&#xff5e;&#xff5e;&#xff09;。当时的代码大概长这样&#xff1a; a [1, 2, 3] b [4, 5, 6] # ...一大段逻辑 c a c b # ...一大段逻辑 # 在这里&a…