- Materiali richiesti:
- Stampa 3D delle parti richieste (opzionale):
- Schema e hardware:
- Configurazione della tua applicazione Android:
- Programmare il tuo Arduino:
- Lavorando:
Hai mai desiderato costruire un braccio robotico o un robot Face Tracking semplicemente usando Arduino e non qualsiasi altra programmazione come OpenCV, basi visive C # ecc.? Quindi continua a leggere, in questo progetto implementeremo il rilevamento dei volti fondendo la potenza di Arduino e Android. In questo progetto, la telecamera mobile si muoverà insieme al tuo viso con l'aiuto dei servi. Il vantaggio di utilizzare il telefono cellulare Android qui è che non è necessario investire su un modulo della fotocamera e l'intero lavoro di rilevamento delle immagini può essere svolto nel telefono stesso, non è necessario che il tuo Arduino sia collegato al tuo computer affinché funzioni. Qui abbiamo utilizzato il modulo Bluetooth con Arduino per comunicare con Mobile in modalità wireless.
L'applicazione Android utilizzata in questo progetto è stata creata utilizzando Processing Android, puoi installare direttamente l'applicazione scaricando il file APK (leggi più avanti per il collegamento) o mettere il cappuccio di programmazione e rendere la tua applicazione Android più accattivante utilizzando il codice di elaborazione fornito ulteriormente nel Tutorial. Ulteriori informazioni sull'elaborazione controllando i nostri precedenti progetti di elaborazione.
Alla fine di questo tutorial avrai un braccio robotico Mini Tilt and Span in grado di tracciare il tuo viso e muoversi insieme ad esso. Puoi usarlo (con ulteriore avanzamento) per registrare i tuoi video vlog o persino fare un selfie con la fotocamera posteriore del tuo cellulare poiché posiziona il tuo viso esattamente al centro dello schermo del tuo cellulare. Così!! Sembra interessante? Controlla il video dimostrativo alla fine di questo tutorial per vederlo funzionare. Vediamo come possiamo costruirne uno…
Ho fatto del mio meglio per rendere questo progetto il più semplice possibile, chiunque abbia una conoscenza minima dell'hardware o della codifica può utilizzare queste linee guida per far funzionare questo progetto in pochissimo tempo. Tuttavia, una volta che lo fai, ti suggerisco di leggere i codici in modo da poter davvero sapere cosa fa funzionare questa cosa e come.
Materiali richiesti:
- Arduino Nano
- Servomotore SG90 - 2Nos
- Telefono Android con fotocamera decente
- Modulo Bluetooth HC-05 / HC-06
- Computer per la programmazione
- Stampante 3D (opzionale)
- Batteria 9V
Stampa 3D delle parti richieste (opzionale):
Per spostare e inclinare il nostro telefono cellulare abbiamo bisogno di alcune strutture meccaniche come un supporto per cellulare e alcune staffe per servo. Puoi usare un cartone per realizzarne uno, dato che ho una stampante 3D ho deciso di stampare in 3D queste parti.
La stampa 3D è uno strumento straordinario che può contribuire molto quando si costruiscono progetti prototipo o si sperimentano nuovi progetti meccanici. Se non hai ancora scoperto i vantaggi di una stampante 3D o come funziona puoi leggere La Guida per principianti alla stampa 3D.
Se possiedi o hai accesso a una stampante 3D, puoi utilizzare i file STL che possono essere scaricati da qui per stamparli e assemblarli direttamente. Tuttavia, poche parti come il supporto del telefono cellulare potrebbero richiedere alcune modifiche in base alle dimensioni del telefono. L'ho progettato per il mio cellulare MOTO G. Ho usato una mia stampante di base per stampare tutte le parti. La stampante è FABX v1 di 3ding che ha un prezzo accessibile con un volume di stampa di 10 cm cubi. Il prezzo economico viene fornito con un compromesso con una bassa risoluzione di stampa e nessuna scheda SD o funzione di ripresa della stampa. Sto usando un software chiamato Cura per stampare i file STL. Le impostazioni che ho usato per stampare i materiali sono riportate di seguito che puoi utilizzare le stesse o modificarle in base alla tua stampante.
Una volta stampati tutti i materiali richiesti, puoi fissarli in posizione utilizzando viti e colla a caldo. Dopo aver completato l'assemblaggio, dovrebbe apparire qualcosa del genere di seguito.
Schema e hardware:
Il circuito per questo progetto Face Tracking su Smart Phone è mostrato nell'immagine qui sotto:
Il circuito è costituito da due servomotori, di cui uno viene utilizzato per spostare il telefono cellulare a sinistra / destra e l'altro viene utilizzato per inclinare il telefono cellulare su / giù. La direzione in cui il servo deve muoversi sarà istruita da Arduino Nano che a sua volta riceve le informazioni dal modulo Bluetooth (HC-05). L'intero circuito è alimentato da una batteria da 9V.
Questo circuito può essere collegato facilmente sulla tua breadboard o puoi anche saldarlo su una piccola scheda Perf come ho fatto qui.
Configurazione della tua applicazione Android:
Come, ho detto prima, il cervello principale che lavora dietro questo progetto è questa applicazione Android. Questa applicazione Android è stata sviluppata utilizzando Processing Android. Puoi installare direttamente questa applicazione sul tuo telefono cellulare e avviarla seguendo i passaggi seguenti.
- Scarica il file APK da qui.
- Accendere il circuito mostrato sopra.
- Nelle impostazioni del telefono, cerca il modulo Bluetooth denominato "HC-05"
- Se lo hai chiamato in modo diverso da "HC-05", cambialo in HC-05 poiché solo allora l'applicazione funzionerà.
- Accoppia con il tuo modulo Bluetooth con la password "1234" o "0000".
- Ora avvia l'applicazione in modalità verticale. Dovresti vedere lo schermo della fotocamera e anche "Connesso a: HC-05" nella parte superiore dello schermo.
- Prova a spostare la videocamera su una faccia e una casella verde dovrebbe apparire sopra di essa e la sua posizione verrà visualizzata anche nell'angolo in alto a sinistra dello schermo come mostrato di seguito.
Puoi portare questo progetto Arduino Face Tracking al livello successivo apportando molti progressi per i quali non avrai bisogno di codificare la tua applicazione Android. Creare un'applicazione Android potrebbe sembrare difficile, ma credimi con l'aiuto di Processing puoi impararlo in pochissimo tempo. Il codice di elaborazione completo utilizzato per creare questa applicazione può essere scaricato qui. Sei libero di fare progressi con la tua creatività. Controlla i progetti seguenti per saperne di più sull'elaborazione:
- Realtà virtuale utilizzando Arduino e Processing
- Ping Pong Game utilizzando Arduino
- Radio FM controllata da smartphone utilizzando l'elaborazione.
- Sistema radar Arduino che utilizza l'elaborazione e il sensore a ultrasuoni
Programmare il tuo Arduino:
L'applicazione Android rileverà il viso e la sua posizione sullo schermo; deciderà quindi in quale direzione deve muoversi in base alla posizione del viso in modo che il viso arrivi al centro dello schermo. Questa direzione viene quindi inviata ad Arduino tramite modulo Bluetooth.
Il programma Arduino per questo progetto è abbastanza semplice, dobbiamo solo controllare la direzione dei due servomotori in base ai valori ricevuti dal modulo Bluetooth. Il codice completo si trova alla fine di questo tutorial, ho anche spiegato alcune righe importanti di seguito.
Sotto la riga di codice stabilisce una connessione seriale con i pin D12 come RX e D11 come TX. Quindi il pin D12 deve essere collegato al TX del modulo BT e il pin D11 all'RX del modulo BT.
SoftwareSerial cam_BT (12, 11); // RX, TX
Quindi abbiamo inizializzato il modulo Bluetooth a una velocità di trasmissione di 9600. Assicurati che anche il tuo modulo funzioni con la stessa velocità di trasmissione. Altrimenti cambiarlo di conseguenza.
cam_BT.begin (9600); // avvia la comunicazione Bluetooth a 9600 baudrate cam_BT.println ("Pronto a ricevere comandi");
Sotto la riga si legge cosa sta arrivando attraverso il modulo Bluetooth. Anche i dati vengono salvati nella variabile “BluetoothData”.
if (cam_BT.available ()) // Leggi cosa arriva tramite Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("In arrivo da BT:"); Serial.println (BluetoothData); }
In base ai dati ricevuti dal Bluetooth viene controllata la direzione dei motori. Per girare un motore a sinistra, il motore viene decrementato di un valore di 2 dalla sua posizione precedente. Puoi aumentare questo valore da 2 a 4 o 6 se hai bisogno che il braccio si muova più velocemente. Tuttavia, potrebbe creare alcuni scatti che rendono instabile la fotocamera.
if (BluetoothData == 49) // Gira a sinistra {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Gira a destra {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Turn Up {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Turn Down {pos2 + = 2; servo2.write (pos2);}
Lavorando:
Una volta che siamo pronti con il nostro hardware, codice e applicazione Android, è tempo di agire. Basta alimentare il tuo Arduino e aprire l'applicazione Android. L'applicazione si collegherà automaticamente al modulo Bluetooth HC-05 (deve essere denominato HC-05) e attenderà il rilevamento di un volto. Posiziona semplicemente il telefono nel nostro supporto per cellulare e siediti di fronte ad esso. Dovresti notare che i tuoi servomotori muovono il telefono in modo che il tuo viso sia posizionato al centro dello schermo. Ora spostati nel raggio di azione della fotocamera e il tuo telefono cellulare seguirà i tuoi movimenti. Puoi anche provarlo posizionando e spostando qualsiasi immagine.
Il funzionamento completo del progetto è mostrato nel video sottostante. Puoi costruire molto