CanSat Kenya Mission Control Dashboard - Real-time telemetry monitoring system with Arduino IDE compatible ESP32 code, MQTT backend, and React dashboard
# CanSat Project
A complete CanSat (Can Satellite) project featuring an ESP32-based satellite with environmental sensors and a ground-based base station for data collection and monitoring.
## Project Overview
This CanSat project includes:
- **ESP32-based CanSat** with BMP280 (pressure/temperature) and DHT22 (temperature/humidity) sensors
- **MQTT communication** for wireless data transmission
- **Base station** for data collection, logging, and monitoring
- **Real-time telemetry** with sensor data and system status
## Hardware Components
### CanSat Hardware
- ESP32 Development Board
- BMP280 Pressure/Temperature Sensor
- DHT22 Temperature/Humidity Sensor
- Power supply (battery pack)
- Optional: GPS module, accelerometer, camera
### Wiring Diagram
```
ESP32 Connections:
├── BMP280
│ ├── VCC → 3.3V
│ ├── GND → GND
│ ├── SDA → GPIO 21
│ └── SCL → GPIO 22
└── DHT22
├── VCC → 3.3V
├── GND → GND
└── DATA → GPIO 4
```
## Software Architecture
### CanSat Firmware (ESP32)
- **Platform**: PlatformIO with Arduino framework
- **Communication**: WiFi + MQTT
- **Sensors**: BMP280, DHT22
- **Data Format**: JSON telemetry packets
- **Features**:
- Automatic WiFi reconnection
- MQTT broker connection with auto-reconnect
- Configurable telemetry interval
- Remote command support
- Error handling and sensor validation
### Base Station
- **Platform**: Python 3.x
- **Communication**: MQTT subscriber
- **Features**:
- Real-time data logging
- JSON data storage
- Web dashboard (planned)
- Data visualization (planned)
- Alert system (planned)
## Quick Start
### 1. CanSat Setup
1. **Install PlatformIO** in VS Code or use PlatformIO CLI
2. **Configure WiFi and MQTT settings** in `src/main.cpp`:
```cpp
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* mqtt_server = "YOUR_MQTT_BROKER_IP";
```
3. **Connect sensors** according to the wiring diagram
4. **Upload firmware**:
```bash
pio run --target upload
```
5. **Monitor serial out …