Cuando conviertes un auto de radio control comercial en uno totalmente autonomo con Donkeycar, tarde o temprano aparece la misma pregunta: por que 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 incomoda. Ahora hay una mucho mejor, y se llama RC Hat.
En este tutorial vas a entender por que la Raspberry Pi sola no puede leer las senales de tu radio control, como el RC Hat resuelve ese problema de raiz, y como dejarlo funcionando paso a paso editando tu archivo de configuracion. Al final vas a poder manejar tu robocar con la emisora de siempre, que tiene mucho mas alcance que un joypad, ideal para correr al aire libre o entre varios autos.

Por que la Raspberry Pi no lee tu radio control directamente
El problema no es de software, es electrico y de temporizacion. La senal de un receptor RC es un pulso PWM con timing muy estricto, y ademas, segun estes en modo manual o autonomo, esa senal tiene que pasar por la Raspberry Pi y ser procesada o reenviada por el codigo 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 senales de entrada ni las de salida que necesitan el servo y el controlador de motor.
Por eso el consejo clasico era drastico: 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.
Que 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 mas 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 alimentacion de 5V. La clave esta 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. Asi 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 fabrica, asi que no deberias tener que tocarlo. Si tienes curiosidad o quieres modificarlo, el codigo esta publicado en el repositorio del proyecto (link al final).
Conexiones fisicas
Las conexiones son directas si respetas la orientacion. 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 direccion al header Steer
- Controlador de motor / ESC al header Throt
Una sola regla, pero importante: cuida bien la orientacion 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 reves arriesgas el receptor o los servos, asi 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 autonomo) 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 lineas asi en la seccion correspondiente del archivo:
USE_SSD1306_128_32 = True
SSD1306_RESOLUTION = 2
Luego, para habilitar el RC Hat como salida, en la seccion "Drive train" descomenta y edita esta linea:
DRIVE_TRAIN_TYPE = "MM1"
Para habilitar el RC Hat como entrada, en la seccion "Joystick" descomenta y edita lo siguiente:
USE_JOYSTICK_AS_DEFAULT = True
CONTROLLER_TYPE = 'MM1'
Y finalmente, en la seccion "Robohat MM1 controller", descomenta y edita el puerto serial:
MM1_SERIAL_PORT = '/dev/ttyAMA0'
La pantalla se va a encender y mostrara el estado de Donkey cuando arranques con el comando habitual:
python manage.py drive
Cuando Donkey no esta corriendo la pantalla queda apagada, aunque sigue disponible por si quieres usarla con otro programa, ya que es una OLED I2C estandar y la puedes manejar con la libreria de Python correspondiente.
Habilitar el puerto serial por hardware
El ultimo paso es activar el serial por hardware en la Pi. Lo haces con la utilidad de configuracion:
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 Si.


Si estas usando una Raspberry Pi 5, con eso ya esta 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 mas. Tienes dos caminos.
El primero, mas 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 practica no ha dado problemas, pero si quieres ir mas seguro, esta el segundo camino.
El segundo, mas robusto: desactivar el Bluetooth y dejar el serial por hardware en ttyAMA0 como corresponde. Agrega esta linea 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. Despues ejecuta en la linea de comandos:
sudo systemctl disable hciuart
Reinicia cuando termines y todo deberia 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 modulo 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 mas provecho que no estan en la guia original:
- Suma encoders de rueda para odometria: la placa trae headers de encoders. Conectando un par de encoders opticos o magneticos a las ruedas puedes medir velocidad real y distancia recorrida, dato muy util para entrenar modelos mas estables o para telemetria.
- Aprovecha el bus I2C para mas sensores: como el RC Hat deja libre el I2C, puedes agregar un IMU (por ejemplo un MPU6050) para conocer la inclinacion y aceleracion 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 esta corriendo, la pantalla queda libre. Es una SSD1306 I2C estandar, asi que con la libreria de Adafruit puedes mostrar voltaje de bateria, IP del auto o el modo actual con un script propio.
Personalizacion para Chile
El RC Hat (tambien llamado Donkeyhat) es una placa de nicho del ecosistema DIY Robocars y no forma parte del catalogo de MechatronicStore, igual que los servos Hitec y el equipo de radio control de hobby. Eso si, el corazon del proyecto, la Raspberry Pi, lo encuentras aca con stock rotativo:
- Raspberry Pi 5 es la opcion 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 mas economica si te alcanza el procesamiento; recuerda que al compartir UART con Bluetooth necesitas el ajuste extra de
config.txt.
Ambas placas rotan stock seguido, asi 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 rapido.
Si recien 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 direccion y el ESC del propio auto se enchufan directo a los headers Steer y Throt de la placa.
Recursos
- Tutorial original (ingles): Using the RC Hat por zlite en DIY Robocars
- Pagina del RC Hat: RC Hat
- Repositorio del firmware (Donkeyhat, CircuitPython para el RP2040): zlite/donkeyhat
- Codigo y documentacion de Donkeycar: GitHub autorope/donkeycar y docs.donkeycar.com
- Guia para manejar por la interfaz web: Get Driving
- Libreria Python para la OLED: Monochrome OLED Breakouts (Adafruit)
Version chilena inspirada en el tutorial de DIY Robocars, con referencias a componentes en stock local en MechatronicStore.



