Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Hola.

En este artículo, quiero describir el proceso de construcción de mi primer robot con Arduino. El material será útil para otros principiantes como yo, que deseen fabricar algún tipo de 'carro autónomo'. El artículo es una descripción de las etapas de trabajo con mis adiciones sobre varios matices. El enlace al código final (probablemente no el más ideal) se encuentra al final del artículo.

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Siempre que ha sido posible, he involucrado a mi hijo (de 8 años). Lo que logró hacer con él y lo que no — he dedicado parte del artículo a esto, quizás a alguien le resulte útil.

Descripción general del robot

Primero, algunas palabras sobre el propio robot (idea). No quería construir algo típico al principio. Al mismo tiempo, el conjunto de componentes era bastante estándar: chasis, motores, sensor ultrasónico, sensor de línea, LEDs, zumbador. Inicialmente, se ideó un robot que custodia su territorio. Se dirige hacia el infractor que cruza la línea del círculo y luego regresa al centro. Sin embargo, en esta variante era necesaria una línea trazada, además de una matemática adicional para mantenerse constantemente dentro del círculo.

Por lo tanto, después de algunas reflexiones, cambié un poco la idea y decidí hacer un robot 'cazador'. Al inicio, gira sobre su eje, eligiendo un objetivo cercano (una persona). Si se detecta una 'víctima', el 'cazador' enciende la luz intermitente y la sirena, y comienza a ir hacia ella. Cuando la persona se aleja, el robot elige un nuevo objetivo y lo persigue, y así sucesivamente. A este robot no le necesita un círculo limitado, y puede funcionar en un área abierta.

Como pueden ver, esto recuerda en gran medida al juego de 'atrapados'. Aunque al final, el robot no resultó ser lo suficientemente rápido, interactúa honestamente con las personas que lo rodean. A los niños les gusta especialmente (aunque a veces parece que van a aplastarlo, y el corazón se me acelera...). Creo que es una buena solución para popularizar la construcción técnica.

Estructura del robot

Entonces, ya que hemos decidido la idea, pasemos a la disposición. La lista de elementos se forma a partir de lo que debe ser capaz de hacer el robot. Aquí todo es bastante obvio, así que veamos la numeración de inmediato:

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Los "cerebros" del robot son una placa Arduino Uno (1); que venía en un kit pedido desde China. Para nuestros propósitos es más que suficiente (nos enfocamos en el número de pines utilizados). De este mismo kit, tomamos un chasis listo (2), en el cual se fijan dos ruedas motrices (3) y una trasera (giratoria libre) (4). También en el kit había un compartimento de batería listo (5). En la parte delantera del robot se encuentra un sensor ultrasónico (HC-SR04) (6), en la parte trasera, un controlador de motores (L298N) (7), en el centro, un LED parpadeante (8), y un poco apartado, un zumbador (9).

En la etapa de ensamblaje, observamos:

— que todo quepa
— que esté equilibrado
— que esté colocado de manera racional

En parte, ya lo han hecho por nosotros nuestros colegas chinos. Así, el pesado compartimento de batería está en el centro y aproximadamente debajo están las ruedas motrices. Todas las demás placas son ligeras, por lo que se pueden colocar en la periferia.

Detalles:

  1. El chasis del kit tiene muchos agujeros de fábrica, pero no pude comprender cuál es su lógica. Los motores y la batería se fijaron sin problemas, luego comenzó la "ajuste" con la perforación de nuevos agujeros para fijar cada placa.
  2. Las varillas de latón y otros sujetadores de los almacenes realmente nos ayudaron (a veces tuve que ingeniármelas).
  3. Hice pasar cada cable de la placa a través de abrazaderas (nuevamente, las encontré en los almacenes). Es muy conveniente, todos los cables están ordenadamente colocados y no cuelgan.

Componentes individuales

Ahora voy a hablar sobre los componentes y contar personalmente sobre cada uno.

Compartimento de Batería

Es obvio que el robot necesita una buena fuente de energía. Las opciones pueden ser varias, elegí la opción con 4 baterías AA. En total proporcionan aproximadamente 5 V, y este voltaje se puede suministrar directamente al pin 5V de la placa Arduino (sin pasar por el regulador).

Por supuesto, tenía ciertas reservas, pero esta solución es completamente funcional.

Como la alimentación se necesita en todas partes, para mayor comodidad, hice dos conectores en el centro del robot: uno "distribuye" tierra (a la derecha) y el otro — 5 V (a la izquierda).

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Motores y controlador

Primero, hablemos sobre el montaje de los motores. La fijación es de fábrica, pero se realizó con tolerancias amplias. En otras palabras, los motores pueden 'moverse' unos milímetros a la izquierda y a la derecha. Para nuestra tarea, esto no es crítico, aunque en algunos casos podría influir (el robot comenzará a desviarse). Por precaución, coloqué los motores estrictamente paralelos y los fijé con pegamento.

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Para controlar los motores, como mencioné antes, se utiliza el controlador L298N. Según la documentación, tiene tres pines para cada motor: uno para cambiar la velocidad y un par de pines para la dirección de rotación. Hay un punto importante aquí. Resulta que si la tensión de alimentación es de 5 V, la regulación de velocidad simplemente no funciona. Es decir, o no gira en absoluto, o gira al máximo. Esta peculiaridad me costó un par de noches. Al final, encontré una mención en uno de los foros.

En general, necesitaba una baja velocidad de rotación al girar el robot, de modo que tuviera tiempo suficiente para escanear el espacio. Pero, como nada salió con esa idea, tuve que hacerlo de otra manera: un pequeño giro, detenerse, girar, detenerse, etc. Nuevamente, no es tan elegante, pero es funcional.

También añadiré aquí que después de cada persecución, el robot elige una dirección aleatoria para el nuevo giro (en sentido horario o antihorario).

Sensor ultrasonido

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

Otro componente en el que tuve que buscar una solución de compromiso. El sensor ultrasonido proporciona cifras inestables en obstáculos reales. En realidad, eso era de esperar. Funciona perfectamente en competiciones, donde hay superficies suaves, planas y perpendiculares, pero si frente a él 'destellan' las piernas de alguien, es necesario implementar un procesamiento adicional.

Como tal procesamiento, instalé un filtro mediano con tres lecturas. Según las pruebas en niños reales (durante las pruebas, ¡ningún niño resultó herido!), resultó ser más que suficiente para normalizar los datos. La física aquí es sencilla: tenemos señales reflejadas de objetos deseados (que dan la distancia requerida) y reflejadas de objetos más lejanos, como las paredes. Estas últimas representan botellas aleatorias en las mediciones, como 45, 46, 230, 46, 46, 45, 45, 310, 46... Justo esas son las que elimina el filtro mediano.

Después de todo el procesamiento, obtenemos la distancia al objeto más cercano. Si es menor que un cierto umbral, entonces activamos la alarma y nos dirigimos directamente al "infractor".

El destellador y la sirena

Probablemente, los elementos más simples de todo lo mencionado. Se pueden ver en las fotos de arriba. No vale la pena escribir sobre el hardware aquí, así que ahora pasamos al código.

Programa de gestión

No veo sentido en detallar el código; para quienes lo necesiten, hay un enlace al final del artículo, donde está todo suficientemente legible. Sin embargo, sería bueno explicar la estructura general.

Lo primero que tuve que reflexionar: un robot es un dispositivo de tiempo real. Más bien, recordarlo, porque antes y ahora sigo trabajando con electrónica. Así que, olvidamos inmediatamente la llamada delay(), que es muy apreciada en los ejemplos de sketch, y que simplemente "congela" el programa durante el intervalo de tiempo especificado. En su lugar, como sugieren las personas experimentadas, introducimos temporizadores para cada bloque. Transcurrió el intervalo requerido — realizamos la acción (aumentamos el brillo del LED, encendimos el motor, etc.).

Los temporizadores pueden estar interconectados. Por ejemplo, el zumbador funciona de manera sincrónica con el destellador. Esto simplifica un poco el programa.

Naturalmente, descomponemos todo en funciones individuales (destellador, sonido, giro, movimiento hacia adelante, etc.). Si no se hace así, después será difícil comprender qué es de dónde y hacia dónde.

Matices de la pedagogía

Todo lo que se ha descrito anteriormente lo hice en mi tiempo libre por las tardes. En un ritmo pausado, me tardé alrededor de tres semanas en el robot. Podría detenerme aquí, pero aún prometí contarles sobre el trabajo con el niño. ¿Qué se puede hacer a esa edad?

Trabajo siguiendo las instrucciones

Primero verificamos cada componente por separado: los LEDs, el zumbador, los motores, los sensores, etc. Hay una gran cantidad de ejemplos listos: algunos directamente en el entorno de desarrollo, otros se pueden encontrar en internet. Esto, sin duda, es alentador. Tomamos el código, conectamos el componente, nos aseguramos de que funciona, y luego comenzamos a modificarlo para nuestra tarea. Las conexiones según el esquema y bajo cierto control mío lo realiza el niño por sí mismo. Eso es bueno. También es necesario saber trabajar estrictamente según las instrucciones.

Orden de trabajo ("de lo particular a lo general")

Este es un punto complicado. Hay que acostumbrarse a que un gran proyecto ("hacer un robot") consta de pequeñas tareas ("conectar un sensor", "conectar los motores"…), que a su vez se dividen en pasos aún más pequeños ("encontrar el programa", "conectar la placa", "cargar el firmware"…). Al abordar tareas de nivel inferior más o menos comprensibles, estamos "cerrando" las tareas de nivel medio, y de ahí se forma el resultado general. Lo expliqué, pero creo que la comprensión no llegará pronto. Tal vez alrededor de la adolescencia.

Montaje

Taladrado, roscado, tornillos, tuercas, soldadura y el olor a colofonia — ¿cómo podríamos evitarlo? El niño adquirió la habilidad básica "Trabajo con un soldador" — logramos soldar algunas conexiones (no voy a ocultar que yo ayudé un poco). No olviden la explicación sobre la seguridad en el trabajo.

Trabajo en la computadora

Escribí el programa para el robot, pero de todas formas logré alcanzar algunos resultados paralelos.

Primero: inglés. En la escuela apenas lo han comenzado, así que avanzamos "con dificultad" al desglosar qué es pishalka, migalka, yarkost y otro transliterado. Al menos eso entendimos. Decidí no usar las palabras inglesas nativas, ya que aún no hemos llegado a ese nivel.

Segundo: trabajo efectivo. Aprendimos combinaciones de teclas rápidas para realizar operaciones estándar rápidamente. Periódicamente, cuando escribíamos el programa, intercambiábamos lugares con mi hijo, y yo le decía qué debía hacer (reemplazo, búsqueda, etc.). Tenía que repetir una y otra vez: "selecciona con doble clic", "mantén presionado Shift", "mantén presionado Ctrl", y así sucesivamente. El proceso de aprendizaje no es rápido, pero creo que las habilidades se irán almacenando "en el fondo" poco a poco.

Texto ocultoPuedes decir que lo descrito anteriormente es casi obvio. Pero, honestamente, este otoño tuve la oportunidad de enseñar informática en noveno grado en una escuela. Es un desastre. Los estudiantes no conocen cosas tan elementales como Ctrl + Z, Ctrl + C, y Ctrl + V, seleccionar texto manteniendo Shift o haciendo doble clic en una palabra, y otros. Esto a pesar de que están en su tercer año de clases de informática… Saquen sus propias conclusiones.

Tercero: escritura al tacto. Le confié al niño que escribiera los comentarios en el código (que practique). Desde el principio colocamos sus manos correctamente para que los dedos memorizaran gradualmente la ubicación de las teclas.

Como ves, todavía estamos apenas comenzando. A medida que avancemos, seguiremos puliendo habilidades y conocimientos que serán útiles en la vida.

Por cierto, sobre el futuro...

Desarrollo futuro

El robot está hecho, se mueve, parpadea y pita. ¿Y ahora qué? Motivados por lo logrado, planeamos seguir desarrollándolo. Hay una idea de crear un control remoto, al estilo de un rover lunar. Sería interesante controlar el movimiento del robot desde un supuesto mando, que se encuentra en un lugar completamente diferente. Pero eso será otra historia...

Y al final, en realidad, los protagonistas de este artículo (video al hacer clic):

Experiencia en la creación del primer robot con Arduino (robot 'cazador')

¡Gracias por su atención!

→ Enlace al código

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster