Il Robot A Ultrasuoni

Una volta finite le 3Drag, ci è stato assegnato un compito leggermente diverso: utilizzare le nostre stampanti per creare dei pezzi utili alla costruzione di un piccolo robottino. Noi abbiamo scelto di creare un robot a ultrasuoni in grado di evitare le pareti utilizzando, appunto, gli ultrasuoni. In pratica questo robot dovrà essere in grado di seguire autonomamente la sua strada, evitando tutti gli ostacoli che gli si porranno davanti, senza andare a sbatterci contro.

Il progetto che abbiamo seguito lo abbiamo trovato su Thingiverse, dove sono presenti lista dei materiali, progetti da stampare in 3D per i 3 pezzi che comporranno il nostro robot e sketch Arduino già pronti. Abbiamo seguito questa guida per quanto riguarda la parte meccanica, per la parte elettronica e informatica abbiamo svolto noi il lavoro principale. Clicca qui per vedere il progetto e scaricare i progetti in 3D.

Il primo passo che abbiamo compiuto è stato quello di programmare sensori e motori per far muovere il robot e per leggere le distanze. Per gli ultrasuoni abbiamo utilizzato una libreria libera trovata sul web, NewPing.h, scaricabile a questo link. Per i motori, invece, abbiamo utilizzato la libreria Servo.h standard di Arduino.

La lista dei materiali che abbiamo utilizzato è la seguente:

  • 3 pezzi creati con la stampante 3D
  • 2 motori Servo
  • 2 sensori ultrasuoni HY-SRF05
  • 1 Arduino Uno
  • una mini-breadboard
  • 8 jumper maschio-femmina
  • 8 jumper maschio-maschio
  • 2 viti M3x40
  • 8 viti M3x16
  • 1 rondella M3
  • Fascette

Una volta montata la struttura abbiamo creato il circuito elettrico e iniziato a sviluppare il codice. Durante lo sviluppo del codice abbiamo avuto alcuni problemi relativi al verso in cui doveva girare il robot, ad esempio non andava diritto oppure si spegneva invece di girare. Alla fine abbiamo trovato una soluzione al nostro problema, permettendo al robot di poter girare liberamente in tutte le direzioni.

Il risultato finale è stato il seguente:

IMG_2797

 

Questo è un video che mostra il risultato del nostro lavoro:

Montaggio Stampante 3Drag V 1.2

Dopo aver finito di montare la stampante 3D Vertex®, ci è stato assegnato il compito di montare 2 stampanti 3Drag, una a testa, senza aiuti prolungati.

Il montaggio della stampante di per sè non è stato molto difficile, i problemi nella parte meccanica erano per la maggior parte dovuti a imperfezioni nei vari pezzi, come ad esempio gli angolari per le barre. Queste imperfezioni non ci hanno comunque impedito di proseguire nel lavoro, che è risultato comunque buono nonostante qualche piccola imprecisione.

La parte più difficile è stata sicuramente quella della saldatura; non è molto difficile di per sè, ma dato che a scuola non ci è mai stato insegnato come fare a saldare, abbiamo dovuto passare qualche ora con Gabriele che ce lo ha insegnato. Una volta che abbiamo imparato ad usare il saldatore, questa fase è andata via liscia, con qualche spazio lasciato per le ustioni 🙂

Il montaggio completo di questa stampante ci ha richiesto circa 24 ore di lavoro.

Una volta montate le stampanti, le abbiamo attaccate tutte e due al pc e alla corrente per verificare il loro funzionamento. La parte un po’ più noiosa è stata quella della calibrazione dei fine-corsa, che essendo in posizioni difficili da raggiungere hanno causato qualche piccolo problemino. Finita la calibrazione dei fine-corsa, abbiamo inserito il filo di plastica e abbiamo provato a stampare un piccolo fischietto. Dopo vari aggiustamenti del software, siamo riusciti ad ottenere un risultato più che soddisfacente!

Il risultato finale della stampante è stato il seguente:

IMG_2793

Montaggio Stampante Vertex®

Il primo lavoro che abbiamo portato a termine è stato il montaggio della stampante 3D Vertex®. Per svolgere questo compito, abbiamo seguito un tutorial in inglese consultabile al seguente link.

Abbiamo organizzato i nostri lavori suddividendoceli: mentre uno faceva una cosa, l’altro ne faceva un’altra, in modo da rendere più veloce la costruzione del tutto.

Solo per fare questo ci abbiamo impiegato circa due ore! Quando stavamo per montare la scheda, però, ci siamo accorti che il pannello inferiore era montato al contrario e per riposizionarlo correttamente abbiamo dovuto smontarla quasi tutta… questo errore ci ha fatto perdere molto tempo, sfortunatamente 🙁

A parte questa piccola svista, il resto è andato tutto relativamente bene. Abbiamo riscontrato qualche altro problema quando siamo arrivati al montaggio della testa dell’estrusore: qui dovevamo inserire la testa all’interno delle barre guida di alluminio e fissare le cinghie alla testa in modo che quando le pulegge attaccate ai motori giravano, si portavano dietro la testa facendola scorrere sulle barre. Dopo vari sforzi e qualche colpetto di martello qua e là, siamo riusciti ad infilarla correttamente e a farla scorrere come si deve, anche se facevano un po’ di rumore!

Il resto del lavoro è andato a gonfie vele e la stampante è stata completata dopo circa 31 ore di lavoro!

La stampante costruita da noi ha prodotto questo bellissimo mappamondo in 3D

IMG_2792

Il Primo Giorno

Ci presentiamo: siamo Samuele Stefanuto e Stefano Morelli, della classe 3B Informatica dell’istituto ISIS Facchinetti. Abbiamo iniziato lo stage qui in Futura Elettronica il 9 marzo 2015.

Il primo giorno è stato molto emozionante; siamo stati accolti dal sig. Landoni e ci è stato spiegato ciò che avremmo dovuto fare nei giorni seguenti e ci è stato detto inoltre di documentare su questo blog con ogni cosa che facciamo ogni giorno.

Dopo una piccola introduzione, ci siamo avviati in magazzino, dove ci è stato fatto fare un giro dell’azienda e dove abbiamo conosciuto la maggior parte dei dipendenti.

Il primo compito che ci è stato assegnato è stato quello di montare la stampante 3D Vertex®.

Da quel momento ci siamo messi all’opera!

Infinity Mirror-Vu Meter

Il progetto svolto unisce l’effetto generato da un infinity mirror (attraverso il quale è possibile ottenere un’immagine ripetuta continuamente tramite degli specchi) a quello di un vu meter.
Il primo passaggio del progetto è stato la ricerca di informazioni (codici per arduino, materiale necessario, eventuali progetti simili, ecc…) per poi successivamente passare a una lavorazione dell’hardware.
Nel progetto finale sono presenti:

-Shield RGB che permette di gestire i led (red -green – blue)
-Spectrum shield necessaria per poter analizzare e suddividere la frequenza audio dei suoni/canzoni utilizzati come input..
La realizzazione dei filtri passa alto/basso/banda è stata un primo tentativo, ma nonostante le formule applicate e ricontrollate non risultavano performanti a dovere, optando dunque per una shield apposita, i filtri sono stati controllati attraverso PCSU200 un oscilloscopio per pc, con la quale è stato possibile compiere dei test.
Dopo aver dissaldato i cavi per la gestione dei led dal “Led tunnel lamp”, prodotto da cui sono stati utilizzati led e infinity mirror.
Dissaldando i vari fili del prodotto e saldandoli alla nostra scheda è stato possibile accedere alla gestione dei led, facendo in modo che essi funzionassero a ritmo di musica.

Il codice è il seguente:

//Specifica i pin Reset, Strobe
int spectrumReset=7;
int spectrumStrobe=4;

//Specifico il canale di ingresso
//pin A0 per canale destro
//pin A1 per canale sinistro
int spectrumAnalog = 1; //canale sinistro

//creo un vettore per contenere i valori analogici
//delle 7 bande
int Spectrum[7];

void setup()
{
//pin reset e strobe in output
pinMode(spectrumReset, OUTPUT);
pinMode(spectrumStrobe, OUTPUT);

//inizializzo lo spectrum shield
//Strobe
digitalWrite(spectrumStrobe,HIGH);
delay(1);
digitalWrite(spectrumStrobe,LOW);
delay(1);

pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);

}

void loop()
{
//esegui la lettura ogni 10mS
readSpectrum();
/*analogWrite(3, Spectrum[1]);
analogWrite(5, Spectrum[2]);
analogWrite(6, Spectrum[0]);*/
//delay(10);

}

void readSpectrum()
{
//Questa funzione legge il valore analogico per ogni banda
//e ne rappresenta il valore tramite dei led

byte Band;
//questo ciclo for viene eseguito 7 volte
for(Band = 0; Band < 7; Band++)
{
//eseguo due letture per poi dividerle per due tramite
//spostamento di bit. Il valore ottenuto viene memorizzato
//nel vettore
Spectrum[Band] = (analogRead(spectrumAnalog) + analogRead(spectrumAnalog) ) >>1;

//invio un impulso al pin strobe per passare al filtro successivo
digitalWrite(spectrumStrobe,HIGH);
digitalWrite(spectrumStrobe,LOW);
}

//una volta effettuata la memorizzazione dei dati
//nel vettore, creo un altro ciclo for
//per rappresentare gli stessi tramite led

for (byte Ciclo = 1; Ciclo < 5; Ciclo++)
{

if(Ciclo==2) //per fare in modo da saltare il pin 4, e passare al pin 5
Ciclo=Ciclo+1;
//recupero il valore memorizzato nel vettore
//traslo il valore intero in un byte
byte x = map(Spectrum[Ciclo], 0, 1023, 0, 255);
int R,G,B;
R=map(Spectrum[6],0,1023,0,254);
G=map(Spectrum[3],0,1023,0,254);
B=map(Spectrum[1],0,1023,0,254);
//se il valore supera una soglia accendi il led
//altrimenti spegnilo
if( x > 120 )
{
if(Ciclo+2==5)
{
analogWrite(Ciclo+2,G);
delay(10); //delay necessario per far funzionare i led a dovere
}
if(Ciclo+2==3)
{
analogWrite(Ciclo+2,R);
delay(10);  //delay necessario per far funzionare i led a dovere
}
if(Ciclo+2==6)
{
analogWrite(Ciclo+2,B);
delay(10); //delay necessario per far funzionare i led a dovere
}

}
else
digitalWrite(Ciclo + 2, LOW);
}
}

 

Infinity mirror - vu meter

Infinity mirror – vu meter

Infinity mirror - vu meter // shield

Infinity mirror – vu meter // shield RGB e spectrum con arduino

Infinity mirror - vu meter

Infinity mirror – vu meter

Infinity mirror - vu meter

Infinity mirror – vu meter // spectrum shield

Infinity mirror - vu meter

Infinity mirror – vu meter // shield RGB

Filtri: -passa alto -passa banda -passa basso

Filtri:
-passa alto
-passa banda
-passa basso

-Stefano Carraro