LoRaPHY project, based upon SX1276Lib, hardware with NUCLEO-F103EB/L053R8 and other boards as well as multiple Radio modules of SX1272/1276/1278. The code contains MACRO definitions and can be configured as TX/RX only, PINGPONG and consider to be a code base of RTTY.
This project has two major goals:
- Setup and verify low cost LoRa RF shields for Arduino compatible boards, Nucleo/Freedom, as well as various mini-core-boards. Share common hardware as possible as we can.
- Design competitive MAC layer based upon LoRa PHY layer radio link (LoRaPHY), with modified ALOHA algorithm for CSMA/CA, RTS/CTS control packets.
The first goal is very important for an extremely budget limited project, including this project, 100% personal self-sponsored and no support at all.
The second goal is to ease the pain of developing without a LoRaWAN gateway at hand. Sometimes SX1278/1272 single band module can be used to build a simple LoRaWAN gateway, or even more generic gateway. Yeap, it is also related to the budget as well as network coverage in your region.
We may derivate extra hardware/firmware/software products beyond above goals.
- Generic USB/UART dongle for LoRa with SX1278/SX1272/SX1276; - Verify Semtech IEEE488 SCPI as genernal equipment for LoRa; - Data Link Layer and IPv6 over LoRaPHY and ALOHA MAC....... - Cloud services.
We delivery LoRa shield for Arduino/Nucleo/Freedom boards based upon mature RF modules. In order to avoid sourcing issues, we selected carefully and added solder jumpers to support multiple modules, therefore the developers can get constant supplies. Up to now, we have verified several SX1278 modules, and we will move on to verified SX1276 and SX1272 to cover EU/US bands.
Since we also develop based upon these boards, we added solder jumper for 3V3 VCC, so you can measure the power consumption of RF module. Additionally, we added some test pins, so you can use a logic analyzer to probe the SPI bus . This interface is very handy, I have removed some firmware bugs with this interface.
In this next version, we added I2C EEPROM. However since we can use internal Flash ROM to emulate EEPROM and some parts even have on-chip NVM, so it is still under evaluation.
Fig1, RFM100L with NPLINK SX1278, can plug into Arduino/Nucleo/Freedom boards
Fig 2, RFM100L with AT SX1278 Ra-01 and NUCLEO-F103RB
Fig 3, Schematics of RFM100L, check out the solder jumpers.
And we will continue to introduce more adapters for pin to pin compatible modules, as well as breakout boards for mini boards. Keep tuned.
MAC & Higher Layers
Since LoRa RFIC is a half duplex design, so we can not use CSMA/CD (Conflict Detect), we can use CSMA/CA(Conflict Avoidance). We will leverage wideband RSSI and CAD preamble detection as Carrier Sensing method. This part will borrow from LoRaWAN codebase.
In order to avoid conflict, we use RTS/CTS with timestamp information before real packet transaction. So other nodes will know how long the channel will be occupied. Then we will define packet structure. And X.25 over LoRa, and then IP based upon X.25.......
More discussion on Stacks.
Most of the LoRa applications follow LoRaWAN specifications. LoRaWAN is suitable for fixed location IoT DAQ system. In some applications like people positioning system, we may need different MAC layer design due to different topology, which is similiar to early age of radio communications, HAM or walkie talkie. Therefore peer to peer and competitive MAC layer is required, instead of hybird MAC like LoRaWAN, which is competitive for uplink and time scheduler for downlink.
Since LoRaWAN is a major fork for device firmware, we will verified the LoRaWAN device stack on our hardware.
In order to make it a MODEM, we will define AT command set to interface via UART/USB CDC. To make it easy to develop LoRa in a regular PC or Raspberry Pi/Android/Router.
We can reuse the same hardware for testing purposes by using Semtech's SCPI project.
The software running on host will be written in Python as well as Java, including CPython/Jython, Java for Android and Processing.
Please refer Bugs for detail information.
There are three products available right now:
- RFM100L, NPLINK/AiThinker SX1278 modules, Arduino Shield - RFM110L, HPD/HopeRF SX1272/1276/1278 modules, Arduino Shield, with 24CL64 FeRAM, uFL/SMA connector. - RFM1100A, clone version of Adafruit LoRa module, with uFL/SMA connector and modified BOM for LDO. - LRD110L, HPD/HopeRF SX1272/1276/1278 modules with STM32F103C8/CB mini board, the lowest cost dongle.
So far our first batch (20170201) of prototypes are only available via taobao.com in China. But we will arrange channels on tindie soon.
Please contact me (allankliu(at)163.com) if you are interested in this project.
Revisions of main.cpp
|0:90252f6ec3d0||2017-02-22||Init code, tested on F103RB, ported to L053R8.||File Diff Annotate|