Archivi autore: admin

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.

Tecnica del pomodoro con un orologio Casio da pochi euro

Durante i Webinar che ho svolto negli scorsi mesi per Tecnica della Scuola, mi sono occupato anche di tecniche di gestione del tempo studio e lavoro e nelle scorse settimane via mail alcuni colleghi mi hanno chiesto qualche suggerimento su modalità semplici per gestire il timing della tecnica del pomodoro.

Smartphone, Smartwatch…. SmartQualcosa… abbondano i sistemi per gestire progetti e tempi di lavoro, in realtà il sistema che adotto dipende da luogo in cui mi trovo e dagli oggetti che uso.

Quando sono seduto davanti al mio Mac od uso l’iPhone prediligo Be Focused Pro estremamente pratica e semplice da utilizzare, tra le funzioni che apprezzo di più il report dei “pomodori”.

Molto spesso però utilizzo anche altre strategie molto meno digitali non ultima quella che ho proposto qualche tempo fa in cui utilizzo mattoncini Lego, una soluzione che ben si adatta all’utilizzo con gli studenti più piccoli.

Come sapete per usare la tecnica del pomodoro è sufficiente un timer, anche meccanico, carta e penna. Usare il cellulare è comodo ma in diverse occasioni diventa poco pratico, ad esempio se state svolgendo un’attività manuale.

Ho quindi pensato di aggiungere al set di strumenti anche un orologio da polso.

Caratteristiche cercate:

  • economico
  • robusto
  • subacqueo
  • dotato di almeno 3 timer

La mia scelta è stata: Casio H5AE-1300WH-8AV acquistato qualche tempo fa per circa € 30 su Amazon.

I 9 timer programmabili sono più che sufficienti per applicare la tecnica del pomodoro, inoltre l’essere impermeabile fino a 100 m lo rendono compagno ideale durante le immersioni insieme al computer che porto al polso.

A questo punto mi direte: “è come mantieni traccia con un orologio del numero di pomodori necessari per svolgere il compito?

I 9 timer disponibili sono programmabili in durata, pertanto con 9 timer posso impostare 4 pomodori da 25 min, 4 intervalli da 5 min ed un intervallo lungo da 15 min.

Di seguito un estratto del manuale:

Vi allego le schermate per impostare i 9 timer ed il link al PDF del manuale sintetico.

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 🙂

Scratch 3.0 e BBC micro:bit installazione e primi test

Quando avevo annunciato su queste pagine il 16 luglio scorso il futuro supporto di micro:bit da parte di Scratch 3.0 la funzionalità non era ancora disponibile, finalmente da qualche giorno questa possibilità è stata resa disponibile ed ora possiamo incominciare a sperimentare.

L’utilizzo di micro:bit con Scratch 3.0 richiede pochissimi passi, di seguito trovate le schermate che ne dettagliano l’installazione ed un paio utilizzo.

Aggiungiamo l’estensione micro:bit:

Selezionate micro:bit

Per consentire il collegamento con Scratch 3.0 è indispensabile installare “Scratch Link” per poterlo prelevare un click sul punto interrogativo “?” (o fate click sul link che vi ho indicato), si aprirà un’altra pagina che vi guiderà passo passo all’installazione:

Pagina di aiuto che trovate direttamente a questo link:

Ricordate che dovete:

Connettere il micro:bit

Scaricare e scompattare il file: scratch-microbit-1.0.hex.zip

Copiare il file .hex all’interno del micro:bit

Avviate Scratch Link:

Scratch Link attiverà un pannello di controllo:

Un click sulla voce di menù Scratch Link mostrerà l’indirizzo di collegamento e la versione:

Selezionando nuovamente l’icona di aggiunta libreria apparirà il pannello di collegamento al micro:bit, fate click sul pulsante “collega”

Avrete notifica dell’avvenuto collegamento, premete “Torna all’Editor” per proseguire con  la programmazione:

La percezione dell’avvenuto collegamento si vedrà anche sul display del micro:bit su cui comparirà il nome assegnato alla vostra scheda, nel mio caso “zuvop”:

Trascinate nell’area di programmazione il blocco:  “mostra Ciao! su display” ed ogni volta che farete click sul blocco visualizzerete il testo sul display:

La realizzazione di un programma che reagisce alla pressione dei pulsanti A e B è estremamente semplice:

Nell’attesa che giungano nuove funzionalità vi auguro…

Buon Coding e Buon inizio di Anno Scolastico 🙂

TinyTrak:bit – un cingolato con il cuore di un micro:bit

Idee che nascono sotto l’ombrellone 🙂

Qualche mese fa parlavo con l’amica e collega Maria Grazia Berardo dell’IIS Vallauri: “Michele se ti chiedessi di progettare un robot con gli allievi che tipologia realizzeresti?”

Io: “sicuramente un cingolato”

Maria Grazia: “ecco come tutti i ragazzi preferite i cingoli! 🙂 ma da cosa dipende?”

Io: “… banalmente dal fatto che da bambino sognavo di guidare un escavatore o un trattore cingolato… e poi posso andare ovunque… ed il rumore del motore… sinfonia 😊… ma in ogni caso dipende dal contesto e dalla gara robotica”

Maria Grazia: “ma sai che nel decidere con i miei allievi quale tipo di robot costruire per le varie gare robotiche quasi tutti i ragazzi hanno optato per un cingolato… sarà come per te qualcosa che nasce dall’infanzia 😀”

E per non smentirmi era da tempo che desideravo mettere i cingoli al DotBot:bit e surfando senza meta sul web sono giunto al gruppo Facebook Tiny Trak – Micro FPV Crawler che mi ha colpito, potrete vedere molti piccoli cingolati con telecamera. Il progetto mi ha ricordato una chiacchierata fatta qualche hanno fa ad un JobOrienta con un artificiere della Polizia di Stato in cui si parlava di realizzazione di micro robot con telecamera a bassissimo costo di produzione da far transitare in tubazioni o spazi ristretti… al tempo le micro telecamere erano parecchio costose, i tempi sono cambiati e gli obiettivi pure… didattica e gioco 😊

Ulteriori risorse su questa tipologia di cingolati le potete trovare su Thingiverse trovate molte informazioni.

Facendo il mix tra i progetti trovati sul gruppo Tiny Track e quanto già fatto per DotBot:bit ho realizzato velocemente il primo prototipo del piccolo cingolato. Per velocizzare la produzione ho utilizzato un cingolo Lego e modificato strutture già realizzati da altri.
Renderò disponibile tutto nei prossimi giorni, voglio solamente ottimizzare i supporti che reggono il micro:bit, bilanciare il tutto e costruire qualche piccolo esempio di programmazione.

Nel caso abbiate suggerimenti/necessità utili per le sperimentazioni che desiderate fare con i vostri allievi volentieri accetto suggerimenti.

Buon Coding a tutti.