This is code is part of a Technion course project in advanced IoT, implementing a device to receive and present sensors data from a Formula racing car built by students at Technion - Israel Institute of Technology.

Dependencies:   mbed Buffer

Fork of DISCO-L072CZ-LRWAN1_LoRa_PingPong by ST

This is code is part of a Technion course project in advanced IoT, implementing a device to receive sensors data from another L072CZ-LRWAN1 installed on a Formula racing car (built by students at Technion - Israel Institute of Technology), and sends it to a GUI presenting the data (GUI project: github.com/ward-mattar/TechnionFormulaGUI).

How to install

  • Create an account on Mbed: https://os.mbed.com/account/signup/
  • Import project into Compiler
  • In the Program Workspace select "Formula_Nucleo_Receiver"
  • Select a Platform like so:
  1. Click button at top-left
  2. Add Board
  3. Search "NUCLEO F103RB" and then "Add to your Mbed Compiler"
  • Finally click "Compile", if the build was successful, the binary would download automatically
  • To install it on device simply plug it in to a PC, open device drive and drag then drop binary file in it
Committer:
wardm
Date:
Sat May 19 15:42:38 2018 +0000
Revision:
12:046346a16ff4
V1.0.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wardm 12:046346a16ff4 1
wardm 12:046346a16ff4 2 Move finished tasks to Done section:
wardm 12:046346a16ff4 3
wardm 12:046346a16ff4 4 TODOs:
wardm 12:046346a16ff4 5 - add support for Linux - add sx1276-Linux-hal.h/cpp
wardm 12:046346a16ff4 6 - Add support to provide the send/receive packet buffer,
wardm 12:046346a16ff4 7 no need to allocate packet data in the sx1276 driver. Can be provided
wardm 12:046346a16ff4 8 Rx/Tx parameters, this avoids double memory usage
wardm 12:046346a16ff4 9 - Add support for larger Lora packets (can be up to 2048 bytes)
wardm 12:046346a16ff4 10 this feature is not so important, however the current implementation
wardm 12:046346a16ff4 11 is very basic.
wardm 12:046346a16ff4 12 - It is a little bit strange that RX/TX/Cad Timeout Timer calling the
wardm 12:046346a16ff4 13 some handler OnTimeoutIrq. Maybe we just need a single timer, or
wardm 12:046346a16ff4 14 it is a good idea to split the OnTimeoutIrq function into separate
wardm 12:046346a16ff4 15 callbacks for RX/TX/Cad timeouts
wardm 12:046346a16ff4 16 - Test if the SX1276 timeouts. Does rx/tx/sync really uses three different
wardm 12:046346a16ff4 17 timers or just one at a time.
wardm 12:046346a16ff4 18 - Add API to set the LNA gain
wardm 12:046346a16ff4 19
wardm 12:046346a16ff4 20
wardm 12:046346a16ff4 21
wardm 12:046346a16ff4 22 Done:
wardm 12:046346a16ff4 23 - Started a Generic SX1276 driver to support all SX1276 modules (May-2017 Helmut)
wardm 12:046346a16ff4 24 - Migrated typedefs code into sx1276.h (7-May-2017 Helmut)
wardm 12:046346a16ff4 25 - Migrated enum code into sx1276.h/radio.h (7-May-2017 Helmut)
wardm 12:046346a16ff4 26 - Verify the Murata ANT Switch code
wardm 12:046346a16ff4 27 - MURATA PA_BOOST case,is _antSwitchTXBoost right? (Same as STM sample code)
wardm 12:046346a16ff4 28 - Check of the MURATA TCXO config is correct (implemented, check JP9 on STM L0 board)
wardm 12:046346a16ff4 29 - Make the timers more generic and move the OS code into the HAL layer. (May 2017 Helmut)
wardm 12:046346a16ff4 30 - Removed pull down on dio=-dio5 for L151 &LPC11U6X which make no sense to me. May 2017 Helmut
wardm 12:046346a16ff4 31 - Added radio API support to receive the MaxMTUSize (May 2017 Helmut)
wardm 12:046346a16ff4 32 - Added Send optional Send() parameter to include a header,
wardm 12:046346a16ff4 33 this saves additional buffers. (May 2017 Helmut)
wardm 12:046346a16ff4 34 - Added proper void * type from sending data, uint8_t * is not appropriate (May 2017 Helmut)
wardm 12:046346a16ff4 35 - Use also void pointer for FiFo Write/Read and regular SPI Read/Write
wardm 12:046346a16ff4 36 - Added return value to Init, we check for a radio availability (May 2017 Helmut)
wardm 12:046346a16ff4 37 - Added a RxSignalPending which verifies if we have a signal pending in receive state. (May 2017 Helmut)
wardm 12:046346a16ff4 38 - Added LoRa bandwidth mapping table, now the SetRx/Tx frequency is in Hz. (May 2017 Helmut)
wardm 12:046346a16ff4 39 - Enabled MURATA_SX1276 for the MURATA_SX1276 chip (May 2017 Helmut)
wardm 12:046346a16ff4 40 - Made SetRfTxPower public to allow easily power TX changes (May 2017 Helmut)
wardm 12:046346a16ff4 41 - Added userData and userThisPtr into the radio events, this allows to call C++
wardm 12:046346a16ff4 42 functions and in can include a context via the userData
wardm 12:046346a16ff4 43 - Add support for Cad detection before sending a packet, already done in higher
wardm 12:046346a16ff4 44 level protocols
wardm 12:046346a16ff4 45 - Added initial Arduino support, needs more testing/completion.
wardm 12:046346a16ff4 46 - Support for Arduino completed, initial version works.
wardm 12:046346a16ff4 47 - Added GetFrequency support
wardm 12:046346a16ff4 48 The Murata’s Frequency shift using an TCXO us about 58 Hz
wardm 12:046346a16ff4 49 The RFM95 against Murata is about 3300 Hz
wardm 12:046346a16ff4 50 RFM95 against RFM95 testing will follow.