«

»

Mag 13

Stampa Articolo

Cannone laser di Stefano Maiocchi – introduzione

Ad un anno il progetto “Cannone laser di Stefano Maiocchi” è il nuovo progetto che ha voluto condividere con gli appassionati arduino / genuino.

cannone laser di Stefano Maiocchi

Il progetto presentato un anno fa da Stefano M. si intitolava “Robot segui linea di Stefano Maiocchi” che puoi leggere qui.

Il titolo del progetto è pericoloso, ma nella realtà il laser usato da Stefano per il suo progetto è del tutto innocuo come vedrai dal video che Stefano stesso ha realizzato ( vedi video in fondo all’articolo ).

Lascio la parola a Stefano come autore del progetto:

Cannone laser di Stefano Maiocchi – introduzione

Salve a tutti, ad un anno di distanza dal mio primo progetto (1 maggio 2015 Robot segui linea) torno proponendovi un lavoro, dove la parte principale non è l’uso di Arduino o Genuino bensì la APP Android di comando realizzata in Processing.

Si tratta di una torretta Laser, ovviamente giocattolo, mossa da due piccoli servomotori tipo 9g per coprire lo spazio aereo (semisferico) con a bordo un piccolo laser da 5mW. Questa è pilotata da arduino o genuino che, mediante un modulo bluetooth, riceve le coordinate di sparo da uno smartphone con una APP Android realizzata apposta per questo progetto.

Come potete vedere in foto, la APP visualizza un joystick quadrato con all’interno un cerchietto rosso nel punto in cui fate tap con il dito sullo schermo.

Le coordinate X e Y indicate vengono inviate mediante bluetooth ad arduino o genuino. Questo muove i due servomotori, effettua un breve “sparo” con il Laser accompagnato dal suono emesso da un buzzer piezo, e invia allo smartphone un segnale di conferma che per un attimo ingrandisce il cerchietto rosso sul joystick.

Pertanto la comunicazione tra App ed arduino è bidirezionale.

Elenco del materiale usato

  • n.1 arduino o genuino
  • n.1 modulo bluetooth HC-05
  • n.1 torretta pan-tilt per microservo
  • n.2 servo motori 9g
  • n.1 modulo laser 5 volt 5mW
  • n.1 buzzer piezo
  • n.1 resistore 1000 ohm ( 1Kohm )
  • n.1 resistore 2200 ohm ( 2.2Kohm )

Schema dei collegamenti

Ecco lo schema dei collegamenti che puoi utilizzare per il tuo cannone laser:

cannone laser Stefano Maiocchi schema collegamenti

Il circuito presenta un partitore di resistenze tra il pin 3 di arduino ed il pin Rx del modulo HC-05 come adattatore di tensione.

Il diodo laser utilizzato da Stefano è già montato su una basetta alla quale arrivano sia i 5v di alimentazione sia il pin di segnale.

Se il modulo che vuoi utilizzare nel tuo progetto non dispone di un circuito proprio di alimentazione è meglio che tu predisponga un circuito di alimentazione che incrementi la corrente di alimentazione del diodo laser per non compromettere i pin della tua scheda arduino o genuino.

Il modulo bluetooth da me utilizzato viene visto dagli smartphone con il nome predefinito “HC-05” e la sua password di default è “1234”. Prima di usare la APP ricordatevi di fare il pairing tra smartphone e modulo.

La sua velocità di connessione predefinita ad Arduino è 9600, funziona a 5 volt, ma i suoi pin TX e RX lavorano a 3,3 volt. Per questo motivo è stato messo il partitore resistivo 1000-2200 ohm a protezione del pin RX.

Il collegamento ad Arduino usa i pin 2 e 3 mediante seriale virtuale (SoftwareSerial) per lasciare liberi i pin 0 e 1 usati per debug con il Serial Monitor di Arduino collegato via USB al computer.

Lo sketch

Lo sketch scritto per arduino o genuino del “cannone laser di Stefano Maiocchi”

/* Controllo bluetooth via Android di un Cannone Laser
   modulo bluetooth HC-05 configurato a 9600 Baud
   connesso a seriale virtuale pin 2 e 3
   Maiocchi Stefano - Vigevano (PV)
*/  

#include <SoftwareSerial.h>
#include <Servo.h>

SoftwareSerial BT(2, 3);  // pin usati per RX e TX
Servo ServoX;                // servomotore asse X
Servo ServoY;                // servomotore asse Y
int Laser = 7;                // pin usato per Laser
int Buzzer = 8;              // pin usato per buzzer piezo
int tono = 1000;            // frequenza suonata dal buzzer
byte joyX, joyY;            // coordinate X e Y in gradi 
                                   // 0-180 ricevute da bluetooth

void setup()  {
   /* 
    *  Abilitazione porta seriale 
    *  per debug con Monitor seriale 
    *  IDE Arduino
    */
  Serial.begin(9600);
  Serial.println("Enabled!");

  // Configurazione data rate per porta seriale virtuale
  BT.begin(9600);

  ServoX.attach(9);  // servomotore asse X usa pin 9
  ServoY.attach(10); // servomotore asse Y usa pin 10

  pinMode(Laser, OUTPUT);
  pinMode(Buzzer, OUTPUT);
}


void loop() {
  if (BT.available()) {              // arrivano dati da bluetooth
      if (BT.read()=='D') {        // e' un dato valido
         delay(1);                      // attendi dato successivo
         joyX = BT.read();         // leggi coordinata X da bluetooth
         Serial.print(joyX);         // debug su Serial Monitor
         Serial.print("   ");         // di IDE Arduino
         joyY = BT.read();         // leggi coordinata Y da bluetooth
         Serial.println(joyY);      // debug su Serial Monitor
         ServoX.write(joyX);      // sposta servomotore asse X
         ServoY.write(joyY);      // sposta servomotore asse Y
         delay(700);                  // attendi spostamento
                                           // servomotori

         digitalWrite(Laser,HIGH);  // accendi Laser
         tone(Buzzer,tono);           // suona buzzer
         BT.write("H");                 // invia a smartphone 
                                               // conferma inizio sparo
         delay(300);                     // durata sparo Laser
         digitalWrite(Laser,LOW);  // spegni Laser
         noTone(Buzzer);             // spegni buzzer
         BT.write("L");                 // invia a smartphone 
                                              // conferma fine sparo
      }
  }
}

lo sketch è ampiamente commentato da Stefano e necessita di poche spiegazioni, il suo scopo è di recepire i comandi inviati dall’App Android via bluetooth e li traduce in spostamenti sui due assi del cannone laser di Stefano Maiocchi.

Le linee 43 e 46 ricevono dall’App, via seriale, il valore in gradi di ciascun servo che le linee 48 e 49 attuano sui servo stessi; il calcolo della posizione da colpire rispetto al dato inviato è svolto dal cellulare e convertito in gradi.

Le linee 55 e 60 inviano un “H” all’app quando il laser viene acceso e una “L” quando lo spegne, tra le due operazioni è presente un delay di 300 millisecondi durante i quali il laser resta acceso, simulando il colpo del cannone laser di Stefano Maiocchi.

Il video di Stefano

Stefano ha voluto condividere un video dimostrativo in attesa dei prossimi articoli in cui leggerai come realizzare l’App con Processing per Android


Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/cannone-laser-di-stefano-maiocchi-introduzione.html

1 ping

  1. Cannone laser di Stefano Maiocchi - App Android Processing

    […] « Cannone laser di Stefano Maiocchi – introduzione […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>