Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nesktf/lora_gps_tracking

LoRa & NodeMCU GPS tracking system
https://github.com/nesktf/lora_gps_tracking

arduino college-project cpp cpp20 lora nodemcu opengl openstreetmap

Last synced: 12 days ago
JSON representation

LoRa & NodeMCU GPS tracking system

Awesome Lists containing this project

README

        

# GPS tracking using LoRa transceiver
A bunch of project files for a simple GPS tracking system
using the following:

- NodeMCU ESP8266
- Arduino Nano
- GY-NEO6MV2 GPS module
- SX1276 RFM95 LoRa transceivers

# Diagrams
![diag0](img/diag0.png)

![diag1](img/diag1.png)

# Client
You can use the system as a standalone service that provides
you with the data in JSON format by doing a GET request
to the NodeMCU.

Alternatively, you can use the client provided in the repo.

![client](img/client.png)

# Building
You should first clone the repo with submodules

```sh
git clone https://github.com/nesktf/lora_gps_tracking.git --recurse-submodules
```

## NodeMCU & Arduino Nano
Add the NodeMCU board Manager in your IDE, put the
following URL in Preferences>Additional Boards Manager URL
`http://arduino.esp8266.com/stable/package_esp8266com_index.json` and
download the ESP8266 files in the boards manager.

Copy the files in `src/` inside your sketches folder, then
copy everything in `lib/` into your `libraries/` Arduino IDE folder.

Then just open the sketches and compile them as usual.

## Client
The client was meant to be run in Debian 12 Bookworm. You should be
able to build it in other distros by installing the appropiate dependencies.

```sh
sudo apt install cmake cmake-data extra-cmake-modules libglfw3-dev liblua5.3-dev libfmt-dev libglm-dev libfreetype-dev libopenal-dev libassimp-dev libcurlpp-dev
```

Then you can build it and run it doing the following
```sh
cd client/
cmake -B build -DCMAKE_BUILD_TYPE=Release
make -C build -j$(nproc)
./build/osm_client
```

The client expects the `client/res/` folder and a `tile_cache/` folder in
your working directory.

# Acknowledgments
- The code for handling OpenStreetMaps requests was inspired by hugovk's [osmviz](https://github.com/hugovk/osmviz)