Finished the TRS comparison report

This commit is contained in:
Monkin 2022-09-04 22:31:10 +01:00
parent 95ae4b3177
commit 5f77a9a91b
3 changed files with 34 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -17,7 +17,7 @@ This tracking system objective is to find a model rocket via GPS and display its
![Rocket Tracker's components diagram](assets-sitrep2/componentsDiagram1.png)
Please note that the arrows in the diagram represent a dependency association.
Since this report's main focus is on the receiver system, I will not give many details about the transmitter. Anyhow, it is important to know that the radio system is an XBee radio in both the sender and receiver. Furthermore, the transmission packets are 9-byte packets made up of a status byte, then 4 bytes for latitude, and 4 bytes for longitude. Thus, it's important to note that this tracking system does not send as much data as we seek.
Since this report's main focus is on the receiver system, I will not give many details about the transmitter. Anyhow, it is important to know that the radio system is an **XBee radio** in both the sender and receiver. Furthermore, the transmission packets are 9-byte packets made up of a status byte, then 4 bytes for latitude, and 4 bytes for longitude. Thus, it's important to note that this tracking system does not send as much data as we seek.
Regarding the Tech Stack, the GPS transmitter is in C++ (Arduino), the Ground Station is a nodeJS app, and the client app is in JavaScript. All the communication with the XBee radio is made through serialport and, for that, the libraries serialport and xbee-api were used by the ground station to help set up the radio's config and receive data.
@ -42,6 +42,9 @@ On the ground, the LoRa transceiver receives those byte arrays, unpacks them to
A 3rd thread acts as a webserver to serve the dashboard web app, and a final thread listens for WebSocket connections to stream the contents of the data buffer as data becomes available.
### Data Transmission
The transmitted data is a simple binary sequence of doubles in the following order: unix timestamp, barometric pressure, temperature, acceleration X, acceleration Y, acceleration Z, magnetic direction X, Y and Z, latitude, longitude, GPS signal quality, number of GPS sats.
### Tech Stack
- Transmitter - Python
- Ground Station - Go (handle telemetry data), Javascript(frontend) & Arduino(Configure the LoRa transceiver)
@ -54,10 +57,39 @@ For the arduino, the [RH_RF95.h](https://www.airspayce.com/mikem/arduino/RadioHe
---
## 3 - Vehicle Tracking System
TODO
This project is not a *Rocket TRS*. Nonetheless, it consists of a secure Vehicle Tracking System that uses **XBee's wireless technology**, like the first project, and displays the results on *Google Earth*, making it very similar software-wise. This one, however, lacks the source code, so it's not as thorough. As usual, below is an image representing the interactions between the components of this system:
![Vehicle Tracking System components' interactions](assets-sitrep2/componentsInteractions3.png)
As you can see, the vehicle contains an Arduino UNO that communicates with a GPS device and sends the received data to the Zigbee Transmitter. On the other hand, the ground station has an **Xbee module** connected to the PC through USB. Thus, when this module receives data, it will be sent to the computer and parsed, showing it on Google Earth in real time.
### Tech Stack
- Transmitter - Arduino
- Receiver - Arduino
### Software Flow
The operation of the entire system is best described by the following Flowchart:
![Vehicle Tracking System Flowchart](assets-sitrep2/softwareFlow3.png)
### Relevant Tools / Libraries
- [*XCTU* Program](https://www.digi.com/products/embedded-systems/digi-xbee/digi-xbee-tools/xctu) - Used to monitor the communication between *XBees* and list the data received from the transmitter.
- *wiring* library - Arduino library which makes IO operations much easier.
- [TinyGPS](https://www.arduino.cc/reference/en/libraries/tinygps/) - GPS NMEA parsing library
- [Xbee library](https://www.arduino.cc/reference/en/libraries/xbee-arduino-library/) - Library for talking to various wireless XBee modules from Digi.
---
## Conclusion
After analyzing various examples of Total Recovery Systems, the 3 displayed in this report were the ones I found to be more useful to learn from. Especially the first 2, since they go into more detail and include the source code.
The integration of GPS with XBee/LoRa is a valid solution for a continuous and real-time tracking system, replacing the traditional *GSM* and *GPRS* protocols, which had a higher transmission cost and complexity.
There are still decisions to be made regarding the software solution we are building and one of the main purposes of this report was to raise and help answer them. As an example, in the *Rocket Tracker* project, the ground station stores the received telemetry data in a database, making it available to multiple devices, such as smartphones. As in the other 2, the ground station uses the data directly to display information.
There are also many useful tools and libraries mentioned in this report that could be effective in our software, such as the *XCTU* program. Furthermore, I've included ground station implementations with an event-driven architecture (*Rocket Tracker*) and thread-based (*White Vest*) as they are both valid options to be considered. Certainly, event-based concurrency is also an option to have the best of both worlds.
Finally, regarding the *Tech Stack*, there are various options for both the Transmitter and Receiver. For the ground station, this report includes solutions using *Node.js*, *Go* along with *Arduino* for the configuration of the XBee module and *Arduino*. However, there are certainly more possibilities to take into account, such as Java or C++, but to make the right decision, I believe we need more information, such as how optimized our program must be and how the telemetry data will be displayed.
## References
\[1\] [Rocket Tracker Project](https://github.com/lectroidmarc/rocket-tracker)