# Lego Mindstorms

Lego Mindstorms és una línia de joguines centrades en la robòtica educativa de l'empresa Lego Education.
El paquet conté un microcontrolador, sensors, motors i connectors amb les vores cobertes dels pius típics dels elements constructius de plàstic de colors de Lego. Incorpora també peces en forma de pals, rodes i pneumàtics per a bastir el robot.
El joc consisteix en el muntatge del robot, una programació per blocs amb un entorn propi, descàrrega del programa al microcontrolador, i seguiment de l'execució del robot sobre una pista de paper o en lliure circulació.

## Història

Lego Mindstorms va ser fruit d'una col·laboració entre Lego Education i el MIT (Institut Tecnològic de Massachusetts). Instal·len els primers centres de Lego Mindstorms a Chicago l'any 1997. El primer programa es va dir "Robosport", sobre les mateixes bases de joc actuals.
La primera versió es va distribuir el 1998 amb el nom de "Robotics Invention System" encara que s'ha venut únicament com a equip didàctic per a escoles. La versió actual, "Lego Mindstorms NXT" va sortir el 2006 als Estats Units.

## Construcció

Els models de muntatge proposats venen en un llibret amb el nom de Constructopedia i també en el programari per a ordinador que acompanya el producte.

### RCX

Basat en un processador H8/3297 de Renesas (abans Hitachi).

### NXT

Basat en el microcontrolador ARM7 de ATMEL.
El software Lego Mindstorms NXT permet programar els robots NXT i descarregar els seus programes mitjançant un port USB o per connexió Bluetooth. Aquest software, que funciona fent 'clicks' i arrossegant, és impulsat per LabVIEW (National Instruments). Inclou instruccions de desenvolupament i guies de programació per iniciar-se en el món de la robòtica i la programació i d'aquesta manera, començar a desenvolupar i programar fàcilment amb robots MINDSTORMS NXT. Aquest programa va ser desenvolupat per complet en el software de programació gràfica de la indústria LabVIEW (National Instruments) per desenvolupar sistemes de control i mesura. Els usuaris de LabVIEW aprecien moltes semblances entre el Software LEGO MINDSTORMS NXT i LabVIEW perquè les dues empreses, National Instruments i LEGO van establir una col·laboració per conservar tots els elements fonamentals de la programació gràfica de LabVIEW. Així van aconseguir optimitzar la interfície de l'usuari per als usuaris d'ordinadors inexperts. Aquest fet fa factible que joves principiants i programadors experts utilitzin el software per programar els seus robots.

## Microcontrolador

Comparativa
| | RCX | NXT | EV3 |
| Processador | Hitachi H8/300 @10-16 MHz 32 KB RAM 16 KB ROM | Atmel ARM7 @48 MHz 64 KB RAM 256 KB Flash | TI Sitara ARM9 @300 MHz 64 MB RAM 16 MB Flash |
| Co-Processador | | Atmel 8-Bit AVR @8 MHz 512 B RAM 4 KB Flash | |
| Memòria extra | | 512 B RAM 4 KB Flash | ranura microSD hasta 32 GB |
| Port | 3 per motors i 3 per sensors | 3 per motors i 4 per sensors | 4 per motors i 4 per sensors |
| Comunicació amb el PC | port IR | USB 12 Mbps i Bluetooth v2.0 | USB 480 Mbps i Bluetooth v2.1 |
| Comunicació per Wi-Fi | | | Amb un adaptador USB |
| Comunicació amb smartphones | | Android | Android i iOS |
| Pantalla | LCD monocrom. segmentada | LCD monocrom. 100x64 px | LCD monocrom. 178x128 px |
| Compatibilitat | | Motors del EV3 | Sensors i motors del NXT |
| Altres | | | Autodetecció de dispositius connectats |
Els Lego Mindstorms NXT tenen un processador basat en l'ARM7 amb una arquitectura Von Neumann i els EV3 tenen un basat en l'ARM9 amb Harvard. En una arquitectura Von Neumann la unitat de control (UC) està connectada a una sola memòria per les dades i instruccions. En canvi, una arquitectura Harvard té una memòria per les dades i una altra per les instruccions. La Von Neumann, fins que no ha transferit totes les dades, el bus no pot llegir una altra instrucció a executar, cosa que la Harvard pot realitzar simultàniament.
Els ports de l'EV3 funcionen a 460.8 kb/s i usen el protocol UART (Universal Asynchronous Receiver/Transmitter) full-duplex. En canvi, els ports del NXT funcionen a 9'6 b/s i usen el protocol I²C (Inter-Integrated Circuit) half-duplex
A partir de la generació dels Lego Mindstorms NXT, es va decidir que per seguretat s'usarien ports rj12 modificats. D'aquesta manera els ports no són compatibles amb les entrades de telèfon, ja que treballen a un voltatge més alt. Un cable d'entrada de telèfon té la al centre i el dels Lego Mindstorms a la dreta.
Sobre la compatibilitat entre generacions, els components del bloc RCX no és compatible amb cap. Però tots els components del NXT es poden usar amb el bloc EV3. A l'inrevés no: només els motors del EV3 (gran i mitjà) es poden usar amb el NXT com a motors normals
Tots els sensors i motors del EV3 tenen un AUTO ID únic que serveix per distingir quin sensor o motor està connectat a cada port. D'aquesta manera, l'EV3 pot evitar els intents de lectura a un component que no és, que era un problema que teníem amb els models anteriors.

## Sensors

A la generació EV3 es disposa de cinc sensors diferents: color, contacte, ultrasònic, infrarrojos, giroscopi. I la generació NXT disposa dels mateixos més dos altres sensors: so i temperatura.

### Sensor de colors

Aquest sensor ens permet agafar lectures dels colors i la intensitat de llum. Té una freqüència de mostreig d'1 kHz i té tres modes d'ús:
* Mode de color: pot reconèixer set colors (negre, blau, verd, groc, vermell, blanc i marró) i l'absència de color. Pot servir per ordenar objectes per colors, seguir línies de colors específics,\ldots. L'únic problema són els colors intermedis que poden ocasionar que diferents lectures d'un mateix color, s'interpretin diferent cada vegada.
* Mode d'intensitat de llum reflectida: pot mesurar la intensitat de llum que es reflecteix. És a dir, mesura la intensitat en una escala de 0 (fosc) a 100 (clar). Pot servir per moure's dins d'una secció clara i parar-se quan sigui fosc, o viceversa.
* Mode d'intensitat de llum ambient: pot mesurar la intensitat de llum ambient que hi ha. Mesura la intensitat en una escala de 0 (fosc) a 100 (clar). Pot servir per programar alarmes segons la il·luminació ambient del Sol.

### Sensor de contacte

Aquest sensor ens permet saber quan hi ha algun objecte que col·lideix amb el sensor. Té tres condicions:
* Premut: pot reconèixer quan el sensor s'ha premut.
* Alliberat: pot reconèixer quan el sensor s'ha alliberat d'una pressió anterior.
* Xoc: és la unió de les dues condicions anteriors, reconeixent quan el sensor s'ha premut i després s'ha alliberat.

### Sensor ultrasònic

Aquest sensor ens permet calcular la distància a objectes mitjançant onades de so que no són perceptibles per l'oïda humana.
Pot mesurar objectes a una distància entre 1 i 250 cm, té una resolució de 0.1 cm i una precisió de +/- 1 cm. Pot servir per usar-se com un sònar o fins i tot per esperar i encendre's quan un objecte s'apropa. Exemples reals de sensors com aquests els podem trobar en portes automàtiques,...

### Sensor d'infrarojos

Aquest sensor ens permet detectar llum infraroja d'objectes i rastrejar el Transmissor d'infrarojos remot dels Lego Mindstorms EV3. Té dos modes d'ús:
* Mode proximitat: pot mesurar aproximadament la distància a un objecte amb onades de llum reflectida. Mesura la proximitat en una escala de 0 (a prop) a 100 (lluny). Es poden mesurar objectes fins a 70 cm de distància.
* Mode guia: pot detectar una font d'infrarojos en un canal d'entre quatre a una distància màxima de 200 cm. D'aquesta manera, el sensor pot aproximar la direcció de gir (en una escala de -25 a 25) i la distància (en una escala de 0 a 100) a l'objecte emissor.

### Sensor giroscopi

Aquest sensor ens permet mesurar el moviment i els canvis en l'orientació. Té una freqüència de mostreig d'1 kHz i dos modes d'ús:
* Mode d'angle: pot mesurar angles amb una precisió de +/- 3º.
* Mode giroscopi: pot mesurar la velocitat angular amb un màxim de 440º.
Exemples reals de sensors com aquests els podem trobar en sistemes de navegació, smartphones,...

### Sensor de so

Aquest sensor és únic dels Lego Mindstorms NXT i ens permet mesurar els nivells de soroll.
Pot mesurar els nivells de soroll en decibels (dB) i decibels ajustats (dBA). La diferència entre els dB i els dBA és que els dBA s'ajusta a la sensibilitat de l'oïda humana i, per tant, correspon a tots els sons que pot escoltar un humà. Per contra, els dB mesura tots els sons: els que podem escoltar i els que no.
Es poden mesurar fins a 90 dB en una escala de percentatges de 0 (fluix) a 100 (fort). D'aquesta manera, el sensor pot distingir entre sons forts i fluixos, però mai pot distingir entre tons diferents.

### Sensor de temperatura

Aquest sensor és únic dels Lego Mindstorms NXT i ens permet mesurar temperatures en les escales Celsius i Fahrenheit.
Pot mesurar temperatures a l'escala Celsius entre -20 °C i 120 °C i a l'escala Fahrenheit entre -4 °F i 248 °F.

## Motors

A la generació EV3 es disposa de dos motors diferents: el gran i el petit.

### Motor gran

El motor gran ens serveix per realitzar moviments quan es necessita alta precisió.
Aquest motor va entre 160 i 170 rpm amb una precisió d'1º. Té un parell de funcionament de 20 Ncm i un parell d'aguant de 40 Ncm. Aquest motor disposa d'un sensor giroscopi integrat que permet sincronitzar la rotació de diferents motors.

### Motor mitjà

El motor mitjà ens serveix per realitzar moviments quan es necessita velocitat i temps de resposta ràpid o una mida de robot petit.
Aquest motor va entre 240 i 250 rpm amb una precisió d'1º. Té un parell de funcionament de 8 Ncm i un parell d'aguant de 12 Ncm. Aquest motor també disposa d'un sensor giroscopi

## Altres components
### Transmissor d'infrarojos remot

Els transmissor d'infrarojos remot serveix per emetre infrarojos que el sensor d'infrarojos dels Lego Mindstorms EV3 rep. Té dos modes d'ús:
* Mode normal: el transmissor emet senyals infrarojos que el sensor rep. Es pot usar per fer que el robot rastregi el transmissor.
* Mode remot: permet usar el transmissor con un control remot. D'aquesta manera, es pot distingir quina combinació amb quatre botons diferents s'ha premut. En total, pot distingir entre 11 configuracions diferents.

## Programari

L'equip inclou un programari, adreçat als nens i nenes a partir de 12 anys, que mostra els models i el seu muntatge pas a pas i facilita la programació per blocs, amb l'aspecte de peces de trencaclosques que s'encaixen en seqüència, amb blocs que indiquen alternativa, iteració, final d'iteració, inici d'interrupció per esdeveniment i blocs que permeten llegir o reaccionar als sensors i temporitzadors, activar o aturar els motors o làmpades, i accions compostes com girar, ballar i remenar.
RoboLab és el programari per a escoles, desenvolupat a partir del software LabView de National Instruments desenvolupat a la "Tufts University". Permet fer diagrames amb icones per a les diferents accions sobre dels sensors, motors i làmpades, i visualitzar-hi els paràmetres de les accions com si fossin arrecades que pengen de les icones.
Per als més grans i avesats a la informàtica existeixen múltiples possibilitats:

### Gordon's Brick Programmer

    mini entorn de programació per a l'RCX. Permet crear instruccions i programes a partir de menús.

### NQC

    és un llenguatge similar al C que permet programar totes les funcions del controlador RCX sobre el sistema operatiu original.

### BrickOS (abans LegOS)

    és un sistema operatiu de substitució per al controlador RCX. Permet fer programes en diversos llenguatges per a ser compilats amb gcc de gnu al codi màquina dels micros de la sèrie H8/300 de l'RCX.

### LejOS

    és un sistema operatiu de substitució que permet programar el RCX i el NXT en llenguatge Java.

## Canals d'obtenció i traduccions

És problemàtic encara, aconseguir aquest material, car Lego té molt parcel·lats els mercats de distribució i no permet que se serveixi des d'un país a un altre.
La mateixa web oficial de Lego per a la venda en línia diferencia productes per a cada país i fins fa poc no oferia aquesta gamma per a Espanya. Actualment s'ofereix la gamma NXT però només en francès o anglès.
Existeix un únic proveïdor de "Lego Educatius" per a Espanya, que subministren una versió del software en castellà encara que acostuma a no ser l'última versió. És molt interessant la secció de complements de cara a elements mecànics, hidràulics i altres insospitats.
Una font molt interessant és el mercat de segona mà a través de Ebay. Hi podeu trobar tota mena de peces o programari, paquets didàctics o col·leccions voluminoses. De vegades els elements més interessants se solen subhastar "amb tramesa només dins el país de l'ofertant" i no apareixen a la llista de disponibles per al propi país (ex. Esp.); per això cal entrar en el web Ebay país per país i veure que hi ha i, en cas que només admetin lliuraments del subhastat al país d'origen, fer valer els contactes o amics allà, si val la pena.

## Lego Mindstorms NXT 2.0

Lego Mindstorms NXT 2.0 és un nou kit per muntar un robot de la línia Lego Mindstorms. Actualment es pot comprar a gairebé totes les botigues de Lego en línia. Conté 619 peces i el seu nombre clau és 8.547. Costa aproximadament de 280 dòlars. Amb aquest set es llança el nou Sensor de Color RGB, RGB vol dir Vermell Verd i Blau (Per les seves sigles en anglès Red, Green, Blue).

## Referències

* ↑ Lego Education
* ↑ Renesas.com - fabricant del micro H8/3297 de l'RCX (anglès)
* ↑ «NXTreme a Lego Mindstorms». Arxivat de l'original el 2009-10-06. [Consulta: 21 abril 2007].
* ↑ Edgar Tello, Tania Y. Guerrero, Vicente P. Saldivar A review of Lego Mindstorms robotics platform for educational and research applications, 2013.
* 1 2 «Comparing the NXT and EV3 bricks» (en anglès). Xander Soldaat, 2013.
* ↑ «EV3 and NXT: Difference and Compatibility» (en anglès). Laurens, 2013.
* ↑ «LEGO Support» (en anglès). Arxivat de l'original el 2015-12-08. [Consulta: 8 desembre 2015].
* 1 2 3 4 5 6 «Còpia arxivada». EV3 Guía de uso. Arxivat de l'original el 2015-12-08 [Consulta: 8 desembre 2015].
* ↑ «Building Robots with LEGO Mindstorms NXT» (en anglès). Dave Astolfo, Mario Ferrari, Giulio Ferrari, 2007.
* ↑ «LEGO Education» (en anglès).
* ↑ «Robolab a Tufts University». Arxivat de l'original el 2007-06-30. [Consulta: 22 abril 2007].
* ↑ Tufts University - Centre d'Educació mitjançant l'Enginyeria
* ↑ Gordon's Brick Programmer Arxivat 2007-02-08 a Wayback Machine. (anglès)
* ↑ Llenguatge "Not Quite C" per a l'RCX (anglès)
* ↑ BrickOS Sistema Operatiu per a l'RCX (anglès)
* ↑ GCC (Col·lecció de compiladors del projecte GNU (anglès)
* ↑ LejOS sistema operatiu per a la programació en Java (anglès)
* ↑ Lego Mindstroms en línia (anglès)
* ↑ Distribuïdor oficial de "Lego Educatius" Arxivat 2010-06-23 a Wayback Machine. (castellà)
* ↑ Ebay - productes Mindstorms disponibles per a Espanya (anglès)

## Enllaços externs

* Web Mindstorms de Lego Arxivat 2006-01-09 a Wayback Machine. (anglès)
* Lego Mindstorms RCX internals Arxivat 2007-02-16 a Wayback Machine. (anglès)
* Techbricks.nl - Muntatges amb el NXT Arxivat 2009-02-27 a Wayback Machine. (anglès)