RCX - Lego Mindstorms : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
m (Liens : ajout d'un lien vers la doc)
m (Présentation : ajout d'une photo du RCX)
Ligne 16 : Ligne 16 :
  
 
La brique RCX peut encore s'acheter d'occasion sur Internet pour environ 40€.
 
La brique RCX peut encore s'acheter d'occasion sur Internet pour environ 40€.
 +
 +
[[Fichier:RCX.jpg|300px]]
  
 
==Configuration de l'émetteur LEGO USB RCX sur Linux Ubuntu 16.04==
 
==Configuration de l'émetteur LEGO USB RCX sur Linux Ubuntu 16.04==

Version du 28 octobre 2016 à 12:13

La brique RCX est une des versions de brique Mindstorms Robotics Invention System commercialisées par Lego, cet article permet ça mise en œuvre.

Présentation

Mindstorm Robotics Invention System (RIS) est probablement le meilleur kit de robotique raisonnablement bon marché disponible. Cependant, le logiciel standard est Windows centrique. Il y a heureusement plusieurs solutions qui permettent aux utilisateurs de Linux d'utiliser leurs Mindstorms à partir de Linux.

La première brique RCX a été commercialisée en 1998. Cette brique a, comme tout Lego qui se respecte, des tenons permettant l'assemblage.

Elle comporte 3 ports d'entrée, 3 ports de sortie, 4 boutons de commande, un écran à cristaux liquides et un système de communication par infrarouges.

Le RCX comprend également un microprocesseur pour traiter les programmes, une mémoire interne pour stocker les programmes ainsi qu'un haut-parleur intégré pour émettre des bips de tonalité.

La programmation se fait sur l'ordinateur et le programme est transmi à l'aide d'un émetteur USB infrarouge vers le RCX. Un RCX peut contenir 5 programmes au maximum.

Il existe une version 1.0, 1.5 et 2.0 de la brique RCX. L'alimentation se fait avec 6 accumulateurs LR6 (AA) de 1,5 V soit au total 9V.

La brique RCX peut encore s'acheter d'occasion sur Internet pour environ 40€.

RCX.jpg

Configuration de l'émetteur LEGO USB RCX sur Linux Ubuntu 16.04

Prise en charge par le kernel

Chercher si un module kernel correspond à l'émetteur RCX avec la commande find :

   $ find /lib/modules -name *lego*
   /lib/modules/4.4.0-24-generic/kernel/drivers/usb/misc/legousbtower.ko
   /lib/modules/4.4.0-21-generic/kernel/drivers/usb/misc/legousbtower.ko
   /lib/modules/4.4.0-38-generic/kernel/drivers/usb/misc/legousbtower.ko

Vérifier si la version du module correspond bien à notre version du kernel

   $ uname -a
   Linux machine 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
   $

Il existe bien un module legousbtower pour la version 4.4.0-38-generic du kernel.

Tester l'émetteur USB du RXC

La commande lsmod permet de savoir si le module est chargé, rien n'est renvoyé s'il n'est pas chargé :

   $ lsmod | grep lego
   $

Exécuter la commande tail dans un terminal puis brancher le périphérique USB :

   $ tail -f /var/log/syslog
   Oct 24 22:02:07 machine kernel: [40759.136157] usb 1-2: new low-speed USB device number 6 using xhci_hcd
   Oct 24 22:02:08 machine kernel: [40759.337659] usb 1-2: New USB device found, idVendor=0694, idProduct=0001
   Oct 24 22:02:08 machine kernel: [40759.337673] usb 1-2: New USB device strings: Mfr=4, Product=26, SerialNumber=0
   Oct 24 22:02:08 machine kernel: [40759.337681] usb 1-2: Product: LEGO USB Tower
   Oct 24 22:02:08 machine kernel: [40759.337687] usb 1-2: Manufacturer: LEGO Group
   Oct 24 22:02:08 machine kernel: [40759.339409] legousbtower 1-2:1.0: LEGO USB Tower #-160 now attached to major 180 minor 0
   Oct 24 22:02:08 machine kernel: [40759.342757] legousbtower 1-2:1.0: LEGO USB Tower firmware version is 1.0 build 134
   Oct 24 22:02:08 machine mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
   Oct 24 22:02:08 machine mtp-probe: bus: 1, device: 6 was not an MTP device

Le module est chargé :

   $ lsmod | grep lego
   legousbtower           20480  0
   $

Le périphérique est reconnu comme étant USB :

   $ ls -l /dev/usb
   total 0
   crw-rw-rw- 1 root root 180, 0 oct.  24 22:02 legousbtower0
   $

Programmer la brique RCX

Programmer en NQC

Not Quite C est un langage simple avec une syntaxe approchant le C qui peut être utilisé pour programmer la brique RCX Lego. Si vous commencer juste avec la programmation les environnements graphiques sont probablement un meilleur choix. Toutefois, si vous êtes un programmeur C et préférez taper quelques lignes que faire glisser et déposer des icônes de programmation, NQC est parfait pour vous. NQC est un logiciel libre distribué sous la licence publique Mozilla (MPL).

Installation depuis les sources

La compilation de NQC, comme indiqué sur le site de pcbrick.info, avec le patch pour la prise en charge de l'USB ne fonctionne pas, celle-ci retourne l'erreur :

   lexer.cpp:(.text+0x1c46): référence indéfinie vers « isatty(int) »
   collect2: error: ld returned 1 exit status
   make: *** [bin/nqc] Erreur 1"

La solution évoquée dans les commentaires ne fonctionne pas et n'est d'ailleurs pas réellement une solution. J'ai regardé les anciennes révisions des sources et je n'ai pas trouvé de solution pour compiler NQC. Par contre les commentaires évoquent un paquetage \o/.

Installer NQC depuis un paquet .deb

Le paquet se trouve dans les dépôts d'Ubuntu :

   $ sudo apt-get install nqc

Transférer un programme

Se procurer des exemples de programmes

La documentation du langage NQC met à disposition un manuel, un guide, un tutorial et des exemples :
http://bricxcc.sourceforge.net/nqc/

http://bricxcc.sourceforge.net/nqc/doc/NQC_Manual.pdf
http://bricxcc.sourceforge.net/nqc/doc/NQC_Guide.pdf
http://bricxcc.sourceforge.net/nqc/doc/NQC_Tutorial.pdf
http://bricxcc.sourceforge.net/nqc/doc/NQCTutorialSamples.zip

Repérer le nom du périphérique
   $ ll /dev/usb/
   total 0
   drwxr-xr-x  2 root root     60 oct.  28 10:45 ./
   drwxr-xr-x 20 root root   4580 oct.  28 10:45 ../
   crw-rw-rw-  1 root root 180, 0 oct.  28 10:45 legousbtower0
   $

Ici le périphérique est /dev/usb/legousbtower0

Transférer un programme

Transférer le programme nommé test.nqc

Se placer dans le répertoire contenant les exemples :

   $ nqc -Susb:/dev/usb/legousbtower0 -d test.nqc

Messages d'erreur

  • Le périphérique, l'émetteur, n'est pas branché
   $ nqc -Susb:/dev/usb/legousbtower0 -d test.nqc
   Downloading Program:error
   Could not open serial port or USB device
  • L'émetteur ne trouve pas le RCX
   $ nqc -Susb:/dev/usb/legousbtower0 -d test.nqc
   Downloading Program:
   error
   No reply from RCX
  • Le firmware du RCX n'est pas installé
   $ nqc -Susb:/dev/usb/legousbtower0 -d test.nqc
   Downloading Program:
   error
   No firmware installed on RCX

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!!

Liens

La brique Mindstorms RCX sur Wikipédia
https://fr.wikipedia.org/wiki/Lego_Mindstorms#La_brique_RCX

(en) Configuring the LEGO USB Tower on Linux
http://pbrick.info/2013/10/configuring-the-lego-usb-tower-on-linux/

(en) Not Quite C
http://bricxcc.sourceforge.net/nqc/

Documentation de NQC
(en) http://bricxcc.sourceforge.net/nqc/

Ce Mini-HOWTO est destiné à l'utilisation leurs Mindstorms à partir de Linux, il référence les langages de programmation disponibles
http://tldp.org/HOWTO/Lego/

Auteurs

Licence de la page

Attribution - Partage dans les Mêmes Conditions 3.0 non transposé (CC BY-SA 3.0)

Vous êtes libre de :

  • partager — reproduire, distribuer et communiquer l’œuvre
  • remixer — adapter l’œuvre
  • d’utiliser cette œuvre à des fins commerciales

Selon les conditions suivantes :

  • Attribution — Vous devez attribuer l’œuvre de la manière indiquée par l’auteur de l’œuvre ou le titulaire des droits (mais pas d’une manière qui suggérerait qu’ils vous approuvent, vous ou votre utilisation de l’œuvre).
  • Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci.

http://creativecommons.org/licenses/by-sa/3.0/deed.fr