ROB-O-COD… tanto tempo fa era un LegoDuino

Mi è stato chiesto qualche giorno fa quale piattaforma fosse stata scelta per la realizzazione dei Robot per le gara per la trasmissione ROB-O-COD.

La scelta è stata attentamente valutata, anche con sperimentazioni pratiche che mi hanno coinvolto in prima persona.

Nel “brodo primordiale delle idee” 🙂 circa 1 anno fa, erano state considerate diverse tecnologie: BBC micro:bit, robot basati su Arduino e dopo tanto sperimentare e progettare, si è giunti a Lego Mindstorms EV3, i motivi di questa scelta, condivisi tra tutte le persone che hanno partecipato alla realizzazione della trasmissione sono stati molti, i principali: rapidità di assemblaggio e modifica dei robot in un ambito di studio televisivo, personalizzazione delle strutture, interfaccia grafica di programmazione intuitiva… e molto altro.

Nelle prime fasi di progetto ho valutato e sperimentato soluzioni miste, interfacciando, motori Lego Mindstorms con Arduino.
In passato avevo realizzato LegoDuino (seguendo il link potrete vedere un video dimostrativo) l’obiettivo era quello di realizzare dei robot Sumo, su di essi avevo inserito sensori ad ultrasuoni ed infrarossi.

Per ROB-O-COD, ho variato la versione Sumo in una versione cingolato su cui ho svolto le primissime sperimentazioni:

Ma come realizzare una soluzione mista?

Poiché mi è stato chiesto espressamente da alcuni colleghi, di seguito propongo un breve tutorial per la realizzazione di una struttura mista (Lego+Arduino) in modo che possiate poi da soli replicare le modalità di gara così come le potrete vedere nella trasmissione ROB-O-COD.

Il motore Lego Mindstorms, sia nella versione NXT che EV3 funziona ad una tensione di 9V e possiede al suo interno un encoders rotativo con una risoluzione di 1 grado, il controllo avviene mediante i cavi gialli e blu, nel tutorial che mostro però non utilizzerò l’encoder, ma solamente i due cavi bianco e nero utilizzati per l’invio del segnale PWM questi pin vengono chiamati MA0 e MA1 (tabella pin indicata di seguito).

Per effettuare il collegamento tra motore ed Arduino potete utilizzare una piccola interfaccia che permette di collegare i cavi BrickLink (noto anche come RJ12) in dotazione ai kit Lego Mindstorms, con la breadboard, i connettori si chiamano:

Breadboard Connector Kit for NXT or EV3 (seguite il link)

Nel caso non riusciste a procuravi questo adattatore, tagliate il cavo BrickLink ed utilizzate solamente i cavi bianco e nero, saranno questi che verranno collegati direttamente ad Arduino.

Di seguito la mappatura del cavo, per la numerazione fate riferimento a quanto indicato nell’immagine in cui è rappresentato il motore:

PIN    Colore    Nome
 1     Bianco    MA0
 2     Nero      MA1
 3     Rosso     GND
 4     Verde     4.3V dal mattoncini Lego
 5     Giallo    Tach01 (Encoder rotativo)
 6     Blu       Tach02 (Encoder rotativo)

Per procedere nella sperimentazione dovete munirvi di:

  • Scheda Arduino UNO R3 o simili
  • Scheda motore L298N
  • Breadboard Connector Kit for NXT or EV3 (in alternativa tagliate i cavi)
  • Uno o due motori Lego NXT o EV3

Il principio di funzionamento, inclusi i collegamenti, la programmazione e il funzionamento della scheda motori L298N sono identici a quelli che trovate nella lezione:

EduRobot – ASL (Alternanza Scuola Lavoro) – Manuale di costruzione – 2/3

Seguendo la lezione sarete in grado di realizzare un robot costituito da elementi Lego, scheda Arduino e sensori, tutto facilmente reperibile on-line a costi contenuti.

Aggiungo a quanto già indicato nella lezione segnalata sopra, gli schemi di collegamenti con la presenza dei motori Lego alimentati mediante una batteria esterna a 9V.

E se poi siete “puristi Lego” 🙂 allora partendo dai tutorial che trovate nell’ambiente di programmazione della versione LEGO MINDSTORMS EV3 Home Edition potrete realizzare qualcosa di molto simile a quanto mostrato nell’immagine che segue…

e ricordare: #ROB_O_COD è tutto un programma!

🙂

ROB-O-COD

Per tutti gli amici, studenti, colleghi interessati al mondo del Coding e della robotica, sono felice di comunicarvi la messa in onda del nuovo programma televisivo di Rai ragazzi su Rai Gulp: ROB-O-COD il game-show dove il coding diventa una sfida.

Ho avuto l’onore di collaborare, insieme ad altre fantastiche persone, nella progettazione dei campi gara immaginando percorsi e meccanismi che aggiungono gradi di difficoltà diversi in ogni campo gara.

Il programma, sarà in onda dal 29 Aprile al 30 Maggio, dal lunedì al sabato, alle ore 17.55 su RAI GULP (canale 42 – DTT) e dal giorno dopo sarà visibile su Raiplay  www.raiplay.it

Sedici squadre di ragazzi, divise in quattro gironi, partecipano al torneo di coding che si sviluppa in 28 puntate.

In uno studio con un allestimento fantascientifico, due team composti da una coppia di giovanissimi programmatori di 12 anni, i Robocoder, provenienti dalle scuole di tutta Italia, si sfidano con i loro robot su campi di gara ispirati a mondi fantastici, dal medioevale al post apocalittico, dalla fantascienza all’horror.

L’obiettivo finale del game è quello di portare a termine il percorso, affrontando gli ostacoli e le prove e cercando di guadagnare il maggior numero di punti necessari per vincere la puntata.
Per riuscirci hanno a disposizione un tempo limitato per testare i campi gara e programmare le stringhe di coding che ritengono più adatte a superare gli ostacoli.
Terminata la fase di coding, inizia la sfida in cui le squadre attivano i propri robot, per le due robo challenges di gara.
I team che nel proprio girone si aggiudicano più bitpoint accedono alle semifinali e i vincitori si sfidano per il titolo di campione del torneo.

Protagonisti del programma, oltre alle squadre di Robocoder, i ragazzi del pubblico, studenti di scuola secondaria di primo grado divisi in tifoserie, ciascuna schierata per l’una o l’altra squadra, tra cui vengono scelti due tecno-assistenti, che si occupano di controllare la correttezza della gara, e due tecno-disturbatori, con il compito di ostacolare i robot durante il percorso.

ROB-O-COD è un programma di Armando Traverso e Mario Bellina.
Con la Consulenza di Michele Maffucci e Andrea Angiolino
per il Centro Ricerche Innovazione Tecnologica e Sperimentazione RAI Luca  Vignaroli
Regia di Paolo Severini.
Produttrice Esecutiva Cristina Cuzzupoli.
Una produzione originale Rai Ragazzi

Potete seguire gli eventi collegati alla trasmissione anche sui canali social Rai:

SITO: www.rai.it/raigulp/

Pagina di presentazione

Se desiderate potete condividere  i vostri pensieri sul programma su Instagram con il  #rob_o_cod e taggando @rai_gulp, potete mandare video e foto  dei vostri migliori momenti di coding a scuola e a casa.

Ricordate:

#rob_o_cod  è tutto un programma!

🙂

[Comunicato stampa]

Appunti di programmazione su Arduino: controllo di flusso – istruzione switch..case

Nella scorsa settimana e in quella che verrà, con gli allievi di 3A e 3B Automazione ho svolto e svolgerò alcune esercitazioni sul controllo di flusso per gestire valori provenienti da sensori e controllare l’attivazione di motori elettrici mediante tastiera del computer e tastierino numerico esterno. Al fine di approfondire l’uso in C del controllo di flusso aggiungo alcune informazioni aggiuntive sull’uso dell’istruzione switch..case, per le altre istruzioni sul controllo di flusso si consulti su questo sito la sezione: Usare Arduino -> Appunti di Programmazione -> controllo di flusso

Come accade per l’istruzione if, l’istruzione switch…case, che viene chiamata anche istruzione di selezione multipla, permette il controllo di flusso dei vostri programmi permettendo di specificare porzioni diverse di codice da eseguire in funzione di una serie di condizioni impostate.

In particolare, l’istruzione switch (interruttore) confronta il valore intero costante con i valori specificati nelle etichetta case (caso). Quando viene trovata un’istruzione case il cui valore corrisponde a quello passato dallo switch, viene eseguito il codice contenuto nel case.

Nel caso in cui non venga riscontrata nessuna occorrenza del valore passato dalla switch, sarà eseguita la sezione default.

L’istruzione break consente l’uscita dall’istruzione switch e viene in genere utilizzata alla fine di ogni case, portando il controllo del programma a continuare con la prima istruzione dopo l’istruzione switch.

Nel caso in cui il break non venga inserita all’interno del case, l’istruzione switch continuerà ad eseguire le istruzioni che seguono, comportamento che viene chiamato “falling-through”, fino all’interruzione o alla fine dell’istruzione switch.

Nel caso in cui il break non fosse inserito in ognuno dei case, ogni volta che fosse incontrata una corrispondenza con uno dei case, verrebbero eseguite anche tutte le istruzioni dei case rimanenti, nel caso in cui non venga riscontrata nessuna occorrenza del valore passato dalla switch, sarà eseguita la sezione default e successivamente visualizzato un messaggio di errore.

Si faccia attenzione che quando si utilizza il comando switch, ogni singolo case può essere utilizzato solamente per controllare una espressione intera costante, cioè ogni combinazione di costanti di carattere e interi che possono essere valutati come valori interi, le costanti intere sono semplicemente dei valori interi ed una variabile di tipo carattere è rappresentata con il carattere specifico posto tra apici singoli, come ‘M’. Si ricordi che i caratteri sono in realtà dei valori interi memorizzati in un byte.

Sintassi

switch (variabile) {
   case label:
   // istruzioni
   break;
case label:
   // istruzioni
   break;
default:
   // istruzioni
   break;
}

Vi rimando al reference on-line sul sito di Arduino per analizzare alcuni esempi che svilupperemo con ulteriori esercitazioni tratte dalle mie slide e che svolgeremo a lezioni:

Buon lavoro 🙂

Supporto a T per profilati in alluminio 20×20 per sensore ad ultrasuoni HC-SR04

Sto sviluppando da qualche tempo una struttura robotica realizzata con profililati in alluminio. Originariamente il tutto doveva essere realizzato con dei Makerbeam, ma poiché ho aumentato le dimensioni del robot, altezza di circa 1 m, sono passato a profilati in alluminio 20×20 mm con sedi a T come quelli che potete vedere nelle immagini che seguono.

La prima versione del sistema di orientamento del robot sarà costituita da 8 sensori ad ultrasuoni che disporrò sui 4 angoli, così come indicato nell’immagine che segue.

Per rendere più agevole la costruzione e future modifiche ho pensato di realizzare dei supporti angolari con fissaggio a vite M3 e su di essi una struttura a slitta su cui collocare il sensore ad ultrasuoni

Rendo pubblico su Thingiverse i file per la stampa 3D dei due elementi, in modo che anche altri possano utilizzarli.

Un saluto a tutti i Robot Maker 🙂

EduRobot – ASL V02 per Arduino e BBC micro:bit

Rendo pubblica la versione 2 di EduRobot ridisegnata completamente. Il kit di sperimentazione può accogliere indifferentemente una scheda Arduino oppure una scheda BBC micro:bit. La struttura può essere realizzata, come indicato nell’immagine che segue, da due ruote e una ball caster, oppure può essere trasformato in un rover a 4 ruote.
Nel caso fosse necessario alloggiare più elettronica, è possibile impilare più piattaforme di legno.

Di seguito i file vettoriali che potete utilizzare per la realizzazione del taglio laser, oppure se disponete di una stampante 3D con piatto sufficientemente grande potrete stampare la base.

EduRobot – V02 – illustrator ed eps

Le parti stampate in 3D sono elementi derivati dalla versione precedente: EduRobot – ASL (Alternanza Scuola Lavoro) – 2019

Seguendo il link che segue troverete tutti i riferimenti per la stampa di tutti gli elementi della versione 2 sia per BBC micro:bit che per Arduino a 2 o 4 ruote in cui trovate tutti gli elementi per la stampa 3D aggiornati.

EduRobot – ASL – V02

Nei prossimi giorni fornirò i dettagli costruttivi meccanici, elettronici e di Coding sia per micro:bit che per Arduino, in ogni caso dalle foto allegate si evincono una serie di dettagli costruttivi per la versione micro:bit.

Mi scuso con i molti colleghi e studenti a cui avevo promesso questo lavoro mesi fa e che in diverse occasioni mi hanno manifestato la necessità di una piattaforma facilmente modificabile ed adattabile alle diverse esigenze didattiche per ogni ordine di scuola.

Alcuni amici, nel vedere il prototipo mi hanno chiesto anche una versione per Raspberry Pi, pertanto ci sarà anche questa evoluzione del kit.

Sarà quasi certamente questa la versione che farò diventare uno standard nelle mie lezioni di laboratorio di sistemi e tpsee.

Spero che questo lavoro possa servire anche ad altri.

Come sempre liberi di condividere e modificare.
Buona sperimentazione a tutti 🙂

Di seguito alcuni dettagli costruttivi (click sull’immagine per l’ingrandimento):