花费200欧元打造自己的LoRa网关

本文来源 https://github.com/isiot/diy_LoRa_gateway

本教程介绍一个便宜的LoRa网关的制作步骤,然后让节点、网关和云在一起运行。
注:本文仅翻译自github,并未亲测

part1硬件选择
我要介绍的LoRa网关,运行在sx1301之上,该芯片不能单独出售,只出售给符合条件的客户。唯一的办法就是购买一个成品的网关板。
目前市场基于sx1301的LoRa网关板有:
Semtech LoRa物联网入门套件,只出售给符合条件的客户

IMST iC880A,约189欧元:

Multitech mCard-LoRa, 约156欧元:

Link Labs LoRaWAN Raspberry Pi(树莓蒎) Gateway Board, 225美元:

Cisco LoRa card, sold with Cisco IR900 router only(思科LoRa板卡,只提供思科IR900路由器):

只有Multitech mCard-LoRa符合我们的预算,而剩下的其他硬件就很便宜了。

mCard LoRa是一个为Multitech MultiConnect Conduit router定制的插件板,这个Mini-PCIe card没有使用文档可以提供,因为它是即插即用的。但是如果我们想把用它在其他的硬件环境下,我们应该对它进行逆向拆解。
余下的硬件则需要一个嵌入式Linux主机像Raspberry Pi,25欧元:

以及一个 USB to Mini-PCIe转换器, 5欧元:

对了,别忘了还有电源适配器、电缆和天线。

进入第2部分我们将探讨对mCard LoRa硬件上的修改。

part2硬件改造
mCard LoRa是一个Mini-PCIe规格的板卡。包含有一个sx1301基带芯片和两个sx1257 I/Q调制收发器(1 TX 2 RX) ,都集成在一个很小的板上。

图中,射频链用蓝色线画出,包含
发送通道上的“平衡-不平衡转换器”BALUN,声表面波滤波器saw,功率放大器PA,滤波器和开关
接收通道上的声表面波滤波器saw,低噪声放大器LNA,声表面波滤波器saw
在另一层有一个FTDI SPI转USB转换器FT232,以及一些电源芯片

请看USB转Mini-PCIe板卡的电源引脚,GND引脚连接到地,3.3V的电源引脚(2,24,52)连接到了一些电源芯片的输入上(用于为数字部分供电)。但是为模拟部分供电的电源芯片的输入接到了引脚23和25。3个LDO器件lp38502sd-adj用于模拟供电并调整到3.3V输出,所以它们 的输入电压应该大于3.52v,因为它们工作时的最小压差是220mv,总之,我决定为迷你PCIe连接器的23和25脚提供5V电压,这个5V电压从 USB接口处取得。我推荐你使用一个质量好的USB接口供电.
树莓蒎2有USB电流限制以防止集线器启动,可以修改启动文件/boot/config.txt,增加max_usb_current = 1来增大USB电流。

part3软件编译
Raspberry Pi足够强大,Raspbian(Raspbian,树莓派自带的基于debian的OS)系统自带了GCC,Git…
这样我们就可以在Raspberry Pi里面进行软件编译,而不需要在桌面PC上编译后上传二进制文件到Raspberry Pi。

打开一个控制台或SSH会话,默认的用户名是“pi”和密码“raspberry”。
首先我们需要FTDI芯片FT232HQ的驱动(libmpsse.so),不要试图在网上找到它,因为它是依赖于平台的,所以最好是从源码编译:

现在我们可以继续关于LoRa网关的部分了:下载源代码和编译,一旦完成编译,就把他们复制到 ~/lora/exec:

最后,我们执行的LoRa gateway:

本节我使用了这些链接作为参考资料:
https://github.com/Lora-net/lora_gateway/blob/v3.1.0/libloragw/install_ftdi.txt
https://github.com/Lora-net/packet_forwarder/wiki/Use-with-Raspberry-Pi

part4软件修改
LoRa网关的软件部分本来应该做适当修改再进行编译的,但本教程第3部分用来编译的代码是我从原始lora_gateway代码fork的一个分支并做了必要的修改,所以你不需要修改任何文件
如果你想知道我所做的修改,请阅读下文并查看我提交的commits。
我第一次编译时,软件并没有运行起来,我意识到USB驱动没有被识别,因为我手上的mCard与LoRa开发套件(即与 https://github.com/Lora-net/lora_gateway 配套的套件)使用了不同的FTDI USB to SPI转换芯片FT232H,每个FT232H都有不同的PID(Product IDentification),我修改了源文件中的以下文件:

loragw_spi.ftdi.c

99-libftdi.rules

为了使用FTDI SPI,我们必须做以下修改
library.cfg

现在,板子可以被正确识别但是还不能与SX1301通信,因为板子还处于复位状态,复位引脚是由主机通过FTDI的GPIO引脚来控制的,修改以下文件:
loragw_spi.ftdi.c

现在sx1301似乎开始工作但没有读寄存器,这是因为sx1301没有时钟源,两个sx1257通过共享的TCXO进行时钟驱动,sx1257具有时钟输出,用于驱动sx1301时钟, 查看schematic的文档,我发现是radio_0的时钟输出而不是radio_1的被连接到了sx1301的时钟输入,所以修改以下文件:
global_conf.json

完工!!!
Note:写完本教程以后,MultiTech公开发布了具有相同补丁的的GIT库文件,地址在
http://git.multitech.net/cgi-bin/cgit.cgi/lora_gateway.git/commit/?h=1.7.0-mts

说明:LPWA物联网应用站(LPWAP.com)通过公开互联网收集、整理并转载有关LPWA物联网应用解决方案,以供广大LPWA应用开发者和爱好者共同学习交流和参考运用到实际生产生活中。本站所有转载的文章、图片、音频、视频等资料的版权归版权所有人所有并衷心感谢您的付出,由于本站采纳的非本站原创文章及图片等内容无法一一联系确认版权者,如果本网所选内容的文章原创作者认为其作品不宜放在本站,请及时通过以下留言功能通知我们采取适当措施,避免给双方造成不必要的经济损失。如果您希望保留文章在本站,但希望文章末尾提供对作者的致谢或者产品、网站交换链接的,也请将需求写入以下留言栏中,谢谢您的支持。让我们共同努力,打造万物互联的未来美好生活!

您的留言或需求: