Menú
Está libre
registro
hogar  /  SOBRE/ Conexión de dos o más bloques EV3. LEGO Mindstorms Education EV3 - Revisión del conjunto de construcción

Conexión de dos o más ladrillos EV3. LEGO Mindstorms Education EV3 - Revisión del conjunto de construcción

Descripción de la presentación para diapositivas individuales:

1 diapositiva

Descripción de la diapositiva:

2 diapositivas

Descripción de la diapositiva:

Interfaz del Bloque EV3 El Bloque EV3 es el centro de control que alimenta a sus robots. La pantalla, los botones de control del bloque y la interfaz del bloque EV3, que contiene cuatro ventanas principales, le brindan acceso a una asombrosa variedad de funciones exclusivas del bloque EV3. Estas pueden ser funciones simples, como iniciar y detener un programa, o complejas, como escribir el programa en sí.

3 diapositivas

Descripción de la diapositiva:

Interfaz: El menú de EV3 tiene un menú que consta de 4 partes: Programas recientes Navegación de archivos Bloque Aplicaciones Configuración del bloque

4 diapositivas

Descripción de la diapositiva:

Programas recientes Inicie los programas descargados recientemente desde su PC de escritorio. Esta ventana permanecerá en blanco hasta que comience a descargar y ejecutar programas. Esta ventana mostrará los programas que ha lanzado recientemente. El programa predeterminado en la parte superior de la lista es el programa que se ejecutó por última vez.

5 diapositivas

Descripción de la diapositiva:

Administrador de archivos Acceda y administre todos los archivos almacenados en la memoria del microordenador, así como en la tarjeta de memoria. Desde esta ventana, podrá acceder y administrar todos los archivos en su Bloque EV3, incluidos los archivos almacenados en su tarjeta SD. Los archivos están organizados en carpetas de proyectos, que, además de los archivos reales archivos de programa también contiene los sonidos e imágenes utilizados en cada proyecto. Los archivos se pueden mover o eliminar utilizando el navegador de archivos. Los programas creados utilizando el entorno de programación del módulo y las aplicaciones de registro de datos del módulo se almacenan por separado en las carpetas BrkProg_SAVE y BrkDL_SAVE.

6 diapositivas

Descripción de la diapositiva:

Las aplicaciones de la unidad de control EV3 tienen 4 aplicaciones preinstaladas: A. Representación del puerto. B. Control de motor. B. Control de infrarrojos. D. Entorno de programación del módulo.

7 diapositiva

Descripción de la diapositiva:

A. Vista de puerto En la primera ventana de la aplicación Vista de puerto, puede ver rápidamente a qué puertos están conectados los sensores o motores. Utilice los botones de control del bloque EV3 para navegar a uno de los puertos ocupados y verá las lecturas del sensor de corriente o del motor. Instale múltiples sensores y motores y experimente con diferentes configuraciones. Para ver o cambiar la configuración actual de los motores y sensores instalados, presione el botón central. Para volver a la ventana principal de la aplicación del módulo, presione el botón "Atrás".

8 diapositivas

Descripción de la diapositiva:

B. Control del motor Controle el movimiento de avance o retroceso de cualquier motor conectado a uno de los cuatro puertos de salida. Hay dos modos diferentes. En un modo, podrá controlar los motores conectados al Puerto A (usando los botones Arriba y Abajo) y al Puerto D (usando los botones Izquierda y Derecha). En el otro modo, usted controla los motores conectados al Puerto B (usando los botones Arriba y Abajo) y al Puerto C (usando los botones Izquierda y Derecha). El cambio entre estos dos modos se realiza con botón central... Para volver a la ventana principal de la aplicación del módulo, presione el botón "Atrás".

9 diapositiva

Descripción de la diapositiva:

Control de infrarrojos Controle el movimiento hacia adelante o hacia atrás de cualquier motor conectado a uno de los cuatro puertos de salida, utilizando una baliza infrarroja remota como control remoto y un sensor de infrarrojos como receptor (se debe conectar un sensor de infrarrojos al puerto 4 del Bloque EV3). Hay dos modos diferentes. En un modo, utilizará los canales 1 y 2 en la baliza infrarroja remota. En el canal 1, podrá controlar los motores conectados al puerto B (usando los botones 1 y 2 en la baliza infrarroja remota) y al puerto C (usando los botones 3 y 4 en la baliza infrarroja remota). En el canal 2 podrá controlar los motores conectados al puerto A (usando los botones 1 y 2) y al puerto D (usando los botones 3 y 4). En otro modo, puede controlar los motores de la misma manera, en lugar de utilizar los canales 3 y 4 en la baliza infrarroja remota. El cambio entre estos dos modos se realiza con la ayuda del botón central. Para volver a la ventana principal de la aplicación del módulo, presione el botón "Atrás".

10 diapositivas

Descripción de la diapositiva:

El entorno de programación de bloques EV3 viene con el software instalado. La aplicación es similar software instalado en su computadora. Estas instrucciones contienen la información básica que necesita para comenzar.

11 diapositiva

Descripción de la diapositiva:

Configuración del Bloque EV3 Esta ventana le permite ver y ajustar varios Configuración general en el Bloque EV3.

12 diapositivas

Descripción de la diapositiva:

Ajuste del volumen Puede aumentar y disminuir el volumen en la pestaña Configuración de EV3.

13 diapositiva

Si usted, como nosotros, carece de las capacidades de los sensores EV3 estándar, 4 puertos para sensores en sus robots no son suficientes o desea conectar algunos periféricos exóticos a su robot, este artículo es para usted. Créame, un sensor EV3 de bricolaje es más fácil de lo que parece. Una "perilla de volumen" de una radio vieja o un par de clavos clavados en el suelo en una maceta como sensor de humedad del suelo son perfectos para un experimento.

Sorprendentemente, cada puerto del sensor EV3 oculta una serie de protocolos diferentes, principalmente para compatibilidad con NXT y sensores de terceros. Echemos un vistazo a cómo funciona el cable EV3


Extraño, pero el cable rojo es tierra (GND), el verde es el plus de la fuente de alimentación de 4.3V. El cable azul es SDA para el bus I2C y TX para el protocolo UART al mismo tiempo. Además, el cable azul es la entrada del convertidor de analógico a digital para el EV3. El cable amarillo es SCL para el bus I2C y RX para el protocolo UART. Cable blanco - Entrada de convertidor A / D para sensores NXT. Negro - entrada digital, para sensores compatibles con NXT - duplica GND. No es fácil, ¿no? Vayamos en orden.

Entrada analógica EV3

Cada puerto de sensor tiene un canal convertidor de analógico a digital. Se utiliza para sensores como el sensor táctil (pulsador), el sensor de luz NXT y el sensor de color en modo de luz reflejada y luz ambiental, sensor de sonido NXT y termómetro NXT.

Una resistencia de 910 ohmios, conectada según el diagrama, informa al controlador que este puerto debe cambiarse al modo de entrada analógica. En este modo, puede conectar cualquier sensor analógico al EV3, por ejemplo desde un Arduino. Al mismo tiempo, el tipo de cambio con un sensor de este tipo puede alcanzar varios miles de sondeos por segundo, este es el tipo de sensor más rápido.

Sensor de luz

Termómetro

Sensor de humedad del suelo

También puede conectar: ​​micrófono, botón, telémetro de infrarrojos y muchos otros sensores comunes. Si su sensor no tiene suficiente potencia de 4,3 V, puede alimentarlo con 5 V desde el puerto USB ubicado en el lateral del controlador EV3.

La "perilla de volumen" anterior (también conocida como resistencia variable o potenciómetro) es un gran ejemplo de un sensor analógico; puede conectarlo así:

Para leer valores de un sensor de este tipo en un entorno de programación LEGO estándar, debe utilizar el bloque RAW azul

Protocolo I2C

Este es un protocolo digital, por ejemplo el sensor ultrasónico NXT, muchos sensores Hitechnic, como IR Seeker o Color Sensor V2. Para otras plataformas, por ejemplo para Arduino, hay muchos sensores i2c, también puedes conectarlos. El esquema es el siguiente:

El Grupo LEGO recomienda la impedancia de 82 ohmios, sin embargo, varias fuentes mencionan 43 ohmios o menos. De hecho, intentamos abandonar por completo estas resistencias y todo funciona, al menos "sobre la mesa". En un robot real que opera en condiciones de varios tipos de interferencia, las líneas SCL y SDA aún deben ser llevadas a la fuente de alimentación a través de las resistencias, como se indica en el diagrama anterior. La velocidad de i2c en EV3 es bastante baja, alrededor de 10,000 kbps, por lo que el Hitechnic Color Sensor V2 favorito de todos es tan lento :)

Desafortunadamente, para el LEGO EV3-G estándar no hay un bloqueo completo para la comunicación bidireccional con un sensor i2c, pero al utilizar entornos de programación de terceros como RobotC, LeJOS o EV3 Basic, puede interactuar con casi cualquier sensor i2c.

La capacidad del EV3 para trabajar con el protocolo i2c abre una oportunidad interesante para conectar múltiples sensores a un solo puerto. El protocolo I2C permite conectar hasta 127 dispositivos esclavos a un bus. ¿Puedes imaginar? 127 sensores para cada uno de los puertos EV3 :) Además, a menudo un grupo de sensores i2c se combinan en un dispositivo, por ejemplo, en la foto de abajo, un sensor 10 en 1 (contiene una brújula, giroscopio, acelerómetro, barómetro, etc.)

UART

Casi todos los estándares para sensores EV3, a excepción del Touch Sensor, funcionan a través del protocolo UART y por eso no son compatibles con el controlador NXT, que aunque tiene los mismos conectores, no tiene UART en el sensor. puertos. Echa un vistazo al diagrama, es un poco más sencillo que en los casos anteriores:

Los sensores UART igualan automáticamente su velocidad con la del EV3. Inicialmente, habiéndose conectado a una velocidad de 2400 kbps, acuerdan los modos de funcionamiento y los tipos de cambio, luego cambian a mayor velocidad... Las velocidades en baudios típicas para diferentes sensores son 38400 y 115200 kbps.
LEGO ha implementado un protocolo bastante intrincado en sus sensores UART, por lo que no hay sensores de terceros que originalmente no estuvieran destinados a esta plataforma, pero que fueran compatibles con ella. Sin embargo, este protocolo es muy conveniente para conectar "hechos a sí mismos"
sensores basados ​​en microcontroladores.
Hay una biblioteca maravillosa para Arduino, EV3UARTEmulation, escrita por el reconocido desarrollador de LeJOS Lawrie Griffiths, que permite que esta placa pretenda ser un sensor compatible con UART-LEGO. Su blog LeJOS News tiene toneladas de ejemplos de conexión de sensores de gas, un sensor IMU y una brújula digital usando esta biblioteca.

El siguiente video es un ejemplo del uso de un sensor casero. No tenemos una cantidad suficiente de sensores de distancia LEGO originales, por lo que usamos uno de los sensores caseros del robot:


La tarea del robot es comenzar desde la celda verde, encontrar una salida del laberinto (celda roja) y regresar al punto de partida por la ruta más corta sin llegar a callejones sin salida.

Este artículo se centrará en nueva versión constructor - LEGO Mindstorms Education EV3. Pero antes de hablar de las innovaciones en EV3, conozcamos la serie de constructores Tormentas mentales de Lego más cerca.

LEGO Mindstorms es un set de construcción robótica para niños mayores de 10 años. Las piezas de LEGO Technis se utilizan como bloques de construcción para el robot; muchos chicos ya están familiarizados con ellos gracias a los constructores "Tecnología y Física", "Neumática" ,. Pero construir el esqueleto de un robot no es suficiente: es necesario “enseñarle” a recibir información del entorno y reaccionar ante él. Para esto, se utilizan dispositivos especiales: sensores: le permiten determinar el color, la iluminación, la distancia a los objetos cercanos y mucho más. El robot puede responder a "estímulos" con la ayuda de motores, ya sea ir a algún lugar o hacer algo, por ejemplo, morder el dedo al delincuente. Y el "cerebro" del robot es una unidad programable especial, a la que están conectados todos los motores y sensores.

Pasemos a la composición del set LEGO Mindstorms EV3. Esto es lo que se incluye en el kit educativo:

  • 1 bloque programable
  • 3 motores:
    • 2 motores grandes
    • 1 motor mediano
  • 5 sensores:
    • 2 sensores táctiles
    • 1 sensor de color
    • 1 sensor de distancia ultrasónico
    • 1 giroscopio
  • Batería del robot
  • 528 piezas de Lego Technic

Sensores y motores

Echemos un vistazo a lo que ha cambiado en EV3 en comparación con versión antigua NXT.

El conjunto incluirá 3 motores, pero uno de ellos diferirá tanto en tamaño como en características técnicas.

El sensor de sonido ha sido reemplazado por un giroscopio. El resto de los tipos de sensores siguen siendo los mismos.

Otra característica es la detección automática de sensores y motores cuando están conectados al bloque; hablaré de esta característica en la sección que describe el nuevo entorno de programación EV3.

Las características de los sensores y motores se presentan a continuación.

Muy similar al sensor de la versión anterior. Detecta cuando se presiona o suelta un botón, y también puede contar las presiones únicas o múltiples.

Sensor de color

El sensor de color EV3 detecta 7 colores y puede detectar una falta de color. Como en la versión anterior, puede funcionar como sensor de luz.

  • Mide la luz roja reflejada y la luz ambiental.
  • Capaz de distinguir entre blanco y negro o colores: azul, verde, amarillo, rojo, blanco y marrón
  • Frecuencia de funcionamiento: 1 kHz

Giroscopio

El sensor giroscópico EV3 mide el movimiento de rotación del robot y los cambios de posición.

  • Puede usarse para determinar la dirección de rotación actual
  • Precisión: +/- 3 grados a 90 grados de revolución (en modo de medición de inclinación)
  • Puede detectar un máximo de 440 grados / s (en modo giroscopio)
  • Frecuencia de funcionamiento: 1 kHz

Sensor de distancia ultrasónico


Además de la función principal del sensor ultrasónico EV3, se ha agregado otra: también puede "escuchar" las vibraciones ultrasónicas emitidas por otros sensores ultrasónicos.

  • Puede medir distancias en el rango de 3 a 250 cm.
  • Precisión de medición: +/- 1 cm
  • Resolución del resultado de la medición: 0,1 cm.
  • Se puede utilizar para buscar otros sensores ultrasónicos activos (modo de escucha)
  • Iluminación LED roja alrededor de los "ojos"

Motor grande

El gran servomotor EV3 es muy similar a versión previa el motor NXT, pero el cuerpo del motor se ha vuelto un poco más grande (de hecho, ahora ocupa 14x7x5 agujeros en comparación con el anterior 14x6x5). Además, se han cambiado los puntos de fijación de los motores y su tipo.

  • Velocidad máxima: 160-170 rpm.
  • Ajuste de par - 40 N / cm
  • El par real es de 20 N / cm.

Motor mediano

El servomotor medio EV3 se basa en un motor de función de potencia del mismo tamaño. Solo el sensor de ángulo de rotación y el puerto de conexión requerían espacio adicional. Este motor es perfecto para cargas bajas y altas velocidades.

  • Velocidad máxima: 240-250 rpm.
  • Ajuste de par - 12 N / cm
  • El par real es de 8 N / cm.
  • Sensor de ángulo incorporado (codificador) del motor con una precisión de 1 grado

Los sensores, motores y cables de NXT son compatibles con EV3, por lo que todos los robots construidos previamente pueden ser controlados por la nueva unidad.

Bloque EV3 programable

El microordenador EV3 también ha sufrido cambios importantes. Comparado con el NXT, el bloque EV3 tiene un procesador más rápido, más memoria. El firmware del bloque EV3 se basa en el sistema operativo Linux gratuito, lo que permite crear su propio firmware para el bloque. Ahora es posible conectar el robot a una computadora no solo a través de USB y Bluetooth, sino también a través de Wi-Fi. Los robots también pueden comunicarse entre sí a través de USB, Bluetooth y Wi-Fi.

A continuación se muestra un cuadro comparativo de las especificaciones de NXT y EV3:


NXT EV3
UPC Atmel de 32 bits ARM AT91SAM7S256
48 MHz
256 KB Memoria flash
64 KB de memoria RAM
ARM9
300 MHz
16 Mb de memoria flash
64 Mb de memoria RAM
Coprocesador AVR ARM de 8 bits de Atmel, ATmega48
8 MHz
Memoria FLASH de 4 KB
Memoria RAM de 512 bytes
ausente
Sistema operativo Propiedad Linux
Puertos de entrada (para sensores) 4 puertos
Admite sensores analógicos y digitales
Tasa de baudios: 9600 bps (I2C)
4 puertos
Admite sensores analógicos y digitales

Tasa de baudios: hasta 460,8 Kbps (UART)
Puertos de salida (para motores) 3 puertos
4 puertos
Transferencia de datos USB Modo de velocidad máxima en uso: 12 Mbps Modo de alta velocidad en uso: 480 Mbps
Conexión Dispositivos USB Sin posibilidad Es posible conectar en cadena hasta 3 dispositivos, incluidos tarjetas de red wi-fi y tarjetas flash
Lector de tarjetas SD Ausente Admite tarjetas miniSD, capacidad máxima de 32 GB
Conectar a dispositivos móviles Es posible la conexión a dispositivos con sistema operativo Android Se puede conectar a dispositivos Android e iOS (iPhone, iPad)
Pantalla LCD, monocromo
100 * 64 píxeles
LCD, monocromo
178 * 128 píxeles
Interacción Bluetooth
USB 2.0
Bluetooth v2.1 DER
USB 2.0 (cuando se conecta a una PC
USB 1.1 (cuando se conectan en cadena varios dispositivos)
Wifi

Entorno de programación

El EV3 viene con un nuevo entorno de desarrollo gráfico basado en LabView similar al NXT-G. Funcionará, como el NXT-G, en los sistemas operativos Windows y Mac.

El entorno de desarrollo de EV3 se ha mejorado considerablemente. Ahora todos los materiales para el robot: programas para el robot, documentación, resultados experimentales, fotos y videos, se pueden almacenar en el proyecto. También se ha agregado una herramienta de zoom, que le permite escalar el programa para, por ejemplo, ver el programa completo en su totalidad. Vale la pena señalar que el bloque NXT se puede programar utilizando el nuevo entorno EV3, sin embargo, el bloque antiguo no admite todas las funciones del nuevo lenguaje de programación.

Enumeremos las principales innovaciones en el entorno de programación EV3:

  • Estrecha integración del entorno de programación con el bloque:
    • Adicional pagina especial con equipo conectado. Le permite monitorear el estado del bloque EV3 y recibir valores de los sensores en tiempo real.
    • Los sensores y motores se reconocen automáticamente cuando se conectan, gracias a la función de identificación automática. Esto le permite no indicar que tal o cual sensor o motor está conectado a tal o cual puerto.
  • Nuevo modo de depuración:
    • Mientras se ejecuta el programa, se resalta el bloque que se está ejecutando. Esto le permite comprender con precisión el comportamiento del programa.
    • Se enciende en la unidad de programación. personaje especial si otro sensor o motor está conectado a este puerto.
    • Se agregó la capacidad de ver los valores transmitidos a través de cables de datos.
  • Nuevas características de los bloques de software:
    • El acoplamiento de los bloques permitió abandonar la "viga de ejecución" sobre la que se ubicaban los bloques en el entorno NXT-G.
    • Los bloques no tienen un concepto como un panel de personalización: el comportamiento ahora se puede personalizar directamente en el bloque, lo que resulta en un aumento de su tamaño. El programa ahora es mucho más fácil de leer: puede ver inmediatamente cómo están configurados los sensores y motores.
    • Ahora existen bloques "esperar cambio", que le permiten reaccionar ante el hecho de un cambio de valor, y no ante un cambio de cierto valor como en el NXT-G.
    • Las mejoras en la transferencia de datos de bloque a bloque permiten una conversión de tipo más fácil (ya no es necesario convertir manualmente, por ejemplo, un número en una cadena).
    • Se agregó la capacidad de trabajar con matrices.
    • Se ha hecho posible una salida anticipada del ciclo.

Además del nuevo lenguaje de programación, existen programas para Android y iPhone \ iPad para controlar el robot. También basado en Productos de Autodesk Invertor Publisher creó un programa para crear y ver instrucciones 3D paso a paso. En este programa, puede escalar y rotar el modelo en cada etapa del ensamblaje, lo que le permite construir robots más complejos de acuerdo con las instrucciones.

Robots básicos

El kit educativo incluye instrucciones para montar 5 robots:

Clasificador de color
La tarea clásica de clasificar objetos (en este caso, piezas de Lego) por color.

Chico Gyro
Robot Segway que utiliza un giroscopio para equilibrar.

Cachorro
Perro robot que puede ser acariciado, alimentado. También sabe dormir y hacer sus necesidades :) Recuerda a un Tamagotchi.

Mano robot
Le permite mover elementos.

Para el conjunto EV3, se preparó un conjunto de recursos LEGO MINDSTORMS Education EV3, que le permite ensamblar otros modelos con piezas nuevas.

Al escribir el artículo, se utilizaron materiales del blog nnxt.blogspot.com.

conexión USB

LEGO Mindstorms EV3 se puede conectar a una PC u otro EV3 a través de una conexión USB. La velocidad de conexión y la estabilidad son mejores en este caso que con cualquier otro método, incluido Bluetooth.

LEGO Mindstorms EV3 tiene dos puertos USB.

Comunicación en cadena entre LEGO EV3 y otros ladrillos LEGO EV3.

El modo de conexión en cadena conecta dos o más ladrillos LEGO EV3.

Este modo:

  • diseñado para conectar más de un LEGO Mindstorms EV3;
  • sirve para conectar más sensores, motores y otros dispositivos;
  • permite la comunicación entre varios LEGO Mindstorms EV3 (hasta 4), lo que nos da hasta 16 puertos externos y la misma cantidad de puertos internos;
  • permite gestionar toda la cadena desde el LEGO Mindstorms EV3 principal;
  • no puede funcionar cuando está activo Conexión wifi o bluetooth.

Para habilitar el modo de conexión de bucle, vaya a la ventana de configuración del proyecto y marque la casilla.

Cuando se selecciona este modo, entonces para cualquier motor podemos seleccionar el Bloque EV3 que se utilizará y los sensores requeridos.

La siguiente tabla muestra las opciones para usar los ladrillos EV3:

Acción

Motor mediano

Motor grande

Direccion

Gestión independiente

Giroscópico

Infrarrojo

Ultrasónico

Rotación del motor

Temperaturas

Medidor de energía

Sonido

Conexión bluetooth

Bluetooth permite que LEGO Mindstorms EV3 se conecte a PC, otros LEGO Mindstorms EV3, teléfonos inteligentes y otros dispositivos Bluetooth. El rango de comunicación a través de Bluetooth es de hasta 25 m.

Se pueden conectar hasta 7 bloques a un LEGO Mindstorms EV3. El Bloque maestro EV3 le permite enviar y recibir mensajes para cada esclavo EV3. Los esclavos EV3 solo pueden enviar mensajes al Bloque EV3 maestro, no entre ellos.

Secuencia de conexión Bluetooth EV3

Para conectar dos o más ladrillos EV3 entre sí a través de Bluetooth, siga estos pasos:

1. Abra una pestaña Personalización.

2. Seleccione Bluetooth y presione el botón central.

3. Ponemos Caja visibilidad Bluetooth.

4. Compruebe que el signo de Bluetooth ("<") виден на верхней левой стороне.

5. Siga el procedimiento anterior para la cantidad deseada de ladrillos EV3.

6. Ingrese a la pestaña Conexión:

7. Haga clic en el botón Buscar:

8. Seleccione el EV3 al que desea conectarse (o al que desea conectarse) y presione el botón central.

9. Conectamos uno y el segundo bloque con una clave de acceso.

Si todo se hace correctamente, el "<>", puede conectar otros EV3 Bricks de la misma manera si hay más de dos.

Si apaga LEGO EV3, la conexión se perderá y deberá repetir todos los puntos.

Importante: para cada bloque se debe escribir su propio programa.

Programa de muestra:

Primer bloque: cuando presiona un sensor táctil, el primer bloque EV3 transmite texto al segundo bloque después de un retraso de 3 segundos (bloque maestro).

Programa de ejemplo para el bloque 2:

El segundo bloque espera a que se acepte el texto del primer bloque, y tan pronto como lo reciba, mostrará una palabra (en nuestro ejemplo, la palabra "Hola") durante 10 segundos (bloque subordinado).

Conexión wifi

La comunicación a mayor distancia es posible conectando el Dongle Wi-Fi a un puerto USB en el EV3.

Para usar Wi-Fi, debe instalar un Bloque dedicado en el Bloque EV3 usando un conector USB (adaptador de Wi-Fi (Adaptador inalámbrico Netgear N150 (WNA1100), y también puede conectar un Dongle de Wi-Fi.

Tradicionalmente robots construidos sobre una plataforma Lego Mindstorms EV3 se programan usando el entorno gráfico de LabVIEW. En este caso, los programas se ejecutan en el controlador EV3 y el robot funciona de forma autónoma. Aquí hablaré sobre una forma alternativa de controlar el robot: utilizando la plataforma .NET que se ejecuta en la computadora.

Pero antes de pasar directamente a la programación, veamos algunos casos en los que esto puede ser útil:

  • Requiere control remoto del robot desde una computadora portátil (por ejemplo, presionando botones)
  • Es necesario recopilar datos del controlador EV3 y procesarlos en un sistema externo (por ejemplo, para sistemas IoT)
  • Cualquier otra situación en la que desee escribir un algoritmo de control en .NET y ejecutarlo desde una computadora conectada al controlador EV3

API LEGO MINDSTORMS EV3 para .NET

El controlador EV3 se controla desde un sistema externo mediante el envío de comandos al puerto serie. El formato del comando en sí se describe en el Kit de desarrollador de comunicaciones.

Pero implementar manualmente este protocolo es aburrido. Por lo tanto, puede usar un contenedor .NET listo para usar que fue cuidadosamente escrito por Brian Peek. El código fuente de esta biblioteca está alojado en Github y el paquete listo para usar se puede encontrar en Nuget.

Conexión a un controlador EV3

La clase Brick se utiliza para comunicarse con el controlador EV3. Al crear este objeto, debe pasar la implementación de la interfaz ICommunication al constructor, un objeto que describe cómo conectarse al controlador EV3. Las implementaciones de UsbCommunication, BluetoothCommunication y NetworkCommunication están disponibles.

La forma más popular de conectarse es a través de Bluetooth. Echemos un vistazo más de cerca a este método de conexión.

Antes de que podamos conectarnos mediante programación al controlador a través de Bluetooth, el controlador debe estar conectado a la computadora utilizando la configuración del sistema operativo.

Una vez que el controlador esté conectado, vaya a la configuración de Bluetooth y seleccione la pestaña de puertos COM. Encontramos nuestro controlador, necesitamos extrovertido Puerto. Lo especificaremos al crear un objeto de comunicación Bluetooth.

El código para conectarse al controlador se verá así:

Conexión de tarea asíncrona pública (comunicación ICommunication) (comunicación var = new BluetoothCommunication ("COM9"); var brick = _brick = new Brick (comunicación); await _brick.ConnectAsync ();)

Opcionalmente, puede especificar el tiempo de espera para conectarse al controlador:

Espere _brick.ConnectAsync (TimeSpan.FromSeconds (5));

La conexión al equipo a través de USB o WiFi se realiza de la misma forma, excepto que se utilizan los objetos UsbCommunication y NetworkCommunication.

Todas las demás acciones realizadas con el controlador se llevan a cabo a través del objeto Brick.

Vamos a encender los motores

Para ejecutar comandos en el controlador EV3, consulte la propiedad DirectCommand del objeto Brick. Primero, intentemos arrancar los motores.

Supongamos que nuestro motor está conectado al puerto A del controlador, luego el arranque de este motor al 50% de potencia se verá así:

Espere _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50);

Existen otros métodos para controlar el motor. Por ejemplo, puede girar un motor en un ángulo específico utilizando los métodos StepMotorAtPowerAsync () y StepMotorAtSpeedAsync (). En total, hay varios métodos disponibles, que son variaciones en los modos de encendido de los motores: en tiempo, velocidad, potencia, etc.

El método StopMotorAsync () realiza una parada forzada:

Espere _brick.DirectCommand.StopMotorAsync (OutputPort.A, verdadero);

El segundo parámetro indica el uso del freno. Si se establece en falso, el motor se detendrá por inercia.

Lectura de valores de sensores

El controlador EV3 tiene cuatro puertos de sensor. Además de esto, los motores también tienen codificadores incorporados, lo que permite su uso como sensores. Como resultado, tenemos 8 puertos desde los que puede leer valores.

Se puede acceder a los puertos para leer valores a través de la propiedad Ports del objeto Brick. Ports es una colección de puertos disponibles en el controlador. Por lo tanto, para trabajar con un puerto específico, debe seleccionarlo. InputPort.One ... InputPort.Four son puertos de sensor y InputPort.A ... InputPort.D son codificadores de motor.

Var port1 = _brick.Ports;

Los sensores del EV3 pueden funcionar en diferentes modos. Por ejemplo, se puede utilizar un sensor de color EV3 para medir la luz ambiental, medir la luz reflejada o detectar el color. Por lo tanto, para "decirle" al sensor exactamente cómo queremos usarlo, necesitamos configurar su modo:

Brick.Ports.SetMode (ColorMode.Reflective);

Ahora que el sensor está conectado y su modo de funcionamiento está configurado, puede leer sus datos. Puede obtener datos brutos, valor procesado y valor porcentual.

Float si = _brick.Ports.SIValue; int raw = _brick.Ports.RawValue; byte percent = _brick.Ports.PercentValue;

La propiedad SIValue devuelve los datos procesados. Todo depende de qué sensor se utilice y en qué modo. Por ejemplo, al medir la luz reflejada, obtenemos valores de 0 a 100 en función de la intensidad de la luz reflejada (blanco / negro).

La propiedad RawValue devuelve el valor bruto recibido del ADC. A veces es más conveniente utilizarlo para su posterior procesamiento y uso. Por cierto, en el entorno de desarrollo de EV3 también existe la posibilidad de obtener valores "sin procesar"; para ello, debe utilizar el bloque del panel azul.

Si el sensor que está usando espera que los valores se obtengan en porcentajes, también puede usar la propiedad PercentValue.

Ejecución de comandos en un "lote"

Supongamos que tenemos un carro robot con dos ruedas y queremos desplegarlo en su lugar. En este caso, las dos ruedas deben girar en la dirección opuesta. Si usamos DirectCommand y enviamos dos comandos secuencialmente al controlador, puede que tarde algún tiempo entre su ejecución:

Espera _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50); aguardar _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.B, -50);

En este ejemplo, enviamos un comando para rotar el motor A a la velocidad 50, luego de completar con éxito el envío de este comando, repetimos lo mismo con el motor conectado al puerto B. El problema es que los comandos no se envían de inmediato, por lo que el Los motores pueden comenzar a girar en diferentes momentos, mientras se transmite el comando para el puerto B, motor A ya comenzará a girar.

Si es crítico para nosotros hacer que los motores giren al mismo tiempo, podemos enviar comandos al controlador en un "lote". En este caso, debe usar la propiedad BatchCommand en lugar de DirectCommand:

Brick.BatchCommand.TurnMotorAtPower (OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower (OutputPort.B, -50); aguardar _brick.BatchCommand.SendCommandAsync ();

Ahora se preparan dos comandos a la vez, después de lo cual se envían al controlador en un paquete. El controlador, habiendo recibido estos comandos, comenzará a girar los motores al mismo tiempo.

Qué más puedes hacer

Además de rotar los motores y leer los valores de los sensores, hay una serie de otras cosas que puede hacer en el controlador EV3. No me detendré en cada uno de ellos en detalle, solo enumeraré una lista de lo que se puede hacer:

  • CleanUIAsync (), DrawTextAsync (), DrawLineAsync (), etc. - manipulación de la pantalla incorporada del controlador EV3
  • PlayToneAsync () y PlaySoundAsync (): uso del altavoz incorporado para reproducir sonidos
  • WriteFileAsync (), CopyFileAsync (), DeleteFileAsync () (de SystemCommand) - trabajar con archivos

Conclusión

El uso de .NET para controlar los robots Mindstorms EV3 es un buen ejemplo de cómo las tecnologías "de diferentes mundos" pueden trabajar juntas. Como resultado de investigar la API de EV3 para .NET, se creó una pequeña aplicación que le permite controlar el Robot EV3 desde una computadora. Desafortunadamente, existen aplicaciones similares para el NXT y han pasado por alto al EV3. Al mismo tiempo, son útiles para lanzar robots controlados, por ejemplo, en el fútbol de robots.

La aplicación se puede descargar e instalar desde este enlace: