9f8982f60c | ||
---|---|---|
.template_files | ||
build | ||
docs | ||
inc | ||
mocks | ||
src | ||
tests | ||
.clang-format | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
Doxyfile | ||
README.md | ||
compile_commands.json | ||
multi-tracker.ino | ||
otto.sh | ||
setup.sh |
README.md
Multi-Tracker(LINX)
Description
BOM(Bill of Materials)
- adafruit feather 32U4 RFM95
- ST7789V2 1.69" LCD Display
- 24 x WS2812 RGB Ring
- BN-220 GPS
- LSM303AGR Accelerometer + Compass
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
- Install the Arduino IDE if not installed.
- Using the library manager in the IDE install the dependencies.
- Connect the micro-controller
- Select your development boards version and connection under the drop-down.
- 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.
- Set TX power to minimum.
- Try to send data:
- Upon failure increase power.
- 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.