Recientemente le he comprado a mi hijo el juego Lego Wedo, se compone de diversas piezas de Lego technic y un Hub USB al que le puedes conectar un motor y dos sensores, uno de distancia y otro de inclinación. Todo funciona con el software de Lego de manera nativa en Windows y Osx pero no con Linux. El software incluido proporcionado incluye un herramienta gráfica educativa basada en scratch.
Scratch es una herramienta de programación educativa diseñada por el MIT, puedes encontras mas info de ella en el website de scratch.
El software que proporciona Lego es una versión simplificada y sencilla de scratch, tiene menos opciones, botones mas grandes, y sonidos que que encajan con los diseños propuestos en las instrucciones. El software no es gratuito, cuesta 85€ y se vende a parte de la caja de iniciación (!??). Por suerte es posible utilizar el software original scratch del MIT con Lego Wedo y Linux.
Hay dos versiones de scratch, la 2.0 es online basada en web y que no funciona con Lego y Linux, sin embargo la versión antigua 1.4 funciona con Lego y viene incluida en Debian Wheezy.
Solo hace falta instalar el paquete con:
apt-get install scratch squeak-plugins-scratch
Ahora puede conectar el Hub de Lego al puerto USB, y compobar si es detectado:
[31412.408152] usb 3-3: new low-speed USB device number 2 using ohci_hcd
[31412.575322] usb 3-3: New USB device found, idVendor=0694, idProduct=0003
[31412.575333] usb 3-3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[31412.575339] usb 3-3: Product: LEGO USB Hub V1.00
[31412.895290] generic-usb 0003:0694:0003.0001: hiddev0,hidraw0: USB HID v1.10 Device [LEGO USB Hub V1.00] on usb-0000:00:12.0-3/input0
[31412.895346] usbcore: registered new interface driver usbhid
[31412.895350] usbhid: USB HID core driver
Vemos que no funciona, por lo que hay que añadir un regla en el udev, para hacerlo hay que crear este fichero:
/etc/udev/rules.d/99-wedo.rules con este contenido
ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
Reiniciamos udev con
/etc/init.d/udev restart
Ahora todo esta listo, iniciamos scracth desde Aplicaciones -> Educación -> Scracth
Mostramos las opciones de Lego Wedo que estaban ocultas desde menu Editar
Ahí encontraremos las nuevas opciones del motor
Y en la seccion de sensores encontramos los sensores de Lego Wedo de inclinación y distancia.
Para esperar hasta que uno de los sensores detecte uns condición, podemos usar esta estructura, una condición de espera, un operador y una caja de sensor como esta:
Esto esto, ya esta Lego Wedo funcionando con scratch. ¡A disfrutar!