Lego Mindstorms

Lego Mindstorms on Lego tootesari, millest saab ehitada erinevaid eesmärke täitvaid roboteid. Komplekti kuuluvad programmeeritav juhtplokk (inglise keeles brick), mitmesugused andurid, mootorid ja Lego ehitusosad sarjast Lego Technics. Tootesarja arendab MIT Meedia Labor (MIT Media Lab), mis alustas koostööd ettevõttega Lego Group 1985. aastal.
Kõige rohkem kasutatakse sarja Lego Mindstorms õppevahendina, et koolitada õpilasi ja üliõpilasi. Eestis edendab Lego Mindstormsi kasutamist Kooliroboti projekt, mille eestvedajateks on Tiigrihüppe Sihtasutus, Tartu Ülikool ja MTÜ Robootika.
Nimi "Mindstorms" pärineb raamatust "MINDSTORMS: Children, Computers, and Powerful Ideas", mille autor on Seymour Papert. Lego Mindstorms NXT nimi tuleneb ingliskeelsest sõnast next ('järgmine').

RCX

Esimese generatsiooni Lego Mindstorms kannab nime Robotics Invention System (RIS). Vastavasse komplekti kuulub juhtplokk RCX (Robotic Command eXplorer).

Riistvara

Juhtplokil on 8-bitine Renesas H8/3292 mikrokontroller, 16 kB suurune püsimälu (ROM) ja 32 kB suurune muutmälu (RAM). Püsimälus paikneb baasvahetussüsteem ehk BIOS. Muutmälus asub programmi püsivara ja kasutajate loodud programmid. Seadme programmeerimiseks tuleb kasutaja loodud programm spetsiaalse infrapunaliidese abil juhtploki mällu üles laadida. Juhtplokki saab programmeerida, kasutades selleks programmeerimiskeeli, nagu RCX Code ja NXC. Erinevate programmeerimiskeelte kasutamiseks on vaja vahetada RCX püsivara.
Juhtplokil on kolm sisendit anduritega suhtlemiseks ja kolm väljundit mootoritele. Väljundporte saab kasutada ka spetsiaalsete lampide kontrollimiseks. LCD-ekraanilt saab lugeda aku laetuse taset, sisend- ja väljundseadmete staatust, programmi tööolekut ning mida kasutaja loodud programm teeb. Maksimaalselt suudab ekraan korraga kuvada nelja tähemärki.

Versioonid

Kokku on loodud kolm versiooni: 1.0, 1.5 ja 2.0. Versiooni 1.0 RCX juhtploki eripära on toiteadapteri olemasolu, mis lubab seadmel töötada ka ilma patareideta. Versioonides 1.5 ja 2.0 on toiteadapter eemaldatud ja seadme toide tuleb patareidelt. Seadmed kasutavad toiteks kuut AA-tüüpi 1,5 V patareid.
Toiteadapteriga RCX-versioonid on populaarsed statsionaarsete robootikaprojektide loomisel, nagu robotkäed või kontrollitavad Lego rongid (Lego Train). Erinevus kolme versiooni vahel peale toiteallika on ühendamine arvutiga, kasutades selleks infrapunaliidest (IrDa). Versioonides 1.0 ja 1.5 kasutab IrDa suhtluseks DE-9 jadaväratit, versioonis 2.0 on jadavärat asendatud USB-liidesega.

Infrapunaliides ja suhtlus

RCX on võimeline suhtlema teise RCX-seadmega, kasutades selleks sisseehitatud infrapunaliidest. Üks seadmetest hakkab täitma saatja ja teine vastuvõtja rolli.
Infrapunaliidese abil on RCX võimeline suhtlema seadmetega Spybots, Scout Bricks, Lego Train ja NXT. NXT puhul on vajalik kolmanda osapoole infrapunaliidese moodul.
RCX 1.0 IrDa kandesignaali sagedus on 38,5 kHz ja RCX 2.0 IrDa kandesignaali sagedus on 76 kHz. Mõlemad versioonid suudavad saata andmeid mõlemal sagedusel. Kandesignaal on genereeritud RCX sisemiste taimeritega.
RCX suhtleb arvutiga läbi jadaühenduse või USB-põhise IrDa-torni. IrDa-torni toetavad operatsioonisüsteemid Windows 98, ME ja XP (32-bitine). Eksisteerib parandusprogramm, et toetada hüperhargtöötluse tehnoloogiaga / mitmetuumalisi protsessoreid. Ametlik tugi Windows Vistale (32-bitine) puudub, aga leidub vastavaid draivereid, mis tagavad korrapärase töö. Jadaühenduse torn töötab tõrgeteta 32-bitise Windows 7 operatsioonisüsteemiga, kui kasutada kolmanda osapoole USB-jadaühenduse adapterit ja draiverit.

Unikaalne kood

Kõikidel RCX versioonidel on unikaalne number, mis on seadmele trükitud. See oli vajalik tehnilisele toele, et luua Lego Mindstorms kasutajakontot veebilehel, mis nüüdseks on oma töö lõpetanud. Esimene toodetud RCX on tähistatud numbriga "000001".

Scout

Scout on sinist värvi juhtplokk, millel on kaks porti anduritele, kaks mootoritele ja üks sisseehitatud valgusandur. Juurde saab lisada veel ühe mootoripordi, kui kasutada seadet Micro Scout. Scouti saab osta komplektiga Robotics Discovery Set. Programmeerimiseks peab kasutaja lubama toiterežiimi (power mode). Scout suudab hoida mälus ühte programmi.

Riistvara

Scout on kasutab Toshiba mikrokontrollerit. Mälu on jaotatud 32 kB püsimälu ja 1 kB muutmälu (RAM) vahel, millest 400 B on vaba kasutajale kasutamiseks. Seadme püsivara asub püsimälus, mis ei lase kasutada teisi püsivarasid. Muutmälu väikese mahu tõttu on paljud eelmääratletud alamfunktsioonid paigutatud püsimällu.
Scout toetab ainult passiivseid välisandureid, mis tähendab, et ainult puute-, temperatuuri- ja teised toidet mittevajavad andurid saavad olla kasutuses. Scout kasutab 8-bitise resolutsiooniga A/D-muundurit, samas kui RCX kasutab 10-bitist A/D-muundurit.

Infrapunaliides ja suhtlus

RCX saab kontrollida seadet Scout, kasutades "Send IR Message" programmiplokki. RCX tegeleb Scouti kontrollimisega, samal ajal kui Scout võtab vastu RCX-ilt käsklusi. Sel ajal on vaja seadmel Scout kõik sätted välja lülitada ehk seada režiimi off.
Scout suudab omakorda kontrollida Micro Scouti, kasutades selleks VLL-tehnoloogiat (Visual Light Link) ja spetsiaalset optilist fiiberkaablit.

Tarkvara

Legol oli plaan toota eraldi lisapakett, mis lubaks kirjutada Scoutile programme, kasutades selleks arvutit ja tarkvara, nagu RCX Code. Projekti keerulisuse ja kulukuse tõttu see tühistati.

Micro Scout

Micro Scout loodi algtaseme kasutajate jaoks. Tegemist on väga limiteeritud juhtplokiga, millel on üks sisseehitatud valgusandur ja mootor. Micro Scouti juhtplokki kutsutakse inglise keeles sõnaga brick.
Seadmel on seitse sisseehitud programmi. Seadet saab kontrollida seadmete Scout, Spybotics või RCX abil, kasutades VLL-põhist ühendust. Micro Scout (nagu Scout) baseerub Toshiba mikrokontrolleril.

Programmeerimine

Seadet saab programmeerida VLL abil. Selleks on esmalt vaja kalibreerida valgusandur, mis seadme sisselülitamisel seadistab ära tumeduse väärtuse. Järgnevalt on vaja Micro Scout sätestada programmeerimisrežiimi, mis paneb seadme lugema VLL koode. Järgnevalt on võimalik anda seadmele ette kuni 15 instruktsiooni. Programmi loomisel kustutatakse vana programm mälust ja asendatakse uuega. Salvetamiseks ja jooksutamiseks tuleb vajutada Run-nuppu. Salvestatud programmi ei saa muuta, vaid tuleb uuega asendada.

Komplektid

Seadet müüdi osana, mis kuulus komplekti Droid Developer Kit (R2D2), ja hiljem ka Darkside Developer Kit (AT-AT Imperial Walker).

Lego Mindstorms NXT juhtplokk

NXT juhtplokk (Intelligent Brick) on RCX juhtploki järglane, sellest tuleneb ka nimi NXT ehk NEXT (järgmine). Tegemist on järgmise generatsiooni juhtplokiga, millel on kaks protsessorit – peamine on Atmel 32-bitine ARM7 protsessor AT91SAM7S256 ja teine kaasprotsessor Atmeli 8-bitine AVR protsessor ATmega48. Mäluhaldust tehakse ARM7 256 kB välkmäluga ja 64 kB muutmäluga. Kasutajale on vaba mälu umbes 120 kB. Selline kogus tuleneb sellest, et välkmälus paikneb ka püsivara. Tänu sellele on võimalik seadmele laadida peale teisi püsivarasid ja kasutada programmeerimiseks ka teisi programmeerimiskeeli. 
Arvutiga ühendamiseks saab kasutada USB 2.0 ühendust või Bluetooth 2.0 juhtmevaba ühendust.
Seadmel on neli sisendporti, kolm väljundporti, valjuhääldi, 100 × 64-piksline LCD-ekraan, neli nuppu. Seadet toidab kuus AA-tüüpi 1,5 V patareid või 1400 mAh laetav liitiumioonaku. Andurite ja mootorite vaheliseks suhtluseks kasutatakse I²C ja RS-485 protokolle.
Kõikides NXT versioonides on juhtplokk sama.

Lego Mindstorms NXT 1.0

Lego Mindstorms NXT on programmeeritav robootikakomplekt, mis toodi turule 2006. aasta juulis, asendades sellega esimese generatsiooni Lego Mindstorms komplektid. Komplekt koosneb 577 elemendist: kolmest servomootorist, neljast andurist (kaugus-, heli-, puute- ja valgusandur), seitsmest ühenduskaablist, USB-liidese kaablist ja NXT juhtplokist. Komplektis on lisaks veel NXT-G, mis on visuaalne programmeerimiskeskkond, mis võimaldab luua uusi programme ja neid ka kergesti NXT-seadmesse üles laadida. Tarkvaral on lisaks veel instruktsioonid nelja baasroboti jaoks, milleks on järgmised: Alpha-Rex (humanoid), Tri-Bot (auto), Robo-Arm T-56 (robotkäsi) ja Spike (skorpion).

Programmeerimiskeeled

Lego Mindstormsi programmeerimine on pigem käsukastidega programmeerimine, kui koodprogrammeerimine. Leidub ka programmeerimiskeeli, millega arendamine on raskem algajatele, kuid annavad rohkem võimalusi.