2024-09-24 21:22:46 +00:00
|
|
|
# Multi-Tracker(LINX)
|
2024-09-24 21:07:09 +00:00
|
|
|
|
|
|
|
## Description
|
|
|
|
|
|
|
|
|
|
|
|
## BOM(Bill of Materials)
|
|
|
|
|
2024-09-24 21:22:46 +00:00
|
|
|
- [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)
|
|
|
|
|
2024-09-26 23:59:43 +00:00
|
|
|
## 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.
|
|
|
|
|
2024-09-24 21:22:46 +00:00
|
|
|
## Building
|
|
|
|
|
|
|
|
### Main Project
|
|
|
|
|
2024-09-25 18:13:42 +00:00
|
|
|
**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.
|
|
|
|
|
2024-09-26 23:56:56 +00:00
|
|
|
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`.
|
|
|
|
|
2024-09-24 21:22:46 +00:00
|
|
|
|
|
|
|
### 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
|
|
|
|
```
|
|
|
|
|
2024-09-24 21:37:32 +00:00
|
|
|
**Resources:**
|
|
|
|
- [feather-32u4-radio](https://learn.adafruit.com/adafruit-feather-32u4-radio-with-lora-radio-module/)
|
|
|
|
|
2024-09-24 21:22:46 +00:00
|
|
|
|
|
|
|
## 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
|
|
|
|
```
|
2024-09-25 18:13:42 +00:00
|
|
|
## Project Dependencies
|
2024-09-24 21:07:09 +00:00
|
|
|
|
2024-09-25 18:13:42 +00:00
|
|
|
- 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.
|
|
|
|
|
|
|
|
|