# Lego Mindstorms

Lego Mindstorms Lego etxeak haurrentzat egindako robotikako jokoa da, zeinak robotikako teoria oinarrizkoa lantzeko elementuak dituen, hala nola piezak elkarren artean lotu eta ekintzak programatu, modu interaktiboan. Robot hau 1998-ko irailean merkaturatu zen lehen aldiz.
Komertzialki, «Robotic Invention System» izenarekin zabaltzen da, gaztelaniaz, Sistema de Invención Robotizado (RIS). Hezkuntzarako tresna moduan saltzen da, jatorrian Lego-ren eta MITen arteko elkarte baten bidez. Hezkuntzako bertsioak «Lego Mindstorms for Schools» du izena, euskaraz eskolarako Lego Mindstorms, eta Robolab-en GUIan oinarritutako programazio-softwarearekin dator.
Atal elektromekanikoak dituzten eta ordenagailu bidez kontrola daitezkeen sistema integratuen ereduak eraikitzeko erabil daiteke Lego Mindstorms. Bizitza arrunteko ia edozer gauza adieraz daiteke piezen bitartez, hala nola igogailu bat edo-eta robot industrialak.

## Historia

Lego Mindstorms MITen eta Lego-ren arteko lankidetza emankorraren emaitza izan zen. Lankidetza hori industriaren eta ikerkuntzaren arteko harremanaren adibide gisa erabiltzen da, bi bazkideentzat oso onuragarria dena.

### MITeko epistemologia eta ikasketa taldearekin lankidetza

Lego Mindstorms ildoa Lego-ren garai zailean jaio zen, Lego-ren eta MITren akordio baten ondorioz. Akordio horren baitan, Lego-k MITeko epistemologia eta ikasketa taldeko ikerkuntzak finantziatuko zituen eta, ordainean, bere produktuetarako ideia berriak jasoko zituen, merkaturatu ahal izango zituenak MITi erregaliarik ordaindu gabe. Lankidetza horren fruitua izan zen MIT Programmable Brick (Adreilu programagarria).
Seymour Papert taldeko aholkularia 1960ko hamarkadatik zegoen interesatuta zientziaren, ezagueraren jabetzaren eta haur-adimenaren garapenaren arteko erlazioarekin. Izan ere, produktuaren Mindstorms izena haren liburu baten izenburuan du jatorria: MindStorms: Children, Computers, and Powerful Ideas, zeinetan ordenagailuen erabilerak ikasketan duen bultzadaren inguruko burutazioak deskribatzen dituen. Programatzen irakasteko tresna gisa hedatuta dagoen Logo programazio-lengoaiaren sortzaileetako bat izan zen Papert-ek Jean Piaget-etik hartzen du haurra bera, buru-egitura propioen eraikitzailearen kontzeptua. Konstrukzionismoaren aldekoa da, haurrak haren ezaguera forma aktiboan sortu eta hezkuntzak jarduera hori bultzatzeko tresnak erraztu behar dizkiola sostengatzen duen tesia. Haren liburuaren irakurketak bultzatu zuen Lego-ko zuzendaria MITekin kontaktatzera, talde biek haur-ikasketaren inguruko antzeko burutazioak zituztela pentsatzera bultzatu baitzuen.
"Ikasketa ez da hobea irakasleak erakusteko tresna hobeak eskaintzeagatik, baizik eta ikasleei eraikitzeko aukera hoberenak eskaintzeagatik." Seymour Papert
Miteko epistemologia eta ikasketa taldeak, Papert-en apopiloa izan zen Mitchel Resnick-ek zuzenduta, sakonki eraginda zegoen Papert-ek berak konstrukzionismo gisa izendatutako Piaget-en konstruktibismoagatik. Perspektiba horren arabehera, ikaslea formulak eta teknikak emanez eskolatu ordez (instrukzionismoa), hobeto da ikasketa bultzatzea injeniarien edo asmatzaileen jarduerak egin ditzaten ingurune bat sortuz, ikasleek zientzia eta teknikaren funtsezko printzipioak atzitzeko; modu honetan sortzen baita zientzialarien pentsatzeko forma, ikasleak gogoz interesatzen dira haien lanean eta "motu propioan" saiatzen dira informatzen dira aurkitzen doazen arazoak ebazteko. Horregatik, Resnick-en hitzetan "ikasleei gauzak diseinatzen laguntzeko gauzak diseinatzen" saiatu ziren.

### Aurrekariak eta "Bloke programagarriaren" garapena

Mindstorms lerroa ez zen izan Lego-ren eta Miten arteko lehen fruitua, bai ordea arrakastatsuena. Aurretik, Lego Logo programazio-lengoaiaz interesatu zen. Interes horren fruitua izan zen Resnick-ek eta Steve Ocko-k sortutako Lego Tc Logo, 1986an jaioa. Lego TC Logo sistema ordenagailu batean programatzen zen eta kable bidez konektatuta zegoen motorrak, argiak eta sentsoreak zituen Lego eraikuntza zen. Aunque alcanzó un relativo éxito comercial, según Resnick el sistema “imponía restricciones tanto físicas como imaginativas”.
Garapen lerro horrek 1993an jarraituko zuenControl Lab-en jarutiketarekin, software hobetuarekin.
Lego eraikuntza bati konektatuta zegoen ordenagailua programatu ordez, eraikuntza horretako bloke bat programatzeko urratsa luze aztertutako ideia naturala zen. 90ko hamarkadaren hasieratik hasi zen aukera hori ikertzen. Hala ere, proiektuak itxaron egin behar izan zuen merkatua egokia izan arte. Alde batetik, teknologiaren kostua gehiegizkoa zen hasiera batean. Bestalde, blokea ordenagailu batetik programatuko zen, eta garai horretan ordenagailuak ez zeuden zortzi urte geroago bezain hedatuta, eta horrek eskaerari negatiboki eragingo zion. Bost bat urte itxaron behar izan ziren baldintza egokiak izan eta RCX blokea izango zenaren garapena serio hartu arte, mikrokontrolagailu bat duen eta Mindstorms produktuaren bihotza den Lego blokea. Era honetan Lego eraikuntzak egitura estatiko izatetik munduarekin eragiten duten makina dinamikoak izatera pasatzen ziren. Bestalde, hainbat kasutan Lego produktuek helburu finkoa zuen zerbait eraikitzeko piezak zekartzaten, hala nola tren bat edo zubi bat, eta horrek "eraikiaz ikasteko" aukera ematen zuen arren, bloke berriaren garapenean Papert eta Resnick-en "diseinatuz ikasteko" filosofia jarraitu zen, eta beste hainbat aukera irekiak utziz.

### Diseinuaren erabakiak

Hautatutako merkatu segmentua 10 eta 14 urte arteko haurrena izan zen, batez ere mutilena, nahiz eta MITen garapenetan ez zen sexu arteko bereizketarik egiten. Hau ere zen Lego-ren segmentu tradizionala. Publiko horren aukerak zehaztu zituen diseinuaren erabakiak eta "Programmable Brick" (adreilu edo bloke programagarri) izeneko MITeko garapenaren, eta Lego-k MITekin batera egindako ikerketatik oinarrituz modu independentean diseinatu eta garatutako RCX blokearen artean. MITeko diseinua erabili ordez zerotik abiatuz produktu berri bat egitea justifikatzen da erakunde bien helburu desberdinengatik. MITeko sistema haurren ikaste prozesuan fokatua zegoen eta horrek sistemaren produkzioa garestiago egiten zuen ezingo baitziren unitate asko egin, eta hauskorragoa, beti egongo baitzen norbait konpontzeko ingeniariz betetako laborategi batean. Lego-ren blokea, ordea, aurrenerabeen salmentara zegoen zuzenduta eta, beraz, sendoa eta atzigarria izan behar zuen.
Diseinuaren beste eredu batzuk honakoak izan ziren:
* Sistemak bakun aizan behar zuen erabiltzaile berriarentzat eta, aldiberean, iniziatuarentzat diseinu sofistikatuak egitea baimendu behar zuen.
* Jostailua forma diferente askotara erabili ahal izan behar zen. Según Resnick, cada vez que al terminar un proyecto el niño consideraba que había “acabado” con el juguete se consideraba un fallo del diseño. Bestalde, haur bakoitzak interes diferenteak ditu.
* Lañotasuna. MITeko probetan, diseinu txikiak eta mugatuak egitean erabiltzaileek sormen handiagoko aplikazio berriak aurkitzen zituztela ikusi zuten, Cricket izeneko sistema sentsore- eta motore-konexio urrikoa.
* Kaxa beltzen aukera axolatia: haurrak motoreak, sentsoreak eta mikrokontrolagailuak ditu eskura, baina ezin ditu aldatu edo edo berriro diseinatu. Jokoa diseinuak egiteko osagai horiek konbinatzean datza, ez osagai horiek diseinatzean.
* Enfasia programazioaren ikastean jartzea. Resnick-ek nabaritu zuen ordenagailuen kopurua azken 20 urteetan bikoiztu arren, 80ko hamarkadaren hasieran Basic eta Logo irakasten zirela eta, 90ko hamarkadaren amaieran, berriz, programazioaren hastapen gutxiago irakasten zirela. Hasiera batean Logo-rekin egin zen saiakera, baina haurrek luzeegi ematen zuten ikasteko. Orduan, bertsio grafiko bat garatu zuten LogoBlocks, instrukzioak blokeen eta diagramen bitartez adieraziak zeuden, baina horrek, ordea, software konplexua egitea zailtzen zuen. MITen azken erabakia bertsio hibrido bat inplementatzea izan zen: programak forma grafikoan edo kode idatzian egin ahal izango litzateke. Modu honetan, erabiltzaile berria bertsio errazetik hasi ahal izango litzateke, eta bertsio ahaltsura pasatu diseinu konplexuagoak egiteko beharra izatean. Hala ere, Lego-k RCXri garapen ingurunearen bertsio grafikoa soilik erantsiko zion eta, Logo-ren ordez, programazio-lengoaia berri bat garatuko zuen: RCX CODE.
* Blokeak sarrera/irteerako ataken kopuru nahikoa izan behar zuen Lego-ren sentsore mota diferenteak konektatu ahal izateko: tenperatura-, soinu- edo argi-sentsoreak.
* Iradokizunei jaramonik egin ez—neurri bateraino—eta laboratorioan haurrek jostailuarekin egiten dutena aztertu, horrela ideia hobeak lortzen zituztela ikusi zuten eta.
Lego asmakari hoberenetarikoa izan da.

### Produktuaren merkaturatzea

Hasierako proiektu hori zenbait norabidetan adarkatuko zen: MITeko 6.270 robotics competition kit-a, MITeko epistemologia eta ikasketako "Cricket"-ak eta Lego-ren RCX blokea. Ondoren, MITeko garatzaileetako batek bere produktua merkaturatu zuen, ikerketa horren esperientziaren fruitua, izenekoa.
Lehen bertsioa 200 USDko dolar prezioarekin merkaturatu zen. 717 osagai zituen, horien artean RCX blokea. Haren irteeraren ondoren 80000 unitate saldu ituzten hiru hilabetetan. Gainera, robotikako zaleen komuntateak, publiko heldua hori, produktu berri hori interesarekin hartu zuen. Helduen ustekabeko interes horrek salmentek itxaropena hirukoiztea eragin zuen. Gainera, produktu originalaren aukerak zabaldu zituen kartsuen komunitatearen sorrerak, programazio ingurune alternatiboak, baita RCXerako sistema eragileak, hala nola es:LegoOS, Java makina birtual bat, Tinyvm, eta burutazioak trukatzen hainbat web-orri sortu zituen.
RCX blokeaz gain beste bloke programagarri batzuk existitu ziren, NXTren behin betiko bertsioa garatu arte mailaz maila garatzen joan zirena.k 1998tik aurrera lerroaren hasiera merkaturatu zen Cybermaster robotarekin. 2004ko hasieran, Lego-k aurreko urtean izan zituen emaitza txarren ondorioz, 1400 milioi DKK daniar koroi (188 milioi euro inguru) galera erregistratu zuen, Mindstorms lerroa utzi eta merkatu tradizionalera itzuliko zen zurrumurrua zabaldu zen. Hala ere, 2006ko urtarrilean Lego-k Mindstorms NXT bertsioaren berri eman zuen, azken belaunaldikoa, urte horretako ekainean merkaturatzen hasi zena.

### Kritikak

Lego-ren zenbait erabaki komertzialek epistemologia eta ikasketa taldeko printzipioak kontraesaten zituzten. Taldeko kideek desadostasuna erakutsi zuten kit komertzialean borrokarako roboten adibideak sartzearekin, baita edozein adibide sartzearekin ere, haurrak blokeekin aske saiakuntzak egiten uzteko hastapena hausten zuen eta. Bestalde, jokoa korronte konstrukzionistatik abiatzen den arren, hainbat irakaslek oinarrian metodo instruktibistekin erabiltzen zuten eta, ondorioz, joko bultzatutako filosofia konstruktibistaren difusioa salmenten zifretatik itxaron zitekeena baino txikiagoa izan da. El grupo de epistemología y aprendizaje también ha recibido criticas cuestionando su valor académico, pues “casi nunca hacen nuevos descubrimientos tecnológicos, demuestran teorías científicas significativas o crean productos importantes”.

## Beste garapen batzuk
### CyberMaster

Lego-ren lehen garapenetako bat izan zen CyberMaster, programagarria zen zirkuitu integratuen bloke batekin. Haren irteera 2000 urtean izan zen bakarrik Alemaniako, Australiako, Espainiako eta Inglaterrako merkatuetan, Estatu Batuetara soilik estalki bera zeun kopia bat iritsi zen, aldaketa txiki batekin barne-zirkuituan. Set hau urrutiko kontrol batekin zetorren, eta hau programatzen zen eta instrukzioak bildatzen ztuen blokeetara, programatutako mugimenduak gertatzeko. Bloke hau irrati bidezko komunikazio gaitasunarekin banatu zen, baina hau RCXen hurrengo diseinuan utzi zen eta infragorrien alde egin zen. Lego-ren lehen esperimentua izatean, blokeak gaitasun mugatuak zituen:
* Urrutiko kontroleko memorian programa bakarra baimentzen zuen software originala erabiltzen bazen.
* Zenbait Cybermasterren kontrola baimentzen zuen haren irrati-maiztasun bereko hackeoaren bitartez.
* Motorrak blokean zetozen eta desmuntatu ezin zitezkeen arren, kodegailuak ekartzen zituzten.
* Kontrola eta ordenagailuaren arteko komunikazioa ezin da aldiberean egin.
* Memorian gune bakarra zuen programarentzat eta bakarrik bost instrukzio exekutatu zitzakeen aldiberean software originala erabiltzen bazen.

### MicroScout eta Scout

MicroScout 1999an 1999 irten zen mikrobloke programagarria izan zen, instrukzioak argi ikusgai esteka (ingelesez, argi ikusgai esteka) baten bidez instrukzioak transmititzeko gaitasunarekin saltzen zena, eta argi-sentsore bat erantsita eta klaxon bat integratuta zituen. Zenbait funtzio lehenetsiak zeukan:
* Motorra aurrera mugitu
* Motorra atzera mugitu
* Argi-iturri bati jarraitu edo argi-iturria bilatu
* Motorraren kontrola argiaren bidez
* Egoera baten aldaketaren aurrean erne jarrarazteko alarma
* Atzipen-kodearen egiaztatzea

## RCX blokea

RCX blokea Lego Mindstorms-en zati zentrala da, hor aurkitzen baita zati logiko eta elektroniko guztia, robotaren ekintzen gehiengoa baimentzen duena, bere barne-memorian bost programa kargatu daitezke eta bertan gorde blokeari konekta dakiokeen gailu desberdinen kontrolerako oinarrizko firmwarea.
RCX blokeak hiru bertsio ofizial ditu: 1.0, 1.5 eta 2.0, zeinak softwarean hobekuntzak aurkezten dituzten blokearekin batera saltzen den hardware gehiengoari eragin gabe. Hala ere, blokeen zati elektronikoa ez da bateragarria, hiru bertsioek tentsioaren erregulazio desberdinak dauzkate eta, baina hala ere blokeak duen hardwareari ez dio eragiten.

### Mikrokontrolagailua

Haren barne- mikrokontrolagailua Hitachi H8/3292 da, 5V-eko logika tentsioduna eta gutxi gorabehera 16Mhz-eko abiadura duena, hori izanik Hitachi H8/3000 seriearen maiztasun maximoa. 16 Kb-eko ROM memoria dauka, 32 Kb-eko programa-memoria eta korronte sarrera desberdinak, hala nola ADC (analogikotik digitalerako bihurtzailea) sentsoreen seinaleak interpretatzeko. Haren taxu originala konexiotarako zokalorik ez duen zirkuitu inprimatua da eta blokearen zirkuitu inprimatuaren oinarriari soldatuta dago. Mikrokontrolagailu honek zenbait instrukzio prozesa ditzake segundoko, baina haren desabantaila handiena Lego MindStorms NXTrekin konparatuta prozesuen hariak mantentzeko gaitasun txikia da, hots, ezin ditu bi instrukzio aldi berean exekutatu, eta programatzaileak edo erabiltzaileak ahal duela egiaztatzen badu ere, ez da horrela, baizik eta prozesamendu abiadurak gertatzen den atzerapena bereiztea eragozten duela.

### Sarrerak eta irteerak

Sarrera-bide moduan hiru konektore dauzka, sentsore desberdinetatik datorren informazioa jasotzea baimentzen duena. Sarrerak 2x2-ko bloke batekin osatzen dira, haren buruakmaterial eroale batekin inguratuta daude sentsorearen irakurketak baimenduz. Irakurketak LCD pantailaren goiko zatian kokatzen dira, gris kolorekoak dira eta 1, 2 eta 3 zenbakiekin bereizten dira.
RCX blokearen irteeran robotari konekta dakizkiokeen motorrak energizatzeko dira eta, horrela, mugimendua eman. Ematen duen tentsioa 9 Vekoa da, blokeari konektatzen zaion motor bakoitza programaren aginduei jarraituz mugitu dadin. Energia-irteerak LCD pantailaren beheko zatian aurkitzen dira, beltz kolorekoak dira eta A, B eta C letrekin bereizten dira.

### LCD pantaila

Lego MindSotrms-ek dakarren LCD pantailak hiru datu-area ikustea baimentzen du:
* Goiko aldean, sentsoreen sarrerak eta baterien karga-maila.
* Zentruan, zona alfanumerikoa kontagailua, tenporizadorea edo sentsore batek erregistratutako balioak ikustea baimentzen duena.
* Beheko aldean, motorren mugimenduaren zentzua erakusten da.
* Ezkerreko alboan, ataka infragorriaren bidez hari gabeko konexioa dagoen erakusten da.
Haren lan moduan, LCD pantailak exekuzio kontagailu bat dauka, programa exekutatu den aldi kopurua eta denbora zabaltzen du, exekutatzen ari den programaren zenbakia erakusten du eta bi egoera posibletan aurkitzen den pertsonarenirudia erakusten du: geldirik egoeran, pertsonaren adierzpena geldirik agertzen da, eta programa exekutatzen denean, pertsona hori mugimenduan aurkitzen da.
Gainera, sentsore bat hautatzen bada, sentsoreak erregistratutako balioa ikustea baimentzen du RAW neurri batean, sarrerari konektatuta dagoen sentsore mota edozein izanda.
Blokeak oinarrizko firmwarerik ez badu, orduan ez da erakusten programaren kontagailua eta ez dira exekutatzen 2, 3, 4 eta 5 programak, lehenego programak soilik erakutsi ahal izando du korrontearen irteerak eta datuen sarrerak funtzionatzen dutela. Gainera, pertsona finkoa mantentzen da nahiz eta blokearen 1 programa exekuzioan egon arren.
LCD irteera horrek programatzaileari laguntzen dio framework-ak ordeztu nahi duenean, pantailan datuen irteera baimentzen du eta blokearen edozein barne-elementuren egoeraren irteera sortzeko.

### Ataka infragorria eta komunikazioa

RCX blokearen aurreko aldean, argi infragorrirako sensiblea den fototransistorea eta dago erabilgarri ("Ataka infragorria" izena ere deritzona), haririk gabeko komunikazio sistema sinplea ahalmenduz. Sistema hau, telebista baten urrutiko kontrolaren antzera funtzionatzen du, 2400bps-ko abiaduran transmitituz datuak, ondorioz, bit bakoitza 417 us-tan transmititzen da.
Ataka infragorriaren nolakotasunari buruz, abiadura berdineko ataka duen beste gailu batekin konektatzeko gaitasuna ematen dio, hala nola Palms-ak, ordenagailu eramangarriak eta telefono mugikor mota ugarik, leku ezkutu edo txikietan komunikazioko plataformak egitea baimentzen duelarik.
RCXen eta hartzailearen arteko distantzia maximoa 30cm da, eta haren gaitasun maximoan funtzionatuko du oinarriko dorretik eta bi gailuen arteko ikusmena eragozten duten objekturik ez badago. Hala ere, distantzia txikiagoa da gelan existititzen den argiaren kutsaduragatik.

### Elikadura Elektrikoa

Blokearen elikadura elektrikoa 1,5 V-eko 6 AA baterien bidez egiten da, blokearen atzeko aldean konektatzen direnak. Bateriak paraleloan konektatzen dira eta blokeari zein bloke berari konektatzen zaizkion motorrei ematen diete energia.
Lego MindStorms-eko eskuliburuan baterien ordezkapenaren inguruko abisua egiten da, bateriek blokearen barnean dagoen eta programa desberdinak eta firmware-a gordetzen duen pila elikatzen baitute. Ordezkapena 1 minutu baino gehiago atzeratzen bada, gordetako informazioa galdu egingo da. Erabiltzaileei ematen zaien beste gomendioa da berriz kargatzeko bateria arruntak saihestean datza, horiek blokeari tentsio txikiagoa emango dutelako orokorrean, eta beraz beharrezko potentzia emango ez dutelako.
Elikadura elektrikoaren deskonexioa programatu daiteke Lego MindStorms jokoarekin datorren softwarearen bidez, amatatze-denbora zehaztu daiteke, 1 minutu eta 99 minutu artean, baita amatatze automatikoa desgaitu ere. Gainera, programak berak robotaren baterien karga-maila erakusten du, kargatuta dagoenean berde koloreko barra bat erakutsiaz, eta hori gorriraino aldatzen doa guztiz deskargatzen denean.
Robotaren bateria deskargatzen denean, horrek soinu konstante bat ateratzen du amatatze-tekla sakatzen den arte, bateriak erabat agortu direla erakutsiz.

## NXT blokea

NXT blokea Lego Mindstorms RCXen bertsio hobetua da, eskuarki Lego blokeen aurrekaritzat eta aitzindaritzat hartzen dena.
Bloke programagarrien merkaturatzea dela eta, Lego-k NXT belaunaldia bi bertsioetan saldu zuen: Retail Version eta Education Base Set. Hezkuntzarako bertsioaren abantaila berriz betetzeko bateriekin eta kargadorearekin zetorrela zen, baina bertsio horretan softwarea lizentzia motaren arabera erosi behar zen: pertsonala, Ikasgelen gela eta lekua.
Gainera, Lego-k zenbait kit jarri zituen garatzaileen eskura, garatzen ari ziren programen araberako ezaugarriak zituztenak.
* Software Developer Kit (SDK), YSB ataken kontrolagailuak, fitxategi exekutagarriak eta bytecode-ei erreferentziak hartzen zituena.
* Hardware Developer Kit (HDK), NXTko sentsoreen eskemak eta dokumentazioa zekarrena.
* Bluetooth Developer Kit (BDK), Bluetooth bidezko komunikazioan erabilitako protokoloen dokumentazioarekin zetorrena.

### Mikrokontrolagailua

Daukan mikrokontrolagailua 32 bit-eko ARM 7 arkitektura duen ATMEL zirkuitu integratua da, 256 KB-eko Flash memoria eta 64 Kb-ko RAM memoria dituena. RCX blokean ez bezala, kanpoko memoria horrek programak gordetzeko ahalmen handiagoa dauka, haibat datu-paketeren prozesu atxikiek elkarren artean talka egin eta, erroreak sortzea eta softwarearen exekuzioan erroreak gertatzea saihestuz. Haren aurkezpena Hitachi H8-ren antzekoa da, blokearen zirkuitu inprimatuan aurkitzen delako, FLASH memoriaren ondoan.

### Sarrerak eta irteerak

NXT blokean lau sarrera existitzen dira sentsoreentzat, baina konektoreak RCXen desberdinak dira, haren motoreen edo sentsoreen konexioa eragotziz. NXT kit-ak, aldiz, egokigailua dakar RCXen sentsoreak NXTarekin bateragarriak izan daitezen.
Energia-irteerak oraindik hiru dira, blokearen atzeko aldean kokatuta, motorren eta zati higokorren konexioen atzipena erraztuz.

### Komunikazioak

NXT blokea ordenagailuarekin komunikatu daiteke USB interfazearen bitartez, 2.0 bertsioaren abiadurarako prest datorrena. Hurbil dauden beste robotekin komunikatzeko Bluetooth interfaze bat du, II klaseko v 2.0-rekin bateragarria dena. Bluetooth -arekin konektagarritasunak beste blokeekin konektatzea baimentzeaz gain, baita ere ordenagailuekin,palms-ekin,telefono mugikorrekin, eta komunikazioko interfaze hori duten beste aparatu batzuekin.
Konexiorako aukeren artean honakoak aurkitzen dira:
* Hiru gailu desberdin arte konektatzea.
* Bluetooth-a duten beste gailuak bilatzea eta konektatzea.
* Lehenago konektatutako gailuak gogoratzea, konexioa arinago egiteko.
* NXT blokea ikusgai edo ikusezin moduan ezartzea gainerako gailuentzat.

## Firmwarea

Lego Mindstorms-en firmwareak RCX blokean burutu daitezkeen ataza desberdinak programatzeko blokeak dituen oinarrizko instrukzioak dauzka. Firmwarea taxu originalean eransten denCD-ROM-ean dator, eta robota hasieratzen den aldi bakoitzean edo bateriak aldatu eta memoria ezabatzen den bakoitzean kargatu behar da.
Firmwarea kargatzen ez bada, robota abio moduan geratzen da eta sorterriko forman robotaren barruan datorren programarekin joka daiteke. Firmwarea kargatzeko erantsitako programa exekutatu behar da eta, ondoren, 3 minutu inguru itxaron oinarrizko firmwarea guztiz karga dadin.
Lego Mindstorms RCXen egungo bertsioek, hala nola 2.0 bertsioa, blokearen bertsio zaharragoekin bateragarriak dira, horrela, bertsio berrienetan idatzitako programak aurreko belaunaldikoetan exekutatu daitezke.

## Komunikazio dorrea

Barneratutako programak zein erabiltzeileek programatutakoak transferitzeko, Lego Mindstorms-ek izpi infragorri bat du ordenagailuarekin konektatzen dena, eta, softwarearekin batera, firmwarea eta programak igorri daitezke. Dorre hau bi bertsioetan dago erabilgarri:

### Serie dorrea

Serie dorrea[[Ordenagailu| ordenagailuarenpuerto serial ataka]] serie bati konektatzen zaio, baldintza normaletan, instrukzioak transmitituz dorrearen oinarritik blokera 15 Zentimetro cm arterainoko distantzia maximora. Haren konexio motagatik, 1,5 V-ko AA bateria alkalinoa eskatzen du atzeko aldean konektatzen dena.
Serie dorrearen konexioa kontrolatzen duen sosftwarea Lego Mindstorms-aren software berarekin dator eta 9 pin-eko konektorea eskatzen du.

### USB dorrea

USB dorrea RCX 2.0 bertsioa zuten Lego Mindstorms-etan sartu zen, eta ordenagailuaren USB portuari konektatzen zaio. Serie dorrea ez bezala, USB dorrea ordenagailutik elikatzen da eta, ondorioz, ez du bateriarik eskatzen funtzionatzeko. Potentzia osoz distantzia maximoa 30 cm-koa da argi-baldintza normaletan.
Kontrol-softwarea ez dator Lego Mindstorms paketearekin batera, baina98-ko kontrol-panelean konfiguratu daiteke irismen probak egin eta potentizia doitzeko.

## Motorrak

| Motorra | Abiadura normala (R.P.M) | Torke (kg/cm) | Abiadura estandarra (R.P.M.) |
| Estandarra | 3240 | 1,760 | 40 |
| 9 volt | 370 | 3.840 | 15 |
| Micro | 36 | 0,128 | 36 |
| Lego robotics-en motore desmuntagarri desberdinen neurketen taula ||||
Lego Robotics-eko motorrak blokearen independenteak diren hiru motakoak izan dira, eraikuntzaren beharren arabera sistema dinamikoari mugikortasuna emateko.
Neurketen taulan, motor estandarra 9 Volt-ekoa baino azkarragoa da, baina azken honek robota mugitzeko indar handiagoa dauka, 8x8 tamainako 240 pieza inguru mugi ditzake eta, baina motelena eta, aldiberean, zehatzena da. Micro motorra funtzio txikientzat da soilik haren torque urriagatik etabiraketa-abiadura minimoagatik.
Motor desmuntagarriak induktoreei energia transmititzen dieten eroale elektrikoak dituzten kableen bidez elikatzen dira. Urratsez urratseko motorrak direnez, konexioaren zentzuak ez du mugimenduaren noranzko bera ematen.
Blokean integratutako motorrek ez dute horrenbeste erabilera, baina ez dira kanpo-konexioen mendeko, eta hori lagungarria da robota bisualki aurkeztean.
NXT ereduak servo motorrak erabiltzen ditu eta horiek, gurpilaren biren detekzioa baimentzen dute, bira osoak zein erdiak adieraziz, software bidez kontrolatzen dena.

## Pieza bereziak

Lego-k saltzen dituen hainbat jokoek ez bezala, Lego Mindstorms-ek zenbait pieza gehigarri ekartzen ditu eraikitzen ari den robotari malgutasuna eta mugimendua emateko.
Piezak sailkatzeko, pieza higikor, malgu eta finkatze piezen arteko sailkapena iradokitzen da, hauek baitira Lego Mindstorms-ek ekartzen dituenak edozein robot berezi garatzeko.

### Pieza higikorrak

Lego Mindstorms-ek dakartzan pieza higikorrak blokearen errotazioan zentratzen dira nagusiki, gurpilak bloke osoarekiko mugimendu zirkular batean mugi daitezen. Pieza higikor hauek bitan sailka daitezke:
* Errotazio pieza'-k Lego bloke bat beste baten inguruan biratzea baimentzen du, hutsa da erdian eta konexioaren pinak dauzka, pieza geiago gehitu ahal izateko biraketa blokearen goiko aldean. Bloke hori funtsean robot mugikorretan erabiltzen da, edo materialen garraiorako zinta bat egiten denean, eta motor bati konektatzen zaio blokearen bira bete dezan.
* Biraketa piezak, errotazio piezak ez bezala, bloke bat espazioan biratzea baimentzen du, robot baten begien simulazioa baimenduz. Pieza horrek ez dauka erabilgarritasun errealik, baina robota apaintzeko balio du.

### Pieza moldeagarriak edo malguak

Pieza malguen bidez sistema artikulatu baten artikulazio bat sortu daiteke, robotak mugimendu ez zurruna egin behar duenerako berariazko forman, hala nola piezak sailkatzeko robotaren kasuan. Pieza malguak, gehienetan, 4 cm baino distantzia handiagora ez dauden bi blokeekin konekta daitezkeen plastikozko tutuak dira.

#### FInkatze piezak

Finkatze piezak errotazio piezek sortzen dituzten errotazio ardatzak finkatzeko dira eta, beraz, Lego-ren gurpilen erdian erabiltzen dira. Gehienetan, 0,5 mm-ko diametroa duten tutuak dira, gurpilaren ardatz nagusi bezala jokatzen duen barraren muturrean jarri daitezke, programa baten exekuzioan irten ez dadin.

### Gurpilak

Lego Minstorms-eko osagaietako bat, eta roboten eraikuntzari dinamismo handia ematen diona, gurpilak dira. Gurpilei esker bloke logikoa espazio erreal batean mugi daiteke eta ingurunearekin elkarreragin dezake.
Gurpilen bertsio desberdinak existitzen dira, hagune zabaletatik hasi egonkortasun eta abiadura handiagoa eskaintzen dituztenak; eta gurpil txikietaraino, robota leku txikietan mugitzea baimentzen dutenak. Gainera, tankeek duten beldar efektua simulatzen duen zinta bat dakar, erabiltzaileaktankeak zein objektuenzinta garraiatzaile bat sortu ahal izan ditzan.
Robotikaren fanatikoentzat azpimarratu behar den konnotazioa gurpil mota bakoitzaren neurketa fisikoena da, zenbait webgunetan probak egin dituzte gainazal desberdinetan, baita pisu, abiadura edo gurpilen kopuru handiagoen kasuetarako ere.

## Eraikuntza

Robotaren eraikuntza Lego-ren berezko plastikozko blokeak, pieza tolesgarriak eta gurpilen edo piezen biraketa baimentzen duten beste zenbait pieza elkarren artean lotzean oinarritzen da. Eredua bloke programagarrian oinarritu behar da, blokeak sortutako robota mugitzeko beharrezko energia ematen baitu. Gainera, kit-ean sartzen diren sentsoreak finka daitezke, robotren garapenean baliagarriak izan daitezen.
Eraikuntzaren estrategia nagusietako bat robot mota zehaztea da, baita emandako softwareak robota eraikitzeko balio duen ere. Hori zehaztu ondoren, eraikuntzari hasiera eman dakioke beti ere funtzio-blokeak osatuz, adibidez, gurpilak ardatz bati lotuz edo sentsoreak oinarrietan kokatuz baliagarriak izan daitezen. Jarraian, blokea eta ingurunearen arteko loturaren fasea hasten da, fase kritikoena hori, RCX blokean infragorri-sentsorea ezin baita estali softwarea kargatu ahal izateko. Robota mihiztatu eta gero, programa bidaliko da eta programatutako sententziak exekutatuko dira, edozein softwarerekin egiten den antzera, probak egin eta hutsegiteak zuzenduz.
Eraikuntzan ematen diren hutsegite arruntenak piezen mugikortasun eza, sentsoreek balio zuzenak ez detektatzea edo, besterik gabe, robota ez dela mugitzen izaten dira. Soluzio-estrategiak anitzak dira, baina epe luzean pentsatu, muntatu eta, ondoren, exekutatzeko bidea iradokitzen dute, horregatik baita Lego logika garatzen duen robotikako jokoa.

### Programazioa

Lego Mindstorms-en programazioa taxu originalean datorren softwarearekin egiten da, robotaren firmwarea eta erabakien zuhaitz bat simulatzen duen programa bat dakarrena, erabiltzaileak robotak jarraitu beharreko ekintzak programatzeko. Softwarea zatituta dago eraiki daitekeen robot mota bakoitzarentzat, eta taxuan dator gomendatuta.
Programazio software horren ezaugarri nagusienetakoa haren ikuste-ingurunea da, blokekako eraikuntza simulatzen duena, edozein ikastun erabiltzaileri blokekako programaziora arin ohitzeko aukera emanez.
Lengoaia horrek instrukzio sekuentzialak, begiztako instrukzioak eta erabakien instrukzioak onartzen ditu, azken horiek robotari gehitu dakizkiokeen sentsoreetatik jasotako datuetan oinarrituz.

#### Programazio lengoaia alternatiboak

Lego Mindstorms blokea, hardware eta software integratuko produktu gisa, zenbait interfazeren bidez programa daiteke, eta guztien bidez helburu bera lortu. Hori komunikazio dorrearen bitartez egin ahal da eta Lego-ren oinarrizko firmwarea atzitzeko tresna egokiak erabiliz.
Zenbait pertsonek Lego-k duen ROM memoriaren oinarrizko kodea eskuratu ahal izan dute oinarrizko interfazeen bidez eta, horrela, mihiztadura bidezko programazioa edundu blokea kontrolatzeko.
Framework ezagunenak BrickOS, LejOS eta Not Quite C dira.
BrickOS (edo LEGOS).
BrickOS instrukzioen eta programen liburutegia da, programatzaileari zuzenean blokearen BIOSra sartzen uzten diona eta han, nukleo eragilea eta blokeak dituen baliabide guztiak estekatzeko beharrezko liburutegiak dituen mikro sistema eragile bat instalatzen uzten diona. Instalatu ahal izateko framework originala aurkitzen den lekuan idatzi behar du, baina aldaketa honi esker, blokea C, C++ eta mihiztadura lengoaian programatu daiteke.
BrickOS Linux banaketa gehienetan eta Windowsen (CYGWIN-gatik) jasana dago, linux-ek integratuta dakarren konpiladorea ( gcc edo gcc++), eta blokearen ekintzak kontrolatzeko bytecode-en mapa sortuz.
Hasiera batean, programa multzo horrek "LegOS" zuen izena, baina Lego enpresak izen aldaketa eskatu zuen bi izenen artean existitzen zen antzagatik.
LejOS
BrickOS-ek ez bezala, LejOS-ek ez du sistema eragile bat instalatzen RCX blokearen firmwarea ordezteko, Java makina birtual bat baizik. Horri esker blokea Java lengoaian programa daiteke eta, beraz, ez dago ez konpiladore ez eta sistema eragile baten mendekotasunik. Hala ere, prozesuen gardentasuna txikiagoa da LejOSek murrizten duen objektuei orientatutako programazioa dela eta. Horregatik BrickOS programa gehiago erabiltzen da, barne- nahiz kanpo-prozesuen gardentasuna dela eta. Hori programatzailearen kalterako da BrickOS erailiz programatzaileak blokean gertatzen diren barne-mugimenduak ez baititu ikusten eta, ondorioz, programaziorako gaitasun hobeak gehitzea zaila gertatzen da. Hala ere, programa hori oso erabilia da lehen mailako programazioko ikasleen artean.
Not Quite C
Not Quite C blokearen jatorrizko frameworka ordezten ez duen programa multzo bakarra da, baina hori desabantaila da, framework originalarekin batera existitu behar da eta eta, beraz, haren instrukzioak emulatu, frameworka ordezteko metodologia baino motelagoa bihurtuz prozesua.
Not Quite C Mac OS eta Windows-erako dago erabilgarri, eta programazio-lengoaia gisa C-ko berezko bertsio bat erabiltzen du. Gainera, Mindstorms lerro gehienarekin da bateragarria, eta, ondorioz, lengaoai alternatibo guztien artean zabalduena da RCX blokeen plataformen arteko migrazioa ahalbidetzen duelako.

#### Egokitzapen arazoak

Frameworketik beste lengoaia batera aldatzeak instrukzioen arteako atzerapena dakar, programa multzoak blokeari ematen dizkion instrukzioak emulatu behar direlako. Atzerapen hori Dick Swan-ek detektatu zuen eta software bidez zenbait errendimendu eta emulazio proba egin ondoren, edozein instrukzio exekutatzeko atzerapena, motorren bat piztuta edo itzalita egonda, 1,75 milisegundokoa dela deskubritu zeun.
Egindako probatan, hainbat ataza denbora tarte berean exekutatu zituen exekutatutako instrukzioen arteko erlazio lineala azpimarratuz, beraz, zenbat eta instrukzio gehiago orduan eta luzeagoa intrukzioa exekutatzeko itxarondenbora.

## Sentsoreak

| Tentsioa | Gordina | Sensor (Ohm) | Argia (lux) | Temp (°C) | Torque |
| 0.0 | 0 | 0 | - | - | 1 |
| 1.1 | 225 | 2816 | - | 70.0 | 1 |
| 1.6 | 322 | 4587 | 100 | 57.9 | 1 |
| 2.2 | 450 | 7840 | 82 | 41.9 | 1 |
| 2.8 | 565 | 12309 | 65 | 27.5 | 0 |
| 3.8 | 785 | 32845 | 34 | 0.0 | 0 |
| 4.6 | 945 | 119620 | 11 | -20.0 | 0 |
| 5.0 | 1023 | Inf | 0 | - | 0 |
| Sentsoreen konstanteen taula, sentsoreetatik jasotako balioak aztertzeko baliagarria ||||||

### Argi-sentsorea

Argi-sentsoreak argi intentsitatearen neurketa egitea ahalbidetzen du, mutur batean eroale elektrikoa eta, bestean, argia antzematen duen kamera ilun bat duen blokearen bidez. Kamera hori 0,6tik 760 lux arteko argia antzemateko gai da. Jasotako balioa portzentai gisa hartzen du eta, blokeak prozesatu ondoren, argitasun mailaren batazbestekoaren gutxi gorabeherako balioa lortzen du.
RCX blokeak $Luz=146-RAW/7$ formula erabiltzen du argiaren neurketaren batezbestekoa erabakitzeko, neurketa bat egiten du 2,9 milisegundoro eta neurketa bakoitza egiteko 100 us behar ditu.
Argitasun maila neurtzen duenez, sentsorea ez da gai koloreak desberdintzeko, soilik zuria (argitasuna), beltza (iluntasuna) eta tarteko argi portzentaiei dagokien gris mailak.

### Tenperatura-sentsorea

Tenperatura-sentsoreak tenperaturaren gutxi gorabeherako balioa ematen du mutur batean duen termistore baten bidez, sentsorea barneratzen duen blokearen tenperatura detektatzea ahalbidetzen duen eremu magnetiko bat sortuz. Lego taxuzko blokeak 12,2 Kohms-eko termistorea du 25 °C-tara, gutxi gorabehera -3.7 °C-ko zuzenketa-koefizientearekin.
$Temp=(785-RAW)/8$ formulak ematen du sentsoreak detektatutako tenperatura.

### Talka-sentsorea

Talka-sentsorearen bidez talka kokatuta dagoen blokeak objekturen batekin pumpa egin duenetz detekta daiteke. Gainazal bat ikutzean, kanpoan duen buru txikia uzkurtu egiten da eta, ondorioz, bloke barnean dagoen zirkuitu elektrikoa itxi egiten da energia iraganez, eta 0-tik 5V-erako energia-aldaketa sortuz.
Kasu horretan, presioak LCD pantailan bistaratzen den 450ko neurri estandarra gainditzen badu, sentsorea sakatutzat hartzen da eta, presiorik gabe, kontrako kasuan.

### Biraketa-sentsorea

Biraketa-sentsorearen bidez robotaren posizioa ezagutu daiteke edozein unetan.Robotaren posizioa ezagutzeko, lau egoerako energia-aldaketa gertatzen da, 2,9 ms-ro detektatzen direnak eta RCX blokeak 100 us bitartean prozesatzen dituena.
2,0 volt → 4,5 volt → 1,3 volt → 3,3 volt (erlojuaren orratzen zentzuan) 3,3 volt → 1,3 volt → 4,5 volt → 2,0 volt (erlojuaren orratzen kontrako zentzuan)
Egoera horien bitartez irakurketa gertatu denetik eman diren energia aldaketa kopurua konprobatu daiteke. Tentsio-maila bakoitzak sentsoreare 22,6º-ko biraketa adierazten du, beraz, 16 tentsio-ziklo behar dira bira oso bat detektatzeko. Irakurketa horrek arazoak ematen ditu abiadura txikietan, sortzen dituen energia-aldaketa xumeak direla eta, tarteko balioak ez baitira hartzen baliozko mugimendutzat.

### Ultrasoinu-sentsorea

Ultrasoinu-sentsorea Lego Mindstorms NXTko kaxan soilik sartzen da eta, bere funtzio nagusia distantiak neurtu eta robotaren bidean dagoen objektu baten mugimendua detektatzea da. Sentsore horrek 0 eta 255 cm artean dauden objektuak detekta ditzake, +/- 3 cm-ko zehaztasun erlatiboarekin.
Oihartzunaren printzipioaren bidez, sentsoreak haren atzipen-eremuan dauden objektuen informazioa jaso dezake. Sentsoreak hobeto funtzionatzen du oihartzuna objektu handietatik, lau edo gainazal gogorretatik iristen zaionean. Objektu txikiak, kurbatuak edo leunak, hala nola pelotak, oso zailak izan daitezke detektatzeko. Gela berean ultrasoinu-sentsore bat baino gehiago badago, interferentziak gerta daitezke haien artean eta detekzioaren emaitzak kaskarragoak izan.

## Gida alternatiboa

* The Unofficial Guide to LEGO® MINDSTORMSTM Robots, Jonathan B. Knudsen, ISBN 1-56592-692-7

## Erreferentziak

* ↑ LEGO Mindstorms, Wikipedia (italieraz)
* 1 2 3 4 5 6 Txantiloi:Cita publicación
* ↑ Txantiloi:Cita publicación
* 1 2 Txantiloi:Cita publicación
* ↑ SourceForge-ko TinyVM proiektuaren webgunea
* ↑ Txantiloi:Cita publicación
* ↑ CyberMaster, BrickWiki (ingeleraz)
* ↑ Micro Scout, BrickWiki ( Ingelesez)
* ↑ RCX, Brickwiki ( Ingelesez)
* ↑ LEGO® MINDSTORMS(tm) Internals (ingelesez)
* 1 2 LEGO MINSSTORMS RIS
* ↑ Lego Mindstorms, Wikipedia (ingelesez)
* ↑ NXT, Brickwiki ( Ingelesez)
* ↑ Bluetooth, Nxt Mindstorms Wiki ( Ingelesez)
* ↑ Lego, Physics of Lego (ingelesez)
* ↑ Servo Motors, NXT Mindstorms Wiki ( Ingelesez)
* ↑ , and Traction Tyres ( Ingelesez)
* ↑ Brickos, Brickwiki ( Ingelesez)
* ↑ Wikipedia ( Ingelesez)
* ↑ Not Quite C, Brickwiki (ingelesez)
* ↑ CPU Time, Lego Mindsotrms Internal (ingelesez)
* ↑ Sensor Basics (ingelesez)
* 1 2 Lego Rotation Sensor Internal (ingelesez)
* ↑ MindStorms RCX Sensor Input Page (gazteleraz)
* ↑ LEGO Rotation or Angle Sensor (ingelesez)
* ↑ NXT Ultrasonic Sensor, NXT Mindstorms (ingelesez)

## Kanpo estekak

* Lego Mindstorms-en webgune ofiziala (ingelesez)
* Lego-ren webgune ofiziala (ingelesez)

### Beste zenbait

* Hitachi H8/300-aren ezaugarri teknikoak (ingelesez)
* Lego Engineering (ingelesez)

### Softwarea

* Not Quite C-ren webgunea (ingelesez)
* BrickOS-en webgunea (ingelesez)
* LejOS-en webgunea (ingelesez)
* Datuak: Q10853917
* Multimedia: Lego Mindstorms / Q10853917