multi-tracker/README.md

130 lines
3.3 KiB
Markdown
Raw Normal View History

# Multi-Tracker(LINX)
## Description
## BOM(Bill of Materials)
- [adafruit feather 32U4 RFM95](https://www.adafruit.com/product/3079)
- [ ST7789V2 1.69" LCD Display](https://www.waveshare.com/1.69inch-lcd-module.htm)
- [24 x WS2812 RGB Ring](https://www.amazon.ca/gp/product/B0774JNSCF/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)
- [BN-220 GPS ](https://www.amazon.com/Navigation-Raspberry-Betaflight-Geekstory-Shipping/dp/B07PRDY6DS?th=1)
- [LSM303AGR Accelerometer + Compass](https://learn.adafruit.com/lsm303-accelerometer-slash-compass-breakout/overview)
**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
```sh
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.
```sh
doxygen ./Doxyfile
```
**Resources:**
- [feather-32u4-radio](https://learn.adafruit.com/adafruit-feather-32u4-radio-with-lora-radio-module/)
## 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.
```sh
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++
2024-09-27 00:16:47 +00:00
## 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.