Written for Bailey Fait. An embedded system that makes use of LoRa and compass modules to direct the modules towards eachother.
Go to file
jakeg00dwin 544a29f705 Added code tested with radio modules. 2024-09-27 16:21:55 -07:00
.template_files Initial commit 2024-09-24 20:59:20 +00:00
build Initial commit 2024-09-24 20:59:20 +00:00
docs Initial commit 2024-09-24 20:59:20 +00:00
inc Added some common micro-controller sections. Also added a define for number of retries for functions. 2024-09-27 16:21:36 -07:00
mocks Initial commit 2024-09-24 20:59:20 +00:00
src Added code tested with radio modules. 2024-09-27 16:21:55 -07:00
tests Added empty test for the Radio module. 2024-09-26 16:22:25 -07:00
.clang-format Initial commit 2024-09-24 20:59:20 +00:00
.gitignore Initial commit 2024-09-24 20:59:20 +00:00
.gitmodules Initial commit 2024-09-24 20:59:20 +00:00
CMakeLists.txt Initial commit 2024-09-24 20:59:20 +00:00
Doxyfile Updated Doxygen config file to also read *.ino files. Changed name to be project/repo name. 2024-09-24 14:06:59 -07:00
README.md Updated with radio schemes. 2024-09-26 17:16:47 -07:00
compile_commands.json Initial commit 2024-09-24 20:59:20 +00:00
multi-tracker.ino Changed project to make use of symlinks for the INO file. 2024-09-26 16:37:36 -07:00
otto.sh Initial commit 2024-09-24 20:59:20 +00:00
setup.sh Initial commit 2024-09-24 20:59:20 +00:00

README.md

Multi-Tracker(LINX)

Description

BOM(Bill of Materials)

Configuration

The project can be configured to use a variety of hardware or differnt development boards based on the selected hardware.

You can add or change this inside the inc/board_config.h file.

Building

Main Project

Using Arduino IDE

  1. Install the Arduino IDE if not installed.
  2. Using the library manager in the IDE install the dependencies.
  3. Connect the micro-controller
  4. Select your development boards version and connection under the drop-down.
  5. Click the Upload button to flash the program.

If you're developing on a Windows machine or another operating system that doesn't recognize symlinks(symbolic links) then you will need to copy the src/main.cpp to the project's root directory as multi-tracker.ino.

Tests

Requirements:

  • CppUTest 3.X
  • Bash shell
echo "1" | ./otto.sh

The above command runs the automation script otto.sh that automates the process of running tests for the project.

Documentation

Requirements:

  • Doxygen
  • Terminal/Shell

The project's documentation is generated through documentation comments that are held within the source files. You can use the command below to generate the documentation from terminal.

doxygen ./Doxyfile

Resources:

Project Directory Overview

Below you can find a list of the root directory. The project contains the source files for arduino as well as the needed files for unit testing in the future.

tree -L 1
.
├── build
├── CMakeLists.txt
├── compile_commands.json -> ./build/compile_commands.json
├── docs
├── Doxyfile
├── inc
├── LINX_SOFTWARE-COMMENTED.ino
├── mocks
├── otto.sh
├── README.md
├── setup.sh
├── src
└── tests

6 directories, 7 files

Project Dependencies

  • RadioHead RFM9x Library
  • TinyGPS++

Radio(LoRa) Scheme

Variable TX Power

The radios are setup to try and minimize their signiture as much as possible.

This is done by setting the transmitters to their minimum needed power. This is determined expirmentally and auto adjusted on the fly, using the following algorithm.

  1. Set TX power to minimum.
  2. Try to send data:
    1. Upon failure increase power.
    2. Repeat until maxpower or failure.

The goal of this setup is both to reduce bandwith usage but also to save on the battery power when possible.

Data Integrity

The messages and data sent over the radio module's makes use of the CRC checksum availbility. Invalid messages are rejected.