Experiencia de creación del primer robot en Arduino (robot “cazador”)

¡Hola

En este artículo quiero describir el proceso de montaje de mi primer robot usando Arduino. El material será útil para otros principiantes como yo que quieran hacer algún tipo de “carro autónomo”. 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 final (probablemente no el más ideal).

Experiencia de creación del primer robot en Arduino (robot “cazador”)

Siempre que fue posible, involucré a mi hijo (8 años) en la participación. Qué funcionó exactamente y qué no. He dedicado parte del artículo a esto, tal vez le resulte útil a alguien.

Descripción general del robot.

Primero, algunas palabras sobre el robot en sí (Идея). Al principio no quería montar algo estándar. Al mismo tiempo, el conjunto de componentes era bastante estándar: chasis, motores, sensor ultrasónico, sensor de línea, LED y tweeter. Inicialmente, a partir de este "juego de sopa" se inventó un robot que guarda su territorio. Conduce hacia el infractor que ha cruzado la línea del círculo y luego regresa al centro. Sin embargo, esta versión requería una línea dibujada, además de matemáticas adicionales para permanecer en el círculo en todo momento.

Por lo tanto, después de pensarlo un poco, cambié un poco la idea y decidí hacer un robot "cazador". Al principio, gira alrededor de su eje, eligiendo un objetivo cercano (persona). Si se detecta la "presa", el "cazador" enciende las luces intermitentes y la sirena y comienza a conducir hacia ella. Cuando la persona se aleja/huye, el robot selecciona un nuevo objetivo y lo persigue, y así sucesivamente. Un robot de este tipo no necesita un círculo limitado y puede trabajar en áreas abiertas.

Como puede ver, esto se parece mucho a un juego de ponerse al día. 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 (a veces, sin embargo, parece que están a punto de pisotearlo, su corazón da un vuelco...). Creo que esta es una buena solución para popularizar el diseño técnico.

Estructura del robot

Entonces, hemos decidido la idea, pasemos a disposición. La lista de elementos se forma a partir de lo que el robot debería poder hacer. Todo aquí es bastante obvio, así que veamos inmediatamente la numeración:

Experiencia de creación del primer robot en Arduino (robot “cazador”)

El “cerebro” del robot es una placa arduino uno (1); Estaba en un conjunto pedido desde China. Para nuestros propósitos, esto es suficiente (nos centramos en la cantidad de pines utilizados). Del mismo kit tomamos un chasis prefabricado (2), al que se unen dos ruedas motrices (3) y una trasera (que gira libremente) (4). El kit también incluía un compartimento para baterías ya preparado (5). Delante del robot hay un sensor ultrasónico (HC-SR04) (6), en la parte trasera hay un controlador de motor (L298N) (7), en el centro hay un intermitente LED (8) y un poco para en el lateral hay un tweeter (9).

En la etapa de diseño nos fijamos en:

- para que todo encaje
- estar equilibrado
- estar ubicado racionalmente

Nuestros colegas chinos ya lo han hecho parcialmente por nosotros. Entonces, el pesado compartimiento de la batería está ubicado en el centro y las ruedas motrices están ubicadas aproximadamente debajo de él. Todas las demás tablas son livianas y se pueden colocar en la periferia.

Matices:

  1. El chasis del kit tiene muchos agujeros de fábrica, pero todavía no he descubierto cuál es la lógica en ellos. Los motores y el paquete de baterías se aseguraron sin problemas, luego comenzó el “ajuste” con la perforación de nuevos agujeros para asegurar tal o cual placa.
  2. Los estantes de latón y otros sujetadores de las áreas de almacenamiento fueron de gran ayuda (a veces tuvimos que sacarlos).
  3. Pasé las barras colectoras de cada tablero a través de las abrazaderas (nuevamente, las encontré almacenadas). Muy cómodo, todos los cables quedan bien y no cuelgan.

Bloques individuales

Ahora pasaré por bloques y te contaré personalmente de cada uno.

compartimiento de la batería

Está claro que el robot debe tener una buena fuente de energía. Las opciones pueden variar, elegí la opción con 4 pilas AA. En total dan aproximadamente 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 algunas precauciones, pero esta solución es bastante viable.

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

Experiencia de creación del primer robot en Arduino (robot “cazador”)

motores y conductor

Primero, sobre el montaje de los motores. La montura está fabricada en fábrica, pero con grandes tolerancias. En otras palabras, los motores pueden oscilar un par de milímetros a izquierda y derecha. Para nuestra tarea esto no es crítico, pero en algunos lugares puede tener efecto (el robot comenzará a moverse hacia un lado). Por si acaso, puse los motores estrictamente paralelos y los fijé con pegamento.

Experiencia de creación del primer robot en Arduino (robot “cazador”)

Para controlar los motores, como escribí anteriormente, 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 el sentido de giro. Hay un punto importante aquí. ¡Resulta que si el voltaje de suministro es de 5 V, entonces el control de velocidad simplemente no funciona! Es decir, o no gira en absoluto o gira al máximo. Esta es la característica que me hizo “matar” un par de noches. Al final, encontré una mención en algún lugar de uno de los foros.

En general, necesitaba una velocidad de rotación baja al girar el robot, para que tuviera tiempo de escanear el espacio. Pero como esta idea no resultó en nada, tuve que hacerlo de otra manera: un pequeño giro - parada - giro - parada, etc. Una vez más, no tan elegante, pero sí viable.

También agregaré aquí que después de cada persecución el robot elige una dirección aleatoria para un nuevo giro (en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj).

Sensor ultrasónico

Experiencia de creación del primer robot en Arduino (robot “cazador”)

Otra pieza de hardware en la que tuvimos que buscar una solución de compromiso. El sensor ultrasónico produce números inestables en obstáculos reales. En realidad, esto era lo que se esperaba. Lo ideal es que funcione en competiciones donde haya superficies lisas, uniformes y perpendiculares, pero si las piernas de alguien "destellarán" delante de él, es necesario introducir un procesamiento adicional.

Como tal procesamiento configuré filtro mediano por tres cargos. Basado en pruebas realizadas con niños reales (¡ningún 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 necesario objetos (dando la distancia requerida) y reflejados desde otros más distantes, por ejemplo, paredes. Estas últimas son emisiones aleatorias en mediciones de la forma 45, 46, 230, 46, 46, 45, 45, 310, 46... Son estos los que corta el filtro mediano.

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 nos dirigimos directamente hacia el "intruso".

intermitente y sirena

Quizás los elementos más simples de todos los anteriores. Se pueden ver en las fotografías de arriba. No hay nada que escribir aquí sobre hardware, así que pasemos ahora a codigo.

programa de control

No veo el sentido de describir el código en detalle, quién lo necesita: el enlace está al final del artículo, todo es bastante legible allí. Pero sería bueno explicar la estructura general.

Lo primero que teníamos que entender era que un robot es un dispositivo en tiempo real. Más precisamente, para recordar, porque antes y ahora sigo trabajando en electrónica. Entonces, inmediatamente nos olvidamos del desafío. retrasar(), que les 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, introducimos temporizadores para cada bloque. Ha pasado el intervalo requerido: se ha realizado la acción (aumentó el brillo del LED, encendió el motor, etc.).

Los temporizadores se pueden interconectar. Por ejemplo, el tweeter funciona de forma sincronizada con el flasher. Esto simplifica un poco el programa.

Naturalmente, dividimos todo en funciones separadas (luces intermitentes, sonido, giro, avance, etc.). Si no hace esto, no podrá descubrir qué viene, de dónde y de dónde.

Matices de la pedagogía.

Todo lo descrito anteriormente lo hice en mi tiempo libre por las tardes. De manera pausada, pasé unas tres semanas con el robot. Esto podría haber terminado aquí, pero también prometí contarles sobre cómo trabajar con un niño. ¿Qué se puede hacer a esta edad?

Trabajar según instrucciones.

Primero verificamos cada detalle por separado: LED, tweeter, motores, sensores, etc. Hay una gran cantidad de ejemplos listos para usar, algunos directamente en el entorno de desarrollo, otros se pueden encontrar en Internet. Esto ciertamente me hace feliz. Tomamos el código, conectamos la pieza, nos aseguramos de que funcione y luego comenzamos a cambiarlo para adaptarlo a nuestra tarea. El niño hace las conexiones según el diagrama y bajo mi supervisión. Esto es bueno. También es necesario poder trabajar estrictamente según las instrucciones.

Orden de trabajo (“de particular a general”)

Este es un punto difícil. Es necesario aprender que un gran proyecto (“hacer un robot”) consta de pequeñas tareas (“conectar un sensor”, “conectar motores”...), y éstas, a su vez, constan de pasos aún más pequeños (“encontrar un programa”, “conectar una placa”. ", "descargar firmware"...). Al realizar tareas más o menos comprensibles del nivel inferior, “cerramos” las tareas del nivel medio y a partir de ellas se forma el resultado general. Le expliqué, pero creo que la comprensión no llegará pronto. En algún momento, probablemente, en la adolescencia.

Instalación

Taladros, roscas, tornillos, tuercas, soldaduras y el olor a colofonia: ¿dónde estaríamos sin ello? El niño recibió la habilidad básica "Trabajar con un soldador": logró soldar varias conexiones (lo ayudé un poco, no lo esconderé). No te olvides de la explicación de seguridad.

Trabajo de computacion

Escribí el programa para el robot, pero aun así logré algunos resultados favorables.

Primero: inglés. Acababan de empezar a hacerlo en la escuela, así que estábamos luchando por descubrir qué eran pishalka, migalka, yarkost y otras transliteraciones. Al menos entendimos esto. Deliberadamente no utilicé palabras nativas en inglés, ya que aún no hemos alcanzado este nivel.

Segundo: trabajo eficiente. Enseñamos combinaciones de teclas de acceso rápido y cómo realizar rápidamente operaciones estándar. Periódicamente, mientras escribíamos el programa, mi hijo y yo cambiábamos de lugar y yo decía lo que había que hacer (reemplazo, búsqueda, etc.). Tuve que repetir una y otra vez: "hacer doble clic en seleccionar", "mantener presionada la tecla Mayús", "mantener presionada la tecla Ctrl", etc. El proceso de aprendizaje aquí no es rápido, pero creo que las habilidades se irán depositando poco a poco “en la subcorteza”.

Texto ocultoSe puede decir que lo anterior es casi obvio. Pero, sinceramente, este otoño tuve la oportunidad de enseñar informática en noveno grado en una escuela. Esto es horrible. Los estudiantes no saben cosas tan básicas como Ctrl + Z, Ctrl + C y Ctrl + V, seleccionar texto mientras se mantiene presionada la tecla Mayús o hacer doble clic en una palabra, etc. Esto a pesar de que estaban en el tercer año de estudiar informática... Saca tu propia conclusión.

Tercero: mecanografía táctil. Le confié los comentarios en el código al niño para que los escriba (déjelo practicar). Inmediatamente colocamos nuestras manos correctamente para que nuestros dedos recordaran gradualmente la ubicación de las teclas.

Como puedes ver, todavía estamos empezando. Continuaremos perfeccionando nuestras habilidades y conocimientos; serán útiles en la vida.

Por cierto, sobre el futuro...

Un mayor desarrollo

El robot está hecho, conduce, parpadea y emite un pitido. ¿Ahora que? Inspirados por lo que hemos logrado, planeamos perfeccionarlo aún más. Existe la idea de hacer un control remoto, como un vehículo lunar. Sería interesante, sentado frente a un mando a distancia, controlar el movimiento de un robot que se desplaza por un lugar completamente diferente. Pero esa será una historia diferente...

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

Experiencia de creación del primer robot en Arduino (robot “cazador”)

Gracias por su atención!

Enlace de código

Fuente: habr.com

Añadir un comentario