¿Cómo puedo controlar los motores Lego?

20

Me gustaría encontrar una manera de hacer que mi Raspberry Pi controle algunos motores Lego, y como beneficio adicional, me gustaría utilizar uno o más sensores ópticos.

Normalmente, la robótica de Lego hace uso del controlador "ladrillo" de Mindstorms ; esto parece ser costoso y en su mayoría redundante si tiene una Raspberry Pi para emitir comandos. El controlador Mindstorms es un procesador y un controlador de motor que puede funcionar sin conexión a una PC, pero carece de Ethernet y muchas características de las computadoras modernas.

¿Existe alguna plataforma alternativa que me permita controlar y recibir datos de creaciones de Lego?

Para su información, esto es para una máquina simple de alerta de errores. El dispositivo supervisará el estado de un marco de prueba de Jenkins y realizará una acción dependiendo del número de casos de prueba unitaria que estén fallando. El raspberry pi sondeará una página web que contiene algunos XML fácilmente analizados. Si el número de errores> 0, nos gustaría hacer que Raspberry Pi comience a manejar la máquina.

Salim Fadhley
fuente
Hola, ¿son raspberrypi.stackexchange.com/users/390/salim-fadhley y raspberrypi.stackexchange.com/users/286/salim-fadhley ambas cuentas? Edite sus perfiles en ambos (si es posible), solicitando una fusión. Ya he llamado a un miembro del equipo de la comunidad por ayuda.
Manishearth
Me gustaría hacer esto con los motores más antiguos de Lego Mindstorms que tengo, que son simples motores de engranajes de CC. Ponga + 5v en un lado, giran en una dirección, ponga + 5v en el otro lado, giran en la otra dirección. Sin embargo, la corriente es demasiado alta para que el RPi conduzca directamente, por lo que aún necesitaría algunos circuitos de interfaz.

Respuestas:

13

Los sensores estándar de Lego Mindstorms son analógicos (es decir, un voltaje entre 0-5? V) o digitales (I²C o RS-485) ( fuente ).

Sensores analógicos:

No creo que la Raspberry Pi tenga un pin roto en el GPIO para un ADC (convertidor analógico a digital), por lo que no podemos interactuar con sensores analógicos (sin un microcontrolador adicional).

Sensores digitales:

El Raspberry Pi tiene dos pines en el GPIO para I²C, lo que significa que si conecta GND, + V, SDA y SCL a sus sensores, debería poder usar una biblioteca I²C para hablar con ellos. Hay un controlador aquí - si usted sigue las instrucciones que debe ser capaz de enviar y recibir señales I²C tan fácilmente como esto (hablando con un TI TMP102):

raspberrypi bootc # echo tmp102 0x48 > /sys/class/i2c-adapter/i2c-0/new_device
raspberrypi bootc # sensors
tmp102-i2c-0-48
Adapter: bcm2708_i2c.0
temp1:        +21.6°C  (high = +160.0°C, hyst = +150.0°C)

Ejemplos:

Hay algunos artículos sobre cómo conectar sensores y motores en esta página , como conectar un controlador de ladrillo Mindstorm a un microcontrolador externo:

Tormenta mental con microcontrolador

Alex L
fuente
1

Mindstorms es la única forma totalmente LEGO de controlar más LEGO.

El NXT 2.0 actual es bastante costoso, pero podría elegir un kit RCX más antiguo (eso es solo un ejemplo) por algo así como 1/3 del precio del NXT 2.0 en la web.

De lo contrario, tendrá que buscar un kit de motor / sensor diferente que pueda conectar a LEGO. Estos no son exactamente fáciles de encontrar y pueden ser bastante caros; Puede valer la pena tratar de encontrar a alguien que sepa más sobre ellos si sigue esta ruta.

Si va a obtener un producto LEGO más antiguo de eBay, le sugiero que explore brickpicker.com para obtener una instantánea del mercado. (Lo descubrí hace un mes o dos. Es un gran lugar para encontrar información sobre el valor actual de mercado de los sets de LEGO en eBay).

ACarter
fuente
2
Lo siento por eso. Debería haber sugerido que de alguna manera incluyeras el RPi en tu respuesta, porque este es un sitio sobre el RPi, y la pregunta era sobre el RPi. Si edita su pregunta, puedo eliminar mi voto negativo. Por cierto, www1.cbsd.org/sites/teachers/hs/MHAYDEN/Science%20Fair/… Busque "Larsson" en ese PDF y encontrará mi resumen del proyecto de la Feria Internacional de Ciencias de Intel hace unos años. Fue una tormenta mental de Lego que aprendió a ganar en Tic Tac Toe.
Andrew Larsson
No te preocupes, tampoco tomé una actitud perfecta. Sé lo de RPi, pero una respuesta no tiene que relacionarse directamente con eso: tenemos muchas preguntas específicas de Linux / distro, y estoy seguro de que podrías ejecutar RCX con Pi.
ACarter
@ Andrew, bueno, he eliminado mi comentario, para que podamos comenzar de nuevo. Eso suena realmente interesante. Hice un script de Python que puede jugar tic tac toe, pero haciéndolo para que aprenda a jugarlo, bueno, eso suena brillante.
ACarter
Se utilizó una implementación modificada / optimizada de la máquina MENACE de Donald Michie . El robot fue controlado por un programa C ++ que empujó / extrajo comandos / datos para / desde los motores / sensores hacia / desde el NXT. Los cálculos se realizaron en la computadora, pero tenía una versión del programa que se ejecutaba en el NXT. Sin embargo, se quedaría sin memoria bastante rápido y el firmware estándar no admite las matrices, por lo que tuve que reemplazarlo por uno modificado. Estoy pensando que podría usar mi RPi para hacer una nueva versión del programa. ¡Sería divertido!
Andrew Larsson
Desde que obtuve mi NXT, me he preguntado cómo puedes controlarlo usando un lenguaje de nivel superior en una computadora. Hay cosas como leJOS y otras cosas, pero ¿qué usaste?
ACarter
1

Hay una alternativa a todo esto: conecte los sensores y motores NXT a la unidad de control NXT y luego conéctelo a través de Bluetooth con el Pi, luego puede enviar comandos directamente al NXT para controlar sus motores y leer sus sensores. echa un vistazo al kit para desarrolladores de Bluetooth de Mindstorms, ¡esto permite que el NXT sea completamente inalámbrico!

Miguel
fuente