Grove-Lora Radio:修改库函数使能修改扩频因子、带宽参数、码率

Grove-Lora Radio的使用详见:http://wiki.seeedstudio.com/cn/Grove_LoRa_Radio/

但是网站中提供的Grove_LoRa_433MHz_and_915MHz_RF-master中的示例代码只能修改RF的频率,不能修改LoRa扩频因子、带宽等参数。研究了一下午,终于搞明白怎么修改库函数,特在此记录。

注意!必须找到与Grove_LoRa_433MHz_and_915MHz_RF-master库对应的 RH_RF95.h和 RH_RF95.cpp文件!

1. 修改扩频因子,添加如下代码段

 RH_RF95.cpp,添加

template <typename T>
void RH_RF95<T>::setSpreadingFactor(int8_t sf)
{if (sf < 6) {sf = 6;} else if (sf > 12) {sf = 12;}if (sf == 6) {this->write(RH_RF95_REG_31_DETECTION_OPTIMIZE, 0xc5);this->write(RH_RF95_REG_37_DETECTION_THRESHOLD, 0x0c);} else {this->write(RH_RF95_REG_31_DETECTION_OPTIMIZE, 0xc3);this->write(RH_RF95_REG_37_DETECTION_THRESHOLD, 0x0a);}this->write(RH_RF95_REG_1E_MODEM_CONFIG2, (this->read(RH_RF95_REG_1E_MODEM_CONFIG2) & 0x0f) | ((sf << 4) & 0xf0));
}

② RH_RF95.h,添加

#define RH_RF95_REG_31_DETECTION_OPTIMIZE   0x31
#define RH_RF95_REG_37_DETECTION_THRESHOLD  0x37
void setSpreadingFactor(int8_t sf);

2. 修改带宽

 RH_RF95.cpp,添加

template <typename T>
void RH_RF95<T>::setSignalBandwidth(long sbw)
{int bw;if (sbw <= 7.8E3) {bw = 0;} else if (sbw <= 10.4E3) {bw = 1;} else if (sbw <= 15.6E3) {bw = 2;} else if (sbw <= 20.8E3) {bw = 3;} else if (sbw <= 31.25E3) {bw = 4;} else if (sbw <= 41.7E3) {bw = 5;} else if (sbw <= 62.5E3) {bw = 6;} else if (sbw <= 125E3) {bw = 7;} else if (sbw <= 250E3) {bw = 8;} else /*if (sbw <= 250E3)*/ {bw = 9;}this->write(RH_RF95_REG_1D_MODEM_CONFIG1, (this->read(RH_RF95_REG_1D_MODEM_CONFIG1) & 0x0f) | (bw << 4));
}

② RH_RF95.h,添加

void setSignalBandwidth(long sbw);

3. 修改码率

 RH_RF95.cpp,添加

template <typename T>
void RH_RF95<T>::setCodingRate4(int8_t denominator)
{if (denominator < 5) {denominator = 5;} else if (denominator > 8) {denominator = 8;}int cr = denominator - 4;this->write(RH_RF95_REG_1D_MODEM_CONFIG1, (this->read(RH_RF95_REG_1D_MODEM_CONFIG1) & 0xf1) | (cr << 1));
}

② RH_RF95.h,添加

void setCodingRate4(int8_t denominator);

 

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

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

相关文章

设计模式之对象池模式

对象池模式 对象池模式, 或者称为对象池服务, 其意图为: 通过循环使用对象, 减少资源在初始化和释放时的昂贵损耗(这里的"昂贵"可能是时间效益(如性能), 也可能是空间效益(如并行处理), 在大多情况下, 指性能) 简单的说, 在需要时,从池中提取,不用时,放回池中,等待…

WiFi的基本调制过程

参考&#xff1a;Parallel Inclusive Communication for Connecting Heterogeneous IoT Devices at the Edge 基本的WiFi调制分为以下三个步骤&#xff1a; 1. 将信号调制到正弦波上。 WiFi采用QAM&#xff08;正交振幅调制&#xff09;&#xff0c;用I/Q信号表示的话&#…

设计模式之黑板模式

黑板模式的意图 黑板模式是观察者模式的一个扩展,知名度并不高,但使用的范围却非常广. 其意图为: 允许消息的读写同时进行, 广泛的交互消息. 简单的说, 黑板模式允许多个消息读写者同时存在, 消息的生产者和消费者完全分开. 这就像一个黑板, 任何一个老师(消息的生产者)都可以…

蓝牙调制

参考&#xff1a;Parallel Inclusive Communication for Connecting Heterogeneous IoT Devices at the Edge 《从创意到原型&#xff1a;物联网应用快速开发》 董玮&#xff0c;高艺编著 详解蓝牙标准中的GFSK调制&#xff1a;https://blog.csdn.net/lovehua365/article/detai…

设计模式之空对象模式

空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动物代码: 听叫声的人: 现在我们想, 能不能把 animal 的空值判断去掉呢?我们增…

树莓派安装mosquitto提示“MOSQ_1.5” not found

由于工作需要&#xff0c;我需要把树莓派上已经安装的mosquitto卸了&#xff0c;然后再安装一个新的。 安装的方法参考下面这个链接&#xff1a; http://www.52pi.net/archives/1718 但是重新安装的过程比较顺利&#xff0c;make install之后也没出现什么问题&#xff0c;但…

UML类图基础说明

UML类图主要由类和关系组成. 类: 什么具有相同特征的对象的抽象, 具体我也记不住, 反正有官方定义 关系: 指各个类之间的关系 类图 类就使用一个方框来表示, 把方框分成几层, 来表示不同的信息,如下图所示: 当然, 类图也不一定每一次都长这样, 比如你只分析各个类之间的关系…

J-flash 烧写cc2538教程

1. 打开J-falsh&#xff0c;所示如下界面 2. 配置相关参数。 菜单栏 Options → Project settings。按照如下框图选择。 3. 打开要烧写的文件。File → Open data file&#xff0c;选择要烧写的文件&#xff08;一般为hex或bin文件&#xff09; 4. 连接板子。Target → Connec…

跳表

概述 线性表中的链表是我们都很熟悉的结构了, 链表的增删优于数组, 但是不支持随机访问, 链表在查找时, 只能从头节点向后遍历, 那么针对链表, 能不能解决其访问效率的问题呢? 跳表来了, 顾名思义, 跳表就是可以跳跃的表, 我简单画了张图: 在原来链表的基础上, 建立一个新的…

论文写作——用excel和ppt做好看的论文图

论文写作——用excel和ppt做好看的论文图Excel 作图PPT保存前言&#xff1a;用matlab或者python作图&#xff0c;门槛较高&#xff0c;熟悉比较难。用excel和ppt就比较容易上手了。最近的论文全用ppt和excel作图&#xff0c;看着也不赖&#xff0c;在此记录一下一般的方法。 co…

蝌蚪与青蛙是同一个物种么?

最近在一本书上看到, 说蝌蚪的腿要是被砍了, 很快就可以在长出来, 而等他长成了青蛙, 却失去了这种能力. 于是我想, 为什么蝌蚪长成青蛙后, 就失去了这种能力呢? 是它在成长过程中的演变吗? 成年后没有继承少年时的能力. 还是说蝌蚪就是蝌蚪, 而青蛙就是青蛙? 如果说, …

Arduino Uno + Lora shield rf95_server 提示错误“Init failed!”

错误描述 在使用原始的Arduino提供的示例rf95_server和rf95_client的时候&#xff0c;烧了rf96_server的板子会出现“init failed&#xff01;”的错误&#xff0c;如下。 问题解决 经过排查&#xff0c;初始化失败由Led相干代码引起&#xff0c;因此将它们注释掉就好了&…

眼见为实

我们从小就一直再说 耳听为虚眼见为实, 但是眼见的就一定是真实的么? 我们都知道眼睛的构造, 首先是一个凸透镜, 而凸透镜接收到的图像是倒立的, 那么为什么我们看到的图像是正立的呢?当然是大脑负责将倒立的图像反转过来. 其次, 我们是左右两只眼睛, 而两只眼睛接收到的图…

【debug】 烧写 ttn-otaa.ino提示 undefined reference to ‘table_g‘ / ‘table_get_ostime‘

设备&#xff1a; Arduino UNO LoRa shield 代码&#xff1a; ttn-otaa.ino 错误信息&#xff1a; Arduino:1.8.10 (Windows 10), 开发板&#xff1a;"Arduino/Genuino Uno"C:\Users\ADMINI~1\AppData\Local\Temp\cceEo6Kv.ltrans0.ltrans.o: In function radio_…

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

文章目录1. 创建单信道LoRaWAN网关1.1 准备工作配置树莓派上网开启树莓派SPI接口安装必需库文件1.2 正式开始把LoRa shield连接到树莓派上下载单信道LoRa网关代码到树莓派2. TTN网站相关操作2.1 注册并登录TTN2.2 注册Gateway2.3 注册Application2.4 注册device3. Client端操作…

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

参考链接&#xff1a; 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安装&#xff1a; 安装链接&#xff08;根据…

MD文件图片base64自动编码

看工具链接请直接将文章拉到最后… 概述 不知道你在使用markdown写文章的时候有没有遇到过这样的烦恼, 文件写完了, 想将写完的文章粘贴到博客的时候, 你满心欢喜的复制粘贴, 但是发现图片根本复制不过去, 是不是很难受, 尤其对于我这种使用markdown写文章, 写完后想把文章发…

转载:tcpdump抓包和Wireshark解包

转自&#xff1a;https://www.cnblogs.com/domestique/p/8028405.html 简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 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…