Archivi categoria: arduino

DotBot:Smart – un robot didattico veloce da costruire

Durante alcuni corsi di Coding e robotica per colleghi di scuola media mi è stato manifestato il desiderio di poter avere a disposizione un kit robotico estremamente semplice da realizzare poco costoso e che occupasse poco spazio, che potesse adattarsi, come sempre, a microcontrollori di ogni tipo, soprattutto Arduino e micro:bit.

Esplorando per altri scopi il sito youmagine ho scoperto i moltissimi lavori realizzati da RCCM anche lui come me insegnante (vi consiglio di guardare i suoi lavori) ed ho notato il progetto Micro Servo Chassis, per cui sulla stessa idea ho realizzato una struttura simile ed inserito gli elementi di aggancio per i servomotori che avevo realizzato per il DotBot:bit.

Per ridurre la quantità di materiale ho eliminato, rispetto alle strutture precedentemente realizzate la caster ball, la biglia di supporto, che ho sostituito con una piccola bacchetta costituita da un punto di appoggio al terreno ricurvo, il tutto vincolato alla struttura portante dei motori.

Nel caso si debba aggiungere parecchia elettronica, per aumentare ancor di più la stabilità ho sviluppato una doppio supporto strisciante così come potete notare nelle immagini allegate.

Su questo piccolo chassis robotico potrete, secondo necessità ed in funzione di ciò che disponete, predisporre una base di appoggio come ad esempio: cartone, compensato o plexiglas fissata con viti o fascette di plastica.

Ecco giustificato il nome DotBot:Smart perché veloce da costruire, due elementi da stampare e poi Coding a volontà 🙂

Questo nuovo kit didattico si aggiunge alla famiglia DotBot.

Nel caso desiderate effettuare la stampa questo il link diretto di DotBot:Smart su Thingiverse.

Come sempre se durante le sperimentazioni con i vostri allievi si evidenziano correzioni o miglioramenti da fare, non esitate a contattarmi.

Di seguito le foto che mostrano come costruire il robot.

Materiali occorrenti

  • qualsiasi tipo di microcontrollore: micro:bit, Arduino, oppure Raspberry Pi (qualsiasi modello)
  • n. 2 bulloni M3 – viti da 10 mm
  • n. 2 FS90R servo a rotazione continua
  • n. 2 due ruote per FS90R 60mm x 8mm

La barra centrale deve avere un orientamento, rispetto ai servomotori, identico a quello indicato nell’immagine (notate l’albero di rotazione del servo). I servomotori sono fissati con piccole viti in dotazione quando acquistate i servo:

Le viti di blocco della barra centrale sono sotto il livello di appoggio della base in modo da non creare un rialzamento:

Scegliete il materiale di cui disponete, (nell’immagine cartone) e con del nastro biadesivo fissate breadboard ed elettronica:

Il fissaggio può avvenire mediante fascette di plastica:

Nel caso abbiate necessità di maggior superficie di appoggio e maggior stabilità potete utilizzare la barra centrale con doppio appoggio:

Buon Coding a tutti.

Arduino: Qual è la differenza tra Serial.write() e Serial.print() e quando vengono usati?

Ho già trattato l’argomento sull’uso di Serial.write() e Serial.print(), però durante le lezioni svolte agli studenti negli scorsi mesi ho aggiunto alle lezioni alcuni contenuti che vi condivido.

Differenza tra Serial.write() e Serial.print()

Serial.write()

La funzione scrive dati binari sulla porta seriale. I dati vengono inviati come byte o serie di byte. Nel caso si abbia la necessità di inviare i caratteri che rappresentano le cifre di un numero bisogna utilizzare la funzione Serial.print().

Serial.print()

Stampa i dati sulla porta seriale come testo ASCII leggibile dagli esseri umani.

Quindi se scriviamo:

Serial.write(0x45); // invia sulla seriale 0100 0101

Serial.print() è più versatile, farà per noi la conversione da ASCII a binario e può anche convertire in binario (BIN), esadecimale (HEX), ottale (OCT), decimale (DEC) ma bisogna specificare come secondo argomento la codifica:

Serial.print(67, BIN) resituisce "1000 0011"
Serial.print(67, OCT) resituisce "103"
Serial.print('M', DEC) resituisce "77"
Serial.print(67, HEX) resituisce "43"

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.println(67, BIN);   // resituisce "1000 0011"
  Serial.println(67, OCT);   // resituisce "103"
  Serial.println('M', DEC);  // resituisce "77"
  Serial.println(67, HEX);   // resituisce "43"
}

void loop() {

  // per ora nulla :-)

}

Altro esempio:

Serial.write(0x41);   // A
Serial.write(0x52);   // R
Serial.write(0x44);   // D
Serial.write(0x55);   // U
Serial.write(0x49);   // I
Serial.write(0x4E);   // N
Serial.write(0x4F);   // O

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.write(0x41);   // A
  Serial.write(0x52);   // R
  Serial.write(0x44);   // D
  Serial.write(0x55);   // U
  Serial.write(0x49);   // I
  Serial.write(0x4E);   // N
  Serial.write(0x4F);   // O
}

void loop() {

  // per ora nulla :-)

}

In modo più rapido con la Serial.print() si ottiene il medesimo risultato:

Serial.print("ARDUINO");

Questo il codice di test:

void setup() {
  Serial.begin(9600);

  Serial.print("ARDUINO");
}

void loop() {

  // per ora nulla :-)

}

Serial.println() aggiungerà 2 byte di fine riga 0x0D e 0x0A:

Serial.println("ARDUINO");

che permette la stampa del contenuto tra virgolette con l’aggiunta di una nuova linea. Per mostrare l’inserimento di una nuova linea, aggiungiamo la stampa del carattere “-“:

void setup() {
  Serial.begin(9600);

  Serial.println("ARDUINO");
  Serial.print("-");
}

void loop() {

  // per ora nulla :-)

}

Stesso risultate si ottiene se aggiungiamo manualmente con una Serial.write() i caratteri di fine riga: 0x0D e 0x0A:

void setup() {
  Serial.begin(9600);

  Serial.print("ARDUINO");
  Serial.write(0x0D);
  Serial.write(0x0A);
  Serial.print("-");
}

void loop() {

  // per ora nulla :-)

}

Provo a chiarire l’utilizzo della Serial.write con la trasmissione di numeri sulla seriale.

Supponiamo di dover inviare sulla seriale il numero 243. La rappresentazione binaria (in 1 e 0) di questo numero è 1111 0011. L’uso del comando Serial.write(243) invierà letteralmente solo 1111 0011. La rappresentazione esadecimale dello stesso numero è 0xF3 e il comando Serial.write(0xF3) invierà la stessa cosa: 1111 0011.

Se dovessimo usare il comando Serial.write(“243”) si avrebbe:

00110010 00110100 00110011

Cosa che può apparire molto strana.

Quando una stringa viene passata come argomento viene suddivisa in singoli caratteri, convertita in ASCII e quindi inviata come byte per ogni carattere.

Si otterrebbe lo stesso risultato se si dovesse usare quanto segue:

Serial.write(50);
Serial.write(52);
Serial.write(51);

In binario: 00110010 00110100 00110011

Vediamo ora cosa succede con la Serial.print().

I comandi Serial.print(243) o Serial.print (“243”) stamperanno entrambi la stessa cosa: 00110010 00110100 00110011. Questo perché il comando print prima converte qualsiasi numero in una rappresentazione di stringa e poi usa il comando Serial.write() per inviare ogni carattere come singoli bit ASCII.

Buon coding a tutti 🙂

Starter kit delle competenze digitali 4′ edizione


Ultimo webinar per Tecnica della Scuola prima di concedersi un periodo di riposo 🙂 Lo Starter kit delle competenze digitali giunge alla 4′ edizione, un percorso formativo sempre molto apprezzato che in quest’ultima edizione si arricchisce di ulteriori suggerimenti soprattutto per quanto riguarda il Coding. Tra settembre ed ottobre ripartiranno nuovi webinar e per tale occasione sto riformulando tutte le proposte con nuovi contenuti non ultimo l’espansione dello Starter kit. Più volte mi viene chiesto di proporre percorsi di didattica della robotica con diverse tecnologie: Arduino, BBC micro:bit, Raspberry Pi e ultimamente anche con Lego Mindstorms EV3 pertanto ci saranno corsi di Coding con queste specifiche tecnologie.

Nel prossimo corso dello Starter kit mostrerò come affrontare attività di Coding con la robotica, fornirò linee guida e riferimenti tecnologici, ovviamente partendo da un livello accessibile per tutti.

Date del corso:

  • Giovedì 12 luglio 2018 – dalle ore 17.00 alle 19.00
  • Lunedì 16 luglio 2018 – dalle ore 17.00 alle 19.00
  • Mercoledì 18 luglio 2018 – dalle ore 17.00 alle 19.00

Per maggiori informazioni sui contenuti del corso e sulle modalità di iscrizione vi rimando alla pagina specifica del sito di Tecnica della Scuola.

Grazie 🙂

Nome in codice DotBot Bubble

Obiettivo di quest’ultima versione: tondeggiante, veloce da costruire, trasportabile, economicamente accessibile per le scuole, multipiattaforma: #Arduino (UNO e Nano), #Raspberry Pi (3, 2, Zero), #microbit, #STM32F401 #Nucleo-64 e visto che lo avevo promesso ad una persona durante la scorsa Maker Faire di Roma anche #UDOO #NEO. Per ogni piattaforma ho disegnato un tutorial per realizzare un robot segui linea, evita ostacoli e altre tipologie di interazioni in cantiere. La struttura avrà, in una successiva versione, un involucro trasparente per proteggere i circuiti elettronici aggiungerò inoltre  elementi che permetteranno personalizzazioni estetiche.
Sto ancora studiando l’alimentazione più efficace, ho sperimentato con Li-Po però per alleggerire la struttura sto pensato a delle batterie Li-Ion che sperimenterò nella prossima settimana, per la versione preliminare 6 batterie AA da 1,5 V.

I sorgenti grafici per la stampa 3D per realizzarlo?
Entro qualche settimana,

perché?

Sto verificando l’efficacia della struttura meccanica e del software e della didattica, nel corso che si svolge presso l’IIS Vallauri di Fossano: ITS “Tecnico Superiore per l’Automazione e l’Innovazione di Processi e Prodotti Meccanici” – ITS VI (2016-2018), 2^ annualità (studenti neodiplomati) per cui sto svolgendo il corso: Microcontrollori.

Inoltre sperimenterò l’utilizzo con un nutrito gruppo di insegnanti durante il laboratorio: “La robotica tra i banchi di scuola: da BBC micro:bit ad Arduino”, attività che si svolgerà in occasione dell’evento organizzato dall’USR Piemonte: “La scuola europea del domani: le nuove tecnologie e i nuovi spazi di apprendimento ” venerdì 18 maggio 2018 presso l’Aula Magna LC M. d’Azeglio – via Parini 8 – Torino.

Spero poter regalare questa nuova piattaforma robotica al più presto in modo che possa essere usata da chi vorrà dal prossimo anno scolastico in attività di #Coding e #robotica

Buon Coding a tutti 🙂

Un’anteprima di alcuni dettagli del kit

 

Programmare micro:bit con l’IDE Arduino

Come avrete notato in questi mesi sto sperimentando molto con micro:bit, però sul mio computer è sempre aperto l’IDE di Arduino per progetti in corso per i miei studenti, ovviamente mi sono chiesto se possibile programmare micro:bit con l’IDE Arduino e certamente questo è possibile.

Qualche settimana fa ho raccolto un po’ di informazioni da questi tre link:

da queste risorse sto prendendo spunto per realizzare un manuale più corposo in cui mostro come utilizzare diversi microcontrollori con l’IDE Arduino, così come fatto qualche settimana fa su questo sito con l’uso dell’STM 32 Nucleo con l’IDE di Arduino

Lascio a voi le sperimentazioni.

Qualche Avvertenze

Nel caso voi abbiate usato in precedenza MicroPython il software di gestione della Bluetooth viene cancellato, l’IDE Arduino assume la parte di gestione sia installata, pertanto per per poterla installare potete operare in due modi:

  • scaricate il file microbit-bluetooth.hex (il file che scaricate è compresso) e tramite il JavaScript Blocks Editor installatelo
  • Usate il Library Manager di Arduino e procedete come segue:

Sketch -> Include Library -> Manage Libraries…

Scrivete BLEPeripheral dentro il campo di ricerca

Selezionate la riga in cui compare BLEPeripheral e fate click sul pulsante Install.

Per i successivi passi seguite quanto specificato nei link ad inizio post, quello che vi consiglio perché semplice ed intuitivo è Micro:bit with Arduino di Adafruit.

Buona sperimentazione a tutti 🙂