Ad un anno il progetto “Cannone laser di Stefano Maiocchi” è il nuovo progetto che ha voluto condividere con gli appassionati arduino / genuino.
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:
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
1 ping
[…] « Cannone laser di Stefano Maiocchi – introduzione […]