DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

构建一个树莓派供电的LoRaWAN网关

title

使用Raspberry Pi 2 + iC880A为Things Network Calderdale构建第一个网关

上个月,我写了关于物联网 (TTN) — 一个免费和开放的LoRaWAN为物联网应用提供动力的数据网络 - 以及我们如何在Calderdale创建了一个社区,我们的当务之急是使用它来支持众包的洪水传感器网络。

这篇文章摘录了上一次结束的地方,详细介绍了用于构建DIY网关(也称为“接入点”或“基站”)的硬件,以及软件,配置和初始测试。

请注意,有许多现成的LoRaWAN网关,以及更简单/更便宜的DIY解决方案。 然而,这里采用的方法在成本,灵活性和性能方面提供了良好的平衡,同时使我们能够更多地了解LoRaWAN如何工作。

硬件

title

前端由IMST iC880ALoRaWAN“集中器”板提供; 它集成了两个Semtech SX1257收发器IC和一个SX1301基带处理器。 能够模拟具有10条并行解调路径的49x LoRa解调器的组合,以便接收在不同信道上以不同扩频因子同时发送的多达8个LoRa分组。

这听起来很复杂,这要归功于LoRa的调制格式,它能够以非常适中的发射功率电平实现如此令人难以置信的范围,同时还支持每个网关数千个节点。 在实践中,有些细节你可能不需要担心,虽然无线电和MAC层配置是可能的,并且在某些情况下可能是需要的。

选择Raspberry Pi 2 Model B来运行网关软件,并通过SPI与集线器连接,并使用一个非常简单的由跳板构建的分线/踢脚板。 iC880A的连接细节可在相关文档中找到,并注意除了SPI连接之外,还需要Raspberry Pi上的标准GPIO引脚来复位模块。

这些电路板被放置在一个压铸铝外壳内,以提供射频屏蔽(RF Screening),这是为电源插座,开关和LED钻孔,以及链式钻/提供以太网访问。

软件

title

最新的Raspbian Jessie Lite图像被下载并写入Micro SD卡。 然后在启动Raspberry Pi之后,接着按照以下通常的顺序:

$ sudo apt-get update
$ sudo apt-get upgrade

并且:

$ sudo apt-get install git wiringpi

克隆软件源和WiringPi需要Git提供一个简单的机制来切换复位集中器板的GPIO引脚。

通过编辑/ etc / hostname以及/ etc / hosts中的相应条目来更改主机名

树莓派配置工具接下来运行:

$ sudo raspi-config

要启用通过SPI总线的通信,先选择高级选项(9),然后选择SPI(A6),然后选择启用SPI并在启动时加载内核模块。

由于我们使用的是16GB Micro SD卡,因此在重新启动之前,还使用raspi-config工具来扩展根文件系统来填充此文件系统。

来自IMST的文件建议从Semtech提供的参考资源中构建LoRaWAN软件。 然而,这些有各种更新的叉子正在由 GitHub organisation组织下的The Things Network维护。

苏黎世的物联网通过提供一个 自动化的安装程序已经更进一步。 尽管我不满意这个步骤,比如将Raspberry Pi重命名为通用名称(ttn-gateway),并从源代码构建WiringPi,而不是简单地使用Raspbian存储库中提供的软件包。

因此,我使用了install.sh 脚本 作为一个crib手动安装,并执行如下:

  1. 得到了 自动化安装程序的SPI分支 (git clone, git checkout...)

  2. 克隆和构建LoRa网关应用程序

  3. 克隆和构建数据包转发应用程序

  4. 创建bin目录,加上poly_pkt_fwd的符号链接,并复制到global_conf.json文件

  5. 省略了创建local_conf.json或重置网关ID

  6. 将start.sh复制到bin目录,并将数据包转发器设置为服务

请注意,在构建网关应用程序时:

  • libloragw / library.cfg文件必须更新,以便将PLATFORM设置为imst_rpi(请参阅install.sh中相应的sed行)

  • 调试可以通过在libloragw / library.cfg中设置适当的变量来打开

如果应用程序在配置后没有成功启动,那么打开SPI,设备寄存器和HAL等的调试功能可以证明是非常宝贵的。

另请注意,如果您要使用提供的服务描述文件(在启动时启用应用程序),则需要确保软件和配置已移至/ opt / ttn-gateway下的预期位置,否则请修改此作为适当的。

在某些时候,我可能会克隆安装程序存储库并稍微修改脚本以适应我自己的口味。虽然最好是将网关和数据包转发器应用程序通过Debian存储库和apt-get进行正确的打包和安装,并将配置保存在更合适的位置(如/ etc / ttn /),而不是与可执行文件放在一起bin目录。

此时我能够运行一个测试传输的实用程序,并确认SPI和软件的操作。

title

虽然我应该注意到,频谱分析仪有一个连接到它的端口的小天线,并没有直接连接,所以忽略电平测量。 而且,在这一点上,网关从没有提供足够电流的电源运行,所以当集中器被提供足够的功率时,发射突发可能看起来有点不同。

配置

title

所以现在我们有两个软件构成,lora_gateway和packet_forwarder。 但是这些提供了什么?

lora_gateway主要是一个库libloragw.a为构建一个网关提供了基础,该网关通过特定硬件平台的library.cfg文件进行配置,并与运行该软件的计算机进行接口,以及可选的调试等。帮助程序 还提供了使您能够记录收到的数据包并测试SPI并进行传输。

然后,packet_forwarder建立在库(a.k.a.“driver”或“HAL”)之上,以通过IP / UDP链路将通过空中接口接收的分组转发到主机。 除了上行链路操作之外,网关还支持发送由服务器生成的下行链路(到节点)分组,例如, 进行时间同步。 请注意,此时不支持一般的下行数据业务。

在撰写本文时,实际上有四个数据包转发应用程序:

  • 基本。顾名思义!只需通过UDP将收到的数据包转发给主机。

  • 全球定位系统。添加对aGPS接收器的支持,以实现绝对时间同步和网关本地化。

  • 信标。与gps一样,但增加了对发送节点同步信标数据包的支持。

  • 聚。与信标一样,但增加了对多个服务器和其他功能的支持。

poly_pkt_forward应用程序似乎是首选的应用程序,即使您不需要某些更高级的功能,也可以提高稳定性。

数据包转发应用程序由通用的global_conf.json文件配置,该文件提供所需的大部分配置,包括收发器,无线电信道,MAC和网络密钥等。然后通过local_conf.json提供站点配置(如图所示上面),这允许额外的设置和默认值被覆盖。主要有:

  • 网关ID。这是由前缀FFE加上Raspberry Pi上的以太网接口MAC地址构成的。

  • 联系电子邮件和说明。

  • GPS坐标和高度。启用fake_gps作为接收模块在这一点上是不适合的。

  • 服务器地址和端口。那些由The Things Network运营的服务器。

在最后一个配置点上,请注意,您可以同样为自己的服务器配置详细信息。

配置完成后,可以使用以下命令手动启动数据包转发器:

$ ./poly_pkt_fwd

title

一旦满足网关数据包转发器成功启动,Pi就会关闭。.

网站安装

title

其压铸铝外壳中的网关安装在壁式安装的较大的钢制IP防护罩内。这包括可用于频谱监测的未来宽带SDR接收机的大量空间。DIN导轨安装在机柜的底部。

title

目前,我们已经安装了电源分配和一个5V电源,具有足够的备用容量,另外还有更多的PSU空间,以便我们稍后需要其他电压轨。

title

在机箱的顶部,我们有安装在天线之前避雷器,重10mm2 线连接这些到一个专用的接地棒。

title

在内部,我们可以看到两条同轴电缆穿过868MHz和GPS天线。在左边是25-3,0000MHz天线的N型馈通。在左侧有一个备用装置,将来可以通过同轴继电器将该天线连接到另一个进入车间的馈线,以便与其他设备一起使用。

测试

title

安装网关是时候把这个测试。目前我们唯一完整的LoRaWAN节点是 Flood Network新传感器的原型,因此我们决定通过The Things Network API来发现它. 幸好,我们可以!

title

接下来是什么? 那么,我们计划:

  • 与Flood Network合作,以获得更多的在线传感器

  • 映射第一个网关的覆盖范围

  • 与当地的黑客空间Bridge Rectifier合作,在线获得第二个网关

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.

16 Mar 2016, 10:37