ESP8266 LoRa网关第三步:物理层驱动
2017-11-27 本文已影响47人
小鱼儿他老汉
继 ESP8266 LoRa网关第一步:SPI 和 ESP8266 LoRa网关第二步:寄存器读写之后,我们需要将SX127X的物理层驱动集成到工程中。
驱动代码
先说结果,虽然将某些国内作者提供的LoRa驱动源码集成后,程序没有跑飞。但是根据SPI总线跟踪的波形进行分析,其总线驱动工作不正常。所以,我不得不重新调试。所以,还需要做些基础的工作。
更新
将SPI总线CLK从10MHz调低到2MHz,同时将逻辑分析仪的采样频率调高,发现驱动源码的SPI总线波形是正确的。所以,进过适当修正后,可以利用。
应用代码
选择ESP8266/LoRa代码基础
国内的产品或许因为便宜,所以买的人真不少。但是固件就差强人意了。之前,我着重调研基于ARM的相关代码基础。我基本上会以STM32/Keil MDK5/C代码为基础,或者以ARM mbed C++为基础。
ESP8266不是ARM内核,所以采用Arduino/eLua/MicroPython比较合理。由于ESP8266联网特性,所以用来做单通道网关更加合理,而不是作为设备终端。
找到两个开源作者:
- Matthijs Kooijman,著作有Building Wireless Sensor Network with Arduino。开源作品:arduino-lmic/arduino-dsmr/arduino-max
- Thomas Telkamp,开源作品:single_chan_pkt-fwd/arduino-lmic/packet_forwarder/sx127x_tx_rx/
两位作者围绕着IBM LMIC(LoRaMAC In C)做了一大堆移植,同时对接TTN(The Things Networks)。TTN是LoRa联盟成员,可以对接大量的报文转发器网关。
所以,在SPI驱动,SX127X寄存器访问完成的基础上,配合Matthijs/Thomas的LMIC设计,可以完成简单的单通道设计。但是还需要更多时间。