Arduino Robot Car Race – Arduino Day 2017

Per l’Arduino Day 2017 la community di ArduLab lancia il primo Arduino Robot Car Contest aperto a tutti – curiosi, smanettoni, appassionati, da 0 a 150 anni. Un’occasione imperdibile per:

1) divertirti
2) conoscere persone nuove, che condividono la tua passione per Arduino (o anche no)
3) conoscere la community ArduLab e il TalentLab
4) avvicinarti al mondo delle schede elettroniche più versatili e utilizzate al mondo
5) tentare di vincere i fa-vo-lo-si premi in palio.

Dove & Quando

Il contest si svolgerà sabato 1 aprile 2017 dalle 16.00 in poi. Il punto di ritrovo sarà al Talent-Lab in via Monselice 15/A a Padova (zona Mandria), poi: 

  • se la giornata lo permette, la gara si svolgerà al pistodromo della Civitas Vitae in modalità “gara tutti contro tutto”. Nel caso il numero di partecipanti sia troppo elevato, si faranno più corse a gruppi.
  • in caso di brutto tempo, si svolgerà sotto il portico del TalentLab o al Palazzetto dello sport della Civitas Vitae, a seconda del numero di partecipanti.

Le regole del gioco (poche ma buone)

  1. La Robot Car deve essere pilotata con una scheda Arduino qualsiasi.
  2. La Robot Car dev’essere radiocomandata, con qualsiasi tecnologia.
  3. La Robot Car non deve superare le dimensioni 400mmx300mmx200mm
  4. La Robot Car può essere alimentata al massimo fino a 12V.

Come realizzare la Robot Car vincente

Per partecipare al contest, l’avrai capito, ti serve una Robot Car, e te ne serve una vincente. Se non sai da che parte cominciare per costruirne una ma ormai hai deciso che non puoi mancare all’evento dell’anno hai due possibilità:
1) puoi seguire il nostro infallibile e dettagliatissimo tutorial
2) se hai letto le prime tre righe e non hai capito nulla puoi partecipare agli incontri gratuiti riservati agli iscritti al contest in programma al TalentLab il 18 e 25 Marzo, dalle 15:00 alle 19:00. Per iscriverti agli incontri manda un’email ad Andrea Giusti andrea.giusti@talent-lab.it. Ti basterà un portatile con qualsiasi sistema operativo (il materiale è invece incluso nel prezzo del biglietto) e, con l’aiuto di Andrea Giusti, Gherardo Canale e Graziano Ferro potrai costruire il tuo bolide! 

Cosa si vince

  • Primo posto: Walker Robot Kit (per chi non lo sapesse, un robot che cammina)
  • Secondo posto: Shield Arduino prestigiosa
  • Terzo posto: Lezione privata di Arduino della durata di 5 ore con Andrea Giusti

Che dici? Non vale la pena tentare?

 

 

 

Come costruire la propria Robot Car con Arduino

La community Ardulab si prepara all’Arduino Day 2017 che si terrà quest’anno il 1 Aprile 2017 presso il TalentLab di Padova. Puoi trovare tutti i dettagli qui per partecipare!
Quest’anno, oltre ai mitici Talk mattutini, esposizioni e workshop pomeridiani, abbiamo lanciato la prima edizione del “Robot Car Contest”, una gara di macchine radiocomandate con Arduino.
Con queste premesse, ci è sembrato fondamentale dare la possibilità a chiunque di potersi costruire la propria Robot Car in vista dell’evento.
Nel caso vogliate venire ai nostri due incontri gratuiti per montare assieme la Robot Car, tutte le informazioni sono qui.

Partiamo con il nostro progetto!
Materiale necessario:

Tipicamente le Robot Car che si trovano in rete sono molto simili tra loro. Nel video qui sotto ne prendiamo in esame una con due motori e un pattino.

 

Dopo aver costruito la Robot Car, passiamo al circuito:

Circuito Robot Car con Bluetooth

I due transistor serviranno per pilotare i motori DC tramite Arduino. I transistor permettono di usare le piccoli correnti di Arduino per pilotare correnti molto grandi. Immaginiamo infatti il transistor come un rubinetto. Noi con la nostra mano possiamo alzare sempre di più la manopola e l’acqua comincia a scorrere sempre di più.

E’ molto importante collegare ai transistor i pin di Arduino con la tilde. Questi possono generare segnali analogici tramite la tecnica del PWM. Per sapere cosa significa, ecco un video!
Per sapere come funziona la breadboard nel dettaglio, clicca qui.

Nota 1: Se i motori girano in versi opposti, basterà prendere un singolo motore e invertire la polarità, cioè scambiare i collegamenti del cavo nero e rosso.

Nota 2: il connettore del vano batterie va collegato direttamente all’Arduino. Questo permette al pin Vin di Arduino di avere la corrente necessaria per far funzionare i motori della Robot Car!

Un esempio di connettore per Arduino

Colleghiamo l’Arduino con il cavo USB al portatile e avviamo l’Arduino IDE.
Copiamo e incolliamo il seguente sketch:

Controllare sempre che la Porta della scheda sia selezionata correttamente su Strumenti -> Porta. Dopodichè premere il pulsante “Carica” per caricare lo sketch in Arduino.

E’ quasi tutto pronto, non vi resta che prendere il vostro Smartphone Android e aprire ArduinoRC.
Importante! Attivate il Bluetooth prima di avviare l’applicazione.
La prima cosa da fare è premere su “Proceed” e selezionare il vostro modulo Bluetooth HC-05. Il pin di default è in genere 1234.

Schermata di selezione Modulo Bluetooth

Se tutto è andato a buon fine, dovremmo trovarci nella seguente schermata. Questi sono le possibili interfacce grafiche per poter inviare dei comandi al nostro Arduino tramite il Bluetooth. prendiamo ad esempio il Controller Mode.

Interfacce grafiche di ArduinoRC

E’ possibile assegnare a ciascuno tasto, un carattere da inviare. Nel nostro programma abbiamo configurato i seguenti comandi:

  • Carattere “f” : avanti
  • Carattere “l” : sinistra
  • Carattere “r” : destra
  • In tutti gli altri, fermo.

Dunque, andare nelle impostazioni e premere su “Set Commands”.
Assegnare alle varie frecce, le direzioni con i caratteri, quindi ad esempio, la freccia su avrà il carattere “f”, il tasto destro il carattere “r” e così via…

Impostare i caratteri da inviare

Non ci resta che provare la nostra Robot Car.
Scollegate il vostro arduino dal computer e collegate il vano batterie.
Siete pronti per la gara!

Come pilotare un motore passo-passo con Arduino

I motori sono senza dubbio delle macchine interessanti, perché permettono di muovere oggetti inizialmente fermi e non più utili di un ferma porta.
Proviamo a pensare un’automobile telecomandata, al cancello automatico di casa, alle nostre bellissime stampanti 3D, ai piccoli robot e così via.
E’ davvero un mondo affascinante ma… Davvero molto ampio!

Nei nostri corsi base, trattiamo per lo più i motori Servo, perchè questi si prestano ad essere molto versatili come utilizzo hobbistico.
Arduino IDE offre già una libreria per gestirli ed é comodo pilotarli. Il loro limite sono purtroppo la velocità non regolabile, il posizionamento troppo impreciso e una coppia troppo bassa per poter sollevare ad esempio una gamba d’acciaio.

Per risolvere queste rogne, una valida alternativa sono i motori passo-passo.

I motori passo-passo (o Stepper Motor) sono i motori più usati nell’automazione industriale. Sono ottimi per il posizionamento e per decidere una velocità non troppo elevata.
C’è molta confusione in merito alle varie tipologie disponibili e in questa guida vorrei riassumerli in maniera semplice ma esaustiva.

motore_passopasso

Dentro il nostro motore passo-passo troviamo 2 bobine (polo positivo e negativo), cioé delle spire di metallo che assorbono corrente come delle grosse resistenze che generano un campo elettromagnetico; queste formano il cosiddetto statore (la parte ferma) e l’albero al centro é il rotore (la parte che ruota).
In base a come vengono alimentate le bobine, il motore effettua una rotazione di tot gradi definiti, chiamata passo; da qui il nome del motore.
E’ facile comprendere che, un passo forma tot gradi e per effettuare un giro completo avrò bisogno di un certo numero di passi!
Ma quanti sono questi passi? E quant’è un passo in gradi? Dipende dal motore che avete acquistato! 😀

A loro volta, i motori passo-passo si dividono in due famiglie: unipolari e bipolari.

Gli unipolari hanno una massa comune e un numero di cavi dispari. Semplicemente basterà dare corrente in maniera alternata, anche per quanto riguarda il verso di rotazione.

I bipolari richiedono che ogni bobina sia alimentata per conto proprio, hanno bisogno di integrati in grado di invertire la corrente per il verso di rotazione (chiamati H-Bridge).

Entrambi i tipi hanno vantaggi e svantaggi. I più utilizzati sono i bipolari, soprattutto per le stampanti 3D.

Esistono motori passo-passo con un numero di cavi superiori a 5, ma la logica é sempre la stessa e la differenza é il poter percorrere passi molto più piccoli.
Per riassumere:

  • I motori passo-passo compiono passi, i quali determinato una rotazione in gradi
  • Sono ottimi per posizionare e anche per la velocità se non andiamo troppo veloci
  • Per compiere un passo bisogna alimentare in maniera alternata e ordinata le bobine
  • Si dividono in unipolari e bipolari
  • Unipolari hanno massa comune e sono facili da pilotare, costano tanto e richiedono quindi una programmazione manuale
  • Bipolari hanno le bobine separate e bisogna alimentarle una alla volta. Per invertire il verso di rotazione serve un integrato chiamato H-Bridge
  • In genere le bobine sono 2

I passi del motore vengono suddivisi in Microstepping (passo molto piccolo), Half-Step (mezzo passo), Full Step in una fase (passo normale), Full Step in due fasi (quindi un passo normale più veloce). Per saperne di più, in questo link trovate delle spiegazioni più esaustive.

La libreria Stepper di Arduino, ci aiuta a comandare all’incirca tutti motori passo-passo. Nei kit si trova spesso questo tipo di motore:

Kit del motore passo-passo per Arduino

Kit del motore passo-passo per Arduino

Si tratta del motore bipolare 28BYJ-48. Montiamo subito il nostro circuito.

Circuito Motore passo-passo 28BYJ-48

Circuito Motore passo-passo
28BYJ-48

Il codice lo prendiamo dal nostro Arduino IDE su File->Esempi->Stepper->Stepper_oneStepAtTime.
Nota: i pin sono configurati esattamente come in figura.

Invito a leggere la documentazione riguardo la libreria Stepper ufficiale.
Nel caso di un Motore Unipolare la faccenda si complica un po’. Serve obbligatoriamente un integrato chiamato ULN2003 (o ULN2004) e il circuito é questo:

Motore passo-passo Unipolare generico

Motore passo-passo Unipolare generico

Ho preferito utilizzare un’alimentazione esterna per non complicare troppo il circuito.
La buona notizia é che il codice non cambia rispetto a prima! Fantastico! 🙂
Per oggi é tutto, ci sentiamo alla prossima!

S4A – Incontro di Scratch For Arduino

Il 23 Settembre 2016 ci siamo trovati con la Community Ardulab per imparare e sperimentare alcuni semplici progetti con Arduino, ma in maniera differente dal solito.
Infatti non abbiamo usato il solito Arduino IDE, bensì il famoso programma visuale Scratch (S4A).
Scratch é un linguaggio di programmazione per la didattica che si basa sulla teoria dell’apprendimento chiamata costruzionismo.

In poche parole, si tratta di un linguaggio completamente logico e rigido nella sintassi perché puramente grafico con Drag & Drop (prendi e trascina col mouse), così da poter accantonare quell’aspetto orribile e snervante del compilatore, dove se sbagli un punto e virgola o una parentesi, il nostro programma non potrebbe mai funzionare.

Scratch 4 Arduino immagine

Primo esempio di S4A

 

S4A (Scratch For Arduino) é una versione alternativa di Scratch, dedicata ad Arduino, ma mantiene esattamente la stessa filosofia semplice, divertente e veloce!
S4A esiste per tutti i sistemi operativi é facile da installare e provare fin da subito.

La pagina ufficiale é la seguente : http://s4a.cat/
Il link per la presentazione vista all’incontro: https://goo.gl/IHK3nM

Arduino Standalone ATmega328: come costruire un circuito con il solo microcontrollore di Arduino

Spesso e bene, al termine della protipazione dei nostri progetti, ci possiamo trovare nella spiacevole situazione in cui lo spazio é limitato, pertanto la nostra scheda Arduino completa di connettore USB, microprocessore e tutte le porte, risulta troppo ingombrante. Non c’é qualche modo per risolvere il problema in modo elegante? Fortunatamente, la risposta é sì: possiamo ricostruire il progetto usando soltanto il microprocessore ATmega328 e pochi altri componenti. Vediamo come.

In questa guida vedremo quindi come sostituire a tutta la scheda di Arduino opportunamente programmata ai fini del nostro progetto, con un set limitato di componenti – cioe’ il microcontrollore ATmega328 – il dispositivo elettronico che e’ in grado di gestire segnali di ingresso e di uscita e possiede al suo interno un’intelligenza programmata da noi. Questa procedura può essere seguita avendo una qualsiasi scheda Arduino, anche compatibile, con socket – cioè dotata del connettore a incastro che permette la sostituzione del microcontrollore in caso di guasto (vedi riquadro rosso nella figura di seguito).

ArduinoUno_R3

Arduino UNO con microcontrollore ATmega328p e socket

Quando carichiamo il nostro Sketch dall’Arduino IDE, stiamo a tutti gli effetti programmando il microprocessore, e questo non ha assolutamente bisogno di funzionare insieme all’intera scheda che lo circonda.
A cosa serve tutto il resto allora? A semplificarci la vita. Infatti se non ci fosse tutta la circuiteria non potremmo:

  • Lavorare con la seriale per fare debug.
  • Usare alimentazioni superiori ai 5V.
  • Caricare i nostri sketch.

Una volta però che il microcontrollore è stato programmato e il nostro progetto funziona, possiamo staccare il micro dalla scheda e usarlo in maniera indipendente assieme a pochi altri componenti necessari a farlo funzionare. Il primo passo è rimuoverlo usando un cacciavite a taglio o meglio ancora delle pinzette – facendo molta attenzione, visto che i piedini potrebbero storcersi.

Atmega328p sciolto

Microcontrollore ATmega328p

Per capire che piedino fa cosa, ecco uno schema, il cui verso puo’ essere indentificato dalla mezza fossetta posizionato in alto sul micro.

F2SFHSDH3Z3V3P4.MEDIUM

Mappa dei pin ATmega328p

Come abbiamo fatto notare prima, mancano ovviamente la Vin e la porta USB per comunicare. L’MCU si attiva a 5V (con massimo assorbimento 200mA come da datasheet). Se poi capita che il nostro circuito abbia bisogno di una tensione diversa da 5V (i.e. una tensione maggior per pilotare dei motori, ad esempio), dovremmo usare un componente aggiuntivo per generare dalla tensione piu’ alta anche i 5V necessari all’MCU per funzionare. Per questo esperimento specifico potrebbe non servire, ma é bene mettere per sicurezza anche l’oscillatore al quarzo.

Ora che abbiamo capito dove vogliamo arrivare, tuffiamoci nel progetto d’esempio per capire in quale modo sia possibile generare un circuito equivalente!

Progetto d’esempio

Vogliamo realizzare un circuito per controllare la velocità di rotazione di un motore tramite potenziometro. Il motore è alimentato DC a 12V e pilotato da un transistor MOSFET. Ecco il fritzing con la vista breadboard:

Circuito con la scheda di Arduino

Il codice è il seguente:

Testato il circuito e verificato la sua funzionalità, lo scopo è replicarlo usando solamente l’MCU. Osserviamo il risultato e poi commentiamo:
microservo_bb
Il connettore in alto a sinistra porta l’alimentazione a 12V. I 12V vengono usati direttamente per alimentare il motore DC tramite il MOSFET. Un regolatore di tensione (denominato nella figura come LM7805) riceve in ingresso i 12V e genera i 5V per il microprocessore all’uscita. Due condensatori elettrolitici sarebbero consigliati all’ingresso e all’uscita del regolatore per filtrare e pulire l’alimentazione: qui sono omessi per semplicità.

Veniamo alla configurazione del microprocessore. Oltre all’MCU vera e propria, ci serve un cristallo da 16MHz, che forma un risuonatore con i due condensatori arancioni da 22pF. Il cristallo e’ attaccato a cavallo dei pin 9 e 10. Il condensatore blu, invece, è collegato tra l’alimentazione dell’MCU (pin 7) e la massa (pin 8) e serve per filtrare l’alimentazione del microprocessore stesso (viene chiamato condensatore di bypass). Il pin 1 va collegato ai 5V tramite una resistenza di pull up da 10k per disabilitare il reset al microprocessore.

In sostanza, quando dobbiamo riportare uno schema da Arduino in maniera equivalente al solo microcontrollore, sono necessari i seguenti accorgimenti:

  • Se la fonte di alimentazione é unica (12V) ma ne servono diverse per il progetto (e.g. 12V per motore e 5V per MCU), bisogna adottare uno o più regolatori di tensione
  • Aggiungere un condensatore di bypass all’alimentazione del microcontrollore
  • Acquistare un cristallo da 16MHz e due capacita’ da 22pF e collegarle opportunamente
  • Guardare il datasheet del microcontrollore e collegare i pin relativi alla componentistica del progetto in maniera identica

Chiaramente, se avete sbagliato qualcosa nel codice, non essendoci modo di programmare da solo il vostro microcontrollore, dovrete reinserirlo nella vostra scheda di Arduino e rifare tutto il procedimento. Quindi testate al meglio il vostro programma con tutta la scheda Arduino prima di estrarre il microprocessore!

Arduino Genuino Day 2016

arduino day 2016

La community di Ardulab é lieta di annunciare che Sabato 2 Aprille 2016 avrà luogo al TalentLab il grandissimo evento Arduino Genuino Day 2016 insieme al Sessantesimo anniversario della Fondazione OIC Onlus. Non per nulla il tema di quest’anno é La tecnologia al servizio della comunità delle persone fragili”. Una giornata ricca di presentazioni, innovazione e soprattutto divertimento che ha come tema principale la grande famiglia Arduino creatasi in tutti questi anni.

Si inizierà alla mattina con degli Scenari con soci ed esperti del settore della tecnologia per poi sfumare al pomeriggio con l’Arduino Teamwork, un momento dove tutti possono interagire con la Community di Ardulab e non solo, creando progetti anche semplici, adatti a chiunque, anche solo per i curiosi, con Arduino e in tutte le sue forme.

Il programma dell’evento : https://ardulab.it/day2016/

Cosa aspetti? Registrati gratuitamente all’evento cliccando qui.
Vi aspettiamo in tantissimi!

 

Un sabato speciale con Arduino

Non è mai un sabato qualsiasi quando ci si trova, ci si diverte e si torna a casa avendo imparato qualcosa!

Se c’è una cosa certa, una caratteristica esclusiva ed eccezionale, è che Ardulab è un gruppo eterogeneo, intergenerazionale e spontaneo: avanti tutta con il braccio robotico e alla prossima!

Demultiplexer: come espandere le porte PWM di Arduino

Arduino UNO è senza dubbio capace di grandi cose, può gestire segnali analogici e digitali, sia in Input che in Output ma la quantità di ingressi e uscite è limitata, e non è mai abbastanza. 😉

Quindi sorge spontanea una domanda molto intelligente fatta spesso da parte di chi frequenta i nostri corsi di Arduino:

Come posso avere più porte analogiche o digitali in ingresso o in uscita con Arduino UNO? E nello specifico, come posso pilotare una marea di LED usando un solo Arduino?

Se la risposta “acquista una scheda Arduino più potente e più costosa, come l’Arduino Mega” non ci soddisfa, siamo incuranti del pericolo e vogliamo risparmiare (per comprare milioni di LED, appunto), questo articolo fa al caso nostro!

Immaginiamo di voler gestire 8 Diodi LED, cambiando la loro luminosità. Il nostro Arduino UNO non é in grado di gestire 8 uscite PWM, poiché ne possiede solamente 6 (azz…) e ora?

In Elettronica esiste un integrato (in gergo un circuito integrato è tipicamente una specie di ragnetto piccolo dotato di un package da cui escono ingressi e uscite) chiamato Demultiplexer (DEMUX), il quale fa un mestiere molto semplice: prende un ingresso E e lo collega ad una delle 4 uscite sulla destra a seconda della parola digitale che c’è nei due ingressi in basso.

Il suo inverso é il Multiplexer (MUX) che converte tanti ingressi in un’unica uscita. Questa configurazione può risultare utile nel momento in cui si debbano ottenere molti segnali analogici in ingresso (quindi basterà un singolo pin Analog per gestire tutti gli ingressi!).

In questo articolo useremo un Demultiplexer a 8 canali (uscite a dx nella figura sopra) per gestire 8 Diodi LED con solamente 3 pin digitali (gli ingressi in basso nella figura sopra) e 1 pin PWM (l’ingresso a sx nella figura sopra).

La logica é semplice. Avendo a disposizione 3 pin digitali, ciascuno dei quali può assumere valori LOW e HIGH, le possibili combinazioni sono 2^3 = 8, pertanto con soli 3 ingressi riusciremo a gestire ben 8 uscite!

Per questo progetto ho usato l’integrato CD74HC4051E. Il datasheet lo si può trovare qui.

Il Fritzing é questo:

demultiplexer_bb

Sono stati usati i pin 7,8 e 12 come selettori e il pin 3 come pin di ingresso PWM comune.

Per selezionare un singolo LED serve impostare una combinazione di selettori appropriata.

Screenshot

Nota bene: il pin PWM é indipendente dalla selezione del LED. Infatti lui genera una tensione che sarà applicata al LED corrispondentemente scelto tramite i selettori!

Lo sketch di prova:

Il principale svantaggio dell’utilizzo di un Demultiplexer é l’asincronia di commutazione. Le uscite vengono selezionate in maniera consecutiva ed esclusiva, questo significa che una volta cambiata un’uscita tramite i selettori, le altre uscite del demultiplexer vengono collegate a massa, perdendo la loro tensione. Questo effetto é decisamente poco notabile se stiamo trattando dei LED, ma in progetti più elaborati, come il pilotoaggio di motori Servo, é più evidente.

Per risolvere questo problema, in parte, si possono percorrere due strade: o si ottimizza il codice, rendendo le commutazioni più veloci, oppure si utilizza un Demultiplexer con DC Switching maggiore (corrente che determina il tempo di commutazione).

Chi siamo

Non c'è nulla di più bello che divertirsi all'insegna della creatività e della condivisione. L'Ardulab è una community di appassionati di Arduino nata all'interno del Talent-Lab ma aperta a tutti. I fini sono divertirsi, imparare e condividere quello che si sa con gli altri. Ardulab offre corsi, workshop, eventi e un luogo dove poter portare avanti i tuoi progetti in totale libertà. Buon divertimento!