Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Olá

Neste artigo quero descrever o processo de montagem do meu primeiro robô usando Arduino. O material será útil para outros iniciantes como eu, que desejam fazer algum tipo de “carrinho autônomo”. O artigo é uma descrição das etapas de trabalho com meus acréscimos em diversas nuances. Um link para o código final (provavelmente não o mais ideal) é fornecido no final do artigo.

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Sempre que possível, envolvi meu filho (8 anos) na participação. O que exatamente funcionou e o que não funcionou - dediquei parte do artigo a isso, talvez seja útil para alguém.

Descrição geral do robô

Primeiro, algumas palavras sobre o próprio robô (a ideia). Eu realmente não queria montar algo padrão no início. Ao mesmo tempo, o conjunto de componentes era bastante padronizado - chassis, motores, sensor ultrassônico, sensor de linha, LEDs, tweeter. Inicialmente, foi inventado um robô a partir desse “conjunto de sopa” que guarda seu território. Ele dirige em direção ao infrator que cruzou a linha do círculo e depois retorna ao centro. No entanto, esta versão exigia uma linha desenhada, além de matemática extra para permanecer no círculo o tempo todo.

Portanto, depois de pensar um pouco, mudei um pouco a ideia e decidi fazer um robô “caçador”. No início, ele gira em torno de seu eixo, escolhendo um alvo próximo (pessoa). Se a “presa” for detectada, o “caçador” liga as luzes piscantes e a sirene e começa a dirigir em direção a ela. Quando a pessoa se afasta/foge, o robô seleciona um novo alvo e o persegue, e assim por diante. Esse robô não precisa de um círculo limitado e pode trabalhar em áreas abertas.

Como você pode ver, isso se parece muito com um jogo de recuperação. Embora no final o robô não tenha se mostrado rápido o suficiente, ele interage honestamente com as pessoas ao seu redor. As crianças gostam especialmente (às vezes, porém, parece que vão pisoteá-lo, o coração bate mais forte...). Acho que esta é uma boa solução para popularizar o design técnico.

Estrutura do robô

Então, decidimos a ideia, vamos passar para disposição. A lista de elementos é formada a partir do que o robô deve ser capaz de fazer. Tudo aqui é bastante óbvio, então vejamos imediatamente a numeração:

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

O “cérebro” do robô é uma placa arduino uno (1); estava em um conjunto encomendado da China. Para nossos propósitos, é o suficiente (nos concentramos no número de pinos usados). Do mesmo kit retiramos um chassi pronto (2), no qual estão fixadas duas rodas motrizes (3) e uma traseira (girando livremente) (4). O kit também incluía um compartimento de bateria pronto (5). Na frente do robô há um sensor ultrassônico (HC-SR04) (6), na parte traseira há um driver de motor (L298N) (7), no centro há um pisca-pisca LED (8), e um pouco para na lateral há um tweeter (9).

Na fase de layout, olhamos para:

- para que tudo caiba
- estar equilibrado
- ser colocado racionalmente

Os nossos colegas chineses já fizeram isso parcialmente por nós. Assim, o compartimento pesado da bateria é colocado no centro e as rodas motrizes estão localizadas aproximadamente abaixo dele. Todas as outras placas são leves e podem ser colocadas na periferia.

Nuances:

  1. O chassi do kit tem muitos furos de fábrica, mas ainda não descobri qual é a lógica deles. Os motores e a bateria foram fixados sem problemas, então o “ajuste” começou com a perfuração de novos furos para fixar esta ou aquela placa.
  2. As prateleiras de latão e outros fechos das áreas de armazenamento foram de grande ajuda (às vezes tínhamos que retirá-los).
  3. Passei os barramentos de cada placa pelos grampos (novamente, encontrei-os no armazenamento). Muito conveniente, todos os fios ficam bem e não ficam pendurados.

Blocos individuais

Agora eu vou passar blocos e contarei pessoalmente sobre cada um.

compartimento da bateria

É claro que o robô deve ter uma boa fonte de energia. As opções podem variar, escolhi a opção com 4 pilhas AA. No total eles dão aproximadamente 5 V, e essa tensão pode ser aplicada diretamente no pino de 5V da placa arduino (ignorando o estabilizador).

Claro, tive algum cuidado, mas esta solução é bastante viável.

Como a energia é necessária em todos os lugares, por conveniência fiz dois conectores no centro do robô: um “distribui” o terra (à direita) e o segundo - 5 V (à esquerda).

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Motores e motorista

Primeiro, sobre a montagem dos motores. A montagem é feita de fábrica, mas com grandes tolerâncias. Em outras palavras, os motores podem oscilar alguns milímetros para a esquerda e para a direita. Para a nossa tarefa isso não é crítico, mas em alguns lugares pode ter efeito (o robô começará a se mover para o lado). Por precaução, coloquei os motores estritamente paralelos e fixei-os com cola.

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Para controlar os motores, como escrevi acima, é utilizado o driver L298N. Segundo a documentação, possui três pinos para cada motor: um para alteração da velocidade e um par de pinos para o sentido de rotação. Há um ponto importante aqui. Acontece que se a tensão de alimentação for 5 V, o controle de velocidade simplesmente não funciona! Ou seja, ou não gira ou gira ao máximo. Esse é o recurso que me fez “matar” algumas noites. No final, encontrei uma menção em algum lugar de um dos fóruns.

De modo geral, eu precisava de uma velocidade de rotação baixa ao girar o robô - para que ele tivesse tempo de escanear o espaço. Mas, como não surgiu nada dessa ideia, tive que fazer diferente: uma pequena volta - parada - volta - parada, etc. Novamente, não tão elegante, mas viável.

Acrescentarei aqui também que após cada perseguição o robô escolhe uma direção aleatória para uma nova curva (sentido horário ou anti-horário).

Sensor ultrasônico

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Outra peça de hardware onde tivemos que procurar uma solução de compromisso. O sensor ultrassônico produz números instáveis ​​em obstáculos reais. Na verdade, isso era esperado. Idealmente, funciona em competições onde existem superfícies lisas, uniformes e perpendiculares, mas se as pernas de alguém “piscarem” na frente dele, é necessário introduzir um processamento adicional.

Como tal processamento eu defini filtro mediano por três contagens. Com base em testes em crianças reais (nenhuma criança foi prejudicada durante os testes!), revelou-se suficiente para normalizar os dados. A física aqui é simples: temos sinais refletidos de necessário objetos (dando a distância necessária) e refletidos em objetos mais distantes, por exemplo, paredes. Estas últimas são emissões aleatórias em medições da forma 45, 46, 230, 46, 46, 45, 45, 310, 46... São estes que o filtro mediano corta.

Após todo o processamento, obtemos a distância até o objeto mais próximo. Se for inferior a um determinado valor limite, ligamos o alarme e dirigimos direto para o “intruso”.

Flash e sirene

Talvez os elementos mais simples de todos os itens acima. Eles podem ser vistos nas fotos acima. Não há nada para escrever sobre hardware aqui, então agora vamos passar para código.

Programa de controle

Não vejo sentido em descrever detalhadamente o código, quem precisa dele - o link está no final do artigo, tudo é bem legível lá. Mas seria bom explicar a estrutura geral.

A primeira coisa que tivemos que entender foi que um robô é um dispositivo em tempo real. Mais precisamente, para lembrar, porque antes e agora ainda trabalho com eletrônica. Então, esquecemos imediatamente o desafio delay (), que eles adoram usar em esboços de exemplo e que simplesmente “congela” o programa por um determinado período de tempo. Em vez disso, como aconselham pessoas experientes, introduzimos temporizadores para cada bloco. O intervalo necessário passou - a ação foi executada (aumentou o brilho do LED, ligou o motor e assim por diante).

Os temporizadores podem ser interligados. Por exemplo, o tweeter funciona em sincronia com o pisca-pisca. Isso simplifica um pouco o programa.

Naturalmente, dividimos tudo em funções separadas (luzes piscantes, som, giro, avanço e assim por diante). Se você não fizer isso, não será capaz de descobrir o que está vindo de onde e de onde.

Nuances da pedagogia

Fiz tudo o que foi descrito acima em meu tempo livre à noite. De forma tranquila, passei cerca de três semanas no robô. Isso poderia ter terminado aqui, mas também prometi falar sobre como trabalhar com criança. O que pode ser feito nesta idade?

Trabalhe de acordo com as instruções

Primeiro verificamos cada detalhe separadamente - LEDs, tweeter, motores, sensores, etc. Há um grande número de exemplos prontos - alguns no ambiente de desenvolvimento, outros podem ser encontrados na Internet. Isso certamente me deixa feliz. Pegamos o código, conectamos a peça, certificamo-nos de que funciona e então começamos a alterá-lo para se adequar à nossa tarefa. A criança faz as conexões de acordo com o diagrama e sob minha supervisão. Isso é bom. Você também precisa ser capaz de trabalhar estritamente de acordo com as instruções.

Ordem de trabalho (“do particular para o geral”)

Este é um ponto difícil. Você precisa aprender que um grande projeto (“fazer um robô”) consiste em pequenas tarefas (“conectar um sensor”, “conectar motores”...), e estas, por sua vez, consistem em etapas ainda menores (“encontrar um programa,” “conectar uma placa.” ", "baixar firmware"...). Ao realizar tarefas de nível inferior mais ou menos compreensíveis, “fechamos” as tarefas de nível médio, e a partir delas se forma o resultado geral. Expliquei, mas acho que a compreensão não virá logo. Em algum lugar, provavelmente, na adolescência.

Instalação

Perfuração, roscas, parafusos, porcas, solda e cheiro de breu - onde estaríamos sem isso? A criança recebeu a habilidade básica “Trabalhar com ferro de solda” - conseguiu soldar várias conexões (ajudei um pouco, não vou esconder). Não se esqueça da explicação de segurança.

Trabalho de computador

Escrevi o programa para o robô, mas ainda consegui alguns resultados favoráveis.

Primeiro: inglês. Eles tinham acabado de começar na escola, então estávamos lutando para descobrir o que eram pishalka, migalka, yarkost e outras transliterações. Pelo menos nós entendemos isso. Deliberadamente não usei palavras nativas do inglês, pois ainda não atingimos esse nível.

Segundo: trabalho eficiente. Ensinamos combinações de teclas de atalho e como executar operações padrão rapidamente. Periodicamente, enquanto estávamos escrevendo o programa, meu filho e eu trocávamos de lugar e eu dizia o que precisava ser feito (substituição, busca, etc.). Tive que repetir várias vezes: “clique duas vezes em selecionar”, “mantenha pressionada Shift”, “mantenha pressionada Ctrl” e assim por diante. O processo de aprendizagem aqui não é rápido, mas acho que as habilidades serão gradualmente depositadas “no subcórtex”.

Texto ocultoVocê pode dizer que o que foi dito acima é quase óbvio. Mas, honestamente, neste outono tive a oportunidade de ensinar ciência da computação no 9º ano de uma escola. Isso é horrível. Os alunos não sabem coisas básicas como Ctrl + Z, Ctrl + C e Ctrl + V, selecionar texto enquanto segura Shift ou clicar duas vezes em uma palavra e assim por diante. Isso apesar de eles estarem no terceiro ano de estudos de ciência da computação... Tire sua própria conclusão.

Terceiro: digitação por toque. Confiei os comentários do código para a criança digitar (deixe-a praticar). Imediatamente posicionamos nossas mãos corretamente para que nossos dedos se lembrassem gradualmente da localização das teclas.

Como você pode ver, ainda estamos apenas começando. Continuaremos a aprimorar nossas habilidades e conhecimentos; eles serão úteis na vida.

Aliás, sobre o futuro...

Um maior desenvolvimento

O robô é feito, dirige, pisca e emite um sinal sonoro. E agora? Inspirados pelo que alcançamos, planejamos refiná-lo ainda mais. Existe uma ideia de fazer um controle remoto - como um veículo espacial lunar. Seria interessante, sentado diante de um controle remoto, controlar o movimento de um robô que está se deslocando em um local completamente diferente. Mas isso será uma história diferente...

E no final, de fato, os heróis deste artigo (vídeo clicando):

Experiência de criação do primeiro robô em Arduino (robô “caçador”)

Obrigado!

Link do código

Fonte: habr.com

Adicionar um comentário