# Lego Mindstorms NXT

Lego Mindstorms NXT est un jeu de construction et de robotique présenté par Lego en 2006. Il succède à la gamme Lego Mindstorms RCX. En 2010, Mindstorms NXT en est à sa version 2.0. Il sera lui-même remplacé quelques années plus tard par Lego Mindstorms EV3.

## Historique

La gamme Mindstorms NXT est la génération de Lego Mindstorms qui a été présentée le 4 janvier 2006 lors du Consumer Electronics Show à Las Vegas aux États-Unis. Les principales modifications sont l'usage d'un processeur 32 bit de type ARM ainsi que l'ajout de nouveaux capteurs sonores et ultra-soniques. De plus, il est désormais possible d'utiliser la technologie Bluetooth pour contrôler le robot (avec un téléphone portable par exemple).
Le robot Lego Mindstorms NXT est très utilisé pour l'enseignement et l'éducation des sciences et techniques. De nombreuses compétitions étudiantes sont basées sur le robot Lego comme la First Lego League ou la Coupe de France de robotique. Des compétitions internationales existent également sur la base de ce kit robotique.
Le kit Lego Mindstorms NXT a évolué en EV3 en 2013.

## Caractéristique
### Caractéristiques générales

Les principales caractéristiques de la nouvelle gamme Lego Mindstorms NXT sont :
* brique intelligente programmable NXT 4 ports d'entrée et 3 ports de sortie de forme proche du standard RJ12 (seule la patte anti-retour est décalée)
* connexions USB et Bluetooth
* trois servomoteurs interactifs
* Plusieurs dizaines de modèles de capteurs (quatre capteurs par boîte) : ultrason, son, lumière, contact, couleur, autodirecteur infrarouge, gyroscopique, infrarouge, accéléromètre, boussole...
* NXT-G, le logiciel de programmation graphique, très intuitif basé sur Labview compatible avec Windows et Mac
* De très nombreux accessoires supplémentaires (non fournis dans la boite principale) comme une clé Bluetooth USB, une batterie rechargeable, des moyens de communication Wi-Fi, XBee, des multiplexeurs, des panneaux solaires, des pilotes de relais, des roues holonomiques...
* Servo-moteur
* Prise femelle
* Prise mâle

### Caractéristiques techniques de la brique intelligente NXT

* microprocesseur 32 bit ARM7 d’Atmel,
* fonction Bluetooth (connexion à d'autres NXT ou à un PC et possibilité de contrôler le NXT avec un téléphone portable ou un autre appareil Bluetooth),
* un port USB 2.0 (12 Mb/s),
* quatre ports d'entrée pour la connexion des capteurs nommés 1, 2, 3 et 4,
* trois ports de sortie pour les moteurs nommés A, B et C,
* écran à cristaux liquides 100 × 64 pixels,
* haut-parleur intégré (qualité sonore 8 kHz - 8 bit - échantillonnage 2-16 kHz),
* alimentation : six piles AA (1,5 V) ; une batterie 9 V est commercialisée par Lego.
* dimensions : 112 × 72 × 40 mm
Il est possible de connecter 3 briques intelligentes NXT en même temps à une autre par Bluetooth, mais la communication ne peut se faire qu'avec une seule à la fois.
Il est possible de connecter le NXT avec les capteurs et moteurs de la gamme RCX grâce à des câbles adaptateurs.

### Caractéristiques des capteurs

Lego ne fournit que 4 capteurs : Capteur de contact, capteur de son, sonar à ultrasons, capteur de lumière ou capteur de couleur. Les autres capteurs existants sont créés par des sociétés tierces qui s’appuient sur les spécifications techniques ouvertes du robot Lego Mindstorms NXT. Lego favorise ainsi l'émergence d'un écosystème autour de son produit. Les sociétés qui fournissent des capteurs pour Lego sont :
* Hitechnic
* Mindsensors
* Humarobotics
* Dexter Industries
* Codatex
Voici une description des capteurs disponibles (non exhaustif) :
* capteur tactile : Réagit à un contact.
* capteur photosensible : Mesure l'intensité lumineuse captée.
* capteurs de son : Mesure l'intensité sonore en décibels.
* capteurs à ultrasons : Permet de détecter les obstacles et d'en mesurer les distances (principe du sonar).
* boussole : Permet de connaître la position du nord par rapport au robot. Ce type de capteur est très utile en robotique car il fournit un repère fixe.
* capteur de couleurs : Distingue différentes couleurs (6 avec NXT-G, le logiciel fourni par LEGO).
* capteur accéléromètre : Mesure les variations de vitesses. Il permet au robot de se repérer dans l'espace, de détecter les chocs et de reconnaître les mouvements du robot ainsi que les accélérations.
* autodirecteur infrarouge : Permet de détecter des sources infrarouges, force et direction.
* capteur gyroscopique : Permet de détecter les rotations.
* capteur infrarouge : Permet de communiquer avec certains autres appareils infrarouges.
* Détecteur infrarouge : mesure les distances aux obstacles (similaire au sonar ultrasons).
* GPS : fournit une mesure de la position spatiale grâce au système GPS
* Capteurs de température : capteurs existant sous forme rigide ou souple, ils permettent de mesurer la température des objets.
* IMU : centrale inertielle
* Capteur de flexion: languette mesurant sa déformation. Ce type de capteur permet par exemple de reproduire les moustaches ou vibrisses de certains animaux comme les rats ou les chats.
* Capteur RFID : Permet de détecter des transpondeurs RFID
* Capteur PIR : Ce capteur à infrarouge passif est analogue aux capteurs que l'on trouve dans les détecteurs de mouvements des systèmes d'alarmes de maison.
* Capteur barométrique : mesure la pression atmosphérique ce qui est utile pour créer une centrale météo ou bien pour mesurer l'altitude du lieu.
* Capteur de champ magnétique
* Capteur d'angle ou de rotation
* Capteur thermique
* Capteur geiger
* Capteur photosensible
* Capteur sonore
* Capteur tactile
* Capteur d'ultrasons

## Programmation

Il existe de nombreuses possibilités pour programmer le Mindstorms NXT : Dans le kit grand public, un logiciel de programmation graphique est fourni. Il se nomme NXT-G. Il est basé sur Labview mais ne nécessite aucune compétence en LabView. Il est très facile de démarrer à l'aide de NXT-G.
Le logiciel NXT-G n'est pas fourni dans la version éducation du kit Lego.
* Programmation textuelle :
** Langages .NET, tels C sharp ou Visual Basic .NET, grâce à Microsoft Robotics Studio
** Le NBC, un langage assembleur
** Le NXC, qui est un langage proche du C. Il est gratuit et open-source.
** RobotC est un autre langage de programmation basé sur C, développé par l'université Carnegie Mellon aux États-Unis
** Lejos est une API open-source basée sur le langage Java
** Urbiscript : langage de la plate-forme logicielle Urbi (Universal Real-Time Behavior Interface)
** En Ada (complet ou profil Ravenscar)
** Une bibliothèque ROS existe également pour le robot Lego
** Une bibliothèque Matlab créée par l'université d'Aix-la-Chapelle existe aussi
* Programmation graphique :
** NXT-G, la version Lego de LabVIEW qui permet une prise en main aisée
** Microsoft Robotics Studio
** DialogOS permet de commander les robots par la voix
** Robolab est une programmation possible du groupe National Instrument