(lora communication 868MHz版本)这是一个到semtech sx1276/7/8/9远程低功耗收发器系列的python接口。

pyLoRa的Python项目详细描述


这个叉子-pylora

这个fork是原始mayeranalytics工作(mayeranalytics/pysx127x)的改编和改进版本。 Pylora可用于通过Radiohead库与Arduino通信,有关更多信息,请参阅以下示例->;rpsreal/lora ra-02\u Arduino

更新2018年5月-添加加密版本 出于安全原因,建议使用使用高级加密标准(AES)的加密版本。您还可以使用它们与Arduino通信。

更新08/2018-添加了对两个模块同时的支持现在可以在Raspberry PI中同时使用两个无线电模块。为此,只需使用如下Board2设置:

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD

更新04/2019-关于使用不同通信频率的说明可以使用Pylora使用多个不同的通信频率。默认频率为868MHz(欧洲),但您可以更改通信频率,例如使用AI Thinker RA-02模块(433MHz)。为此,请在sx127x/lora.py文件中查找"868",并将其替换为所需的频率。

它支持python 3或更新版本和pypi。https://pypi.org/project/pylora/

覆盆子皮的简易设置:

sudo raspi-config nonint do_spi 0
sudo apt-get install python-dev python3-dev

安装:

对于使用pip安装,请执行以下安装步骤:

sudo apt-get install python-pip python3-pip
pip install RPi.GPIO
pip install spidev
pip install pyLoRa

仅对于加密版本,需要执行以下安装步骤:

pip install pycryptodome
pip install pycrypto

硬件

按如下所示进行连接。 如果需要更改,请编辑文件board_config.py

<表><广告>RA-02罗兰板1rasppi gpioRA-02罗兰板2rasppi gpio< /广告><正文>mosiGPIO 10mosiGPIO 10味噌GPIO 9味噌GPIO 9SCK(SCLK)GPIO 11SCK(SCLK)GPIO 11nssGPIO 8(CE0)nssGPIO 7(CE1)DIO0(IRQ)GPIO 4DIO0(IRQ)GPIO 23dio1GPIO 17dio1GPIO 24dio2GPIO 18dio2GPIO 25DIO3GPIO 27DIO3GPIO 5rst(重置)GPIO 22rst(重置)GPIO 6发光二极管GPIO 13发光二极管GPIO 19

带1k欧姆或330欧姆(可选)的外部LED

如何使用

查看示例文件。 如果您下载了库和示例文件,现在就可以启动lora廑u服务器或lora廑u客户端(加密或非加密)。 要工作,必须有另一台Lora_服务器或Lora_客户端在另一台设备上运行(Raspberry PI或Arduino)

例如,如果您运行的是一个/master/lora\u server.py" rel="nofollow">raspberry pi上的lora\u server.py如下:

cd pySX127x
python3 ./LORA_SERVER.py

额外

如果不需要安装库,只需在同一目录中使用即可。 下载库和示例文件

sudo apt-get install python-rpi.gpio python3-rpi.gpio
sudo apt-get install python-spidev python3-spidev
sudo apt-get install git
sudo git clone https://github.com/rpsreal/pySX127x

如果需要从任何地方运行库:

nano ~/.bashrc

把这个放在文件末尾:

< Buff行情>

导出pythonpath=/home/pi/pysx127x/

然后:

source ~/.bashrc

由葡萄牙波尔图Rui Silva开发

从mayeranalytics/pysx127x派生

概述

这是指向semtech sx1276/7/8/9的python接口。 远程、低功耗收发器系列。

SX127X同时具备LORA和FSK功能。这里的重点在于 因此到目前为止只实现了lora调制解调器接口。 (但有关未来的计划,请参见下面的路线图

扩频调制有许多有趣的特性:

  • 高抗干扰性
  • 高达20dBm的链路预算优势(适用于SX1276/7/8/9)
  • 高多普勒频移抗扰度

有关lora的更多信息,请访问lora联盟网站。 可以在下面的参考资料部分中找到指向某些LORA性能报告的链接。

动机

收发器模块通常与微控制器板接口,如 ARDUNO和已经有许多用于SX127X系列的精细C/C++库 githubmbed.org

尽管C/C++是微控制器开发的事实标准,但是< 在覆盆子皮上运行正在成为快速成型的可行替代方案。

像python这样的高级编程语言需要像linux这样成熟的操作系统。(有一些例外,比如 pymite和最显著的micropython) 但是,使用能够运行linux的硬件在某种程度上与sx127x系列的低功耗规范相矛盾。 因此,很明显,这种方法主要针对原型和技术测试。

使用高级编程语言在成熟的操作系统上进行原型设计有几个明显的优点:

  • 可以快速构建工作原型
  • 技术测试更快
  • 概念证明更容易实现
  • 应用程序开发阶段更快

硬件

收发器模块是一个基于SX1276的modtronixinair9b。 它安装在一个原型板上的覆盆子PI版本2型号B。

<表><广告>主板引脚 rasppi gpio方向< /广告><正文>INAIR9B第0版GPIO 22输入在IR9b DIO1中 GPIO 23输入在IR9b DIO2中 GPIO 24输入在IR9b DIO3中 GPIO 25输入INAIR9B复位GPIO?向外发光二极管GPIO 18向外开关 GPIO 4输入
  • []添加图片
  • []将SX127X重置连接到GPIO?

代码示例

概述

首先导入模块

fromSX127x.LoRaimport*fromSX127x.board_configimportBOARD

然后设置板GPIO

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
0

lora对象被实例化并进入待机模式

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
1

寄存器的查询方式如下:

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
2

设置寄存器也很简单

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
3

在应用程序中,当重写一个或多个回调函数 在成功的接收或发送操作时调用。

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
4

最后,应该正确释放资源

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
5

更多详细信息

sx127x.lora的大多数函数是setter和getter函数。例如,的setter和getter 此处演示编码速率

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
6

@ todo/p>

安装

确保在您的raspberrypi上激活spi:spipysx127x需要这两个python包:

  • rpi.gpio要访问gpio,它应该已经安装在 标准的Raspian Linux映像
  • spidev用于控制spi

要安装spidev,请下载源代码并手动运行setup.py:

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
7

此时,您可能需要确认单元测试通过。请参阅下面的测试部分。

现在可以运行脚本了。例如,使用lora util.py

转储寄存器
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
8

类引用

与sx127x罗兰调制解调器的接口在类sx127x.lora.lora中实现。 最重要的调制解调器配置参数是:

<表><广告>函数说明 < /广告><正文>设置模式更改opmode,使用constants.mode类设置频率设置频率设置bw设置带宽7.8kHz…500 kHz 设置编码速率设置编码速率4/5、4/6、4/7、4/8@待办事项

大多数set戥*函数都有一个mirror get戥*函数,但是要注意getter返回类型不一定匹配 setter输入类型。

寄存器命名约定

寄存器地址是在类sx127x.constants.reg中定义的,我们使用一个特定的命名约定 最好用几个例子来说明:

<表><广告>寄存器调制解调器 semtech文件 pysx127x< /广告><正文>0x0e罗兰regfifotxbaseaddr注册地址:0x0e FSK 重新分配寄存器fsk.rssi_配置0x1d罗兰regmodemconfig1注册罗兰调制解调器配置1等

硬件

硬件相关定义和初始化位于sx127x.board_config.board中。 如果您使用的是除覆盆子皮以外的SBC,则必须调整板卡类。

脚本引用

连续接收机

sx127x被置于rxcont模式并持续等待传输。一旦成功阅读 有效载荷和IRQ标志被打印到屏幕上。

# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD
9

简单的罗兰信标

小的有效载荷以固定的间隔发送。

sudo raspi-config nonint do_spi 0
sudo apt-get install python-dev python3-dev
0

测试

执行test_lora.py来运行一些单元测试。

贡献者

请随时发表评论、报告问题或发表意见!

通过我的公司网站与我联系p://mayer analytics.com" rel="nofollow">mayer分析和我的私人博客 mcmayer.net

在twitter上关注我@markuscmayer@mayeranalytics

路线图

SX127X罗兰能力的95%功能已实现。必要时将添加功能。 测试覆盖率很低,但我们打算很快改变它。

Semtech SX1272/3与SX1276/7/8/9相比

pysx127x与1272不完全兼容。 1276和1272芯片不同,接口不完全相同。例如寄存器0x26/27。 但是如果你小心使用pysx127x库的话,它会让你走得很远。以下是两个数据表:

hoperf收发器ic

hoperf有一系列支持lora的收发器芯片rfm92/95/96/98 与Semtech SX1276/7/8/9系列具有相同或几乎相同的SPI接口。

微芯片收发器集成电路

同样,microchip也有一个芯片:rn2483

因此,在某个时候,pysx127x项目将被重命名为pylora。

楼兰

Lorawan是一个低功耗广域网,并且与PYSX127X几乎没有关系。在这里,我们只处理进入芯片的接口,该芯片使罗兰网络的物理层成为可能。

参考资料

硬件参考

罗兰性能测试

扩频调制理论

版权和许可

?2015梅耶尔分析有限公司,保留所有权利。

短版

许可证是gnu agpl

长版

pysx127x是自由软件:您可以根据 由FRE发布的GNU Affero通用公共许可证软件基础 许可证的第3版或(由您选择)任何更高版本。

PYSX127X的发布是希望它能有用, 但没有任何保证;甚至没有 适销性为特定目的的适销性或适合性 有关详细信息,请参阅GNU Affero通用公共许可证。

您可以通过获取商业许可证来解除许可证的要求。 一旦您开展涉及 pysx127x不公开您自己应用程序的源代码,也不使用封闭源代码的产品发布pysx127x。

你应该收到GNU通用公共许可证的副本 和PYSX127一起。如果没有,请参见http://www.gnu.org/licenses/" rel="nofollow">http://www.gnu.org/licenses/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从FXML转换为JAVA时,不会加载javafx映像   泛型Java模板调用运行时推断   javascript为什么我的活动没有响应我在样式文件中所做的更改?   如何在HttpClient(java、apache)中自动重定向   java CSV到H2字符编码不匹配   在Java中使用BorderLayout按比例调整用户界面大小   Java中的重定向异常   java RecyclerView搜索过滤器仅过滤一个值   java标准api multiselect与count和distinct不起作用   java为什么我在Solr上做的每一个查询都会占用我10s MB的堆内存?   java如何使用方法解决:锁定帐户三次后?   java如何实现睡眠以显示图像的幻灯片   在Java中,按对象参数对映射<对象,列表<对象>>进行排序   java无法从密钥库读取密钥   java试图将水平recycleview嵌套到垂直recycleview中   认识C++对Web应用开发的重要性   使用共享对象实例化多个Runnable的java含义?   javabeans何时使用JavaBean?