La experiencia de crear el primer robot en Arduino (robot-hunter)

Hola

En este artículo, quiero describir el proceso de ensamblar mi primer robot Arduino. El material será útil para otros recién llegados, como yo, que quieran hacer algún tipo de "carro de autoservicio". El artículo es una descripción de las etapas de trabajo con mis adiciones en varios matices. Al final del artículo se proporciona un enlace al código resultante (probablemente no es el más ideal).



En la medida de lo posible, involucré a mi hijo (8 años). Qué le sucedió exactamente y qué no: para esto destaqué parte del artículo, tal vez alguien sea útil.

Descripción general del robot.


Primero, algunas palabras sobre el robot en sí ( idea ). Realmente no quería coleccionar 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, LED, tweeter. Al principio, a partir de este "conjunto de sopa" se inventó un robot que protege su territorio. Él va al intruso, que cruzó la línea del círculo, y luego regresa al centro. Sin embargo, en esta versión, se necesitaba una línea dibujada, más matemáticas adicionales para permanecer constantemente en el círculo.

Por lo tanto, después de algunas deliberaciones, cambié un poco la idea y decidí hacer un robot "cazador". Al principio, gira alrededor de su eje, eligiendo un objetivo (persona) cercano. Si se descubre una "víctima", el "cazador" enciende una luz intermitente y una sirena, y comienza a montarla. Cuando una persona se aleja / huye, el robot selecciona un nuevo objetivo y lo persigue, y así sucesivamente. Tal robot no necesita un círculo limitado, y puede funcionar en un área abierta.

Como puede ver, esto es muy parecido al juego de ponerse al día. Aunque al final el robot no resultó ser lo suficientemente rápido, pero honestamente interactúa con las personas que lo rodean. A los niños les gusta especialmente (a veces, sin embargo, parece que están a punto de pisotearlo, ya el corazón está saltando ...). Creo que esta es una buena solución para popularizar el diseño técnico.

Estructura robot


Entonces, decidimos la idea, pasemos al diseño . La lista de elementos se forma a partir de lo que el robot debería poder. Aquí todo es bastante obvio, así que mire inmediatamente la numeración:



"Cerebros" del robot - placa arduino uno (1); estaba en un conjunto ordenado desde China. Para nuestros propósitos, es suficiente (nos centramos en la cantidad de pines utilizados). Del mismo conjunto, tomamos el chasis terminado (2), en el que se unen dos ruedas motrices (3) y una trasera (que gira libremente) (4). También en el kit había un compartimento de batería listo para usar (5). En la parte frontal del robot hay un sensor ultrasónico (HC-SR04) (6), en la parte posterior hay un controlador del motor (L298N) (7), en el centro hay un LED-flash (8), y un poco al lado hay un tweeter (9).

En la etapa de construcción, miramos:

- para que todo encaje
- estar equilibrado
- ser colocado racionalmente

Parcialmente, nuestros colegas chinos ya lo han hecho por nosotros. Por lo tanto, el compartimento de la batería pesada se coloca en el centro, y aproximadamente debajo de él hay ruedas motrices. Todas las otras tablas son ligeras, se pueden colocar en la periferia.

Matices:

  1. Hay muchos agujeros de fábrica en el chasis del conjunto, pero qué lógica hay en ellos: todavía no lo he descubierto. Los motores y el paquete de baterías se arreglaron sin problemas, luego el "ajuste" comenzó con la perforación de nuevos agujeros para arreglar uno u otro tablero.
  2. Los estantes de latón y otros sujetadores de los cuartos de almacenamiento fueron rescatados (a veces tenían que salir).
  3. Pasé los neumáticos de cada tabla a través de las abrazaderas (nuevamente, lo encontré en los cuartos de almacenamiento). Muy conveniente, todos los cables son hermosos y no se cuelgan.

Bloques individuales


Ahora revisaré los bloques y les contaré personalmente sobre cada uno.

Compartimento de la batería

Está claro que el robot debe tener una buena fuente de energía. Las opciones pueden ser diferentes, elegí la opción con 4 pilas AA. En total, dan alrededor de 5 V, y este voltaje se puede aplicar directamente al pin de 5 V de la placa arduino (sin pasar por el estabilizador).

Por supuesto, tuve cierta cautela, pero esta solución es bastante viable.

Como se necesita energía en todas partes, por conveniencia, hice dos conectores en el centro del robot: uno "distribuye" la tierra (derecha) y el segundo - 5 V (izquierda).



Motores y chofer

Primero, sobre el montaje de motores. El soporte es de fábrica, pero está hecho con grandes tolerancias. En otras palabras, los motores pueden "tambalearse" un par de milímetros de izquierda a derecha. Para nuestra tarea, esto no es crítico, pero en algún lugar puede influir (el robot comenzará a alejarse). Por si acaso, puse los motores estrictamente paralelos y los fijé con pegamento.



Para controlar los motores, como escribí anteriormente, se usa 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. Resulta que si el voltaje de alimentación es de 5 V, ¡entonces el control de velocidad simplemente no funciona! Es decir, o no gira en absoluto, o gira al máximo. Aquí hay tal característica, por la cual "maté" un par de noches. Al final, encontré una mención en algún lugar de uno de los foros.

En términos generales, necesitaba una velocidad de rotación baja al girar el robot, de modo que tuviera un margen de tiempo para escanear el espacio. Pero, como nada surgió de tal idea, tuve que hacerlo de manera diferente: un pequeño giro - parada - giro - parada, etc. Nuevamente, no es tan elegante, pero eficiente.

También agregaré aquí que después de cada búsqueda, el robot selecciona una dirección aleatoria de un nuevo giro (en sentido horario o antihorario).

Sensor ultrasónico



Otra pieza de hierro, donde tuve que buscar una solución de compromiso. Un sensor ultrasónico en obstáculos reales da números inestables. En realidad, se esperaba. Idealmente, él trabaja en algún lugar de las competencias donde hay superficies lisas, uniformes y perpendiculares, pero si las piernas de alguien "parpadean" frente a él, entonces debes introducir un procesamiento adicional.

Como tal procesamiento, configuré el filtro mediano en tres muestras. Basado en pruebas en niños reales (¡ni un solo niño resultó herido durante las pruebas!), Resultó ser suficiente para normalizar los datos. La física aquí es simple: tenemos señales reflejadas desde los objetos necesarios (dando la distancia requerida) y reflejadas desde más lejos, por ejemplo, paredes. Las segundas son explosiones aleatorias en medidas de la forma 45, 46, 230 , 46, 46, 45, 45, 310 , 46 ... Es su filtro mediano el que se corta.

Después de todo el procesamiento, obtenemos la distancia al objeto más cercano. Si es inferior a un cierto valor umbral, activamos la alarma y vamos directamente al "intruso".

Flasher y sirena

Quizás los elementos más simples de todo lo anterior. Se pueden ver en las fotos de arriba. No hay nada que escribir sobre el hierro aquí, así que ahora pasemos al código .

Programa de gestión


No veo el punto de escribir el código en detalle, quién lo necesita: el enlace se encuentra al final del artículo, todo es bastante legible allí. Pero la estructura general sería agradable de explicar.

Lo primero que tuve que comprender: el robot es un dispositivo en tiempo real. Más precisamente, recuerda, porque antes, y ahora sigo haciendo electrónica. Esto significa que inmediatamente nos olvidamos de la llamada delay () , que nos encanta usar en bocetos de ejemplo, y que simplemente "congela" el programa durante un período de tiempo específico. En cambio, como aconsejan personas experimentadas, presentamos temporizadores para cada bloque. Ha transcurrido el intervalo requerido: realizaron la acción (aumentaron el brillo del LED, encendieron el motor, etc.).

Los temporizadores pueden estar interconectados. Entonces, por ejemplo, el tweeter funciona sincrónicamente con una luz intermitente. Esto hace que el programa sea un poco más fácil.

Naturalmente, dividimos todo en funciones separadas (luz intermitente, sonido, rotación, movimiento hacia adelante, etc.). Si no haces esto, entonces no entenderás de qué viene o de dónde.

Los matices de la pedagogía.


Todo lo que se describió anteriormente, lo hice en mi tiempo libre por las tardes. En modo pausado, pasé unas tres semanas en el robot. Esto podría haber terminado, pero también prometí contarte sobre trabajar con un niño. ¿Qué es factible a esta edad?

Trabajar en instrucciones

Primero verificamos cada detalle por separado: LED, tweeters, motores, sensores, etc. Hay una gran cantidad de ejemplos listos, algunos directamente en el entorno de desarrollo, otros se pueden encontrar en Internet. Esto es indudablemente agradable. Tomamos el código, conectamos la parte, nos aseguramos de que funcione, entonces ya estamos comenzando a cambiar para nuestra tarea. Conexiones según el esquema y bajo mi control, el niño se hace a sí mismo. Esto es bueno Debe poder trabajar claramente de acuerdo con las instrucciones.

El orden de trabajo ("de privado a general")

Este es un punto difícil. Es necesario enseñar que un proyecto grande ("hacer un robot") consiste en pequeñas tareas ("conectar un sensor", "conectar motores" ...) y que, a su vez, consisten en pasos aún más pequeños ("encontrar un programa", " conectar la placa "," descargar firmware "...). Realizando tareas más o menos comprensibles del nivel inferior, "cerramos" las tareas del nivel medio, y el resultado general ya está compuesto de ellas. Explicó, pero creo que la conciencia no llegará pronto. En algún lugar, probablemente, a la adolescencia.

Instalación

Perforaciones, roscas, tornillos, tuercas, soldaduras y el olor de la colofonia, sin ella. El niño recibió la habilidad básica "Trabajar con un soldador": logré soldar varias juntas (ayudé un poco, no me esconderé). No olvide la explicación de seguridad.

Trabajo informático

Escribí un programa para el robot, pero logré lograr algún tipo de resultados asociados.

Primero: inglés. Acababa de comenzar en la escuela, por lo que "chillamos" resolvimos qué son las traducciones de pishalka, migalka, yarkost y otras. Entendimos al menos eso. Deliberadamente no utilicé mis palabras nativas en inglés, ya que aún no hemos alcanzado este nivel.

Segundo: trabajo efectivo. Enseñaron a combinaciones de teclas de acceso rápido cómo realizar rápidamente operaciones típicas. Periódicamente, cuando escribieron el programa, cambiamos de lugar con mi hijo y le dije lo que había que hacer (reemplazo, búsqueda, etc.). Tuve que repetir una y otra vez: "hacer doble clic", "mantener presionada la tecla Mayús", "mantener presionada la tecla Ctrl" y así sucesivamente. El proceso de aprendizaje aquí no es rápido, pero creo que las habilidades se dejarán de lado gradualmente.

Texto oculto
Puedes decir que lo anterior es casi obvio. Pero, sinceramente, este otoño tuve la oportunidad de realizar ciencias de la computación en noveno grado en la misma escuela. Esto es horror Los alumnos no saben cosas tan básicas como Ctrl + Z, Ctrl + C y Ctrl + V, selección de texto con Mayús o doble clic en una palabra, y más. Esto a pesar del hecho de que estaban en su tercer año de estudios en ciencias de la computación ... Saque una conclusión usted mismo.

Tercero: escritura táctil. Le confié los comentarios en el código al niño que escribe (déjelo practicar). Inmediatamente ponga las manos correctas para que los dedos recuerden gradualmente la ubicación de las teclas.

Como puede ver, todavía estamos comenzando. Perfeccionaremos aún más nuestras habilidades y conocimientos y seremos útiles en la vida.

Por cierto, sobre la perspectiva ...

Mayor desarrollo


El robot está hecho, monta, parpadea y chilla. Que ahora Inspirado por lo que se ha logrado, planeamos refinarlo aún más. Existe la idea de hacer un control remoto, como un rover lunar. Sería interesante, sentado en una consola condicional, controlar el movimiento del robot, que viaja en un lugar completamente diferente. Pero esta será una historia diferente ...

Y al final, de hecho, los héroes de este artículo (video por clic):



Gracias por su atencion!

Enlace al código

Source: https://habr.com/ru/post/es436118/


All Articles