Quiero hablar sobre mi trabajo y nuestro proyecto colectivo de mascotas: un robot de interior móvil basado en un montón de placas de microprocesador ARDUINO (ATMEGA328, como ve mejor), ESP8266 y Raspberry Pi. Mis amigos y yo lo llamamos MIRO, de "Mobile Intelligent RObot".

Tabla de contenido:
Parte 1 ,
Parte 2 ,
Parte 3 ,
Parte 4 ,
Parte 5 .
Soy el jefe del Centro de capacitación e investigación para robótica de la Pacific State University y, al mismo tiempo, nuestro pequeño hackspace local EastMaker. Nuestro centro universitario existe desde hace cinco años. Formalmente, somos una unidad estructural de la universidad que tiene dos vectores principales de actividad (inesperadamente): académica y científica. Hasta ahora, la actividad científica está relacionada principalmente con el equipaje disponible: sistemas de navegación y comunicación para la robótica subacuática. Incluso antes de la aparición de nuestro centro, el Laboratorio de Tecnologías y Sistemas Inteligentes (LITiS) existía en el Departamento de Ingeniería Informática, un laboratorio conjunto con el Instituto de Problemas de Tecnología Marina, Rama del Lejano Oriente de la Academia de Ciencias de Rusia. Y todavía existe. Cuando se creó el centro, el jefe de este laboratorio se convirtió en su supervisor científico, y el Centro de Robótica se convirtió en una base de recursos para LITiS.
El segundo componente de la actividad es la educación. El proceso educativo en el Centro se está construyendo como parte de las actividades del proyecto de estudiantes y escolares (involucramos a los escolares en una serie de proyectos). Tanto estudiantes de pregrado como de posgrado de casi todas las áreas técnicas están trabajando en proyectos.


Nuestro centro es interdepartamental, no está adscrito a ningún departamento. Los proyectos, la investigación y el desarrollo de nuestra base técnica pueden ser realizados por estudiantes y empleados de toda la universidad. Si tan solo hubiera un deseo y esta base fuera suficiente.
Junto con esta actividad, mis amigos y yo creamos una escuela privada de robótica y conocimientos de ingeniería aplicada para niños en Khabarovsk. Y para las actividades educativas en la escuela y en el Centro de Robótica, se hizo evidente casi de inmediato que se necesitaba algún tipo de curso de luchador joven, revelando los conceptos básicos en las siguientes áreas:
- conceptos básicos de la tecnología de microprocesador;
- sensores simples (principios de funcionamiento, características de uso);
- fundamentos de las tecnologías de procesamiento de materiales (fresado, corte por láser, impresión 3D);
- controlar escenarios y algoritmos simples del campo de la robótica móvil.
Entonces me pareció muy correcto que el objetivo de este curso debería ser algún tipo de robot ARDUINO económico.
Comenzamos a mirar lo que hay en el mercado. Y descubrieron la siguiente extrañeza. Había realmente buenos robots y kits ARDUINO. A menudo bastante caro. Pero generalmente tenían dos grandes desventajas:
- el uso de un cierto hierro "original" (a menudo el mismo ARDUINO, pero en la versión del autor, que implica la compra de tableros exclusivamente de un fabricante);
- falta de material educativo (esto generalmente es algo interesante: las personas hacen excelentes kits y kits para la educación, pero no les importa en absoluto publicar cosas elementales: manuales, lecciones, libros de trabajo (si es necesario)).
Hace casi cuatro años, apareció MIRO. Pero acaba de aparecer. Con el tiempo, la lógica de este proyecto ha cambiado por completo.
Inicialmente, creamos un complejo educativo basado en nuestro robot. Y no había ESP y Raspberry Pi allí. Había ARDUINO y un módulo bluetooth. Aquí está el primer carro:

Con este carro, supimos qué hacer con los estudiantes. Bueno, incluso en el festival ROBOMECH que organizamos en Khabarovsk, armaron un pequeño robot de fútbol para los visitantes.

Después de un tiempo, hicimos la segunda versión, que no era diferente en principio, excepto por la forma y algunas mejoras en el diseño. En esta etapa, también abandonamos por completo la impresión 3D: todos los soportes y soportes estaban hechos de dos materiales laminados (acrílico y madera contrachapada) mediante corte por láser.

Ya teníamos una excelente instrucción ilustrada para armar el kit, algún tipo de programa educativo con manuales y libros de trabajo, y capacitamos activamente a escolares y estudiantes, impartimos clases magistrales en días abiertos y feriados en la ciudad.
Alrededor de este tiempo, el mercado se inundó con diferentes decisiones sobre este tema. Y las capacidades de ATMEGA328 en robótica real, incluso para la educación, se han vuelto demasiado insignificantes. Entonces nació el nuevo concepto de robot de interior MIRO, que es una solución abierta para la creación rápida de prototipos de robots móviles de interior y exterior con hardware suficientemente funcional que le permite sumergirse en OpenCV y ROS y todo tipo de IOT.
Entonces, la esencia del concepto MIRO de hoy.
En primer lugar , MIRO es un pequeño robot móvil, con código completamente abierto (hasta los componentes y placas seriales listos para usar, si el fabricante no proporciona el origen, entonces tampoco los tenemos), distribuido bajo la licencia CC Attribution Share Alike 4.0.
El cuerpo del robot está hecho mediante impresión 3D y corte por láser. Después de la primera versión del robot, en un esfuerzo por reducir el costo, generalmente no queríamos usar la impresión 3D en la tecnología de producción. Pero después de sufrir con los materiales laminados en la segunda versión, abandoné por completo la idea de reducir los costos en detrimento de la calidad y la funcionalidad. Y hoy, MIRO se completa en un 90% con la impresión 3D. Mucho más confiable mecánicamente y agradable de usar. La única aspiración que apoyamos en el proceso de diseño de partes del cuerpo es la facilidad de impresión. Quería evitar soportes complicados y secciones "torcidas", de modo que incluso en una impresora 3D barata obtuviéramos un buen resultado. Mirando hacia el futuro, diré que lo logramos: la impresión de control sin ninguna modificación en los bienes de consumo absolutos ANET A6 confirmó esto.
MIRO tiene cierta modularidad.

El módulo del sensor frontal se puede reemplazar con bastante facilidad sin desmontar el robot. Además, el diseño del robot está diseñado para que casi todos los componentes sean fácilmente accesibles y fácilmente reemplazables. Pretendían precisamente la conveniencia de la operación y modificación. Hablaré de esto un poco más tarde.
En segundo lugar , MIRO son herramientas de software desarrolladas:
- Robot API para ATMEGA328 con una biblioteca de comunicación con Raspberry Pi (aún en desarrollo) o con un host a través de UART (pero está listo).
- Ejemplos de lecciones y programas, desde las rotaciones más simples de motores hasta la visión técnica con la transmisión de una transmisión de video o resultados de procesamiento de video a un host. En un futuro cercano, haga un montón de ejemplos bajo ROS.
- Imágenes Raspbian listas para usar con bibliotecas y software preinstalados, máquinas virtuales VirtualBox también con software de desarrollo preinstalado.
Además, escribimos un
mapa detallado
de la producción del robot para que cualquiera pueda ensamblarlo en casa / en un círculo / CMIT / universidad.
Por el momento, en pruebas beta, un
sitio con la capacidad de publicar sus proyectos para MIRO. Hasta ahora, solo se pueden alojar archivos pequeños allí, pero con el tiempo, creo, nos vamos a deshacer.
Ahora habrá una serie de artículos sobre MIRO, en los que hablaré sobre ello con más detalle, con todos los detalles.
Francamente, el volumen de materiales ya es tal que me resulta difícil mantenerme al día con la actualización de los repositorios a tiempo (este todavía no es el trabajo principal). Debido a esto, puede haber errores y omisiones en los materiales. Además, no tengo absolutamente ninguna experiencia en el apoyo a proyectos de código abierto. Espero aprender todo esto pronto.
Además, planea traducir todos los materiales al inglés. Este es un gran trabajo separado para nosotros y todavía no hemos tenido tiempo de hacerlo.
Algunos de los materiales de la serie de artículos serán duplicados por mis instrucciones de los repositorios, pero en algunos lugares serán más detallados.
Hoy, repasemos el hardware del robot.El robot MIRO se basa en un grupo de tres sistemas de microprocesador populares:
- ARDUINO (basado en Atmel ATMEGA328, núcleo AVR)
- ESP8266
- Raspberry Pi (qué versión no es importante en este momento).
El robot MIRO funciona con una batería con un voltaje de alimentación nominal de 7,4 V (Li-Ion 2S). Para obtener los 5V requeridos por la mayoría de los dispositivos de microprocesador del robot, se utiliza un convertidor LM2596S.
De serie, todos los sensores y actuadores están controlados por ATMEGA328.
El ESP8266 permite la programación inalámbrica del chip ATMEGA328 desde el entorno IDE ARDUINO, y también sirve como un puente SERIAL-WIFI que permite el intercambio de datos con el puerto serie ATMEGA328 (UART) de forma inalámbrica utilizando el protocolo TELNET. Obviamente, ATMEGA328 y ESP8266 están conectados a través de líneas RX / TX.
Además, para implementar el chip ATMEGA328 de forma inalámbrica, la línea RESET de este chip está conectada a la línea GPIO2 del microcontrolador ESP8266.
Por lo tanto, incluso sin una Raspberry Pi, MIRO contiene una arquitectura desarrollada y conveniente para el desarrollo.
En la configuración básica del robot con el módulo frontal SENS1, los siguientes sensores y dispositivos están conectados al microcontrolador ATMEGA328:
- Sensores digitales de odómetro (rueda izquierda y derecha)
- Controlador de los motores izquierdo y derecho en chips L9110S
- Sensor de línea ultrasónico HC-SR04
- Sensores de luz fotoresistivos (izquierda y derecha)
- Emisor de sonido piezoeléctrico
- LED para luz delantera (izquierda y derecha)
- Sensores de línea (izquierda, derecha y centro)
- Servomotor de inclinación de cámara
Los dispositivos 3-7 son opcionales y se pueden reemplazar con cualquier sensor o dispositivo. Puede diseñar y fabricar su propio módulo frontal a cambio del módulo propuesto (se llama SENS1 en los documentos) con sus tareas y dispositivos.
Los dispositivos 1, 2 y 8 son obligatorios para el funcionamiento del robot y no implican el apagado. Es comprensible: sin los controladores del motor, el robot no podrá moverse, y sin sensores de odometría no se puede decir nada sobre la naturaleza del movimiento del robot y no podrá controlar su movimiento con precisión. Bueno, la suspensión de la cámara (si se le puede llamar así) probablemente también sea una parte integral.
El Raspberry Pi está conectado al ATMEGA328 a través de I2C (TWI). Una cámara Raspberry Pi Camera v1.3 está conectada a la placa Raspberry Pi.
Quiero prestar atención a los componentes en serie que ahora se usan en MIRO. Básicamente, nos centramos en un fabricante chino-ruso (en el mapa de producción, en la lista de componentes en serie, puede ver el nombre de la empresa). Esto fue hecho en parte a propósito. Los chinos tienen muchos módulos de tweeters, silbatos y otros bienes de consumo. Estos mismos tipos representan al menos alguna marca con designaciones de nomenclatura. Y al menos de alguna manera puede indicar cuál debe ser exactamente la pieza de hierro en uno u otro nodo del robot. Aunque venden los mismos bienes de consumo por poco dinero. Los miré de cerca y me impresionó que fuera como una compañía rusa. Y el mensaje que publican en su sitio web, inspiró esperanzas de que los chicos "por todo lo hermoso". En realidad, aparentemente, todo es un poco no tan bueno. El diagrama de circuito de al menos la placa WiFi UNO + de este fabricante no resiste ninguna crítica.

No está completo y se ejecuta con muchos errores. Según esto, no pudimos determinar todos los componentes de la placa, a qué está conectado.
En el tablero en sí, los diseñadores han creado un error / función inútil: un solo circuito de reinicio ATMEGA328 y ESP8266. Esto significa que en esta placa es imposible organizar el firmware inalámbrico ATMEGA328 a través de ESP8266: cuando ESP8266 intenta restablecer ATMEGA, extrae su propia línea de restablecimiento. Al mismo tiempo, la placa tiene un botón separado para reiniciar el ESP y un botón de reinicio general para todos los controladores a la vez. Además, el interruptor DIP para 8 líneas está soldado en la placa. Y el octavo interruptor no está involucrado. Al final, rompí la línea de reinicio de ESP e hice posible conectarlo al circuito de reinicio común usando este octavo interruptor usando el cable de montaje. Es decir, si el interruptor 8 está apagado, ESP se puede restablecer solo presionando el botón RESET ESP, y una señal en la línea RST común o presionando el botón de restablecimiento general no restablece el ESP. Cuando el interruptor está activado, todo vuelve al estado que tenía antes de la modificación de la placa.
Queda por descubrir cómo romper el circuito de reinicio. Encontré la solución más indolora.
- Suelde el diodo D3 cerca del conector para conectar una antena externa.
- Suelde el condensador entre la pata del diodo soldado (3.3V en él) y la tierra.
Ahora, cuando presiona el botón de reinicio, ESP no se reinicia.
Recordando el mensaje en el sitio, les escribí una propuesta para corregir esta "característica". Pero ni siquiera me respondieron.
No quería hacer mi pieza de hierro, pero aparentemente tendría que hacerlo. También bajo una licencia abierta.
Hay una solución alternativa: el Arduino UNO habitual y una tarjeta de expansión de este tipo (o algo así).

Pero aquí es algo inconveniente con el firmware ESP. Sin embargo, el firmware ESP en su rol actual en MIRO es un procedimiento bastante raro.
Bueno, en cualquier caso, debe conectar el GPIO2 ESP8266 a la línea de reinicio del controlador ATMEGA328 para firmware inalámbrico. Puede elegir otro GPIO, pero es GPIO2 que está registrado en el código MIRO (o el código deberá corregirse). Al principio, por inexperiencia, eligieron lo primero que se les ocurrió, como dicen, GPIO0. Pero rápidamente se dieron cuenta de su error: para el firmware ESP, este puente tuvo que desconectarse / soldarse, porque la línea GPIO0 en ESP se usó en el procedimiento de firmware.
Conclusión general: al ensamblar MIRO, puede usar cualquier tarjeta de cualquier fabricante que le permita cumplir con los requisitos del esquema de conmutación.
El diagrama de circuito completo del robot MIRO se presenta en uno de los
repositorios mencionados.
Inmediatamente una pregunta banal. ¿Hay alguna solución similar en el mercado? Por supuesto que lo hay. Pero caro Y, por cierto, los chicos que han publicado una serie completa de
artículos aquí sobre el carro ROS también notaron la falta de una solución de "hierro" más o menos accesible. Será genial si los autores y yo encarnamos sus resultados en MIRO.
Ahora, en general, sobre los planes. Para el desarrollo de todo y todo antes de la tercera versión, el proyecto recibió el apoyo del estado. Financiamiento. A saber, el Fondo para la Promoción de la Innovación. Por lo cual muchas gracias a él. Sin este dinero, probablemente lo habríamos dejado con nosotros y en una calidad completamente diferente. Realmente quiero que el robot se convierta en una plataforma para la creación de prototipos, capacitación y experimentos, que sentará las bases para una interacción real de CMIT (FabLabs, hacks) en nuestro país. Se convirtió en un punto peculiar de los esfuerzos conjuntos, donde la contribución de cada uno se convierte en la ventaja de todos. Entiendo claramente que cuento con unidades de equipos, para quienes será interesante. Pero incluso tal interacción será un éxito. Estoy muy animado por cómo resulta en Occidente, ya que en un lugar prácticamente vacío y la iniciativa de unos pocos aburridos, nace un gran ecosistema. ¿Qué pasa si funciona? Hay muchos puntos de aplicación de esfuerzo en él.
La hoja de ruta de desarrollo actual, tal como la veo, se encuentra en el tablero de
Kanban en
GitHub .
También desarrollamos algunas políticas de desarrollo de proyectos. Cualquier plataforma implica ciertas restricciones, "banderas". Sin ellos, todo se convierte en anarquía, y la plataforma no surge, y si lo hace, no dura mucho. En el mismo GitHub hay un
documento , algo así como un manifiesto del desarrollo de la plataforma. Con el tiempo, casi seguramente cambiará: la experiencia simplemente ajustará lo conveniente que sea para todos (usuarios, desarrolladores).
En cuanto al potencial comercial, el proyecto ciertamente lo tiene, y el equipo y yo también trataremos de usarlo. Como? La más simple es la producción y venta de kits de ensamblaje. Al final, también es una forma de expandir la audiencia de usuarios que realmente no quieren molestarse con la producción. Sin dudarlo, ahora se decidió abrir un pedido anticipado de robots listos para usar en el sitio.
Gracias a todos por su atención y me complacerá tener preguntas constructivas e iniciativas que ayuden en el desarrollo del proyecto.
El próximo artículo estará dedicado a la mecánica, diseño y fabricación del casco.
Algunas fotos de robots.


PD En el camino, el proyecto estuvo acompañado por personas cercanas y queridas para mí, que en diferentes períodos de tiempo se convirtieron en parte del equipo y ayudaron a desarrollar el proyecto. Nuestros caminos profesionales divergieron con alguien, pero no puedo dejar de notar su contribución. Que sus nombres no digan casi nada a nadie, pero espero que estén contentos. Este es Yevgeny Ledkov, quien ahora trabaja en la FEFU en la Dirección de Programas Educativos, quien escribió el primer plan de negocios de lo que, de hecho, no existía, y ahogó toda el alma del proyecto. Y Pavel Efimov, quien también se mudó a la FEFU, al laboratorio de robótica, que solo se relacionó directa o indirectamente con el proyecto. Y Bair Dambaev, quien regresó a su tierra natal en Ulan-Ude y ahora está enseñando a los niños al centro infantil que estableció. Y algunos tipos más que hicieron bien su trabajo.