Makeblock mBot 2 Review
Ho ricevuto di recente un kit di un robottino che, tutte le volte a cui ho partecipato al Maker Faire Rome o altri eventi makers, era sempre li, sprezzante del tempo che passa e sempre pronto a rinnovarsi e a stare al passo coi tempi: l’ mBot, che di recente viene proposto in una nuova revisione davvero potente e ricca di funzioni.
l’ mBot Neo, oggetto di questo articolo, mi è stato gentilmente offerto da Makeblock a scopo di valutazione. Le opinioni qui riportate sono del tutto personali e non influenzate in alcun modo dal fornitore del prodotto.
Makeblock è un’azienda cinese fondata nel 2011 incentrata sulla robotica educativa per cui ha una linea di prodotti STEAM (forse siete più abituati al termine STEM : stessa cosa ma con quella ‘A’ viene convogliata anche l’arte) di qualità elevatissima che vengono utilizzati soprattutto in ambito didattico (scuole, fablab, corsi extrascolastici). Si tratta di prodotti con una costruzione decisamente solida, realizzati con materiali di qualità e un supporto davvero esteso che non si ferma mai. Come dicevo sopra: mi capita praticamente sempre di vedere gli mBot in più di uno stand al Maker Faire e si tratta per lo più di stand dedicati alle discipline STE(A)M. Se volete saperne di più su questa azienda, non mi dilungo dal momento che potete leggerne la storia su Wikipedia.
Indice dei contenuti
Introduzione – mBot 2
Come dicevo prima: l’ mBot 2 (chiamato anche mBot Neo) è un’evoluzione del famoso mBot: un robottino a guida differenziale, dotato di chassis in alluminio anodizzato, che può essere programmato anche dai principianti (La Makeblock per questo modello consiglia un’età minima di 8 anni, altrimenti 6 accompagnati dai genitori) in quanto il linguaggio di programmazione primario è un linguaggio a blocchi basato su Scratch 3.0 e chiamato mBlock5 che può essere sia installato come programma stand-alone (PC e MAC) che utilizzato da Browser. Da mBlock5, per questo robot, si può anche programmare direttamente in Python. Ancora, si può programmare (ma solo a blocchi) anche dal cellulare con un’apposita app.
Ho già avuto esperienza con questo tipo di ambiente di programmazione in quanto ho tenuto alcuni corsi alle scuole elementari utilizzando i kit Lego® Education SPIKE™ (con i quali mi viene naturale fare un confronto diretto in quanto sono entrambi prodotti di fascia alta che hanno tra loro molte similitudini) e posso assicurarvi che è davvero una potenza, semplicissimo da utilizzare e si possono fare anche cose abbastanza complesse. I punti a vantaggio del prodotto Makeblock sono davvero tanti, a partire dal rapporto qualità/prezzo che secondo me è davvero notevole e riporto qui le mie prove e le mie impressioni.
Da buoni appassionati di elettronica diamo sicuramente prima un occhio alle caratteristiche tecniche dell’mBot2 analizzando i componenti principali che lo compongono, ovvero: CyberPi, mBot2 Shield, Quad RGB sensor, Ultrasonic Sensor 2, 180 Optical Encoder Motor.
CyberPi
Partiamo dal dispositivo di controllo programmabile, che costituisce sicuramente la parte più interessante del kit almeno dal mio punto di vista. Il cuore dell’mBot2 è un oggetto chiamato CyberPi che, essendo un prodotto utilizzabile anche a se stante, può addirittura essere comprato separatamente per fare altre cose oltre che costruire robot.
Il CyberPi è una sorta di piccola console basata su ESP32 (modello dual-core) con 8MB di memoria Flash e 8MB di PSRAM (la presenza di PSRAM non è una caratteristica che si trova spesso) sul quale è precaricato il sistema operativo CyberOS, che non è la omonima distribuzione di Linux ma un sistema operativo realizzato da Makeblock ad-hoc per il CyberPi e che consente tra le altre cose, e come siamo già abituati con numerosi altri dispositivi presenti nel mondo dei Makers, di gestire più programmi a disposizione caricati sulla flash.
Ad esempio anche i kit Lego® Education possiedono tale funzionalità di programmi multipli sullo stesso device ma qui sull’mBot2 abbiamo un “display vero” e proprio che rende la gestione dei programmi molto più semplice ed intuitiva, nonchè dei programmi precaricati di default.
Il CyberPi pesa pochissimo (non arriviamo nemmeno a 40 grammi) ed ha dimensioni davvero molto contenute (8.4 x 3.5 x 1.3 cm). Nella parte frontale, affianco al display, ci sono un joystick digitale e due pulsanti (quadrato/A e triangolare/B). Anche la scelta di dare una forma ai tasti non è casuale: il tasto triangolare infatti è fatto apposta per richiamare il concetto di “PLAY” e può fungere da tasto di conferma e quindi di avvio dei programmi, mentre il pulsante quadrato può fungere da “STOP”.
Di lato, affianco alla porta USB-C utilizzata per la programmazione, c’è un ulteriore pulsante identificato come HOME che permette di entrare nel menù del sistema operativo. Come ulteriori accessori montati a bordo del CyberPi ci sono un sensore di luce, un microfono, un altoparlante, una IMU a 6 assi (accelerometro + giroscopio) e 5 led RGB. Per le connessioni esterne abbiamo, nella parte inferiore, un connettore da 14 pin (7×2) a passo standard 2.54mm, che viene utilizzato per il collegamento alla main board dell’mBot2 (o per altre board di espansione che Makeblock ha in catalogo), e un piccolo connettore laterale, posto nella parte superiore, chiamato mBuild, che consente il collegamento a cascata di ulteriori accessori makeblock che comunicano in I2C.
mBot2 Shield
Questo è lo shield che prima ho chiamato “main board”: è una scheda di espansione sulla quale va innestato il CyberPi e consente sia di mettere a disposizione una sorgente di alimentazione (il CyberPi infatti non ha alimentazione a sè stante) sia di interfacciarsi con le parti elettromeccaniche del robot, e, in più, fornisce ulteriori porte di espansione per collegare altri dispositivi.
Anche lo shield è un dispositivo intelligente, e non una semplice interfaccia, in quanto monta un microcontrollore basato su Cortex M4 GD32F40 e sgrava quindi il CyberPi da numerosi compiti rendendo tutti i comportamenti del robot decisamente più fluidi. La sorgente di alimentazione è costituita da una cella al Litio tipo 18650, saldata, con una capacità di 2500mAH che viene ricaricata direttamente, e in modalità rapida, attraverso il CyberPi quando vi colleghiamo il cavo USB.
Possiamo anche utilizzare la board mentre si ricarica (ma in questo caso viene eseguita una ricarica lenta). Una delle tante differenze con tanti prodotti di fascia economica che salta subito all’occhio (a parte la presenza di uno shield “intelligente”) è la presenza di due ingressi dedicati ai motori dotati di encoder integrato:
Questa caratteristica fin’ora l’avevo trovata soltanto sui kit Education della Lego® ed è un enorme valore aggiunto: avendo a disposizione degli encoder sui motori siamo in grado di eseguire movimenti precisi ovvero rotazioni senza sgarrare e di far procedere il robot in linea dritta senza deriva. Dando una controllata veloce al circuito stampato grazie al fatto che il guscio è trasparente effetto fumè (anche il fatto di avere un guscio di protezione è un punto in più!), si notano 4 IC di controllo motori tipo AM2861 che, leggo da datasheer, consentono una corrente di 3A continui e 5 di picco e sono protetti contro sovracorrente e sovratemperatura. Immagino ne siano presenti 4 perchè 2 vengono utilizzati per motori “semplici” da connettere ad M1, M2 e due per i motoriduttori con encoder presenti nel kit. I motori collegati ad M1, M2 si controllano dal linguaggio a blocchi, che vedremo dopo, utilizzando i comandi inclusi nella categoria “mBot2 Estensione Port” (c’è scritto proprio così) dove ci sono i blocchi che consentono di controllare i motori semplici e i servocomandi, mentre i motori con Encoder inclusi nel kit hanno i comandi presenti nella categoria “mBot2 Telaio”.
Di lato ci sono ulteriori connettori per collegare, eventualmente, 4 servocomandi (due da un lato e due dall’altro), un connettore per una batteria/sorgente esterna e abbiamo lo stesso connettore mBuild presente anche sul CyberPi.
Sia motori, che motori con encoder che servocomandi, verranno alimentati a 5V.
Quad-RGB sensor
Avete presente il classico sensore di linea, mediante il quale si possono realizzare degli applicativi in cui il robot segue una linea a terra? Qui Makeblock è andata oltre: il Quad-RGB sensor, come già anticipa il nome, non è in grado di riconoscere la sola differenza di contrasto (linea scura su sfondo chiaro o viceversa) ma addirittura il colore della “luce di riempimento”, ovvero il colore di ciò che si trova intorno alla linea oppure è possibile utilizzare tale sensore per rilevare il colore di un oggetto, questo grazie a 4 led RGB anzichè 4 sorgenti IR. Il sensore è incapsulato, ovvero ha un guscio in plastica dura per cui non ci sono circuiti esposti ed è dotato di due connettori mBuild per il collegamento a cascata. Per funzioni avanzate può essere ricalibrato per riconoscere linee e colori in differenti scenari, fate riferimento all’ultimo paragrafo di questo articolo per il link alla pagina che parla solo di questo sensore.
Sensore ultrasuoni “Ultrasonic Sensor 2”
Conosciamo già bene come funzionano i sensori ad ultrasuoni. Questo, come tutte le parti del kit, è di alta qualità, completamente incapsulato e presenta 4 led blu intorno ad ogni capsula che consentono di dare ulteriore espressività al robot per un totale di 8 led (numerati da 1 a 8) che possono anche essere controllati individualmente! Infatti nei blocchi di controllo del sensore ultrasuoni abbiamo la possibilità di far accendere tutti i led oppure solo uno nonchè variarne la luminosità e impostare delle “emozioni” predefinite che giocano sull’accensione alternata dei led e sulla loro luminosità.
Anche questo, come il sensore di linea, comunica in I2C e ha due connettori mBuild. Nella pagina di descrizione di tale sensore viene riportato che questo sensore, a differenza di quello presente nella versione precedente, ha un chip aggiuntivo per migliorare la stabilità. Rileva distanze da 5 a 300cm.
180 Optical Encoder Motor
Questa è forse la prima cosa che mi ha piacevolmente sorpreso quando l’ho tirata fuori dalla scatola, perciò l’ho lasciata per ultima. La maggior parte dei robottini commerciali in kit che ho avuto per le mani montavano i motoriduttori di tipo TT (mi pare di capire che anche l’mBot prima versione usasse quel tipo), qui invece abbiamo un comparto motori completamente nuovo. Prendendo tra le mani questi motoriduttori si percepisce da subito una solidità costruttiva notevole: plastiche piacevoli al tatto, peso consistente, assenza di scricchiolii e giochi e albero di uscita in metallo, nonchè presenza di inserti per viti con filettatura M4 a dare un’impronta ancora più massiccia.
Sull’mBot, come dicevo, i motoriduttori vengono alimentati a 5V e raggiungono una velocità di rotazione di 206RPM ma potrebbero essere alimentati fino a 7.4V raggiungendo i 350RPM. Il valore di coppia a vuoto è 1.5kG*cm, un valore che, credo, sia quasi del doppio rispetto ad un classico motoriduttore TT (non è facile trovare dei dati accurati) e che si nota tutto quando il robot è in movimento perchè parte come un carrarmato e non conosce ostacoli. Come anticipato sono muniti di encoder ottico e consentono un’accuratezza inferiore ai 5°. Sul corpo del motore c’è un connettore a 6 pin che porta sia l’alimentazione del motore che i segnali degli encoder. Questi andranno collegati alla main board, tramite i cavetti forniti in dotazione, alle porte EM1, EM2.
Il terzo punto di appoggio del robot è fornito da una ruotina in plastica che mi pare essere la stessa della versione precedente del robot ed è forse l’unico elemento che si sarebbe potuto migliorare.
Differenze tra mBot NEO e mBot
Dato che si potrebbe voler acquistare la versione precedente del robot che costa meno, illustro qui le differenze che ci sono tra le due board visto che questo articolo, essendo dedicato alla versione Neo/2, fa riferimento a cose/funzionalità che invece non sono presenti nella versione vecchia:
Caratteristica | mBot 2 | mBot |
---|---|---|
Controller principale | CyberPi | mCore |
Microcontrollore primario | ESP32 | ATmega 328 |
Clock | 240MHz | 16MHz |
Periferiche incluse | - Sensore Luce - Microfono - IMU 6 assi - 5 led RGB - Display - Altoparlante | - Buzzer - Sensore di Luce - IR transceiver - 2 led RBG |
Periferiche esterne | - Sensore ultrasuoni illuminato - Quad RGB sensor | - Sensore ultrasuoni - Sensore di linea a 2 IR |
Batteria | LiPo 2500mAH inclusa | non incluse: 4xAA o LiPo |
Motori con encoder | SI | NO |
Velocità motori | 207RPM | 200RPM |
Numero massimo di moduli esterni collegabili | - 8 motori/servo - +10 sensori | - 2 motori/servo - 4 sensori |
Linguaggio di programmazione | - a blocchi - Python | - a blocchi - Arduino |
Mi preme inoltre sottolineare che sull’mBot (prima versione) c’è un unico modulo controller: l’mBot appunto, che è una board singola che integra sia microcontrollore sia tutto il resto mentre sull’mBot2 il CyberPi è un oggetto a parte che si innesta sulla board di espansione per cui, in realtà, comprando l’mBot2 è come se si stessero comprando 2 oggetti separati in quanto potete utilizzare il CyberPi anche da solo per fare altre cose. Aggiungo inoltre che, se non si era notato nelle descrizioni che ho fatto per i singoli componenti, tutti gli elementi elettronici presenti nell’mBot2 hanno un guscio in plastica dura che li protegge ed evita contatti con i circuiti, mentre sulla versione precedente non è così.
Getting Started
Per prima cosa dobbiamo sicuramente assemblare il robot e, onestamente, il manualetto incluso nella confezione è fatto bene e ricco di illustrazioni sui vari passaggi da fare, molto semplici e intuitivi: ho lasciato mio figlio di 11 anni ad assemblarlo col manualetto davanti e non ha avuto bisogno di aiuto, tra l’alto ci sono solo poche viti ed è fornito anche un cacciavite davvero buono. Ad ogni modo la guida per il montaggio e il getting started si trovano anche on line a questa pagina e, in aggiunta, la stessa guida è disponibile anche dall’app per cellulare di cui parlo più in basso.
Ho iniziato con lo scaricare mBlock5 per PC (per dovere di cronaca nel momento in cui scrivo c’è la versione 5.4.3 e ho scaricato quella per Windows usandola su Windows 11). Dopo aver installato mBlock5, un prompt di Windows11 ci dirà che il firewall ha bloccato le funzionalità di accesso alla rete:
Chiaramente le attiviamo premendo il tasto Consenti per fare in modo da poter scaricare aggiornamenti e componenti aggiuntivi. mBlock si avvia: ha un’interfaccia abbastanza familiare se avete già utilizzato Scratch in passato, ma con il panda (utilizzato come mascotte da makeblock) anzichè col gatto:
In alto c’è la barra della privacy Policy alla quale ormai siamo abituati da anni che ci invita a leggere la policy e ad accettarla se vogliamo proseguire. L’interfaccia è suddivisa in 3 zone: la zona a sinistra, dove adesso c’è il panda, è chiamata Stage, la zona centrale in cui c’è la colonna con le categorie dei blocchi e i blocchi veri e propri associati alla categoria selezionata, e la zona destra che è quella in cui si compone il programma (o si scrive se selezioniamo la linguetta Python).
Giusto per capire come funziona l’ambiente e la programmazione vi spiegherò come caricare uno dei programmi di esempio. Nella barra in alto cliccate Programmi di esempio:
Compare una nuova finestra: clicchiamo su mBot2 nella riga delle categorie di esempi e sotto selezioniamo (EN) Obstacle avoidance…:
Premiamo quindi OK in basso a destra in questa finestra. Comparirà una nuova finestra che chiede se salvare il programma attualmente presente (che in realtà non c’è perchè abbiamo appena avviato mBlock e lo sketch è vuoto, quindi diciamo di no). Appaiono infine i blocchi che compongono il programma.
Il modo in cui viene adesso visualizzato l’ambiente comprensivo di programma, dico la verità, non mi fa impazzire dato che trovo l’area relativa al programma troppo piccola e tutto l’insieme è per me molto confuso. Possiamo modificare la visualizzazione dell’interfaccia premendo questo tasto di arrangiamento finestre al di sotto dell’immagine dell’mBot:
In questo modo abbiamo un po’ piu di spazio a disposizione nell’area programma dato che viene rimpicciolito lo stage. Eventualmente, almeno durante la fase di programmazione, è possibile nascondere completamente lo stage agendo dal menù Impostazioni e attivando la voce “Nascondi Stage”, in questo modo c’è ancora più spazio per l’area di programmazione:
Per ora, comunque, non fatelo perchè lo stage ci serve per caricare il programma. Prendiamo l’mBot e accendiamolo mediante l’interruttore ON/OFF posto lateralmente sullo shield. La prima volta che il dispositivo viene acceso si è invitati a scegliere la lingua del CyberOs: scendiamo giù con il joystick fino a trovare Italiano e premiamo l’asse del joystick per confermare.
Sul display del CyberPi viene quindi mostrato il menù principale: in caso contrario premere il tasto Home che si trova sul lato destro del CyberPi e ricordate che questo importantissimo tasto serve per tornare sempre al menù principale arrestando il programma in corso.
Prendiamo ora il cavo USB-C in dotazione e colleghiamo l’mBot al PC. Da mBlock, nello Stage, affianco alla lista dei dispositivi, dove è presente il Panda con la scritta “Connetti il tuo dispositivo”, sotto, è presente un tasto Collega (in caso il tasto non fosse visibile andate col puntatore del mouse in quest’area e scorrete verso il basso utilizzando la rotellina del mouse):
Premiamolo. Compare la finestra di collegamento che ci invita a selezionare la porta COM (generata dalla board) da utilizzare, Avendo collegato solo questo dispositivo, ne comparirà una sola (che nel mio caso è 9 ma nel vostro potrebbe essere diversa):
Premiamo quindi il tasto Connessione. La finestra si chiude e compare Dispositivo Connesso nel riquadro di connessione (oltre ad un piccolo messaggio in alto che scompare dopo un po’):
Notiamo che c’è uno switch che consente di selezionare due diverse modalità per caricare il programma:
Selezionando Carica File, il programma verrà salvato sul CyberPi in maniera permanente mentre selezionando Dal vivo, il programma viene eseguito senza essere salvato e questo è utile per fare del debug controllando il programma in tempo reale (feature a cui si è abituati se si utilizza, ad esempio, il MicroPython da REPL come ho illustrato in precedenti tutorial). Chiaramente dovendo far muovere il robot ho preferito non selezionare questa modalità altrimenti il robot sarebbe partito sul banco trascinandosi il cavo USB e facendo sicuramente qualche danno!
Scegliamo quindi la modalità Carica File e premiamo il tasto Upload Code. Compare una finestra di progresso. Dopo pochi secondi il codice viene caricato e sul CyberPi appare il menù di questo programma che dice di premere B (il tasto play) per avviarlo. Possiamo staccare il cavo USB, mettere il robot a terra e premere quindi il tasto B. Quando il robot comincerà a muoversi potremo notare le notevoli differenze con altri prodotti che fanno le stesse cose: il movimento è fluidissimo e, oserei dire, imponente: il robot procede in linea retta senza derive come avevo anticipato e i motori hanno anche una coppia notevole al punto che il robot in molti casi, dialettamente parlando, “impenna” e passa sopra a piccoli oggetti che potrebbero trovarsi per terra. Per fermare il robot potremo premere il tasto Home del CyberPi, per ritornare al menù, oppure possiamo spegnerlo dall’interruttore.
E’ da notare che, fino a che non si rientra nel menù Home, all’accensione il programma predefinito è l’ultimo caricato.
Riassumendo: per caricare i programmi è necessario che l’mBot2 sia acceso e con il CyberPi in modalità menù, altrimenti con un programma attivo l’upload non parte. Sembra una precisazione banale ma non lo è.
Gestire i programmi
Dal menù Home del CyberPi, cliccando sulla voce Partenza Programmi, si entra in un sottomenù in cui sono presenti sia dei programmi predefiniti, ovvero già presenti sul CyberPi (e che non vengono cancellati in caso di reset del dispositivo) e quelli invece caricati da noi: ci si sposta tra le due sezioni (predefiniti/miei) muovendosi a destra e sinistra col joystick. Nella sezione dei programmi preimpostati, oltre a programmi puramente dimostrativi pensati per il CyberPi a sè stante, ci sono anche 3 programmi specifici per l’mBot2: demo1 è l’esempio del line-follower, demo2 è l’esempio appena caricato dell’obstacle avoidance (si, potevamo risparmiarci di caricarlo ma dovevo farvi capire come fare) e demo3 è un programma che permette di far muovere il robot “disegnando” un percorso col joystick: in pratica muovete il joystick, compaiono delle frecce sul display ad indicare la direzione che avete impostato col joystick, dopodichè premendo play il robot si muove seguendo le direzioni impostate sul display.
Ogni volta che andiamo a caricare un programma, questo andrà a finire nella sezione “Miei programmi”, che è sempre possibile svuotare agendo nel menù del CyberPi.
Scrivere Programmi
Vi ho appena spiegato come caricare dei programmi già fatti, che includevano già tutti i blocchi accessori a disposizione. Nel caso in cui volessimo scrivere da zero i nostri programmi abbiamo due possibilità: modificarne uno di quelli di esempio e salvarlo con nome, oppure partire da zero ma in questo caso dobbiamo ricordarci di inserire nell’interfaccia di programmazione i componenti di cui abbiamo bisogno, vediamo come fare.
In basso a sinistra c’è l’elenco dei dispositivi per i quali sono stati installati add-on che permettono la programmazione tramite mBlock5. A me all’inizio è comparso già il CyberPi sebbene la scritta fosse in cinese: non sapendo se fosse un problema o no l’ho eliminato subito (premendo la x nel riquadro del CyberPi) e quindi riaggiunto premendo il tasto +: compare una lista con tutti i dispositivi che possono essere integrati in mBlock, clicchiamo su CyberPi per selezionarlo:
e clicchiamo quindi OK: il dispositivo appare nella lista dei dispositivi supportati.
Nel caso in cui, dalla finestra selezione dispositivi, compaia una freccia bianca rivolta verso il basso nel riquadro del dispositivo che ci interessa, vuol dire che per quel dispositivo sono presenti aggiornamenti, per cui clicchiamo tranquillamente su tale freccia per scaricarli.
Abbiamo quindi aggiunto il dispositivo principale che ci permetterà di avere a disposizione tutti i suoi blocchi di programmazione (Audio, LED, Display, Motion Sensing, Sensing, LAN, AI, IoT), dobbiamo ora aggiungere anche il resto, ovvero i dispositivi aggiuntivi presenti nel kit dell’mBot2. Clicchiamo quindi nuovamente il tasto + e selezioniamo mBot Neo (o mBot 2) dalla lista:
Nella lista appaiono sia mBot2 che mBot Neo, ma sono la stessa identica cosa, si tratta probabilmente di un errore o forse di questioni di marketing che ignoro (nel senso che, magari, in alcuni paesi viene commercializzato come mBot2 e in altri come Neo). Clicchiamo quindi ok. Ora nella lista dispositivi ci sono entrambi i macro-componenti che costituiscono il robot:
Nella lista dei blocchi di programmazione a disposizione ora saranno presenti anche gli elementi dell’mBot2 (mBot2 Telaio, mBot2 extension port, Sensore RGB Quad, Sensore Ultrasuoni 2). Possiamo quindi procedere alla programmazione trascinando i blocchi come su Scratch e tanti altri ambienti di programmazione che usano lo stesso sistema dei “blocchi ad incastro”.
Faccio giusto un semplice esempio se non avete mai utilizzato questo sistema, solo per farvi rendere conto di come funziona e stimolarvi a provarlo. Dalla barra delle categorie dei blocchi clicchiamo su Situazioni e trasciniamo il blocco When CyberPi Starts up (ovvero: quando il CyberPi si avvia) nell’area programma:
Potete vedere che questo blocco sopra possiede una parte arrotondata: questo significa che sopra non possiamo metterci nulla, ovvero non possiamo agganciarlo ad altri blocchi, mentre sotto ha una linguetta, che significa che sotto possiamo incastrarci un blocco che possiede un incavo della stessa forma. Andiamo nella sezione Display e trasciniamo il blocco print makeblock and move to a new line e agganciamolo sotto al blocco precedente facendo combaciare l’incavo con la linguetta:
Ora nel blocco appena messo, clicchiamo sulla scritta makeblock nel rettangolo arrotondato con sfondo bianco e scriviamo CIAO
Quando all’interno di un blocco è presente un rettangolo arrotondato bianco, vuol dire che li abbiamo lo spazio per una variabile che possiamo definire manualmente oppure prendere da un blocco variabile che ha, appunto, la forma di un rettangolo arrotondato e possiamo incastrare li dentro.
Dalla categoria mBot2 Telaio trasciniamo vai avanti a 50 RPM e agganciamolo sotto al blocco precedente
Vedete che possiamo cancellare il 50 perchè è scritto in un’area bianca del blocco e metterci un numero a piacere (nel caso di questi motori immagino che dovremmo poter mettere fino a 206, ma lasciamo 50 per farli muovere lenti).
Sempre da ques’area trasciniamo e agganciamo il blocco vai avanti 100 cm fino al termine
vedete che dove c’è scritto vai avanti e cm è presente una freccia verso il basso ad indicare che sono disponibili altre possibilità (al posto di avanti possiamo mettere indietro e al posto di centimetri possiamo mettere pollici). Il fatto di poter impostare un comando che dice vai avanti 100cm è dovuto alla presenza degli encoder: conoscendo già il diametro della ruota dell’mBot e contando il numero di giri fatti grazie agli encoder, si può coprire una distanza precisa.
Adesso proviamo a collegare il robot e caricare il programma, ripeto i passaggi: accendiamo, premiamo il tasto Home sul CyberPi per entrare nel menù, da mBlock su PC selezioniamo la modalità di programmazione Carica File, premiamo quindi Collega per collegare il Robot e infine Upload Code.
Chiaramente il robot dopo aver camminato 100cm si fermerà e non farà più nulla: per fargli fare cose di continuo è necessario mettere il programma all’interno di un ciclo (come su Arduino mettiamo il programma principale nella fuzione loop, come sui PIC e altri dispositivi programmati in C mettiamo tutto nel main all’interno di un ciclo infinito ecc). I cicli si trovano nella sezione Controllo
Infine, ultimo tip: per cancellare i blocchi si clicca sul blocco che volete eliminare e si preme CANC sulla tastiera. Ad ogni modo avete visto quanto è semplice ed è più facile a farsi che a dirsi, la presenza di programmi di esempio è un punto di partenza essenziale. Poi potete sempre scaricare mBlock e fare dei test con il Panda senza avere ancora il robot per capire come funziona: basta che dalla colonna sinistra selezionate Sprite anzichè Dispositivi tenendo conto che qui non andremo a caricare nulla su nessun dispositivo ma premeremo il tasto bianderina verde per far partire il programma e poi si scrive un programma separato per ogni Sprite: vedete qualcosa da Programmi Esempio > Stage.
Ad esempio nel programma SnowFlakes potete vedere che se da Sprite cliccate sul panda, appare il programma di controllo del Panda che permette di muoverlo a destra e sinistra usando le frecce della tastiera, mentre se premete sullo sprite snowflake compare il programma di gestione del fiocco di neve che ne fa comparire uno a caso in alto, lo ruota, lo rende semitrasparente e lo fa muovere verso il basso. Potreste non vedere tutto il programma per cui premete la lente di ingrandimento con il segno meno per rimpicciolire l’area. I programmi di esempio, se avete abbastanza curiosità e voglia di smanettare, sono in grado di insegnare molto.
Programmare in Python
Per questo vi lascio all’help-hub di Makeblock che è fatto bene : https://education.makeblock.com/help/category/mblock-python/ e a questa playlist di youtube (scorrendo in basso nella playlist ci sono le lezioni di Python per l’mBot2)
App Makeblock
Come anticipavo, non possiamo fare cose soltanto attraverso mBlock ma è disponibile un’app davvero potente sia per Android che per iOS e che permette di aumentare l’interattività del robot senza la necessità di programmare (e quindi permette di abbassare ulteriormente l’età del target). Appena l’app parte bisogna collegare il robot tramite Bluetooth cliccando sull’apposita icona in alto a destra: il collegamento è rapido, senza problemi e viene confermato da un beep emesso dal robot. Avrei preferito che comparisse anche qualche indicazione sul display del CyberPi ma purtroppo il display rimane spento. Una volta collegato abbiamo a disposizione 4 voci di menù: Giocare, Codice, Costruire, Wi Fi Connection Wizard. Vediamo cosa fanno:
Giocare
Questa voce ha 4 sottomenù: Motore, Disegna ed Esegui, Musicista, Controllo Vocale.
- Motore: Permette di far muovere il robot dal cellulare. Oltre al joystick ci sono 6 icone colorate che permettono al robot di fare cose davvero inaspettate: ad esempio premendo il tasto giallo con lo smile che ride, il robot salta sfruttando l’elevata coppia dei motori e… ride! Non vi svelo cosa fanno gli altri tasti altrimenti vi tolgo il divertimento. In più c’è una barra colorata in alto che permette di settare il colore dei led RGB presenti nel CyberPi:
- Disegna ed Esegui. Questa cosa è fighissima e non l’avevo mai vista: con il dito disegnate un percorso sul display del cellulare, dopodichè premendo Play il robot lo segue nella realtà e man mano che si muove, un pallino sul cellulare indica il punto in cui si trova:
- Musicista. Appare una tastierina musicale sul display del cellulare e potete suonare (il suono viene emesso dal robot). In aggiunta in alto sono presenti 4 pulsanti che servono ad emettere delle musiche predefinite.
- Controllo vocale. Permette di muovere il robot dando dei comandi vocali: si tiene premuto il tasto microfono, si parla per impartire un comando e quindi si rilascia il tasto per consentire al robot di ricevere il comando ed eseguirlo. Qui ci ho sbattuto qualche minuto di troppo perchè non veniva eseguito nulla nonostante l’help dicesse “Il robot non capisce il tuo comando. Provare: Vai avanti, indietro… ecc”. Alla fine ci ho rilfettuto un po’ e ho capito che bisogna pronunciare le frasi in inglese nonostante appaia tutto in italiano. Insomma se dite “go forward”, il robot si muove in avanti, con “turn right” il robot gira a destra e così via.
Codice
Come detto più in alto, questa funzione serve per programmare il robot tramite la funzione a blocchi dal cellulare. Cliccando questo tasto si viene reindirizzati al playstore per installare mBlock sul cellulare.
Costruire
E’ in pratica la guida passo-passo alla costruzione del robot
WiFi Connection Wizard
Serve per salvare SSID e password di una rete WiFi nell’ESP32 del CyberPi per essere poi utilizzate da sketch che sfruttano il collegamento ad internet.
Links
Nota: gli acquisti effettuati dal sito di Makeblock vengono spediti da un magazzino Amazon europeo ed arrivano negli stessi tempi di un normale acquisto su Amazon, ma i prezzi sono tendenzialmente più bassi. All’atto dell’acquisto potete inserire il codice sconto SAVE10 per risparmiare il 10%.
- Acquisto mBot Neo
- Acquisto del solo modulo CyberPi
- Dowload mBlock5
- mBlock5 web
- Guida operativa mBot Neo
- Guida principianti ad mBot / mBot Neo
Pagine informative riguardo ai singoli componenti
Commenti
Se ti va, puoi lasciare commenti e chiedere informazioni su Threads.net sotto questo post: https://www.threads.net/@cyb3rn0id/post/C1ppJ3HLMce