# Lego Mindstorms NXT

Der NXT ist ein Steuerungscomputer der Produktserie Lego Mindstorms. Er besitzt Anschlüsse für mehrere Sensoren und Aktoren sowie USB- und Bluetooth-Schnittstellen. Der Computer kann über spezielle Programmiersprachen am PC programmiert werden. Der NXT wurde Anfang 2006 auf der Messe Consumer Electronics Show vorgestellt und war seit Oktober 2006 in Deutschland erhältlich.
Der NXT hat einen ARM-Prozessor. Neu waren die Geräusch- und Ultraschall-Sensoren. Außerdem lässt sich ein damit ausgerüsteter Roboter auch mit einem Mobiltelefon oder Computer per Bluetooth fernsteuern. Des Weiteren ist es möglich, ein mit Kamera ausgerüstetes Mobiltelefon als Kamerasensor zu nutzen. Die hierzu erforderliche Software kann von der LEGO-Mindstorms-Website heruntergeladen werden. Dokumentationen, Software-Aktualisierungen, Software Development Kits (SDK) und die Quellcodes der Firmware (ab Dezember 2006) sind dort ebenfalls zu finden.

## Versionen

Das Mindstorms-NXT-Set (8527, Standardversion) war seit Oktober 2006 in Deutschland erhältlich. Mittlerweile ist die Version 2.0 des NXT-Systems mit dem Set 8547 erhältlich. Bei diesen Versionen liegt die Software dem Set bei. Außerdem gibt es noch das Education Basis Set (9797), welches eine besonders für den Schulalltag optimierte Version in einer robusten Kunststoffkiste darstellt. Die Software muss hier, im Gegensatz zu den anderen Versionen, separat erworben werden.
Am 7. Januar 2013 stellte LEGO auf der CES das Nachfolgersystem Mindstorms EV3 vor, welches Motor- und Sensorkompatibilität mit dem NXT aufweist. Zusätzlich wurde gegenüber dem NXT der Ultraschall- durch einen Infrarot-Abstandssensor ausgetauscht und ein Gyrosensor hinzugefügt. Das neue Modell kam im September 2013 auf den Markt.

## Grundausstattung

Das Lego-Mindstorms-NXT-Set enthält:
* einen programmierbaren NXT-Stein mit 32-Bit-Mikroprozessor, Real-Sound-Lautsprecher, Bluetooth- und USB-Anschluss, vier Sensor- und drei Motoranschlüsse,
* drei Servomotoren mit eingebauten Rotationssensoren, Genauigkeit 1°
* einen (NXT 1.0) bzw. zwei (NXT 2.0) Tastsensoren (Bild)
* Ultraschallsensor (Bild) Er kann den Abstand zwischen sich und einem Objekt messen. Der Messbereich liegt zwischen 6 cm und 255 cm.
* Lichtsensor (Bild) (NXT 1.0) bzw. Farbsensor (NXT 2.0)
* Schallsensor (Bild) (nur NXT 1.0)
* sieben 6-Draht-Anschlusskabel (davon 1 × 20 cm, 4 × 35 cm und 2 × 50 cm)
* 619 Lego-Technik-Elemente
* Bauanleitungen
* Test-/Kalibrierungsunterlage
* NXT-G, eine grafische integrierte Entwicklungsumgebung für die Betriebssysteme Windows und macOS
* USB-Kabel

## Hardware-Spezifikationen des NXT-Steins

* Atmel-ARM-Prozessor, AT91SAM7S256; 256 kB Flash-Speicher, 64 kBRAM, 48 MHz
* Koprozessor: Atmel 8-Bit AVR, ATmega48; 4 kB Flash-Speicher, 512 Byte RAM, 8 MHz
* Bluetooth: CSR BlueCore 4 v2.0 +EDR; unterstützt das Serial Port Profile (SPP), 26 MHz
* USB-2.0-Anschluss, 12 Mbit/s
* drei Motorausgänge mit Rückkanal
* vier Sensoreingänge, analog und digital (I²C) kombiniert
* der vierte Eingang kann als High-Speed-Port, entsprechend IEC 61158 Type 4/EN 50170, genutzt werden
* Punktmatrix LC-Anzeige; 100 × 64 Pixel, Abmessungen: 26 mm × 40,6 mm
* Soundausgabe mit 8-Bit-Auflösung und einer Abtastrate von 2 bis 16 kHz
* Open Source Firmware.

## Verbindungskabel

Die NXT-Grundpackung (Set 8547) enthält sieben NXT-Verbindungskabel.
Es handelt sich um ein sechspoliges Kabel mit einer Art RJ12-Stecker. Der einzige Unterschied zu einem RJ12-Stecker besteht darin, dass die Verbindungsnase seitlich und nicht mittig sitzt.
Es gibt auch Adapterkabel (Set 8528) zu den alten Verbindungskabeln des RCX. Somit können alle analogen Sensoren des RCX (Vorgänger des NXT) benutzt werden, allerdings wird hierfür bei der Standard-Programmierumgebung "NXT-G" ein (kostenloses) Update benötigt, damit die Sensoren angesprochen werden können.

### Belegung der Buchse

| Pinnummer | 1 | 2 | 3 | 4 | 5 | 6 |
| Funktion | Analog IN bzw. +9 V | GND | GND | +4,3 V | I²C-SCL bzw. RS485-A | I²C-SDA bzw. RS485-B |

## Zubehör

Alle Sensoren und der NXT-Stein selbst sind auch einzeln erhältlich.
* Set 9798 Akku (9 V); 1400 mAh dazu passend 9833 Trafo
* Set 9693 Akku (10 V); 2100 mAh dazu passend 8887 Trafo
* Set 8529 enthält sieben NXT-Verbindungskabel; einmal 20 cm, viermal 35 cm, zweimal 50 cm
* Set 8528 enthält drei Adapterkabel für RCX-Motoren und -Sensoren
* Set 9797 Die Schulversion (431 Teile) des Mindstorms-NXT-Sets enthält seit Juli 2010 einen 2100-mAh-Li-Ion-Akku und drei Adapterkabel für den Anschluss von Lampen und älteren Motoren und Sensoren, LEGO-Technik-Elemente. Die Software muss separat erworben werden, ist allerdings auch eine erweiterte Schulversion: LEGO 2000080. Sie enthält einen Robot-Educator (Lernprogramme mit 3D-Animationen) und DATA Logging (Messdatenerfassung).
Außerdem gibt es mittlerweile diverse Sensoren von anderen Firmen, die nicht direkt von der NXT-G unterstützt werden. LEGO bietet mittlerweile aber eine Aktualisierung für NXT-G an, mit der man Blöcke dieser Sensoren einbinden kann.
Eine Sonderstellung hat hier die Firma HiTechnic, die seit dem 17. September 2007 offiziell mit LEGO zusammenarbeitet. HiTechnic hat die Erlaubnis erhalten, das offizielle Sensorengehäuse von LEGO zu verwenden. Außerdem vertreibt LEGO diese Sensoren nun auch selbst. Folgende Sensoren von HiTechnic wurden von LEGO ins Programm aufgenommen:
* Infrarot-Sucher
* Kreisel-Sensor
* Farbsensor
* Beschleunigungssensor
* Kompass-Sensor
* Temperatur-Sensor
* EOPD-Sensor
LEGO verkauft auch den RFID-Sensor der Firma Codatex.

## Programmierung

Die von LEGO bereitgestellte grafikbasierte Programmierumgebung NXT-G wurde von Lego in Zusammenarbeit mit National Instruments entwickelt und baut auf der grafischen Programmieroberfläche LabView auf. Diesem Programm liegen Schritt-für-Schritt Programmieranleitungen von allen Grundfunktionalitäten bei. Daneben existiert aber auch eine Vielzahl alternativer Programmiermöglichkeiten.

### Alternative Programmiersprachen

Alternative Programmiersprachen ermöglichen es, eigene Programme zu schreiben und zu kompilieren, die wie NXT-G-Programme direkt auf dem NXT laufen. Teils kommt hierfür eine eigene Firmware zum Einsatz, teils kann die Original-Firmware weiterverwendet werden.
* NBC (Next Byte Code) ist eine Sprache mit Assembler-ähnlicher Syntax
* NXC (Not eXactly C), eine Sprache mit C-ähnlicher Syntax
* leJOS, ein Java-Betriebssystem für NXT und RCX
* nxtOSEK, ein Echtzeit-Betriebssystem, das als einziges die native Ausführung von C- und C++-Code ermöglicht
* pbLua, eine Lua-Implementierung
* LabVIEW, LabVIEW-Toolkit für LEGO MINDSTORM NXT (Robolab)
* RobotC, von Robotics Academy vertriebene Sprache mit einer an C angelehnten Syntax
* Enchanting, Ein auf Scratch/BYOB basierendes Toolkit, das LeJos als Firmware verwendet, für NXT
* nxt, eine für Microsoft Touch Develop entwickelte Bibliothek, um den NXT direkt auf einem Windows Phone zu programmieren

### Ferngesteuerte Programmierung

Zur ferngesteuerten Programmierung werden Bibliotheken für Programmiersprachen angeboten, die den NXT über eine Bluetooth- oder USB-Verbindung fernsteuern können. Das Programm selbst läuft hierbei auf dem fernsteuernden Rechner. Hierzu zählen unter anderem:
* MindSqualls, eine Programmbibliothek für das .Net-Framework, um Programme zu entwickeln, die den NXT per Bluetooth fernsteuern
* AForge.NET, enthält eine Programmbibliothek ähnlich MindSqualls
* MonoBrick, eine Lego Mindstorms Kommunikation Bibliothek in C, die es erlaubt Programme zu entwickeln, welche den NXT über eine Bluetooth- oder USB-Verbindung fernsteuern
* RWTH – Mindstorms NXT Toolbox, Bibliothek (sowie Dokumentation und Beispiele), um den NXT aus Matlab per Bluetooth oder USB zu steuern
* MIT App Inventor (ehemals "Google App Inventor"), erlaubt die Entwicklung von Programmen für das Betriebssystem Android und stellt auch Komponenten zur Verfügung, mit denen sich der NXT per Bluetooth fernsteuern lässt

### Entwicklungsumgebungen

* BricxCC (Bricx Command Center), Entwicklungsumgebung für NXC und NBC
* Microsoft Robotics Studio 1.5, Visuelle Entwicklungsumgebung und 3D-Testumgebung für diverse Hardware-Plattformen (u. a. LEGO Mindstoms NXT)
* ROBOLAB ab Version 2.9
* Tuxminds, visuelle Entwicklungsumgebung für diverse Hardware-Plattformen (LEGO, Asuro, …)
* Open Roberta, visuelle Entwicklungsumgebung für diverse Hardware-Plattformen (LEGO Mindstorms EV3 mit Java-Betriebssystem leJOS oder ev3dev, LEGO Mindstorms NXT, ...)

### Simulationsumgebungen

* SimLejos, Dreidimensionale Simulationsumgebung für das Java-Betriebssystem leJOS
* Virtual Worlds, Simulationsumgebung für die Programmiersprache RobotC für NXT

### Nachfolgesystem Mindstorms EV3

Am 7. Januar 2013 präsentierte LEGO auf Consumer Electronics Show ein neues Mindstorms-System namens EV3, die erste offizielle Ankündigung stammt vom 4. Januar 2013. EV3 ist eine Weiterentwicklung (Evolution) des LEGO Mindstorms NXT Systems
* Auf dem EV3 läuft ein embedded Linux basierend auf RedHat. Von einem MicroSD Karten Slot lassen sich aber auch alternative Betriebssysteme wie ev3dev, ein auf Debian basierendes Linuxsystem, starten.

## Wettbewerbe

Mit dem LEGO Mindstorms System werden verschiedene Wettbewerbe wie zum Beispiel die World Robot Olympiad bestritten. Ein regelmäßig stattfindender Wettbewerb für Schülerinnen und Schüler, der in verschiedenen Teilen der Welt ausgetragen wird, ist die First Lego League. Weitere Wettbewerbe sind z. B. der RoboCup oder RoboRace der Universität Stuttgart.