花费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
您的留言或需求: