ESP32-S3 vehicle telemetry and GPS tracker streaming location and vehicle status over Cat-M/NB-IoT cellular networks. ![Waveshare SIM7080G Cat-M / NB-IoT cellular and GNSS modem module](docs/images/hero.png) **Status: in progress** ### What it does * Tracks real-time GNSS location and reports vehicle coordinates over Cat-M / NB-IoT cellular data * Manages power and deep sleep based on car ignition status to preserve vehicle battery * Processes remote configuration and trigger commands via SMS and HTTP polling * Supports over-the-air (OTA) firmware updates, geofencing, and ESP-NOW local fallbacks ### Bill of Materials | Part | Quantity | Purpose | | :--- | :---: | :--- | | ESP32-S3 Development Board | 1 | Microcontroller running modular C++ telemetry firmware | | Waveshare Pico SIM7080G Module | 1 | Cat-M / NB-IoT cellular modem & GNSS positioning engine | | Hologram SIM Card | 1 | Global IoT cellular data connectivity | | 12V-to-5V Buck Converter | 1 | Steps down car 12V DC power to 5V DC circuit power | | LiPo Battery Charge Controller | 1 | Manages backup LiPo battery during vehicle power loss | ### How it works Firmware isolates hardware control into dedicated C++ modules (`GNSS`, `Modem`, `PowerMgr`). Cellular communication uses AT commands over UART (Serial2, 9600 baud on pins 16/17) with dedicated power control on GPIO 4. Telemetry payloads are packaged into JSON and pushed via HTTP POST to the Laravel backend. ### What broke * SIM7080G cold-boot PDP context attach required exact pulse timing on the PWR pin (GPIO 4) to ensure modem initialization before issuing `AT+CGNSPWR=1` for GNSS power. ### Links * Web Dashboard: [CAR_GPS_REACT](https://gitea.lab.audasmedia.com.au/sam/CAR_GPS_REACT) * Backend API: [Laravel-GPS-API](https://gitea.lab.audasmedia.com.au/sam/Laravel-GPS-API)