Automobile telecomandata con Arduino
Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 3B/EN nell'a.s. 2021/2022, all'interno del corso di Sistemi automatici per le superiori 1.
Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità. Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo. |
Questa lezione progettiamo una automobile telecomandata. L'automobile è abilitata alla ricezione di quattro comandi: avanti
, destra
, sinistra
e stop
.
Il progetto è diviso in due parti:
- l'automobile vera e propria;
- il telecomando (anche un vecchio telecomando che non si usa più).
Sensori e attuatori
modificaSensore a infrarossi
modificaI sensori a infrarossi attivi sono costituiti da due elementi: sorgente a infrarossi e rilevatore a infrarossi. Le sorgenti a infrarossi includono un LED o un diodo laser a infrarossi. I rivelatori a infrarossi includono fotodiodi o fototransistor. L’energia emessa dalla sorgente a infrarossi viene riflessa da un oggetto e cade sul rivelatore a infrarossi. Il trasmettitore a infrarossi è un diodo a emissione di luce (LED) che emette radiazioni infrarosse (LED IR), perciò la radiazione emessa è invisibile all’occhio.
Motori a corrente continua
modificaUn motore in corrente continua (CC) è un tipo di macchina elettrica che converte l'energia elettrica in energia meccanica. Assorbe energia elettrica attraverso la corrente continua e la converte in rotazione meccanica.
Telecomando
modificaAltro non è che la sorgente infrarossi che utilizziamo nel nostro circuito e che ci permetterà di muovere l'apparato da distanza.
Schema di montaggio
modificaDi seguito lo schema di montaggio:
Codice
modifica /*
* ROBOT TELECOMANDATO IR
* Starodub Cristian
* 3B EN
* a.s. 2021/2022
*/
/*
* Costanti, variabili locali e librerie accessorie (es. telecomando)
*/
#include <IRremote.h>
#define AVANTI 1234567890
#define SINISTRA 1234567891
#define DESTRA 1234567892
#define FERMA 1234567893
int remoteInputPin = 2;
long remoteInput;
IRrecv receiver(remoteInputPin);
decode_results results;
int motorD = 8;
int motorS = 9;
/*
* Setup iniziale del programma
*/
void setup() {
Serial.begin(9600);
receiver.enableIRIn();
pinMode(motorD, OUTPUT);
pinMode(motorS, OUTPUT);
}
/*
* In base ai dati ricevuti dal telecomando, movimenta il veicolo
*/
void loop() {
if (IrReceiver.decode()) {
remoteInput = Serial.println(results.value, HEX);
switch (remoteInput) {
case AVANTI:
avanti();
break;
case SINISTRA:
sinistra();
break;
case DESTRA:
destra();
break;
case FERMA:
ferma();
break;
default:
receiver.resume();
break;
}
receiver.resume();
}
}
/*
* Funzioni aggiuntive per movimentare il veicolo
*/
void avanti() {
Serial.println("AVANTI");
digitalWrite(motorD, HIGH);
digitalWrite(motorS, HIGH);
}
void sinistra() {
Serial.println("SINISTRA");
digitalWrite(motorD, HIGH);
digitalWrite(motorS, LOW);
}
void destra() {
Serial.println("DESTRA");
digitalWrite(motorD, LOW);
digitalWrite(motorS, HIGH);
}
void ferma() {
Serial.println("FERMA");
digitalWrite(motorS, LOW);
digitalWrite(motorD, LOW);
}
Espansioni suggerite
modificaPer migliorare il progetto:
- si può lavorare sulla connessione telecomando e auto;
- è possibile migliorare il telecomando, per esempio utilizzando un joystick per migliorare il comfort di guida;
- si può implementare un arto meccanico per rendere l'intero apparato mobile, in grado di trasportare e prelevare oggetti.