Robot Controlado por Gestos con Raspberry Pi
¿Cansado de controles basados en botones? Imagina dirigir un robot con simples gestos de la mano desde el sofá. Este tutorial muestra cómo construir un robot de doble motor que responde a movimientos de la mano usando una Raspberry Pi, un acelerómetro y comunicación RF.
Visión General
Usamos una Raspberry Pi 3 en el transmisor para leer datos del acelerómetro, codificarlos con un módulo HT12E y transmitir la señal mediante un par RF de 434 MHz. En el lado del robot, una batería de 12 V alimenta un decodificador HT12D y un driver de motor L293D, que accionan dos motores DC según los comandos de gesto recibidos.
Componentes
| Componente | Especificación | Cantidad |
|---|---|---|
| Raspberry Pi | Modelo 3 | 1 |
| Tarjeta MicroSD | ≥ 8 GB | 1 |
| Acelerómetro | ADXL345 o MPU6050 | 1 |
| Módulo RF | TX y RX 434 MHz | 1 |
| Fuente de Alimentación | 5 V USB para Pi; batería 12 V para robot | 1 |
| Cables | Hembra‑macho y macho‑hembra | 10 cada uno |
| Codificador | HT12E (módulo preferido) | 1 |
| Decodificador | HT12D (módulo preferido) | 1 |
| Driver de Motor | L293D (módulo preferido) | 1 |
Diagrama de Bloques
Lado Transmisor
El acelerómetro envía datos de movimiento en bruto a la Pi. Python procesa las lecturas, las mapea a comandos de movimiento y envía un código de 4 bits al codificador HT12E vía GPIO. El codificador serializa el código y el transmisor RF lo emite.
Lado Receptor
El receptor RF captura la señal y la pasa al decodificador HT12D. El código de 4 bits decodificado acciona el driver L293D, que controla los motores izquierdo y derecho para lograr avance, retroceso, izquierda, derecha o parada.
Conceptos Básicos del Acelerómetro
Un acelerómetro mide la aceleración en tres ejes. La aceleración estática (gravedad) revela la inclinación; la dinámica detecta movimiento. Modelos digitales como ADXL345 o MPU6050 se comunican vía I²C, proporcionando datos fiables y de bajo ruido. El MPU6050 incluye además giroscopio, útil para detección de movimiento más compleja.
Conexión del Acelerómetro a Raspberry Pi
Usa el bus I²C: conecta pines SDA y SCL de la Pi a los del sensor, y alimenta el sensor con 3,3 V y GND. Habilita I²C en Raspbian: sudo raspi-config → Opciones de Interfaz → I²C. Instala utilidades SMBus:
sudo apt-get install python-smbus i2c-toolsDetecta el dispositivo:
sudo i2c-detect -y 1 – ADXL345 aparece en 0x53; MPU6050 en 0x68 o 0x69.
Clona la librería y ejecuta el ejemplo:
git clone https://github.com/pimoroni/adxl345-python cd adxl345-python sudo python example.pyPara MPU6050, usa
pip install mpu6050-raspberrypi y prueba con: from mpu6050 import mpu6050 sensor = mpu6050(0x69) print(sensor.get_accel_data())
Calibración de Umbrales de Gesto
Coloca el sensor en cada pose deseada (adelante, izquierda, derecha, atrás, parada) y registra los valores brutos X, Y, Z. Calcula la media y define una banda de tolerancia; cuando las lecturas en vivo caen dentro de una banda, se dispara el comando de motor correspondiente. Almacena estos umbrales en tu script Python para toma de decisiones en tiempo real.
Con esta configuración tendrás un robot robusto, inalámbrico y controlado por gestos impulsado por Raspberry Pi.
Recursos Adicionales
Proceso de manufactura
- Perfilado preciso de temperatura en Raspberry Pi con Python, SQLite y LabVIEW
- Sistema de acuaponía controlado por Raspberry Pi: guía de construcción y código
- Construcción de un registrador de datos multicanal con Raspberry Pi – Parte 1: Requisitos y arquitectura
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
- Integración de TI SensorTag con Blynk vía Node‑RED en Raspberry Pi Zero
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construye un robot inteligente con Bridge Shield – Integración Raspberry Pi y Arduino
- Robot DIY inspirado en Wall‑E con Raspberry Pi y caja de CD
- Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
- Construya un robot con streaming de vídeo controlado por Internet con Arduino y Raspberry Pi