Circuito de coche robot teledirigido inalámbrico DIY (Arduino + HC-12)
Lista de materiales y cableado para un robot 2WD controlado por un segundo transceptor HC-12 como mando a distancia.
Lista de materiales
- Arduino Uno × 2 (robot + mando)
- Driver L298N doble puente H
- Transceptor HC-12 433 MHz × 2
- 2 motores DC con reductor (motor TT 1:48) + ruedas
- Chasis + rueda loca
- 2× 18650 Li-ion + portapilas (7,4 V) o 6× AA NiMH
- Cables jumper, protoboard/placa perforada
Cableado del robot
- HC-12 VCC → 3,3 V, GND → GND, TX → D2, RX → D3 (SoftwareSerial).
- L298N: ENA→D5, IN1→D6, IN2→D7, IN3→D8, IN4→D9, ENB→D10.
- Motores a OUT1–OUT4. Batería a L298N +12 V y GND; 5 V out → Arduino Vin.
Cableado del mando
- HC-12 mismos pines (D2/D3).
- 4 pulsadores (Adelante/Atrás/Izquierda/Derecha) a D4–D7 con INPUT_PULLUP.
- Alimentación por USB o 2× AA.
Código del robot
#include <SoftwareSerial.h> SoftwareSerial hc12(2,3); const int ENA=5,IN1=6,IN2=7,IN3=8,IN4=9,ENB=10; void setup(){ hc12.begin(9600); pinMode(ENA,OUTPUT);pinMode(IN1,OUTPUT);pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT);pinMode(IN4,OUTPUT);pinMode(ENB,OUTPUT); } void loop(){ if(hc12.available()){ char c=hc12.read(); switch(c){ case 'F': forward(); break; case 'B': backward(); break; case 'L': left(); break; case 'R': right(); break; case 'S': stop(); break; } } } void forward(){digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENA,200);analogWrite(ENB,200);} void backward(){digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENA,200);analogWrite(ENB,200);} void left(){digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENA,150);analogWrite(ENB,150);} void right(){digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENA,150);analogWrite(ENB,150);} void stop(){analogWrite(ENA,0);analogWrite(ENB,0);}
Código del mando
#include <SoftwareSerial.h> SoftwareSerial hc12(2,3); const int btnF=4,btnB=5,btnL=6,btnR=7; void setup(){ hc12.begin(9600); pinMode(btnF,INPUT_PULLUP);pinMode(btnB,INPUT_PULLUP); pinMode(btnL,INPUT_PULLUP);pinMode(btnR,INPUT_PULLUP); } void loop(){ if(!digitalRead(btnF)) hc12.write('F'); else if(!digitalRead(btnB)) hc12.write('B'); else if(!digitalRead(btnL)) hc12.write('L'); else if(!digitalRead(btnR)) hc12.write('R'); else hc12.write('S'); delay(50); }
Ajustes
- Configura ambos HC-12 en mismo canal (AT+C001) y potencia (AT+P8).
- Ajusta valores PWM para velocidad/par.
- Añade sensor ultrasónico (HC-SR04) para evitación de obstáculos.
- ·Códigos del control remoto universal ATak RA10: Lista completa y programación
- ·Cómo programar un control remoto universal Logitech Harmony
- ·Códigos Mando Universal Philips para TV Curtis Mathis
- ·Códigos de control remoto AT&T U-verse para TV Dynex: 11756, 10178, 11754
- ·Cómo vencer al Wheel Bot en Club Penguin: Elite Penguin Force (DS)
- ·Cómo programar un control remoto universal GE para un televisor Sylvania
- ·Cómo programar el mando multimarca Daewoo 97P1R2BZ05 para TV
- ·Instrucciones para mando universal Innovage
- Cómo encontrar el código de tu mando Magnavox (búsqueda automática)
- Evolución del control remoto: de mecánico con cable a controles inteligentes con IA
- Cómo actualizar un mando Logitech Harmony (dispositivos, actividades y firmware)
- Códigos mando universal GE: DISH Network + Insignia 15″ LCD
- Cómo programar manualmente un control remoto universal Philips
- Cómo programar un mando universal Philips para TV
