Mindstorm : Différence entre versions

De Wiki d'activités IMA
(Avancement :)
 
(36 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-ExtensionMindstorm-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 
== Objectif: ==
 
== Objectif: ==
  
Ligne 4 : Ligne 7 :
 
Concevoir une brique materielle qui fera l'interface entre la brique Mindstorm et les capteurs et actionneurs divers
 
Concevoir une brique materielle qui fera l'interface entre la brique Mindstorm et les capteurs et actionneurs divers
  
Développer une brique logicielle utilisable dans l'interface de programmation Labview livrée avec le MindStorm.  
+
Développer une brique logicielle utilisable dans l'interface de programmation Labview livrée avec le MindStorm.
 +
 
 +
Schéma du montage :
 +
 
 +
[[Fichier:Schema Montage Mindstorm.png]]
 +
 
 +
 
 +
== Résultat: ==
 +
 
 +
Nous avons réussi à mettre en place un protocole de communication entre un Arduino et un NXT. Permettant de brancher jusqu'à 15 capteurs sur l'Arduino, de relier cet Arduino à UN SEUL port du NXT et ainsi d'utiliser les données des 15 capteurs comme bon nous semble.
 +
 
 +
Conclusion : 15 fois plus d'entrées possible que par défaut.
 +
 
 +
Pour utiliser ce que nous avons développer vous pouvez télécharger notre archive :
 +
 
 +
Version 1 fonctionnel : [[ArduinoToNXTV1_0.zip]]
 +
 
 +
Version 1.1 optimisée (version beta) : [[ArduinoToNXTV1_1(Beta).zip]]
 +
 
 +
 
 +
Pour des informations plus détaillés vous pouvez vous repporter à cette page, le détail du développement se trouve un peu plus bas.
 +
 
 +
Vous pouvez aussi télécharger notre rapport de projet : [[ExtensionMindstormChampagneMonteiro.pdf‎]]
  
 
== Avancement : ==
 
== Avancement : ==
 
   
 
   
 +
Apres de multiples test, il n'y a qu'un capteur qui s'avère communiquer en utilisant le protocole I2C.
 +
Les Ports du NXT ne sont donc pas parallellisés.
 +
Nous avons donc prévu de repartir de la brique RFID pour creer une nouvelle brique communiquant avec un Microcontroleur.
 +
Le microcontroleur se fera passer pour esclave du NXT en scrutant le bus et en décodant le message pour renvoyer au NXT l'information d'un des capteurs qui auront été branchés au µC
 +
 +
Nous avons pu récuperer des informations sur la maniere de creer un bloc labview ou mindstorm. Ce sera notre prochain objectif.
 +
 +
Sources:
 +
Brochage Port Mindstorm : https://sites.google.com/site/mccolganrobotics/
 +
 +
Brique RFID http://www.generationrobots.com/capteur-rfid-pour-robot-lego-mindstorms-nxt-codatex,fr,4,Capteur-RFID-NXT.cfm
 +
 +
== 27/02/2013 ==
 +
Test de l'accéléromètre par communication I2C avec l'arduino : résultats encourageants, l'arduino reçoit des valeurs correspondant à la position du capteur ainsi qu'à ses mouvements.
 +
[[Fichier:Infos-serie-accel.png]]
 +
 +
Code utilisé : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/LSM303_Example.zip.
 +
 +
Nous sommes partis de cette exemple et l'avons adapté pour qu'il concorde avec les versions plus récentes de la bibliothèque utilisée.
 +
Brochage I2C de l'arduino trouvable à l'adresse : http://arduino.cc/en/Reference/Wire .
 +
 +
== 04/03/2013 ==
 +
Nous avons réussi à établir le schéma de la structure du câble I2C du Mindstorm :
 +
 +
[[Fichier:Schéma-cable-i2c.jpg]]
 +
 +
== 06/03/2013 ==
 +
'''Partie Arduino :'''
 +
 +
Il a fallu réaliser un programme sur l'Arduino prenant en compte le protocole suivant :
 +
 +
La brique NXT envoie des messages en I2C ; l'un d'entre eux signifiera qu'il s'adresse à l'Arduino. Quand ce dernier lit ce message précis, il doit attendre que la brique NXT lui envoie un second message contenant un code désignant le capteur dont on désire avoir les informations (on pourra relier des capteurs analogiques sur les broches A0, A1, A2 et A3 ainsi que des capteurs digitaux sur les broches 2 à 12). Grâce à ce dernier code, l'Arduino saura laquelle de ses entrées elle doit lire, et pourra ainsi réceptionner les données générées par le capteur correspondant ; ainsi, les données du capteur pourront être envoyées par l'Arduino en I2C à la brique NXT.
 +
 +
 +
== 07/03/2013 ==
 +
'''Partie Arduino:'''
 +
 +
L'Arduino doit être remplacé par un microcontrôleur ATTiny13. Pour créer le circuit, il faut créer un typon sous Altium. Toutefois, certains éléments, comme le microcontrôleur ou la connectique femelle du câble Mindstorm, ne sont pas reconnus par les librairies installées sur Altium : il faudra donc les créer nous-mêmes.
 +
 +
 +
 +
== 13/03/2013 ==
 +
'''Partie Hardware:'''
 +
 +
Nous avons enfin pu visualiser la trame I²C entre le NXT et un capteur RFID.
 +
 +
En bleu : SCL | En rouge : SDA
 +
 +
Sans Message RFID
 +
[[Fichier:Twiki I2C VIDE.png]]
 +
 +
Avec Message RFID
 +
[[Fichier:Twiki I2C RFID.png]]
 +
 +
Aggrandissement 
 +
[[Fichier:Twiki I2C RFID Zoom.png]]
 +
 +
Vitesse de transmission moyenne 10kbit/s
 +
 +
Nous avons ainsi pu constater que contrairement à ce qui est indiqué, la plupart des capteurs ne communiquent pas du tout en I²C
 +
 +
Ex : Bouton Poussoir renvoie 0V ou 5V ou encore Capteur Ultrasonique qui renvoie une impulsion proportionnellement large à la distance de l'obstacle détecté.
 +
 +
 +
'''Partie Software:'''
 +
 +
Installation des outils NXT Toolkit permettant le developpement d'une nouvelle brique Lego.
 +
 +
Débuts encourageant.
 +
 +
 +
== Aboutissement : ==
 +
 +
Nous avons finalement réussis à établir la communication entre notre NXT et l'Arduino.
 +
A partir de là, notre projet n'a plus été freiné et nous avons donc pu développer une application Labview permettant d'exploiter cette communication au meilleur escient.
 +
 +
L'objectif était simple : Mettre en place un protocole de communication le plus efficace possible pour transmettre les donnée de différents capteurs : de 0 à 11 capteurs numériques et de 0 à 4 capteurs analogiques.
 +
 +
Une fois ceci fais il a s'agit d'encapsuler cette fonction pour qu'elle soit utilisable par un néophyte.
 +
[[Fichier:BlocArduinoLabview.png]]
 +
 +
Ce block est donc utilisable par un utilisateur de labview mais il faudra tout de même programmer l'arduino avec le programme correspondant et permettant la communication.
 +
 +
== Améliorations Pouvant être apportés : ==
 +
'''Matériel : '''
 +
 +
 +
Remplacer l'Arduino par un microcontrolleur. Attiny13A
 +
 +
http://www.jedmicro.com.au/AVRISPmkII_UG.pdf
 +
 +
http://www.atmel.com/Images/doc2535.pdf
 +
 +
 +
'''Logiciel : '''
 +
 +
Faire un bloc LabView permettant à l'utilisateur de programmer des entrées ET des sorties
 +
 +
== Sources : ==
 +
Brochage Mindstorm : https://sites.google.com/site/mccolganrobotics/
 +
Programme Arduino pour capteur I2C LSM303 http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/LSM303_Example.zip
 +
Programme NXC I2C : http://www.tau.ac.il/~stoledo/lego/i2c-8574/
  
Prise en main et test du bus I2C
+
== Contact developers : ==
 +
Charly Monteiro : charly.monteiro@polytech-lille.net
  
URL Mindstorm/Arduino : https://sites.google.com/site/mccolganrobotics/
+
Thomas Champagne : thomas.champagne@polytech-lille.net

Version actuelle datée du 23 mai 2013 à 09:19


Vidéo HD


Objectif:

Concevoir une brique materielle qui fera l'interface entre la brique Mindstorm et les capteurs et actionneurs divers

Développer une brique logicielle utilisable dans l'interface de programmation Labview livrée avec le MindStorm.

Schéma du montage :

Schema Montage Mindstorm.png


Résultat:

Nous avons réussi à mettre en place un protocole de communication entre un Arduino et un NXT. Permettant de brancher jusqu'à 15 capteurs sur l'Arduino, de relier cet Arduino à UN SEUL port du NXT et ainsi d'utiliser les données des 15 capteurs comme bon nous semble.

Conclusion : 15 fois plus d'entrées possible que par défaut.

Pour utiliser ce que nous avons développer vous pouvez télécharger notre archive :

Version 1 fonctionnel : ArduinoToNXTV1_0.zip

Version 1.1 optimisée (version beta) : ArduinoToNXTV1_1(Beta).zip


Pour des informations plus détaillés vous pouvez vous repporter à cette page, le détail du développement se trouve un peu plus bas.

Vous pouvez aussi télécharger notre rapport de projet : ExtensionMindstormChampagneMonteiro.pdf‎

Avancement :

Apres de multiples test, il n'y a qu'un capteur qui s'avère communiquer en utilisant le protocole I2C. Les Ports du NXT ne sont donc pas parallellisés. Nous avons donc prévu de repartir de la brique RFID pour creer une nouvelle brique communiquant avec un Microcontroleur. Le microcontroleur se fera passer pour esclave du NXT en scrutant le bus et en décodant le message pour renvoyer au NXT l'information d'un des capteurs qui auront été branchés au µC

Nous avons pu récuperer des informations sur la maniere de creer un bloc labview ou mindstorm. Ce sera notre prochain objectif.

Sources: Brochage Port Mindstorm : https://sites.google.com/site/mccolganrobotics/

Brique RFID http://www.generationrobots.com/capteur-rfid-pour-robot-lego-mindstorms-nxt-codatex,fr,4,Capteur-RFID-NXT.cfm

27/02/2013

Test de l'accéléromètre par communication I2C avec l'arduino : résultats encourageants, l'arduino reçoit des valeurs correspondant à la position du capteur ainsi qu'à ses mouvements. Infos-serie-accel.png

Code utilisé : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/LSM303_Example.zip.

Nous sommes partis de cette exemple et l'avons adapté pour qu'il concorde avec les versions plus récentes de la bibliothèque utilisée. Brochage I2C de l'arduino trouvable à l'adresse : http://arduino.cc/en/Reference/Wire .

04/03/2013

Nous avons réussi à établir le schéma de la structure du câble I2C du Mindstorm :

Schéma-cable-i2c.jpg

06/03/2013

Partie Arduino :

Il a fallu réaliser un programme sur l'Arduino prenant en compte le protocole suivant :

La brique NXT envoie des messages en I2C ; l'un d'entre eux signifiera qu'il s'adresse à l'Arduino. Quand ce dernier lit ce message précis, il doit attendre que la brique NXT lui envoie un second message contenant un code désignant le capteur dont on désire avoir les informations (on pourra relier des capteurs analogiques sur les broches A0, A1, A2 et A3 ainsi que des capteurs digitaux sur les broches 2 à 12). Grâce à ce dernier code, l'Arduino saura laquelle de ses entrées elle doit lire, et pourra ainsi réceptionner les données générées par le capteur correspondant ; ainsi, les données du capteur pourront être envoyées par l'Arduino en I2C à la brique NXT.


07/03/2013

Partie Arduino:

L'Arduino doit être remplacé par un microcontrôleur ATTiny13. Pour créer le circuit, il faut créer un typon sous Altium. Toutefois, certains éléments, comme le microcontrôleur ou la connectique femelle du câble Mindstorm, ne sont pas reconnus par les librairies installées sur Altium : il faudra donc les créer nous-mêmes.


13/03/2013

Partie Hardware:

Nous avons enfin pu visualiser la trame I²C entre le NXT et un capteur RFID.

En bleu : SCL | En rouge : SDA

Sans Message RFID Twiki I2C VIDE.png

Avec Message RFID Twiki I2C RFID.png

Aggrandissement Twiki I2C RFID Zoom.png

Vitesse de transmission moyenne 10kbit/s

Nous avons ainsi pu constater que contrairement à ce qui est indiqué, la plupart des capteurs ne communiquent pas du tout en I²C

Ex : Bouton Poussoir renvoie 0V ou 5V ou encore Capteur Ultrasonique qui renvoie une impulsion proportionnellement large à la distance de l'obstacle détecté.


Partie Software:

Installation des outils NXT Toolkit permettant le developpement d'une nouvelle brique Lego.

Débuts encourageant.


Aboutissement :

Nous avons finalement réussis à établir la communication entre notre NXT et l'Arduino. A partir de là, notre projet n'a plus été freiné et nous avons donc pu développer une application Labview permettant d'exploiter cette communication au meilleur escient.

L'objectif était simple : Mettre en place un protocole de communication le plus efficace possible pour transmettre les donnée de différents capteurs : de 0 à 11 capteurs numériques et de 0 à 4 capteurs analogiques.

Une fois ceci fais il a s'agit d'encapsuler cette fonction pour qu'elle soit utilisable par un néophyte. BlocArduinoLabview.png

Ce block est donc utilisable par un utilisateur de labview mais il faudra tout de même programmer l'arduino avec le programme correspondant et permettant la communication.

Améliorations Pouvant être apportés :

Matériel :


Remplacer l'Arduino par un microcontrolleur. Attiny13A

http://www.jedmicro.com.au/AVRISPmkII_UG.pdf

http://www.atmel.com/Images/doc2535.pdf


Logiciel :

Faire un bloc LabView permettant à l'utilisateur de programmer des entrées ET des sorties

Sources :

Brochage Mindstorm : https://sites.google.com/site/mccolganrobotics/ Programme Arduino pour capteur I2C LSM303 http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Magneto/LSM303_Example.zip Programme NXC I2C : http://www.tau.ac.il/~stoledo/lego/i2c-8574/

Contact developers :

Charly Monteiro : charly.monteiro@polytech-lille.net

Thomas Champagne : thomas.champagne@polytech-lille.net