Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Ola

Neste artigo quero describir o proceso de montaxe do meu primeiro robot usando Arduino. O material será útil para outros principiantes coma min que queiran facer algún tipo de "carro autocorrente". O artigo é unha descrición das etapas de traballo coas miñas adicións en varios matices. Unha ligazón ao código final (probablemente non sexa o máis ideal) aparece ao final do artigo.

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Sempre que foi posible, participei ao meu fillo (8 anos). Que funcionou exactamente con el e que non? Dediquei parte do artigo a isto, quizais sexa útil para alguén.

Descrición xeral do robot

Primeiro, algunhas palabras sobre o propio robot (a idea). Realmente non quería montar algo estándar ao principio. Ao mesmo tempo, o conxunto de compoñentes era bastante estándar: chasis, motores, sensor ultrasónico, sensor de liña, LEDs, tweeter. Inicialmente, a partir deste "conxunto de sopa" inventouse un robot que garda o seu territorio. Conduce cara ao infractor que cruzou a liña do círculo e despois volve ao centro. Non obstante, esta versión requiría unha liña debuxada, ademais de matemáticas extra para permanecer no círculo en todo momento.

Por iso, despois de pensar un pouco, cambiei un pouco a idea e decidín facer un robot "cazador". Ao comezo, xira arredor do seu eixe, escollendo un obxectivo (persoa) próximo. Se se detecta a "presa", o "cazador" acende as luces intermitentes e a sirena e comeza a dirixirse cara a ela. Cando a persoa se afasta/foxe, o robot selecciona un novo obxectivo e persegue, etc. Tal robot non necesita un círculo limitado e pode funcionar en áreas abertas.

Como podes ver, isto é moi parecido a un xogo de recuperación. Aínda que ao final o robot non resultou ser o suficientemente rápido, honestamente interactúa coas persoas que o rodean. Gústalle especialmente aos nenos (ás veces, porén, parece que están a pisala, o corazón dálle un latexo...). Creo que esta é unha boa solución para popularizar o deseño técnico.

Estrutura do robot

Entón, decidimos a idea, imos pasar disposición. A lista de elementos fórmase a partir do que debería ser capaz de facer o robot. Todo aquí é bastante obvio, así que vexamos inmediatamente a numeración:

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Os "cerebros" do robot son unha placa arduino uno (1); estaba nun conxunto encargado a China. Para os nosos propósitos, é suficiente (centrámonos no número de pinos utilizados). Do mesmo kit collemos un chasis (2) preparado, no que están unidas dúas rodas motrices (3) e unha traseira (xirando libremente) (4). O kit tamén incluía un compartimento para baterías preparado (5). Diante do robot hai un sensor ultrasónico (HC-SR04) (6), na parte traseira hai un controlador de motor (L298N) (7), no centro hai un intermitente LED (8) e un pouco para no lado hai un tweeter (9).

Na fase de maquetación observamos:

- para que todo encaixa
- estar equilibrado
- situarse racionalmente

Os nosos colegas chineses xa o fixeron parcialmente por nós. Polo tanto, o compartimento pesado da batería colócase no centro e as rodas motrices sitúanse aproximadamente debaixo del. Todas as outras placas son lixeiras e pódense colocar na periferia.

Matices:

  1. O chasis do kit ten moitos buratos de fábrica, pero aínda non descubrín cal é a lóxica neles. Aseguráronse os motores e o paquete de baterías sen problemas, entón o "axuste" comezou coa perforación de novos buratos para asegurar tal ou aquela placa.
  2. Os bastidores de latón e outros elementos de fixación das áreas de almacenamento foron de gran axuda (ás veces tiñamos que sacalos).
  3. Pasei as barras colectoras de cada placa polas abrazadeiras (de novo atopeinas no almacenamento). Moi cómodo, todos os fíos están ben e non colgan.

Bloques individuais

Agora vou pasar bloques e falarei persoalmente de cada un.

compartimento de batería

Está claro que o robot debe ter unha boa fonte de enerxía. As opcións poden variar, escollín a opción con 4 pilas AA. En total dan aproximadamente 5 V, e esta tensión pódese aplicar directamente ao pin de 5 V da placa arduino (obviando o estabilizador).

Por suposto, tiven algo de precaución, pero esta solución é bastante viable.

Dado que a enerxía é necesaria en todas partes, por comodidade fixen dous conectores no centro do robot: un "distribúe" o chan (á dereita) e o segundo - 5 V (á esquerda).

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Motores e condutor

En primeiro lugar, sobre o montaxe dos motores. O soporte está feito de fábrica, pero feito con grandes tolerancias. Noutras palabras, os motores poden tambalearse un par de milímetros á esquerda e á dereita. Para a nosa tarefa isto non é crítico, pero nalgúns lugares pode ter un efecto (o robot comezará a moverse cara ao lado). Por se acaso, coloquei os motores estritamente paralelos e fixeinos con cola.

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Para controlar os motores, como escribín anteriormente, utilízase o controlador L298N. Segundo a documentación, ten tres pasadores para cada motor: un para cambiar a velocidade e un par de pasadores para o sentido de xiro. Hai un punto importante aquí. Acontece que se a tensión de alimentación é de 5 V, o control de velocidade simplemente non funciona. É dicir, ou non xira nada, ou xira ao máximo. Esta é a característica que me fixo "matar" un par de noites. Ao final, atopei unha mención nalgún dos foros.

En xeral, necesitaba unha baixa velocidade de rotación ao xirar o robot, para que tivese tempo de escanear o espazo. Pero, como nada xurdiu desta idea, tiven que facelo doutro xeito: un pequeno xiro - parada - xira - parada, etc. De novo, non tan elegante, pero viable.

Tamén engadirei aquí que despois de cada persecución o robot escolle unha dirección aleatoria para un novo xiro (en sentido horario ou antihorario).

Sensor ultrasónico

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Outra peza de hardware onde tivemos que buscar unha solución de compromiso. O sensor ultrasónico produce números inestables en obstáculos reais. En realidade, iso era de esperar. O ideal é que funcione nalgún lugar das competicións onde hai superficies lisas, uniformes e perpendiculares, pero se as pernas de alguén "destellan" diante, hai que introducir un procesamento adicional.

Como tal procesamento establecín filtro mediano por tres contas. En base a probas en nenos reais (ningún neno resultou danado durante as probas!), resultou ser bastante suficiente para normalizar os datos. A física aquí é sinxela: temos sinais reflectidos necesario obxectos (dando a distancia requirida) e reflectidos desde outros máis distantes, por exemplo, as paredes. Estas últimas son emisións aleatorias en medicións da forma 45, 46, 230, 46, 46, 45, 45, 310, 46... Son estes os que corta o filtro mediano.

Despois de todo o procesamento, obtemos a distancia ata o obxecto máis próximo. Se é inferior a un determinado valor límite, entón activamos a alarma e dirixímonos directamente cara ao "intruso".

Intermitente e sirena

Quizais os elementos máis sinxelos de todo o anterior. Pódense ver nas fotografías anteriores. Non hai nada que escribir sobre hardware aquí, así que agora imos pasar código.

Programa de control

Non vexo o sentido de describir o código en detalle, quen o necesita: a ligazón está ao final do artigo, todo é bastante lexible alí. Pero sería bo explicar a estrutura xeral.

O primeiro que tivemos que entender foi que un robot é un dispositivo en tempo real. Máis precisamente, para lembrar, porque tanto antes como agora sigo traballando en electrónica. Entón, inmediatamente esquecémonos do reto delay (), que lles encanta usar en bosquexos de exemplo, e que simplemente "conxela" o programa durante un período de tempo especificado. En cambio, como aconsellan persoas con experiencia, introducimos temporizadores para cada bloque. Pasou o intervalo necesario: realizouse a acción (aumentou o brillo do LED, acendeu o motor, etc.).

Os temporizadores pódense interconectar. Por exemplo, o tweeter funciona de forma sincronizada co intermitente. Isto simplifica un pouco o programa.

Por suposto, dividimos todo en funcións separadas (luces intermitentes, son, xirar, avanzar, etc.). Se non o fas, non poderás descubrir o que vén de onde e onde.

Matices da pedagoxía

Fixen todo o descrito anteriormente no meu tempo libre polas noites. Dun xeito pausado, pasei unhas tres semanas no robot. Isto podería ter rematado aquí, pero tamén prometín falarche de traballar cun neno. Que se pode facer a esta idade?

Traballar segundo as instrucións

Primeiro comprobamos cada detalle por separado: LED, tweeter, motores, sensores, etc. Hai unha gran cantidade de exemplos preparados: algúns no entorno de desenvolvemento, outros pódense atopar en Internet. Isto certamente faime feliz. Collemos o código, conectamos a peza, asegurámonos de que funciona, despois comezamos a cambialo para adaptalo á nosa tarefa. O neno fai as conexións segundo o esquema e baixo a miña supervisión. Isto é bo. Tamén ten que ser capaz de traballar estrictamente segundo as instrucións.

Orde do traballo ("de particular a xeral")

Este é un punto difícil. Debes aprender que un gran proxecto ("facer un robot") consiste en pequenas tarefas ("conectar un sensor", "conectar motores"...), e que, á súa vez, consisten en pasos aínda máis pequenos ("buscar un programa", "conectar unha placa". ", "descargar firmware"...). Ao realizar tarefas máis ou menos comprensibles do nivel inferior, "pechamos" as tarefas do nivel medio, e a partir delas fórmase o resultado global. Expliqueino, pero creo que a constatación non chegará pronto. Nalgún lugar, probablemente, pola adolescencia.

Instalación

Perforación, roscas, parafusos, porcas, soldaduras e o cheiro a colofonia: onde estaríamos sen ela? O neno recibiu a habilidade básica "Traballar cun soldador": conseguiu soldar varias conexións (axudei un pouco, non o esconderei). Non esquezas a explicación de seguridade.

Traballo informático

Escribín o programa para o robot, pero aínda así conseguín conseguir algúns resultados favorables.

Primeiro: inglés. Acababan de comezalo na escola, así que esforzábamos por descubrir que eran as transliteracións pishalka, migalka, yarkost e outras. Polo menos nós entendemos isto. Deliberadamente non usei palabras nativas en inglés, xa que aínda non chegamos a este nivel.

Segundo: traballo eficiente. Ensinamos combinacións de teclas rápidas e como realizar rapidamente operacións estándar. Periódicamente, cando estabamos a escribir o programa, o meu fillo e eu intercambiábamos de lugar, e dicíamos o que había que facer (substitución, busca, etc.). Tiven que repetir unha e outra vez: "prema dúas veces en seleccionar", "manteña a tecla Maiús", "manteña Ctrl", etc. O proceso de aprendizaxe aquí non é rápido, pero creo que as habilidades iranse depositando gradualmente "no subcórtex".

Texto ocultoPodes dicir que o anterior é case obvio. Pero, sinceramente, este outono tiven a oportunidade de impartir clases de informática en 9o nun colexio. Iso é horrible. Os estudantes non saben cousas tan básicas como Ctrl + Z, Ctrl + C e Ctrl + V, seleccionar texto mentres preme Maiúsculas ou facer dobre clic nunha palabra, etc. Isto a pesar de que estaban no terceiro curso de informática... Saca a túa propia conclusión.

Terceiro: dixitación táctil. Encargueille os comentarios do código ao neno para que teclee (que practique). Inmediatamente colocamos as mans correctamente para que os nosos dedos lembrasen gradualmente a localización das teclas.

Como vedes, aínda estamos a comezar. Seguiremos mellorando as nosas habilidades e coñecementos; serán útiles na vida.

Por certo, sobre o futuro...

Desenvolvemento posterior

O robot está feito, conduce, pestanexa e pita. Agora qué? Inspirados polo que conseguimos, pensamos perfeccionalo aínda máis. Hai unha idea para facer un mando a distancia, como un rover lunar. Sería interesante, sentado nun mando a distancia, controlar o movemento dun robot que está a conducir por un lugar completamente diferente. Pero esa será unha historia diferente...

E ao final, de feito, os heroes deste artigo (vídeo facendo clic):

Experiencia na creación do primeiro robot en Arduino (robot "cazador")

Спасибо за внимание!

Ligazón de código

Fonte: www.habr.com

Engadir un comentario