Telemetry Control System (TCS) is a system designed to enable real-time communication and control between a car and a laptop using two ESP32 devices connected via LoRa. The project includes embedded firmware for both devices and a Python application for monitoring and control.
- Overview
- Features
- Team / Contributors
- Repository Structure
- Prerequisites
- Building & Flashing Firmware
- Running the Python Application
- Workflow
- CI/CD Pipeline
- Contact
The Telemetry Control System consists of:
- ESP32 on the car (Master) — collects data and sends it over LoRa.
- ESP32 on the laptop (Mini) — receives data from the car and can send commands back.
- Python application — interfaces with the Master ESP32 for monitoring, logging, and control.
This setup allows real-time telemetry, testing, and demonstration of embedded firmware communication over LoRa.
- Real-time bidirectional communication between car and laptop via LoRa
- Firmware for both Master and Mini ESP32 devices
- Python application for monitoring, control, and data visualization
- Modular and extensible design for future enhancements
| Name | Role / Responsibility |
|---|---|
| Shinika | Team lead; TCS Mini firmware development and LoRa integration |
| Jordan | TCS Master firmware development |
| Hannah | Python application development |
| Hemanth | Hardware development support |
Contains the telemetry dashboard and UART communication layer.
-
tcs_app.pyMain GUI dashboard using DearPyGUI. Handles UI layout, threading, live telemetry display, command sending, etc. -
uart_data_read.pySerial interface module. Handles UART reads, packet parsing, and communication with the GUI layer.
Mini = laptop-side ESP32 that receives telemetry via LoRa and can send commands.
Includes:
-
LoRa Modules:
lora_app.c,lora_app.h -
UART Modules:
uart_app.c,uart_app.h -
Networking / Web:
wifi_app.c,wifi_app.h,web_app.c,web_app.h,http_server.c,http_server.h -
Common:
tasks_common.h,main.c,CMakeLists.txt,Kconfig.projbuild,idf_component.yml -
webpage/— Static web assets
Master = car-side ESP32 responsible for collecting sensor data and transmitting telemetry.
-
main.c,main.hFirmware entry point. -
telemetry.c,telemetry.hBuilds telemetry packets from all available sensors. -
lora_handler.c,lora_handler.hHandles LoRa transmission. -
can_lora.c,can_lora.hCAN bus reading and telemetry conversion. -
crash_imu.c,crash_imu.hIMU crash/acceleration detection. -
humidity.c,humidity.hHumidity/environment sensor. -
rgb_ledc_controller.c,rgb_ledc_controller.hLED status indicator logic. -
Build Files:
CMakeLists.txt,component.mk,Kconfig.projbuild
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0pip install -r requirements.txtgit clone https://github.com/spartanracingelectric/Telemetry-Control-System.gitcd TCS-Master
idf.py build
cd TCS-Mini
idf.py buildidf.py -p /dev/ttyUSB0 flashcd Software
python tcs_app.py- Flash both ESP32 devices.
- Power the car-side Master.
- Power the laptop-side Mini.
- Launch the Python dashboard.
- Checks syntax for
tcs_app.pyanduart_data_read.py - Ensures imports load properly
- Fails on any syntax or import error
- Installs ESP-IDF toolchain
- Builds TCS-Master and TCS-Mini
- Fails on any compile or configuration error
Project Lead: Shinika