Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cómo conectar un sensor ultrasónico Lego Mindstorms NXT a la Raspberry Pi

Resumen

Conecte directamente un sensor ultrasónico Lego Mindstorms NXT a una Raspberry Pi. Es necesario un búfer de bus TCA9517 I2C y un pin GPIO adicional para SCL. Se proporciona un programa corto en C ++ para leer la distancia medida.

Introducción

Raspberry Pi (Pi), a pesar de algunas deficiencias, es definitivamente mi SBC favorito. Con mucho, la comunidad más grande y todos y cada uno de los detalles están bien documentados. Lego Mindstorms, por otro lado, es mi kit de construcción de robots favorito. A diferencia de otros kits de robots, ofrece posibilidades ilimitadas para construir robots. Hoy un robot de coche, mañana un robot rastreado y al día siguiente un brazo robótico de 6 ejes:todo es posible. La versión NXT del kit tiene un potente microcontrolador basado en ARM, que es suficiente para la mayoría de las aplicaciones de robots simples, pero no para proyectos avanzados como la visión por computadora. Recientemente, Lego publicó EV3, un nuevo kit con un cerebro mucho más poderoso que, como la Raspberry Pi, está impulsado por Linux. Pero aún este cerebro no es capaz de calcular imágenes de alta resolución a una velocidad razonable. Por lo tanto, todavía quiero combinar el poder de raspberry pi con las posibilidades ilimitadas de Lego. Hasta donde yo sé, hay un proyecto que lo logra, llamado BrickPi. Aunque es bastante exitoso, creo que tiene varias deficiencias, que quiero abordar en este artículo y en los siguientes. En primer lugar, solo es compatible con los sensores NXT antiguos basados ​​en I2C y no con los nuevos sensores EV3 basados ​​en UART. Además, no conecta directamente los sensores al pi, sino que utiliza dos microcontroladores Atmega (compatibles con Arduino) para comunicarse con los sensores. La adición de nuevos sensores o cualquier otro cambio requiere un nuevo firmware. Además, el BrickPi usa controladores de motor L293D que solo son capaces de entregar corrientes alrededor de 0.6 A, mientras que un motor Lego NXT consume hasta 2 A cuando se detiene [Características del motor NXT]. En este artículo, quiero mostrarle cómo conectar directamente un Lego Mindstorms Sensor ultrasónico (sensor de EE. UU.) Al Pi sin usar ningún microcontrolador adicional.

Desafíos

Mi primer intento de conectar el sensor de EE. UU. Al Pi fue simple. Simplemente conecte ambas líneas de señal I2C usando un cambiador de nivel simple con dos n-fets [AppNote]. El cambiador de nivel debería ser necesario porque el sensor de EE. UU. Usa niveles lógicos de 5 V y el pi solo 3.3 V. Luego, conecte 5V y 9V al sensor e inicie un programa de prueba simple y no obtuvo nada. Después de revisar los cables y el software dos veces, conecté el analizador lógico y me di cuenta de que el sensor de EE. UU. No puede responder ninguna solicitud, ni siquiera reconocer su propia dirección. El primer y mayor desafío es la conexión de hardware entre el Pi y el sensor. El hardware y los protocolos de software están bien descritos por Lego, incluidos los esquemas [Lego HDK] y, aunque usa I2C, no podemos conectar directamente el sensor al pi. Como puede ver en el Esquema 1, el sensor tiene resistencias pullup muy débiles (82 k) y resistencias en serie muy fuertes (4,7 k) en sus líneas I2C. Las segundas resistencias son nuestro principal problema. Como sabrá, el Pi usa fuertes resistencias pullup de 1.8 k en sus líneas I2C. Debido a la resistencia en serie, el sensor no puede tirar hacia abajo ninguna de las líneas I2C y, por lo tanto, no puede responder a ninguna solicitud del maestro I2C. La Figura 1 muestra una simulación aproximada de esta situación. La línea azul muestra los datos que el sensor intenta enviar, la línea verde muestra los datos recibidos por el Pi. Como puede ver, el sensor no puede llevar la línea de datos simulados a un nivel bajo. También puede notar que cualquier circuito de cambio de nivel es innecesario en este estado porque la fuerte resistencia pull-up a 3.3 V domina la línea también en el nivel alto. La única solución para este problema, que he encontrado hasta ahora, es usar un TCA9517, un búfer bidireccional de 2 canales para I2C. Además, este chip se preocupa por el cambio de nivel. El segundo desafío proviene de un error de firmware en el sensor de EE. UU. Se describe aquí en los foros de mbed, por ejemplo. También hay un artículo que describe cómo analizar la comunicación entre Lego Mindstorms NXT y el sensor de EE. UU. Utilizando un analizador lógico (alemán). En resumen, es necesario un ciclo de reloj adicional (alternar en la línea SCL) entre escribir el registro en el sensor y leer realmente los datos del sensor. Esto, por supuesto, no es compatible con ninguna implementación estándar de hardware o software I2C. Puede escribir una implementación I2C de software especial usando cualquier par de GPIO, pero es más sencillo simplemente conectar otro GPIO desde el Pi a la línea SCL y alternarlo entre escribir el registro en el sensor y leer el contenido de los registros.

Hardware

Hardware necesario para un prototipo simple: Para este prototipo utilicé una placa de pruebas con una pequeña placa de ruptura de sensores Lego Mindstorms hecha a medida. Esta placa imita el control de 9V y la protección del puerto del sensor del Lego Mindstorms NXT [Lego HDK]. Para un prototipo simple, no necesita el circuito de conmutación de 9V (los dos fets) o las resistencias en serie adicionales y los diodos en las líneas I2C. Puede simplemente conectar 9V al pin 1 del cable, GND al pin 2 y 3, 5 V al pin 4 (omitiendo el diodo D1), SCL_5V al pin 5 y SDA_5V al pin 6. Para más detalles:Cómo conectar un Lego Mindstorms NXT Sensor ultrasónico para Raspberry Pi

Proceso de manufactura

  1. IoT básico - RaspberryPI HDC2010 cómo
  2. Registrador de temperatura Raspberry Pi
  3. Monitoreo de temperatura en Raspberry Pi
  4. Sensor de temperatura Python y Raspberry Pi
  5. Estación meteorológica Raspberry Pi
  6. La integración de los datos del sensor con el microprocesador Raspberry Pi
  7. Sensor ultrasónico (HC-SR04) + Raspberry Pi
  8. Sensor de movimiento con Raspberry Pi
  9. Sensor de humedad del suelo Raspberry Pi
  10. Sensor de temperatura y luz Raspberry Pi
  11. ¡Conecte un sensor a su Raspberry Pi para advertirle cuando haya gases nocivos!