LoRaMaDoR is a communication system based on LoRa digital radio. The name is a wordplay with "LoRa" and "radioamador" (ham radio in Portuguese). The most obvious use case is live chat, but there's potential for many other uses.
This project is inspired by LoRaHam. The major enhancement is a packet format which is more powerful and more extensible, allowing for true network formation.
LoRaMaDoR is a priori targeted for amateur radio operators. The callsign is the network address. But anyone can try it, actually. And they can even do it legally, since LoRa operates on unlicensed ISM bands.
In this video, LoRaMaDoR is running in 3 or 4 Arduinos, and we are interacting with one of them via USB serial port. We send "human" messages, and also ping a remote station to get an automatic response.
The idea of the command-line interface is to make the operation as simple as possible. To send a typical message, just type "callsign message"; the controller fills in the red tape to produce the final, valid packet.
LoRaMaDoR works without anything connected to the serial port. It responds
to PINGs and can forward packets. It can be extended to be an autonomous
weather sensor, location beacon, etc.
# Building the project
This project needs some Arduino libraries that are straightforward
to obtain (LoRa, OLED display, etc.). FWIW they are included in
a ZIP file (tooling/loralibs.zip).
We also depend on LoRaL2 project (https://github.com/elvis-epx/LoRaL2).
This library is included via symlinks, and it is expected that LoRaL2
project folder exists at the same level as LoRaMaDoR.
# Console and command-line interface (CLI)
Use the terminal software of your choice (screen, minicom, etc.)
to connect to Arduino serial port. Set the speed to 115200bps
and disable RTS/CTS handshaking if necessary.
Alternatively, you can operate the console wirelessly using any
Telnet client e.g. PuTTY. Just fill in your Wi-Fi configuration
(details further down this document).
Users can play with the protocol with (seemingly) bare hands.
The implementation fills in the red tape to generate a valid packet.
For example, a user types:
```
QC Chat tonight 22:00 at repeater 147.000
```
"QC" is the pseudo-destination for broadcast messages. The
actual transmitted packet (minus the FEC suffix) is something like
```
QC