1. Introduction
Qu’est ce que Bluetooth ?
La traduction intégrale de cette expression signifie « dent bleue ». Quel rapport existe-t-il entre Bluetooth et la brique NXT ?
Pour répondre à cette question, commençons par un peu d’histoire.
Bluetooth est une spécification de l'industrie des télécommunications. Elle utilise une technologie sans fils, radio courte distance destinée à simplifier les connexions entre les appareils électroniques. Elle a été conçue dans le but de remplacer les câbles entre les ordinateurs et les imprimantes, les scanners, les claviers, les souris, les téléphones portables, les assistants personnels (PDA), les autoradios et les appareils photo numériques.
La technologie à été créée en 1994 par le fabricant suédois Ericsson, entreprise de télécommunications fondée en 1876. Cette marque est devenue (avec Sony Corporation) Sony Ericsson.
En 1998, Plusieurs grandes sociétés (Agere, IBM, Intel, Microsoft, Motorola, Nokia et Toshiba) s'associent pour former le Bluetooth Special Interest Group (SIG).
Ce nom est directement inspiré du roi danois Harald Ier (an 940) surnommé Harald Blåtand (« à la dent bleue »),
connu pour avoir réussi à unifier les États du Danemark, de Norvège et de Suède. Le logo de Bluetooth, est d'ailleurs inspiré des initiales en alphabet runique de Harald Blåtand.
En 2008 Le SIG, pour fêter les 10 ans de Bluetooth, annonce la prochaine génération de cette technologie sans fil, qui sera capable d'assurer des débits cent fois supérieurs à la version actuelle, passant donc de 1 Mb/s à 100 Mb/s (soit 12,5 Mo/s). Cette technologie - utilisée dans les téléphones mobiles, périphériques informatiques et autres appareils portables comme les assistants personnels (PDA) - va voir sa vitesse de transmission augmenter dans les années à venir, lui permettant alors d'être utilisée pour les vidéos haute définition et l'échange de fichiers avec un baladeur MP3 par exemple. La nouvelle norme incorporera une technologie radio, connue comme l'ultra wideband ou UWB.
Quelques explications
Revenons en arrière de plusieurs années, au port série ; notre bon vieux port série.
Il a été inventé dans les années 60 pour permettre de relier des périphériques, claviers, terminaux, matériels de mesures à des ordinateurs: le RS232.
Depuis, ce standard de l’EIA (Electronic Industries Association) a été rebaptisé en 1991 EIA232 et quelques modifications y ont été apportées. Les ports PS2 et claviers sont tous deux des ports série simplifiés. Le RS232 a été utilisé énormément pendant de nombreuses années et encore aujourd’hui, il est présent sur toutes les cartes mères.
Son évolution sans fil est l’IrDA, un protocole qui utilise les ondes lumineuses infrarouges pour transmettre des informations, la même technologie que dans nos télécommandes de télé. Ce protocole tout comme le RS232 ne permet que de connecter un seul périphérique à la fois. Un port série ne permet de ne relier qu’une souris ou qu’une imprimante (oui, il y a bien longtemps, les imprimantes se branchaient sur les ports séries) ou un autre périphérique. Moyennant bricolage matériel et logiciel, il est possible d’en relier plusieurs mais cela reste du bricolage.
C’est ainsi que l’USB (Universal Serial Bus) naquis. Pour permettre de brancher plusieurs périphériques en même temps sur le même port. Quand on regarde les spécifications de l’USB, on se rend d’ailleurs compte que ce n’est qu’un port série amélioré.
Restait donc à trouver l’équivalent de l’USB mais sans fil.
Bluetooth est l’évolution lointaine, sans fil du port série !
L’utilisation de périphériques Bluetooth est donc la même que celle des périphériques USB : relier un ordinateur à de petits périphériques personnels ou relier entre eux des périphériques personnels. Ce n’est donc pas une technologie permettant de monter des réseaux ou de relier entre eux de nombreux ordinateurs.
sur le site officiel Bluetooth http://www.bluetooth.com vous y trouverez beaucoup d’informations utiles.
Les fonctionnalités
Le NXT est donc équipé d’un dispositif Bluetooth, et pour communiquer sans fil, il a besoin d’un dispositif semblable installé chez ses correspondants.
Cela signifie entre autre, que l’ordinateur doit en être pourvu.
Dans le cas contraire, il est possible d’acquérir une clé spéciale qui se branche sur un port USB de l’ordinateur ( acquisition sur le site de LEGO®).
En utilisant bluetooth vous pouvez échanger des programmes entre plusieurs NXT, vous pouvez établir des connections sans fils entre votre robot et votre ordinateur, tester les programmes immédiatement, même si votre robot se trouve à l’autre bout du local.
Si vous disposez d’un téléphone portable équipé d’un dispositif bluetooth, vous pouvez l’utiliser pour contrôler votre robot, et même l’employer comme un capteur perfectionné tel que capteur d’images.
Il existe diverses applications « mobiles » ; aussi je vous invite à consulter le site LEGO®, vous y trouverez des idées et des tutoriaux très utiles.
Pour résumer, les capacités du NXT se définissent ainsi :
♣ Peut-être connecté jusqu’à 3 appareils en même temps, mais ne communique qu’avec un seul appareil Bluetooth à la fois.
♣ Recherche et se raccorde aux autre appareils Bluetooth.
♣ Mémorise la connexion avec le dernier appareil pour un raccordement plus rapide.
♣ Rend le NXT « visible » ou « invisible » par d’autres appareils.
♣ La fonction Bluetooth peut-être désactivée pour économiser la batterie.
Compatibilité
Utilisateurs PC ou MAC:
Les informations de ce paragraphe proviennent du site LEGO® http://mindstorms.lego.com/Overview/Bluetooth.aspx.
LEGO MINDSTORMS NXT est compatible avec Bluetooth Software inclus dans Microsoft Windows XP Service Pack 2 et WIDCOMM Bluetooth Software pour Windows v 1.4.2.10 SPS ou plus récent.
MINDSTORMS NXT est compatible avec Bluetooth Software inclus dans Apple MacOS X 10.3.9, 10.4 et 10.5
Il est nécessaire de disposer de l’une de ces versions, pour établir une connexion entre votre ordinateur et la brique intelligente MINDSTORMS NXT.
Le tableau ci-dessous liste les appareils disposants de la technologie sans fil Bluetooth qui a été testé par LEGO® et ses partenaires.
Nota : ces appareils ont été testés seulement avec Widcomm® Bluetooth pour la version Windows plus récente que v. 1.4.2.10 SP5 et Bluetooth stacks inclus dans Microsoft Windows XP - Service Pack 2 / Apple MacOS X 10.3.9 et 10.4.
Tableau des compatibilités Bluetooth et MINDSTORMS NXT
Appareils Bluetooth Compatibilité
Abe UB22S ***
Belkin F8T003 ver. 2 (short range) ***
BlueFRITZ! AVM BT adapter, BlueFRITZ! USB v2.0 ***
Cables Unlimited USB-1520 ***
Dell TrueMobile Bluetooth Module *
Dell Wireless 350 Bluetooth Internal Card ***
Dlink DBT-120 ***
MSI Btoes ***
MSI StartKey 3X-faster ***
TDK GoBlue ***
Qtrek, Bluetooth USB Adapter v2.0 ***
(Compatible / Bonne performance : ***
Non compatible / Maigre Performance : *)
2. Mettre plusieurs NXT en communication
Vous avez peut-être envisagé de mettre votre robot NXT en communication ou en partage d'informations avec d'autres robots NXT. Ou alors, si vous possédez un deuxième kit NXT, vous envisagez d'associer une télécommande à votre robot, afin qu'il puisse commander cette seconde brique NXT.
Pour réaliser ce dispositif, vous devez utiliser un couple de blocs NXT-G que nous allons étudier dans cette leçon.
Certains trouvent ces blocs compliqués, mais en réalité ils sont simples, à condition de bien comprendre le concept de base de l'expédition et de la réception des messages.
Mais pour utiliser ce concept, il est nécessaire, d'abord, de mettre en communication via Bluetooth deux ou plusieurs briques NXT. C'est ce que je vais tenter de vous expliquer à présent.
1ère étape:
Vous allez d'abord travailler directement sur les menus internes du NXT et les boutons, en utilisant le petit écran.
a) Activation de bluetooth (si cette fonction n’est pas activée).
ce travail est à faire sur les deux NXT .
Allumez le premier NXT (le maître).

- à l’aide de la flèche droite gris clair, déplacez-vous dans les sous-menus jusqu’à BLUETOOTH . Sélectionnez BLUETOOTH en appuyant sur le bouton orange.
- Puis, sur ON/OFF en utilisant les flèche droite gris clair.

Pour activer Bluetooth, sélectionnez ON/OFF en appuyant sur le bouton orange. Quand vous sélectionnez ON, un petit symbole Bluetooth apparaît dans le coin haut à gauche de l’écran du NXT. (voir ci-dessous).

b) Renommez le NXT si nécessaire.
Pour identifier plus facilement vos NXT donnez leur des noms différents. A faire sur votre ordinateur en utilisant le logiciel Lego® Mindstorms® NXT-G.
c) Mise en place d’une connexion Bluetooth NXT-à-NXT.
1. Assurez-vous que BLUETOOTH est activé sur les 2 NXT (voir ci-dessus)
2. Sur l’un des 2 NXT (le maître), déplacez-vous et sélectionnez le menu BLUETOOTH à l’aide des flèches gris clair.
3. Puis, choisir SEARCH.

Activez SEARCH puis à l’aide des flèches gris clair choisir l’autre NXT (NXT 2). Cela demande à être fait par seulement l’un des deux NXT (le maître).





Après avoir établi la connexion, vous pourrez effectuer une vérification en choisissant CONNECTIONS du sous-menu BLUETOOTH ; les 2 NXT devraient être associés.
2ème étape:
Assurez-vous que les 2 robots NXT sont câblés correctement.
Assurez-vous que les programmes respectifs sont bien installés sur chaque NXT
Placez vos robots sur une surface d’évolution dégagée.
Lancez l’exécution des programmes correspondants sur chaque NXT, en commençant par le NXT esclave.
Remarque:
Pour de plus amples explications, je vous invite à consulter le menu "Aide et support" du logiciel NXT-G dans les rubriques "Bloc Envoyer message" et "Bloc Recevoir message".
3. Les blocs "Message"
Pour communiquer entre eux, 2 NXT s'envoient et reçoivent des messages. Celui qui envoie est considéré comme "maître" et celui qui reçoit comme "esclave".
Le NXT (maître) qui communique avec d'autres NXT, par l'intermédiaire de canaux de communications, choisit le numéro de connexion (1, 2 ou 3) sous lequel le second NXT (esclave) est identifié. Sur le NXT (esclave), le NXT (maître) est identifié sous le numéro 0.
Numéro de connexion
Le numéro de connexion de chaque NXT peut être considéré comme son adresse dans l'univers sans fil. On peut donc envoyer un message à un NXT précis en indiquant son numéro de connexion.
Remarque:
Il n'y a pas de différence fondamentale entre un maître et un esclave. Tous deux disposent de bluetooth pour communiquer, mais il est judicieux de confier le rôle de maître à celui qui a le plus de responsabilités. Un exemple est celui d'un robot qui envoie un signal à un autre robot pour le déplacer, ou pour qu'il émette un son ou encore pour relever une valeur d'un capteur.
Parfois plusieurs robots peuvent évoluer à l'aide d'un même programme et s'envoient des signaux dans les deux sens; dans ce cas, choisissez l'un d'entre eux comme maître, et les autres (à concurrence de 3) seront configurés comme esclaves. Comme vous disposez de 4 valeurs possibles, les 3 briques NXT seront en communication avec une brique NXT maîtresse. Ainsi, un robot NXT pourra en contrôler jusqu'à 3.
Un NXT dispose donc d'un moyen très intéressant pour adresser une simple information à un autre NXT. Par exemple relever le nombre d'activations du capteur tactile, et l'envoyer à un autre NXT. Et s'il était nécessaire d'envoyer plus d'informations? Par exemple la valeur du niveau de luminosité du capteur photosensible ainsi que que le nombre de rotations du moteur B à un autre robot. Cela est-il possible?
Si on admet que chaque message potentiel se comporte comme une variable, alors la réponse est oui.
Les blocs "Envoyer un message" et "recevoir un message" peuvent échanger entre eux jusqu'à 10 messages à l'aide de boîtes aux lettres.
Numéro de boîte aux lettres
Chaque NXT possède 10 numéros de boîtes aux lettres où des messages sans fil peuvent être déposés. Chaque numéro de boîte aux lettres peut contenir 5 messages. Si un numéro de boîte aux lettres contient déjà 5 messages, l'ajout d'un message supplémentaire forcera le NXT à effacer le plus ancien.
Bloc "Envoyer un message"
Ce bloc est disponible dans la "palette entière" série "action". C'est un bloc actif, émetteur comme le bloc son ou moteur.
Fig.10

L'icône présente une flèche sortante précisant qu'il s'agit d'un départ.
Pour envoyer un message sans fil (lorsque tous les NXT ont reçu un numéro de connexion), sélectionner tout d'abord le numéro de connexion du NXT de destination. Choisir ensuite le format du message (texte, numérique ou logique). Entrer le message en tapant du texte ou un nombre, ou en choisissant une condition logique (vrai ou faux). Enfin, choisir le numéro de boîte aux lettres (où le message sera stocké) sur le NXT de destination. Le format du message et le message proprement dit peuvent également être définis à l'aide de fils de données en entrée.
1. Utiliser les cases d'option pour choisir le numéro de connexion du NXT de destination.
2. Le menu déroulant permet de sélectionner le type (Texte, Numérique ou Logique).
3. Entrer le message en tapant du texte ou un nombre (selon le format choisi Texte ou Numérique), ou utiliser les cases d'option pour choisir une valeur logique (vrai ou faux).
4. Choisir le numéro de boîte aux lettres sur le NXT de destination.
Le bloc Envoyer un message peut être contrôlé de manière dynamique en connectant à son plot de données des fils de données (provenant des plots de données d'autres blocs).
Fig.11

Bloc "Recevoir un message"
Ce bloc est disponible dans la "palette entière", série "capteur". Il fait donc partie de cette famille et se comporte comme un conteneur de messages, un peu comme un bloc Variable.
Fig.12

L'icône présente une flèche entrante précisant qu'il s'agit d'une arrivée.
Pour recevoir un message sans fil, fixer le type et le numéro de boîte aux lettres afin qu'ils correspondent à ceux du NXT source. La sortie de ce bloc peut être le message entrant ou une valeur logique « vrai/faux » (si on compare le message entrant à un message de test).
Réception d'un message
Pour recevoir un message sans fil (lorsque tous les NXT ont reçu un numéro de connexion), indiquer tout d'abord le format du message entrant (texte, numérique ou logique).
Si vous voulez définir un test qui vérifie si un message précis a été reçu (ce qui amène le bloc Recevoir message à envoyer un signal « vrai »), entrez le texte ou le nombre de test dans la zone de saisie, ou sélectionnez l'option Vrai ou Faux. Si le message entrant correspond au message de test, le bloc envoie un signal « vrai » via sa prise « √/x ».
1. Le menu déroulant permet de sélectionner le type (Texte, Numérique ou Logique) du message reçu.
2. Si on souhaite comparer le message entrant à un message de test, entrer le texte ou le nombre de test (si vous avez respectivement choisi le format Texte ou Numérique), ou utilisez les cases d'option pour choisir la valeur logique (vrai ou faux) du test.
3. Choisissez le numéro de boîte aux lettres où le message entrant sera stocké.
Le bloc Recevoir un message peut être contrôlé de manière dynamique en connectant à son plot de données des fils de données (provenant des plots de données d'autres blocs).
Fig.13

Voici à présent un exemple, pour illustrer ce dispositif d'envoi et de réception de messages.
Commençons par le pseudo code:
LEO

LEO

LEO

Voici à quoi ressemble le programme écrit en NXT-G:
Fig. 14

La valeur du capteur photosensible est adressé au bloc Envoyer un message dans la boîte aux lettres 3, à l'aide d'un fil de données reliant le plot Intensité du capteur photosensible au plot numérique du bloc Envoyer un message.
Maintenant, si je dispose d'un second robot appelé BONGbis, je peux imaginer un autre pseudo code:
LEO

LEO

LEO

Et la traduction en programme NXT-G est la suivante:
Fig.15

On observe que BONGbis relève la valeur de son capteur photosensible et cette valeur est transmise au bloc Recevoir un message. Puis, BONGbis vérifie et lit le contenu de sa boîte aux lettres 3. Une comparaison est alors faite entre la valeur stockée et celle lue sur son capteur photosensible. Cette comparaison est faite automatiquement, parce qu'une valeur numérique a été fournie par le capteur au moyen d'un fil de données en entrée, relié au bloc Recevoir un message, et qu'un autre fil de données en sortie logique est relié au plot logique du bloc Commutateur. Cette disposition force le bloc Recevoir un message à comparer ces 2 valeurs. Si ces 2 valeurs sont égales, un valeur logique VRAI est alors transmise au bloc Commutateur par le plot OUI/NON (à ne pas confondre avec le plot logique en sortie), qui sélectionne le chemin correspondant; c'est à dire le déplacement de BONGbis (8 rotations).
Les blocs Envoyer un message et Recevoir un message sont absolument nécessaires pour que 2 robots NXT ou plus, puissent communiquer et échanger des informations.
Il est intéressant de signaler qu'avec un deuxième kit NXT, il est possible de réaliser une télécommande pour contrôler un autre robot. Pour cela vous utiliserez dans la télécommande, les blocs Envoyer un message qui adresseront des valeurs numériques au robot, comme le nombre de rotations ou de degrés aux moteurs B et C ou d'autres paramètres comme la vitesse ou la puissance.
Vous trouverez un exemple de télécommande en visitant mon site…
http://web.mac.com/roboleo/Roboleo/Bluetooth_2.html
Edit : suite de la leçon : post34096.html#p34096