(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
<表><广告>带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++库 github和mbed.org
尽管C/C++是微控制器开发的事实标准,但是< 在覆盆子皮上运行正在成为快速成型的可行替代方案。像python这样的高级编程语言需要像linux这样成熟的操作系统。(有一些例外,比如 pymite和最显著的micropython) 但是,使用能够运行linux的硬件在某种程度上与sx127x系列的低功耗规范相矛盾。 因此,很明显,这种方法主要针对原型和技术测试。
使用高级编程语言在成熟的操作系统上进行原型设计有几个明显的优点:
- 可以快速构建工作原型
- 技术测试更快
- 概念证明更容易实现
- 应用程序开发阶段更快
硬件
收发器模块是一个基于SX1276的modtronixinair9b。 它安装在一个原型板上的覆盆子PI版本2型号B。
<表><广告>- []添加图片
- []将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_configimportBOARD2asBOARD0
lora对象被实例化并进入待机模式
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD1
寄存器的查询方式如下:
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD2
设置寄存器也很简单
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD3
在应用程序中,当重写一个或多个回调函数 在成功的接收或发送操作时调用。
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD4
最后,应该正确释放资源
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD5
更多详细信息
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_configimportBOARD2asBOARD6
@ todo/p>
安装
确保在您的raspberrypi上激活spi:spipysx127x需要这两个python包:
要安装spidev,请下载源代码并手动运行setup.py:
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD7
此时,您可能需要确认单元测试通过。请参阅下面的测试部分。
现在可以运行脚本了。例如,使用lora util.py
:
# Use BOARD 2 (you can use BOARD1 and BOARD2 at the same time just give another name)fromSX127x.LoRaimportLoRa2asLoRafromSX127x.board_configimportBOARD2asBOARD8
类引用
与sx127x罗兰调制解调器的接口在类sx127x.lora.lora中实现。 最重要的调制解调器配置参数是:
<表><广告>大多数set戥*函数都有一个mirror get戥*函数,但是要注意getter返回类型不一定匹配 setter输入类型。
寄存器命名约定
寄存器地址是在类sx127x.constants.reg
中定义的,我们使用一个特定的命名约定
最好用几个例子来说明:
硬件
硬件相关定义和初始化位于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_configimportBOARD2asBOARD9
简单的罗兰信标
小的有效载荷以固定的间隔发送。
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几乎没有关系。在这里,我们只处理进入芯片的接口,该芯片使罗兰网络的物理层成为可能。
参考资料
硬件参考
- semtech sx1276/77/78/79-137兆赫至1020兆赫低功耗远程收发器
- modtronix inair9
- spidev文档
- 制作:tutorial:raspberry-pi-gpio-pins和python
罗兰性能测试
- 极限范围链接:用于arduino、raspberry pi和intel galileo的lora 868/900mhz sx1272 lora模块
- 英国lora与英国fsk-40km los(视线)测试!
- Andreas Spiess Lorawan世界纪录尝试
扩频调制理论
- 扩频技术简介
- 扩频通信理论-a tutorial (技术论文)
版权和许可
?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/