Hacer un módulo de expansión para Raspberry Pi con Arduino a bordo
En hackspace , tenemos muchos Raspberry Pi diferentes, con los cuales enseñamos a los niños a programar en python, hacer robots y varios dispositivos útiles. Por supuesto, estamos haciendo lo mismo en el Arduino. Durante los tres años de vida, alma con alma con estas plataformas extremadamente diferentes, tuvimos varias ideas sobre cómo hacer que un robot de entrenamiento sea más correcto, teniendo en cuenta las ventajas y desventajas de cada pieza de hierro. Todos estos pensamientos se materializaron en un nuevo dispositivo, que se discutirá más adelante.
Esencialmente, diseñamos un módulo de expansión compatible con Arduino para RPi, que contiene un controlador de motor y un regulador de potencia. Está claro que este módulo es un controlador autosuficiente para un robot educativo, pero es el sandwich RPi + Arduino que demuestra el enfoque ideológicamente correcto para crear robots. Cómo se ve esta cosa, qué características tiene y dónde se puede aplicar, siga leyendo.Un poco de historiaya han pasado 4 años desde el lanzamiento de la serie Raspberry Pi Modelo B. En un momento, fue la exageración en torno al RPi lo que en parte nos animó a crear nuestro hackspace. Después de todo, lo primero que comenzamos a hacer fue enseñar a los niños robótica en RPi. Después de las primeras lecciones con estudiantes de secundaria sobre la base de la Escuela de Computación Ural Krasovsky N.N., pensamos en nuestro taller-laboratorio, abierto a todos los afectados.Nuestras lecciones se han convertido en un curso básico, que luego se adaptó al Arduino. Se suponía que la continuación de este curso serían proyectos específicos en los que los niños podrían aplicar los conocimientos adquiridos sobre el funcionamiento de los microcontroladores y diversos componentes útiles. Dedicamos toda una clase de tales proyectos de capacitación a la creación de robots móviles, tanto en base a Raspberry Pi como a Arduino.Nuestro primer robot basado en RPi fue creado específicamente como un manual para trabajar con estudiantes. Era un robot de dos ruedas, en el cual los muchachos practicaban trabajar con motores y todo tipo de sensores, preparándose simultáneamente para la competencia. Como chasis, se utilizó un motor de engranaje tamiya. El conductor del motor era drv8833 de TI. En la versión para el robot LineFollower, había dos sensores de reflexión caseros. En la cubierta superior del robot se instaló una placa sin soldadura con 400 puntos.
El robot demostró ser excelente, por lo que con el tiempo la plataforma probó un kit diferente. Además de LineFollower, que por cierto llamamos rastreador a nuestra manera, el robot usaba sensores de reflexión óptica, telémetros ultrasónicos, pintados con un rotulador en un papel, y finalmente se controlaba por wifi, transmitiendo la imagen desde una cámara web.Con el tiempo, se hizo evidente que el motorreductor no era el más popular, sino que también era muy ruidoso. El cuerpo del robot no tenía en cuenta toda la lista de deseos, y no era compatible con los diseñadores comunes. Y lo más importante, surgió la idea de crear un módulo de extensión para RPi, que salvaría al robot de comunicaciones y dispositivos "rutinarios" innecesarios. Así comenzó el proyecto de un robot con ruedas, llamado MR-K-1, y luego MR-K-2. Desde el principio, comenzamos a proporcionar agujeros de aterrizaje para ambas plataformas, y el modelo de robot con Arduino a bordo se presenta a continuación.
Esta es una modificación para la batalla, en la que los estudiantes que controlan un robot a través de bluetooth tienden a reventar globos montados en una máquina enemiga. El marco se amplió, el motor de engranajes se reemplazó con un motor amarillo chino común (y a veces blanco). La caja fue adaptada para el constructor multiplo, por lo que ahora está cubierta con agujeros cuadrados. Todo esto tomó varias semanas. Pero el trabajo en el módulo de expansión se retrasó un poco. Y el problema no estaba tanto en la complejidad de la implementación, sino en la falta de tiempo, agravada por el perfeccionismo :)Elmódulo de extensión RPiDuino Alexander Vasiliev, el blog líder extremadamente útil alex-exe.ru , se convirtió en el principal desarrollador del módulo. Cuando comenzó el proyecto, ya tenía una vasta experiencia en el desarrollo de controladores de motores, estabilizadores de potencia y muchos otros dispositivos interesantes para la robótica. Se decidió que la placa se llamara RPiDuino, porque se suponía que debía proporcionar una simbiosis de Raspberry Pi y Arduino.Entonces, lo que decidimos colocar en el tablero.El módulo tenía que tomar el control directo del controlador del motor, los servos y los sensores. Todo esto requiere un microcontrolador. Y dado que estamos haciendo un robot educativo y nuestros estudiantes deberían flashear fácilmente este controlador, la elección recayó en el conocido atmega328 con un cargador de arranque arduino a bordo. La presencia de atmega hace que el módulo sea un controlador autónomo para controlar pequeños robots de entrenamiento.
Como el atmega apareció en el tablero, también se necesitaba un puente USB-UART, para lo cual configuramos CP2102. Otra señal de compatibilidad de Arduino son los conectores familiares en los lados de la placa, lo que le permite empujar los módulos de expansión hacia arriba.El módulo debe controlar los motores, por lo que apareció el controlador correspondiente. Los controladores modernos se han vuelto completamente microscópicos en tamaño, para que puedan caber fácilmente en el tablero sin dañar mucho los componentes vecinos. Eligieron el DRV8833 de Pololu, ya que ya tenían algo de experiencia con ellos. El controlador es de dos canales, con una corriente de trabajo del canal: 1A.
Finalmente, simplemente se necesitaba un regulador de voltaje en el tablero. Inicialmente, se suponía que debía hacer una potencia separada para la parte de computación y para los servos, pero experimentamos problemas menores con el diseño. Entonces, solo había un estabilizador LM2596, que alimenta el RPi, el microcontrolador, la parte lógica del controlador del motor y los sensores.
Además, el botón de encendido y el zumbador encontraron su lugar en el tablero, con la ayuda de este último, el robot se queja de sus problemas.
El RPiDuino se conecta a la ranura GPIO de la Raspberry Pi, como todos los módulos similares. Atmega328 y RPi se comunican a través de UART.
Las patas restantes del GPIO se atraviesan, por lo que se pueden usar a su discreción.Tabla de características clave de RPiDuinoNutrición |
Tensión de alimentación | 7.5-24 ( ) 7.5-10.5 ( ) |
| 0,5 4, , , |
|
| 5 |
: // | 1.5/2/3 |
| 1% |
| 5.52.1 |
|
| 2,7-10,5 |
/ | 1/2 |
| 50 |
|
| 855622 855633 ( RaspberryPi)
|
| 49 |
Robot controlado a distancia basado en RPi + RPiDuinoUna buena demostración de las capacidades de RPi es un robot controlado a distancia. Puede mostrar el trabajo coordinado de RPi y Arduino, donde la plataforma más antigua se dedica al procesamiento de video y la interfaz de usuario, y la segunda realiza sus tareas robóticas de rutina.
Ahora el robot tiene una cámara web con soporte de hardware para compresión mjpg, conectada a Raspberry a través de USB. El robot se aferra a WiFi a través del enrutador USB TL-WN722N. Los motores están reforzados, con una relación de 1: 120. Las ruedas son grandes con goma blanda para adherirse al linóleo en nuestro espacio pirateado. Los codificadores en los motores ayudan a nivelar la variación en el empuje del motor. Todo esto funciona con dos baterías LiIon de tamaño 18650.Cómo funciona todoEn RPiDuino, un programa gira que escucha los comandos de movimiento del UART y envía algo de telemetría. En mis proyectos, uso la biblioteca SerialFlow , escrita para mi primer quadrocopter. El código del programa para RPiDuino también se puede encontrar en github.Del lado de Raspberry Pi, las cosas son un poco más complicadas. En primer lugar, el robot se controla a través de la interfaz web, por lo que tuve que crear un pequeño servidor web en Python. La pantalla de control tiene flechas para establecer la dirección del movimiento, un regulador de velocidad, telemetría y una ventana para mostrar la transmisión desde la cámara web. Para transmitir el video, tradicionalmente uso mjpg-streamer.Si desea repetir algo similar en su robot, el algoritmo de instalación será el siguiente.1) Instale mjpg-streamer y configure la transferencia de la transmisión de video a http.2) Instale el paquete pyserial.3) Descargue y descomprima el archivo con la parte del servidor del programa de control.4) Completamos el boceto de control RPIDuino.5) Configurar wifi en RPi.6) Configure la ejecución automática del programa de control en RPi.RPiDuino y ROSOtra razón por la que necesitábamos este módulo de extensión fue la capacidad de mostrar a nuestros estudiantes el concepto de robot correcto. Ahora suena algo como esto: “Miren chicos, el robot tiene una computadora host que maneja cálculos complejos. Puede reconocer imágenes, construir un mapa usando LIDAR y SLAM. Todo esto le quita muchos recursos, por lo que ya no puede controlar con sensibilidad las ruedas de un robot terrestre, y Dios no lo quiera, estabilizando el quadrocopter en vuelo. Para estas operaciones a nivel de la médula espinal hay otra computadora que se especializa en tareas simples específicas y no se distrae con nada más. "Estas dos computadoras están conectadas por un bus de datos, a través del cual se comunican entre sí y con otros módulos".Aquí es donde surge el concepto de ROS. En este caso, el núcleo del sistema gira en RPi, y RPiDuino es el nodo ROS. Por cierto, ya hemos creado un pequeño paquete para administrar RPIDuino a través de ROS. Pronto publicaremos un artículo separado sobre este tema.Que sigueLa versión beta del módulo demostró ser digna. Ahora se puede obtener una pequeña cantidad de tableros en nuestro espacio pirateado , escriba a un personal interesado. Planeamos crear la próxima versión, con nuevos controladores de motor, con indicadores adicionales y algunas otras ventajas. El código fuente de la junta será publicado. Estaremos encantados de cualquier crítica y participación! Source: https://habr.com/ru/post/es393947/
All Articles