Circuito fai-da-te di auto robot radiocomandata wireless (Arduino + HC-12)
Elenco componenti e cablaggio per un'auto robot 2WD controllata da un secondo trascevitore HC-12 come telecomando portatile.
Bill of Materials
- Arduino Uno × 2 (robot + telecomando)
- Driver ponte H duale L298N
- Trascevitore HC-12 433 MHz × 2
- 2× motori DC con riduttore (TT motor 1:48) + ruote
- Telaio + ruota folle
- 2× 18650 Li-ion + portabatterie (7,4 V) o 6× AA NiMH
- Cavi jumper, breadboard/prototyping board
Cablaggio 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.
- Motori a OUT1–OUT4. Batteria a L298N +12 V & GND; 5 V out → Arduino Vin.
Cablaggio Telecomando
- HC-12 stessi pin (D2/D3).
- 4 pulsanti (Avanti/Indietro/Sinistra/Destra) a D4–D7 con INPUT_PULLUP.
- Alimentazione da USB o 2× AA.
Sketch Codice (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);}
Codice Telecomando
#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);
}
Taratura
- Imposta HC-12 sullo stesso canale (AT+C001) e potenza (AT+P8).
- Regola i valori PWM per velocità/coppia.
- Aggiungi sensore a ultrasuoni (HC-SR04) per l'evitamento ostacoli.