multi-tracker/README.md

3.3 KiB

Multi-Tracker(LINX)

Description

BOM(Bill of Materials)

NOTE:

The logic level and voltage supply for the LCD display need to be the same. It's listed as needing to be 3.3v in the documentation.

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.