Cuando conviertes un auto de radio control comercial en uno totalmente autónomo con Donkeycar, tarde o temprano aparece la misma pregunta: por qué no puedo seguir usando el control remoto que vino con el auto, en vez de un joystick Bluetooth de consola. Durante mucho tiempo la respuesta fue incómoda. Ahora hay una mucho mejor, y se llama RC Hat.
En este tutorial vas a entender por qué la Raspberry Pi sola no puede leer las señales de tu radio control, cómo el RC Hat resuelve ese problema de raíz, y cómo dejarlo funcionando paso a paso editando tu archivo de configuración. Al final vas a poder manejar tu robocar con la emisora de siempre, que tiene mucho más alcance que un joypad, ideal para correr al aire libre o entre varios autos.

Por qué la Raspberry Pi no lee tu radio control directamente
El problema no es de software, es eléctrico y de temporización. La señal de un receptor RC es un pulso PWM con timing muy estricto, y además, según estés en modo manual o autónomo, esa señal tiene que pasar por la Raspberry Pi y ser procesada o reenviada por el código Python. La Pi no tiene una forma limpia de meterse en ese proceso: aunque enchufaras los cables del receptor a sus pines, no puede manejar bien ni esas señales de entrada ni las de salida que necesitan el servo y el controlador de motor.
Por eso el consejo clásico era drástico: dejar de lado la emisora y el receptor RC, y usar en su lugar un joypad de consola junto con una placa controladora de servos por I2C. Funciona, pero pierdes el alcance del equipo RC y sumas un control extra que hay que cargar y emparejar.
Qué hace distinto al RC Hat
El RC Hat se enchufa encima de la Raspberry Pi y te permite usar tu emisora y tu receptor RC tal cual, sin joypad y sin placa de servos aparte. No solo te ahorras plata: el equipo RC tiene mucho más rango, lo que se agradece en pistas exteriores o cuando hay varios autos compitiendo cerca.
La placa es un circuito que lleva montado un RP2040-Zero, una pantalla OLED y los pines para conectar tu receptor RC, tus servos, encoders de rueda, otros dispositivos I2C y cualquier cosa que necesite alimentación de 5V. La clave está en el reparto de tareas: el RP2040 se encarga de toda la lectura de bajo nivel de la entrada RC y de la salida hacia los servos, y se comunica con la Raspberry Pi por puerto serial por hardware. Así la Pi queda libre para lo que importa, que es correr la red neuronal de Donkeycar, mientras el microcontrolador hace el trabajo sucio de timing en tiempo real.

El firmware en CircuitPython del RP2040 ya viene cargado de fábrica, así que no deberías tener que tocarlo. Si tienes curiosidad o quieres modificarlo, el código está publicado en el repositorio del proyecto (link al final).
Conexiones físicas
Las conexiones son directas si respetas la orientación. Usa cables RC de 3 hilos hembra a hembra para llevar las salidas de tu receptor RC a los headers de entrada de la placa:
- Receptor canal 1 al header In 1
- Receptor canal 2 al header In 2
- Receptor canal 3 (si tienes un tercer canal) al header In 3
- Servo de dirección al header Steer
- Controlador de motor / ESC al header Throt
Una sola regla, pero importante: cuida bien la orientación de cada conector. El cable negro (tierra, GND) va siempre por el lado de afuera, junto al borde de la placa. Si lo conectas al revés arriesgas el receptor o los servos, así que vale la pena revisar dos veces antes de energizar.

Como tu equipo RC normalmente tiene solo 2 o 3 canales, el resto de los comandos y los cambios de modo (por ejemplo pasar de manual a autónomo) los vas a hacer desde la interfaz web por WiFi, no con botones dedicados como en un joypad.
Configurar Donkeycar para el RC Hat
Toda la magia del lado software pasa por tu archivo myconfig.py, dentro de la carpeta mycar. Vas a editar tres bloques: la pantalla, la salida de motor y la entrada de control.
Primero, para encender la pantalla OLED, descomenta y deja estas líneas así en la sección correspondiente del archivo:
USE_SSD1306_128_32 = True
SSD1306_RESOLUTION = 2
Luego, para habilitar el RC Hat como salida, en la sección "Drive train" descomenta y edita esta línea:
DRIVE_TRAIN_TYPE = "MM1"
Para habilitar el RC Hat como entrada, en la sección "Joystick" descomenta y edita lo siguiente:
USE_JOYSTICK_AS_DEFAULT = True
CONTROLLER_TYPE = 'MM1'
Y finalmente, en la sección "Robohat MM1 controller", descomenta y edita el puerto serial:
MM1_SERIAL_PORT = '/dev/ttyAMA0'
La pantalla se va a encender y mostrará el estado de Donkey cuando arranques con el comando habitual:
python manage.py drive
Cuando Donkey no está corriendo la pantalla queda apagada, aunque sigue disponible por si quieres usarla con otro programa, ya que es una OLED I2C estándar y la puedes manejar con la librería de Python correspondiente.
Habilitar el puerto serial por hardware
El último paso es activar el serial por hardware en la Pi. Lo haces con la utilidad de configuración:
sudo raspi-config
Entra a Interface Options / Serial Port, el mismo lugar donde activaste la interfaz I2C cuando instalaste Donkey. Cuando te pregunte si quieres una consola de login accesible por serial, responde que No; cuando te pregunte si quieres habilitar el hardware del puerto serial, responde que Sí.


Si estás usando una Raspberry Pi 5, con eso ya está todo listo.
Si en cambio usas una Raspberry Pi 3 o 4 (o la Pi Zero 2), que curiosamente comparten el serial por hardware con la interfaz Bluetooth, te falta un paso más. Tienes dos caminos.
El primero, más simple: usar ttyS0 como puerto serial en el ajuste MM1_SERIAL_PORT de tu myconfig.py (en lugar de ttyAMA0). Esto suele funcionar bien, aunque el baud rate puede variar un poco con la velocidad de reloj. En la práctica no ha dado problemas, pero si quieres ir más seguro, está el segundo camino.
El segundo, más robusto: desactivar el Bluetooth y dejar el serial por hardware en ttyAMA0 como corresponde. Agrega esta línea al final de config.txt. Para editarlo:
sudo nano /boot/firmware/config.txt
Agrega al final:
dtoverlay=disable-bt
Guarda y sal del editor Nano con Ctrl-O y Ctrl-X. Después ejecuta en la línea de comandos:
sudo systemctl disable hciuart
Reinicia cuando termines y todo debería quedar funcionando. Ese dtoverlay=disable-bt le dice al kernel que libere la UART completa (la PL011) que normalmente queda reservada para el Bluetooth, y systemctl disable hciuart evita que el servicio que inicializa el módulo BT vuelva a tomar el puerto en el siguiente arranque. Por eso solo aplica a las Pi 3, 4 y Zero 2: la Pi 5 ya expone una UART dedicada para el header GPIO y no necesita este truco.
Variantes y mejoras
Una vez que tengas el RC Hat andando, hay varias formas de sacarle más provecho que no están en la guía original:
- Suma encoders de rueda para odometría: la placa trae headers de encoders. Conectando un par de encoders ópticos o magnéticos a las ruedas puedes medir velocidad real y distancia recorrida, dato muy útil para entrenar modelos más estables o para telemetría.
- Aprovecha el bus I2C para más sensores: como el RC Hat deja libre el I2C, puedes agregar un IMU (por ejemplo un MPU6050) para conocer la inclinación y aceleración del auto, o un sensor de distancia, sin pelear con el microcontrolador por el timing.
- Reutiliza la OLED para tu propio HUD: cuando Donkey no está corriendo, la pantalla queda libre. Es una SSD1306 I2C estándar, así que con la librería de Adafruit puedes mostrar voltaje de batería, IP del auto o el modo actual con un script propio.
Personalización para Chile
El RC Hat (también llamado Donkeyhat) es una placa de nicho del ecosistema DIY Robocars y no forma parte del catálogo de MechatronicStore, igual que los servos Hitec y el equipo de radio control de hobby. Eso sí, el corazón del proyecto, la Raspberry Pi, lo encuentras acá con stock rotativo:
- Raspberry Pi 5 es la opción recomendada para este montaje, porque expone una UART dedicada y te ahorra el paso de desactivar el Bluetooth.
- Raspberry Pi Zero 2 W es la alternativa compacta y más económica si te alcanza el procesamiento; recuerda que al compartir UART con Bluetooth necesitas el ajuste extra de
config.txt.
Ambas placas rotan stock seguido, así que conviene revisar disponibilidad en MechatronicStore antes de armar tu pedido. Para la microSD, busca una de buena velocidad (clase 10 o A1 en adelante) para que Raspberry Pi OS y Donkeycar carguen rápido.
Si recién partes en el mundo de los robocars y no tienes el auto RC base, conviene reutilizar un auto de radio control 1/10 o 1/16 que ya tengas: el servo de dirección y el ESC del propio auto se enchufan directo a los headers Steer y Throt de la placa.
Recursos
- Tutorial original (inglés): Using the RC Hat por zlite en DIY Robocars
- Página del RC Hat: RC Hat
- Repositorio del firmware (Donkeyhat, CircuitPython para el RP2040): zlite/donkeyhat
- Código y documentación de Donkeycar: GitHub autorope/donkeycar y docs.donkeycar.com
- Guía para manejar por la interfaz web: Get Driving
- Librería Python para la OLED: Monochrome OLED Breakouts (Adafruit)
Versión chilena inspirada en el tutorial de DIY Robocars, con referencias a componentes en stock local en MechatronicStore.



