The application shows a GPS polyline on an external display, to help bikers follow the planned route without stops.
images | images | images |
---|---|---|
The application on the phone runs in background, tracks user location, filters the part or route located nearby, converts it to graphical lines and sends to ESP32 using Bluetooth Low Energy:
- The phone acts as BLE Central
- ESP32 acts as BLE Peripheral
Application uses Apple MapKit with OpenStreetMap tiles (only iOS is supported so far).
Note: there is also a prototype for UMIDIGI Uwatch3, but it requires disassembling and reprogramming, and it's difficult.
Route editing is manual and very basic:
- Every GPS point is added manually
- For now, only one GPS polyline is supported
- Points can be added/removed only one-by-one at the end of the polyline
- Route calculation not supported (and not planned)
- Route import/export is planned in future
ESP32:
- doesn't receive real GPS coordinates
- only draws graphical primitives (lines, triangles, etc.)
- ESP32 TTGO T-Display with embedded display 135x240 TFT, enabled by-default - download library
- Regular ESP32 with external OLED display 128x128 - how to enable
- Adafruit-GFX-Library by Adafruit
- Button2 by Lennart Hennigs
- Adafruit-SSD1351-library (only for SSD1351 display)
- TFT_eSPI adjusted by TTGO (only for TTGO T-Display)
To use TTGO T-Display:
- Download library TFT_eSPI adjusted by TTGO, copy TFT_eSPI folder to Arduino/libraries
Display: Waveshare 14747 128x128 OLED RGB (link)
To enable this setup, comment out TTGO display and uncomment SSD1351 in ESP32-Arduino/BLEBikeNavi/BLEBikeNavi.ino
// uncomment these lines
#include "OLED_SSD1351_Adafruit.h"
OLED_SSD1351_Adafruit selectedDisplay;
constexpr bool ENABLE_VOLTAGE_MEASUREMENT = false;
// comment out these lines
//#include "TFT_TTGO.h"
//TFT_TTGO selectedDisplay;
//constexpr bool ENABLE_VOLTAGE_MEASUREMENT = true;
Connected this way:
ESP32 | Display WS14747 |
---|---|
G23 | DIN |
G18 | CLK |
G5 | CS |
G17 | DC |
G16 | RST |