Álvaro González - Full Stack Developer & Maker

Portafolio de desarrollador Full-Stack chileno especializado en hardware libre, automatización y desarrollo creativo. Proyectos en Python, JavaScript, Lua y hardware embebido.

View on GitHub

🛠️ T100 Controller

← Volver al portafolio

📋 Descripción del Proyecto

Sistema de control remoto avanzado para tanque RC T100 que integra ESP32-S3, tecnología ExpressLRS y control de cámaras servo. El proyecto proporciona control completo de motores duales, servos de cámara y telemetría en tiempo real a través de WebSockets.

✨ Características Principales

🎮 Control Remoto Avanzado

📡 Comunicación y Telemetría

🔧 Hardware Integration

🛠️ Stack Tecnológico

# Arquitectura del sistema
HARDWARE_STACK = {
    "microcontroller": "ESP32-S3",
    "motors": "Dual H-Bridge Driver",
    "servos": "Digital Servo Motors",
    "communication": "ExpressLRS + WiFi",
    "camera": "ESP32-CAM Module",
    "power": "LiPo Battery Management"
}

SOFTWARE_STACK = {
    "backend": "Python WebSocket Server",
    "embedded": "C++ Arduino Framework", 
    "frontend": "HTML5 + JavaScript",
    "protocols": ["WebSocket", "PWM", "SPI", "I2C"],
    "libraries": ["AsyncWebSocket", "Servo", "WiFi"]
}

🎯 Arquitectura del Sistema

1. Control de Motores

# Ejemplo de control diferencial
class TankController:
    def __init__(self):
        self.left_motor = PWMController(pin_left)
        self.right_motor = PWMController(pin_right)
    
    def move_forward(self, speed):
        self.left_motor.set_speed(speed)
        self.right_motor.set_speed(speed)
    
    def turn_left(self, speed, turn_rate):
        self.left_motor.set_speed(speed - turn_rate)
        self.right_motor.set_speed(speed + turn_rate)

2. Sistema de Cámaras

// Control de servos para cámara
class CameraController {
    private:
        Servo panServo;
        Servo tiltServo;
        
    public:
        void setPanAngle(int angle) {
            panServo.write(constrain(angle, 0, 180));
        }
        
        void setTiltAngle(int angle) {
            tiltServo.write(constrain(angle, 0, 180));
        }
};

3. WebSocket Communication

// Cliente WebSocket para control
class T100Client {
    constructor(url) {
        this.ws = new WebSocket(url);
        this.setupEventHandlers();
    }
    
    sendCommand(command, data) {
        this.ws.send(JSON.stringify({
            type: command,
            data: data,
            timestamp: Date.now()
        }));
    }
}

📊 Diagrama de Sistema

graph TD
    A[ESP32-S3 Controller] --> B[Motor Driver]
    A --> C[Servo Controller]
    A --> D[WiFi Module]
    A --> E[ExpressLRS Receiver]
    
    B --> F[Left Motor]
    B --> G[Right Motor]
    
    C --> H[Pan Servo]
    C --> I[Tilt Servo]
    
    D --> J[WebSocket Server]
    J --> K[Web Interface]
    
    E --> L[Remote Controller]
    
    M[Camera Module] --> N[Video Stream]
    N --> K

🎮 Interface de Control

Web Dashboard

Physical Controller

🔋 Gestión de Energía

Sistema de Batería

class PowerManager:
    def __init__(self):
        self.voltage_pin = ADC_PIN
        self.low_voltage_threshold = 3.3  # Por celda
        
    def get_battery_voltage(self):
        raw = analogRead(self.voltage_pin)
        return (raw * 3.3 * voltage_divider) / 4095
        
    def check_low_voltage(self):
        if self.get_battery_voltage() < self.low_voltage_threshold:
            self.trigger_low_voltage_alarm()

Optimización de Consumo

📡 Protocolos de Comunicación

ExpressLRS Integration

WiFi WebSocket

🛡️ Sistemas de Seguridad

Failsafe Mechanisms

class FailsafeSystem {
    private:
        unsigned long lastCommandTime;
        const unsigned long TIMEOUT_MS = 1000;
        
    public:
        void checkTimeout() {
            if (millis() - lastCommandTime > TIMEOUT_MS) {
                stopAllMotors();
                centerAllServos();
                triggerFailsafeMode();
            }
        }
};

Protecciones Implementadas

🎯 Casos de Uso

Exploración y Reconocimiento

Entretenimiento y Hobby

Desarrollo y Testing

🔧 Setup e Instalación

Hardware Assembly

# Lista de componentes necesarios
ESP32-S3 DevKit
Dual Motor Driver (L298N)
2x Servo Motors (SG90 o similar)
Tank Chassis T100
ExpressLRS Receiver
ESP32-CAM Module
LiPo Battery (2S/3S)

Software Installation

# Clonar repositorio
git clone https://github.com/4rgs/T100_Controler.git
cd T100_Controler

# Configurar entorno Arduino
pip install platformio
pio run --target upload

# Servidor Python
pip install -r requirements.txt
python server.py

📈 Roadmap y Mejoras

🔗 Enlaces

🏷️ Tags

#ESP32 #Python #RC #WebSocket #ExpressLRS #Servo #Motors #IoT #Embedded #Robotics


← Volver al portafolio 🔗 Ver en GitHub