Una scatola da scarpe come robot con Arduino ed App Inventor – Parte 2

Si può usare una scatola da scarpe come robot, dargli vita con un Arduino Nano e prenderne il controllo con un'applicazione fatta tramite App Inventor? Certo, ma la domanda giusta è: perché usare una scatola da scarpe? Perché usare un'applicazione Android? Nel precedente articolo abbiamo visto il circuito che governa il nostro robot di cartone, in questo ti accompagnerò a realizzare il codice Arduino e l'applicazione Android grazie ad App Inventor.

In un articolo precedente, per la precisione questo, ci siamo chiesti: "Ma cosa spingerà mai una persona a usare una scatola da scarpe per dare vita ad un robot e guidarlo con un cellulare Android?" Il motivo principale è legato ad una parola chiave: economia, ma ci sono anche altri motivi che abbiamo visto assieme. Se nel primo articolo del nostro piccolo robot ci siamo concentrati sul circuito e le motivazioni dietro l'uso del cartone, in questa seconda puntata ci concentreremo sul codice che permette non solo di dare vita al robot, ma anche di governarlo tramite un'applicazione Android fatta da noi stessi.

Una scatola da scarpe come robot: l'algoritmo che governa il tutto

Prima di mettere mano al codice, è giusto capire come ragiona, anzi: il ragionamento che c'è dietro esso. Alla base della nostra scatola da scarpe robot, c'è il funzionamento di un carro armato: significa che possiamo eseguire quattro movimenti.

Il primo, è procedere dritto: le ruote ruotano nello stesso senso. Dopodiché possiamo fermarci. Vero, non è un movimento a tutti gli effetti, diciamo più uno stato in cui le ruote sono ferme. Infine, per sterzare a destra e per sterzare a sinistrale ruote ruotano in senso opposto l'una all'altra. Capiamo quindi che a livello di algoritmo, abbiamo quattro stati. Quattro stati che possono variare durante l'uso del nostro robot: come? Vediamolo graficamente:

Figura 1: L'algoritmo del nostro robot

Le frecce rappresentano la pressione di uno specifico bottone. Ogni bottone rappresenta una delle quattro azioni di cui parlavamo prima. Dal punto di vista comportamentale, l'algoritmo fa sì che ad ogni pressione di uno dei quattro bottoni, il robot traduca questa pressione in un movimento (o in uno stop). Per fare un esempio, il robot continuerà a sterzare a destra, finché uno degli altri tre bottoni verrà premuto. Quindi smetterà di sterzare a destra per fermarsisterzare a sinistra, procedere dritto oppure fermarsi del tutto.

Chiarito questo aspetto, vediamo il codice di cui abbiamo bisogno all'interno di Arduino per ricevere la pressione di questi bottoni tramite Bluetooth dall'applicazione Android, senza dimenticare quello di cui abbiamo bisogno per tramutare questi segnali in un movimento corrispondente delle ruote.

Il codice Arduino per gestire il robot

Dicevo prima, che il codice all'interno di Arduino si occupa prevalentemente di governare i motori e di recepire i segnali Bluetooth dall'applicazione.

Devo però fare una piccola precisazione prima di proseguire.

Devi sapere che questi motori vengono gestiti tramite segnali PWM: in questo modo è possibile decidere anche a quale velocità far ruotare i motori e di conseguenza far muovere il robot.

Se non sapessi cosa siano i segnali PWM, oltre a trovare diversi articoli in merito, vorrei lasciarti una mia video-spiegazione:

Ciò detto, passiamo al codice da caricare sul nostro Arduino:

 

#include <SoftwareSerial.h>

//Variabile per la scheda Bluetooth
SoftwareSerial bt(0, 1); // RX | TX
//Variabile per leggere i dati ricevuti dal bluetooth
char val;

void setup() {
    //Motore sinistra
   pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  //Motore destra
  pinMode(9,OUTPUT);
  pinMode(8,OUTPUT);
  //Acceleratore sinistro
  pinMode(12,OUTPUT);
  //Acceleratore destro
  pinMode(7,OUTPUT);
  //Impostiamo il baude Rate
  Serial.begin(9600);
  bt.begin(9600);  
  Serial.println("Disponibile per la connessione");
}

void loop() {
  //Ci manteniamo in ascolto continuo di dati provenienti dal modulo bluetooth
  if (bt.available()){
    val=bt.read();
    if (val=='1'){
      //Andiamo avanti
      //Attivo entrambi gli acceleratori e imposto i controlli sui motori per farli ruotare in avanti
      digitalWrite(8,HIGH);
      digitalWrite(9,LOW);
      analogWrite(12,200);
    
      digitalWrite(6,HIGH);
      digitalWrite(5,LOW);
      analogWrite(7,200);
    }
    else if (val=='0'){
      //Stop
       //Forzo i controlli sui motori a spento e faccio altrettanto per i due acceleratori
        digitalWrite(8,LOW);
        digitalWrite(9,LOW);
        analogWrite(12,0);
      
        digitalWrite(6,LOW);
        digitalWrite(5,LOW);
        analogWrite(7,0);
      
    }
    else if (val=='2'){
      //Sterzata destra
      //Ruote destre indietro, ruote sinistra avanti
     digitalWrite(8,LOW);
      digitalWrite(9,HIGH);
       analogWrite(12,200);
       
      digitalWrite(6,HIGH);
      digitalWrite(5,LOW);
      analogWrite(7,200);
    }
    else if (val=='3'){
      //Sterzata sinistra
      //Ruote destre avanti, ruote sinistra indietro
      digitalWrite(8,HIGH);
      digitalWrite(9,LOW);
       analogWrite(12,200);
       
      digitalWrite(6,LOW);
      digitalWrite(5,HIGH);
      analogWrite(7,200);
    }
   
    
    
  }

}

Avrai notato tu stesso che è abbastanza semplice, ma bisogna chiarire anche il ruolo di quella variabile chiamata "val" e del come mai abbia quei quattro valori distinti.

Ricordi il discorso dei quattro movimenti che riceviamo tramite l'applicazione Android via Bluetooth?

È proprio quello che Arduino riceve da essa: ma prima di addentrarci in questo dettaglio e scoprire come avviene, voglio lasciarti anche il codice Arduino pronto all'uso da scaricare.

CODICE ARDUINO PER IL ROBOT SCATOLA DA SCARPE

L'applicazione per pilotare il nostro robot grazie ad App Inventor

Nel caso te lo stessi chiedendo nonon è necessario saper programmare per Android per dare vita alla nostra applicazione Android.

App Inventor è uno strumento di cui abbiamo parlato spesso nel blog: si tratta di una piattaforma online che permette di creare applicazioni Android gratuitamente attraverso la programmazione a blocchi.

Pensata per i bambini, in realtà ci permette di avere un prototipo di un'applicazione Android in tempi abbastanza brevi e gratuitamente. Questo infatti, i miei studenti di Makers Academy lo sanno bene!

Il primo passo è accedere grazie a questo link e creare un nuovo progetto:

Figura 2: La schermata principale di un progetto

Come si può notare, App Inventor mette a disposizione un'interfaccia grafica attraverso la quale possiamo disporre gli elementi grafici sul cellulare simulato in modalità "drag and drop" andando letteralmente a disegnare l'applicazione!

Come nel mio caso, ho disposto i pulsanti in modalità "radiocomando" oltre ad aggiungere il pulsante "cerca dispositivi" che serve a instaurare la connessione con il nostro Arduino.

Ovviamente, questo non basta: dobbiamo creare la logica dietro l'applicazione:

Figura 3: La logica a blocchi dietro l'applicazione

L'altra facciata di App Inventor è proprio la logica a blocchi: l'applicazione può essere programmata proprio come il LEGO!

Per questo ha spopolato tanto tra i bambini, ma torniamo a noi.

Come puoi notare, è anche di facile lettura e ci sono ben quattro comandi, oltre a quelli necessari per gestire la connettività Bluetooth.

Ironia della sorte, quei quattro comandi associati ciascuno ad uno dei quattro bottoni, permettono di inviare uno di quei quattro numeri da "0" a "3" per far sì che il nostro robot di cartone si muova!

Una volta terminata la realizzazione dell'app, possiamo creare il file ".apk" per installarla sul nostro cellulare, o addirittura far sì che App Inventor la inoltri direttamente al nostro dispositivo.

Ma ovviamente, nemmeno qui, prima di arrivare alle conclusioni, ti voglio lasciare a mani vuote:

SCARICA IL PROGETTO APP INVENTOR PER IL ROBOT

Conclusioni: proviamo finalmente il nostro robot!

Se sei giunto a questo punto, è arrivato il momento di testare il tuo robot, anzi, la tua scatola da scarpe trasformata in un robot.

Dovrebbe essere più o meno così:

 

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend