Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

9
voti

Lego NXT Mindstorms

Un gioco da bambini? Don’t judge a book by its cover!

Indice

Introduzione al Gioco

Il nome completo è Lego NXT Mindstorms, si tratta della ultima serie di Lego Mindstorms, sostituisce la precedente RCX. Come gioco per bambini è abbastanza costosetto… intorno ai 300 euro.. e quindi aggiungerei per bambini ricchi o bambini con papà molto lungimiranti. In realtà la Lego ha fatto molto di più, ha capito le potenzialità del suo prodotto e lo ha lasciato “aperto”, sapendo bene che la cosa avrebbe moltiplicato infinitamente i profitti. Ma procediamo con ordine. Esistono due confezioni di Lego NXT, la versione retail, ovvero quella che si trova nei negozi di giocattoli, e la versione educational, prodotta per lo più per Scuole e Università (università?!? eggià… Università!).

Lego NXT Mindstorms Retail

nxt retail.jpg

nxt retail.jpg

LEGO NXT Mindstorm Educational

nxt edu.jpg

nxt edu.jpg

Le differenze tra le due sono poche, qualche pezzo in più nella versione educational, ma il prezzo è più alto e bisogna acquistare il software a parte (però disponibile anche in italiano) contenente vari tutorial non presenti nel cd fornito con la confezione retail (in inglese e con soli tre tutorial). La confezione educational è più adatta alle scuole perché viene fornita con il contenitore plastico per i pezzi (che altrimenti andrebbero persi..) e le guide che possono aiutare un docente ad introdurre i primi concetti di meccanica e sistemistica a ragazzi di una scuola media. I pezzi meccanici sono praticamente tutti pezzi della serie technics , è quindi possibile riutilizzare pezzi di vecchie e nuove costruzioni per ampliare le potenzialità dei propri progetti.

Cosa lo distingue dagli altri blocchetti

La caratteristica peculiare di questa serie sono i componenti elettronici a disposizione per dare “intelligenza” ai progetti, siano essi macchine , robot o veicoli. Nella scatola è presente un blocco che gestisce la logica, il mattoncino intelligente, al quale si possono connettere alcuni sensori. I sensori forniti nella scatola sono un sensore tattile(…un pulsante.. nella ver. educational che ne sono 2), un sensore di luminosità, un sensore ad ultrasuoni ed un microfono. Questi possono essere connessi ai 4 ingressi del mattoncino intelligente tramite gli appositi cavi (tipo cavi telefonici ma a 6 fili e un connettore RJ11 ma con la linguetta spostata a destra ). Inoltre sono presenti 4 motori comprensivi di encoder da connettere alle 3 uscite. Il blocchetto CPU (.. mi sono stancato di chiamarlo intelligente.. per adesso non lo è ancora..) è provvisto di un display monocromatico, 4 pulsanti gommosi e la porta USB per la connessione al PC. La connessione si può anche stabilire con l’interfaccia bluetooth. La Lego fornisce un software per la programmazione della CPU. In realtà è stato sviluppato dalla National Instruments, quelli che producono LabView per capirci, ed infatti i due sw si somigliano molto. Ovviamente quello realizzato per la Lego è molto più semplice, è comunque sempre un linguaggio di programmazione a blocchi grafici. Significa che come nel LabView per scrivere il proprio codice si cablano letteralmente dei blocchi, ognuno con la sua particolare funzione, ci sono blocchi condizionali, blocchi di I/O , matematici etc.. Affinchè sia possibile riprodurre i normali costrutti di programmazione ogni blocco possiede una propria configurazione.

legonxt_software.jpg

legonxt_software.jpg

Questo approccio a mio parere è vincente applicato a questo prodotto, infatti permette a chiunque non conosca linguaggi di programmazione testuali di creare una logica, oppure di apprendere e sperimentare il processo logico che porta alla formulazione di un algoritmo. Inoltre essendo un linguaggio grafico, i blocchi rimangono bene impressi nella memoria facilitando l’apprendimento. Tuttavia dal mio punto di vista ,per chi sa programmare questo metodo ha dei limiti non piccoli e difficilmente superabili. Ad esempio il fatto che il codice generato sia spesso ridondante e quindi causa di una troppo lenta esecuzione, ma soprattutto la poca gestibilità del codice quando inizia a diventare importante. Immaginate di avere davanti agli occhi uno schema elettrico complesso e da quello dover ricostruire il flusso del programma per fare modifiche o manutenzione, magari dopo mesi che lo avete scritto!!

Il vero motivo di interesse

Forse leggendo le prime righe vi sarà rimasta impressa una parolina che ad un vero geek non sfugge mai … “..aperto..”. Se fosse veramente tutto qui di certo non mi sarei mai prestato a fare il testimonial della Lego. Che sia chiaro, mai avuto nulla contro la Lego! anzi da piccolo sono stato un suo grande ammiratore, c’erano lego sparsi da tutte le parti e ci passavo sopra ore ed ore. Ma questa è una storia finita ormai decenni fà (..cavolo..allora anche io sto invecchiando??!! …) ma clamorosamente, e inaspettatamente il mio rapporto con il mattoncino colorato ha ripreso vigore da qualche mese. In effetti è un prodotto che si può guardare da varie angolazioni, peraltro tutte con applicazioni interessanti. Per chi ha figli e li vuole introdurre alla meccanica, all’elettronica di processo o anche alla programmazione è un valido e divertente strumento. Per chi ha la necessità di autocostruirsi una macchina che sia in grado di svolgere funzioni meccaniche semplici ma compiti potenzialmente complessi rappresenta una possibilità di rapida progettazione. Infatti oltre ai sensori che precedentemente descritto ne esistono moltissimi altri di ditte terze, in grado di misurare parametri fisici e chimici come temperatura, umidità, ph, forza, accelerazione, rotazione etc… etc… Un’altra opportunità, quella che personalmente preferisco e che mi ha portato ad approfondire l’argomento è quella di vedere l’NXT come una piattaforma composta e componibile da macroblocchi consolidati sulla quale testare un’applicazione complessa. E’ il modo per provare subito quello che si ha in mente. Sono convinto che chi pratica l’elettronica per passione a volte si complichi la vita, ricercando una sorta di unicità anche nelle piccole cose, solo per poter dire di aver fatto tutto da solo. Mi accorgo per esempio di autocondizionarmi nelle scelte progettuali, magari scelgo di costruirmi una scheda che esiste in commercio, mi riscrivo le librerie e fino a qualche anno fa (questa l’ho superata!!?!) nel programmare un microcontrollore in C e non in assembler mi sembrava di barare (ecco… adesso penserete che sono pazzo.. ;) ). Ma alla fine è necessario? La mia risposta è si e no. Penso che se una cosa non la si abbia mai fatta è sempre importante sperimentarla in prima persona. Ma se l’obbiettivo ad esempio è creare una logica originale , il fatto di avere già tutto pronto è fantastico!! Sento già qualcuno che borbotta.. si ma l’hardware!? Come si fa senza nemmeno dare una scacciavitata ! Non si può!! E poi tutto a scatola chiusa?! Uno non sa nemmeno su cosa sta lavorando!:… SBAGLIATO! anzi sbagliatizzimo!! Si perché quando intendevo aperto, intendevo proprio APERTO! Sul sito della LEGO si possono scaricare tutti gli schemi elettrici, sia del blocco CPU sia dei sensori. Non basta? NO! Perché si possono anche scaricare i sorgenti del firmware, nel caso uno fosse proprio malato… il tutto è accompagnato da una buonissima documentazione (in Inglese) sia sulla parte elettronica che software. Rimane ancora un dubbio, che a pensarci bene diventa ingombrante… uno potrebbe timidamente chiedersi… “..lo devo programmare con i bocchettoni colorati?..” e intanto si figura il suo progetto che tra le rige ha appena realizzato, trasformarsi in un’immane groviglio di collegamenti. La risposta è: assolutamente NO! Se vuoi puoi usare il software lego, altrimenti puoi usare il LabView, si.. perché ovviamente la NI ha realizzato un toolpack che espande le potenzialità di LV con alcuni blocchi dedicati al nostro NXT. Ma non è finita.. Il blocchetto si può anche programmare compilando un codice scritto in C++ oppure in Java! Esistono infatti degli IDE e compilatori open source (tra l’altro è software di qualità) che permettono di fate tutto ciò e anche di più, perché volendo si possono installare firmware enhanced con più funzionalità (per il java è d’obbligo). Inoltre, tanto per togliere definitivamente ogni dubbio sul fatto che NXT sia solo un gioco per bambini, Microsoft Robotic Developer Studio , vicino alle librerie per controllare i vari robot Roomba, il bot della Parallax e il frame work per Kuka Robotic Arm, mette a disposizione le librerie per l’NXT e fornisce anche il modello 3d per la simulazione! Se ancora non dovesse bastare esistono anche le librerie per Matlab e gli SDK per Visual Studio. Le potenzialità sono ormai abbastanza chiare. L’idea è di usarlo come piattaforma di sviluppo per rapidi prototipi, soprattutto orientati ad applicazioni che richiedono una meccanica ridotta ed applicazioni potenzialmente molto complesse, oppure per lo sviluppo e l’interfacciamento di schede elettroniche homebrew e sensori.

Un breve accenno sull’ Hardware dell’NXT

nxt.jpg

nxt.jpg

La CPU

Il cervello è un ARM7 , processore a 32 bit prodotto dalla ditta Atmel . - 256 KB FLASH - 64 KB RAM - 48 MHz Il coprocessore è un uC a 8 bit sempre Atmel (AVR processor, ATmega48) La scheda è accessoriata di un modulo Bluetooth CSR BlueCore (SPP) , interfaccia USB 2.0, 4 porte di ingresso , 3 porte di uscita, un altoparlante, un Display LCD 100X64 B/W e 4 pulsanti gommati.

nxt-top_big.jpg

nxt-top_big.jpg

schema NXT.jpg

schema NXT.jpg

Come si può notare L’ARM7 ha la funzione centrale di gestione delle periferiche. E’ connesso al modulo bluetooth via USART e SPI, con il quale controola anche il display. Possiede anche la gestione diretta degli ingressi analogici, digitali ,gli encoder, della porta USB e dell’uscita audio. Inoltre comunica con il microcontrollore AVR per mezzo del bus I2C. Esso svolge la funzione di coprocessore e gli viene demandata la gestione dei motori e dei pulsanti . Questo permette di implementare via software una sorta di multitasking, perchè mentre il motore si muove l’ARM può eseguire altre istruzioni, ad esempio lettura di ingressi oppure comunicazione con dispositivi periferici etc.. Di seguito riporto lo schema a blocchi che rappresenta quanto appena detto:

sblocchi.jpg

sblocchi.jpg

Porte di IO

Ognuna delle tre porte di uscita mette a disposizione due uscite PWM per il controllo del motore comandate dal uC ATMEL e l’alimentazione. Inoltre ci sono due ingressi “Tacho” con funzione Trigger di Schmitt per il feedback dell’encoder, che vanno direttamente sull’ARM7 e l’alimentazione per il motore. Ognuna delle quattro porte di ingresso è connessa direttamente all’ARM7 e mette a disposizione oltre all’alimentazione per i sensori, due ingressi digitali e un’uscita analogica, che però può anche funzionare come un segnale in corrente di uscita. L’ingresso analogico vanta un ADC a 10bit ma, in caso si setti la porta come uscita di corrente può fornire fino a 20mA (per porta). I due ingressi digitali di ogni porta possono anche essere utilizzati come bus I2C a 9600 bit/s, con la limitazione che di funzionare solo come Master. Solo la porta di ingresso numero 4 ha anche la possibilità di diventare una porta ad alta velocità basata su protocollo seriale RS485. Anche se non ancora utilizzata dalla Lego, questa funzionalità a mio parere apre grandi prospettive di interfacciamento bidirezionale con dispositivi di natura eterogenea.

I sensori presenti nella confezione

Contatto:

è un semplice pulsante.

lego-mindstorms-nxt-touch-sensor.jpg

lego-mindstorms-nxt-touch-sensor.jpg

Luminosità:

E’ un sensore analogico. Per mezzo di un diodo ed un fototransistor restituisce un’uscita analogica proporzionale alla luce ambiente o a quella riflessa dell’emettitore.

lego-mindstorms-nxt-light-sensor.jpg

lego-mindstorms-nxt-light-sensor.jpg

Suono:

E’ un microfono preamplificato con uscita analogica.

lego-mindstorms-nxt-sound-sensor.jpg

lego-mindstorms-nxt-sound-sensor.jpg

Ultrasuoni:

E’ un sensore più complesso degli altri perché è dotato di un suo microcontrollore e comunica con la CPU tramite bus I2C. Leggendo gli opportuni registri si ottiene un valore proporzionale alla distanza dal primo ostacolo posto di fronte ai trasduttori.

lego-mindstorms-nxt-ultrasonic-sensor.jpg

lego-mindstorms-nxt-ultrasonic-sensor.jpg

Ending...

Con questo semplice articolo spero di aver trasmesso le informazioni necessarie a permettere una valutazione obbiettiva di questo prodotto. Il motivo è che penso possa funzionare da catalizzatore di quelle idee che troppo spesso, a causa della mancanza di tempo, soldi e a volte anche di spunti, rimangono appese lì..e poi … silenziosamente svaniscono. Nel caso fosse di interesse, in futuro mi sarà possibile ampliare l’articolo con tutorial pratici per introdurre gli svariati metodi di controllo e di programmazione, oppure per trattare argomenti specifici riguardanti la robotica (es. un progetto che ho applicato all'NXT e penso possa essere di interesse è una AI per rover, basata su Fuzzy Logic).

Un saluto, Flavio Ansovini

2

Commenti e note

Inserisci un commento

di ,

Anche se come regista non valgo molto cercherò di fare un filmato a qualche progetto che ho realizzato! Saluti, Flavio

Rispondi

di ,

Ottima idea recensire prodotti interessanti in modo così piacevole. Un buon filone per articoli di ElectroYou. Grazie Flavio. Ora ci aspettiamo un bel video su Youtube. Ce ne sono già alcuni ma quello che realizzerai tu li batterà tutti.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.