A experiência de criar o primeiro robô no Arduino (caçador de robôs)

Olá.

Neste artigo, quero descrever o processo de montagem do meu primeiro robô Arduino. O material será útil para outros recém-chegados, como eu, que desejam fazer algum tipo de "transporte autônomo". O artigo é uma descrição das etapas do trabalho com minhas adições em várias nuances. Um link para o código resultante (provavelmente não o mais ideal) é fornecido no final do artigo.



Na medida do possível, envolvi meu filho (8 anos). O que exatamente aconteceu com ele e o que não aconteceu - por isso, destaquei parte do artigo, talvez alguém seja útil.

Descrição geral do robô


Primeiro, algumas palavras sobre o próprio robô ( idéia ). Eu realmente não queria colecionar algo típico no começo. Ao mesmo tempo, o conjunto de componentes era bastante padrão - chassi, motores, sensor ultrassônico, sensor de linha, LEDs, tweeter. A princípio, a partir desse "conjunto de sopas", foi inventado um robô que protege seu território. Ele vai até o intruso, que cruzou a linha do círculo e depois volta ao centro. No entanto, nesta versão, era necessária uma linha traçada, além de matemática extra para permanecer constantemente no círculo.

Portanto, depois de alguma deliberação, 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 (pessoa) próximo. Se uma "vítima" é descoberta, o "caçador" liga um pisca-pisca e uma sirene e começa a andar sobre ele. Quando uma 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 funcionar em uma área aberta.

Como você pode ver, isso é muito parecido com o jogo de recuperação. Embora, no final, o robô não tenha sido rápido o suficiente, mas honestamente interage com as pessoas ao seu redor. As crianças gostam especialmente (às vezes, no entanto, parece que estão prestes a pisotear, o coração já está pulando ...). Eu acho que essa é uma boa solução para popularizar o design técnico.

Estrutura do robô


Então, decidimos a idéia, vamos para o layout . A lista de elementos é formada a partir do que o robô deve ser capaz. Tudo é bastante óbvio aqui, então observe imediatamente a numeração:



"Cérebros" do robô - placa arduino uno (1); estava em um conjunto encomendado da China. Para nossos propósitos, é o suficiente (focamos no número de pinos usados). Do mesmo conjunto, pegamos o chassi acabado (2), no qual estão acopladas duas rodas motrizes (3) e uma traseira (girando livremente) (4). Também no kit havia um compartimento de bateria pronto (5). Na frente do robô, há um sensor ultrassônico (HC-SR04) (6), na parte traseira, um motorista do motor (L298N) (7), no centro, um pisca-pisca de LED (8) e um pouco ao lado é um tweeter (9).

Na fase de construção, olhamos:

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

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

Nuances:

  1. Existem muitos furos de fábrica no chassi do conjunto, mas que lógica há neles - eu ainda não descobri. Os motores e a bateria foram reparados sem problemas, e o “encaixe” começou com a perfuração de novos furos para consertar uma ou outra placa.
  2. As prateleiras de latão e outros elementos de fixação dos depósitos foram bastante resgatados (às vezes eles precisavam sair).
  3. Passei os pneus de cada placa pelos grampos (novamente, encontrei-os nos depósitos). Muito conveniente, todos os fios são bonitos e não saem.

Blocos individuais


Agora vou percorrer os blocos e falar pessoalmente sobre cada um.

Compartimento da bateria

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

Claro, eu tinha alguma cautela, 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 solo (à direita) e o segundo - 5 V (à esquerda).



Motores e motorista

Primeiro, sobre a montagem de motores. A montagem é de fábrica, mas feita com grandes tolerâncias. Em outras palavras, os motores podem "balançar" alguns milímetros à esquerda-direita. Para nossa tarefa, isso não é crítico, mas em algum lugar pode influenciar (o robô começará a se afastar). Só para garantir, eu coloco os motores estritamente paralelos e fixados com cola.



Para controlar os motores, como escrevi acima, o driver L298N é usado. De acordo com a documentação, ele possui três pinos para cada motor: um para alterar a velocidade e um par de pinos para o sentido de rotação. Há um ponto importante. Acontece que, se a tensão de alimentação é de 5 V, o controle de velocidade simplesmente não funciona! Ou seja, ou não torce, ou torce ao máximo. Aqui está esse recurso, pelo qual eu "matei" algumas noites. No final, encontrei uma menção em algum lugar de um dos fóruns.

De um modo geral, eu precisava de uma velocidade de rotação baixa ao girar o robô - para que ele tivesse uma margem de tempo para escanear o espaço. Mas, como nada surgiu dessa idéia, tive que fazer diferente: um pequeno turn-stop-turn-stop, etc. Novamente, não é tão elegante, mas eficiente.

Acrescentarei também que, após cada busca, o robô seleciona uma direção aleatória de uma nova curva (no sentido horário ou anti-horário).

Sensor ultrassônico



Outro pedaço de ferro, onde eu tinha que procurar uma solução de compromisso. Um sensor ultrassônico em obstáculos reais fornece números instáveis. Na verdade, era esperado. Idealmente, ele funciona em competições em que há superfícies lisas, uniformes e perpendiculares, mas se as pernas de alguém "piscarem" na frente dele, será necessário introduzir processamento adicional.

Como tal, defino o filtro mediano para três amostras. Com base em testes em crianças reais (nenhuma criança foi ferida durante os testes!), Acabou sendo suficiente para normalizar os dados. A física aqui é simples: temos sinais refletidos nos objetos necessários (dando a distância necessária) e refletidos em paredes mais distantes, por exemplo. Os segundos são explosões aleatórias em medições da forma 45, 46, 230 , 46, 46, 45, 45, 310 , 46 ... É o filtro mediano que corta.

Após todo o processamento, obtemos a distância para o objeto mais próximo. Se for menor que um determinado valor limite, ligamos o alarme e vamos diretamente para o “intruso”.

Pisca-pisca 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 ferro aqui, então agora vamos ao código .

Programa de gestão


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

A primeira coisa que eu tive que entender: o robô é um dispositivo em tempo real. Mais precisamente, lembre-se, porque antes, e agora eu ainda faço eletrônica. Isso significa que esquecemos imediatamente a chamada delay () , que adoramos usar em esboços de exemplo, e que simplesmente “congela” o programa por um período especificado. Em vez disso, como pessoas experientes aconselham, apresentamos temporizadores para cada bloco. O intervalo necessário passou - eles executaram a ação (aumentaram o brilho do LED, ligaram o motor e assim por diante).

Os temporizadores podem estar interconectados. Assim, por exemplo, o tweeter funciona de forma síncrona com um pisca-pisca. Isso torna o programa um pouco mais fácil.

Naturalmente, dividimos tudo em funções separadas (pisca-pisca, som, rotação, movimento para frente e assim por diante). Se você não fizer isso, não entenderá o que vem ou de onde.

As nuances da pedagogia


Tudo o que foi descrito acima, eu fazia no meu tempo livre à noite. No modo de lazer, passei cerca de três semanas no robô. Isso poderia ter terminado, mas também prometi falar sobre como trabalhar com uma criança. O que é viável nessa idade?

Trabalho em instruções

Primeiro, verificamos cada parte separadamente - LEDs, tweeters, motores, sensores etc. Há um grande número de exemplos prontos - alguns diretamente no ambiente de desenvolvimento, outros podem ser encontrados na Internet. Isso é sem dúvida agradável. Pegamos o código, conectamos a peça, garantimos que funcione, e já estamos começando a mudar para a nossa tarefa. Conexões de acordo com o esquema e sob um pouco de meu controle, a criança se faz. Isso é bom Você deve poder trabalhar claramente de acordo com as instruções.

A ordem do trabalho ("do privado ao geral")

Este é um ponto difícil. É necessário ensinar que um grande projeto ("criar um robô") consiste em pequenas tarefas ("conectar um sensor", "conectar motores" ...) e essas, por sua vez, consistem em etapas ainda menores ("encontrar um programa", " conecte a placa ”,“ baixar firmware ”...). Executando tarefas mais ou menos compreensíveis do nível inferior, "fechamos" as tarefas do nível intermediário, e o resultado geral já é feito delas. Ele explicou, mas acho que a conscientização não virá em breve. Em algum lugar, provavelmente, na adolescência.

Instalação

Perfuração, roscas, parafusos, porcas, solda e o cheiro de resina - onde sem ela. A criança recebeu a habilidade básica "Trabalhar com um ferro de soldar" - consegui soldar várias juntas (ajudei um pouco, não vou me esconder). Não esqueça a explicação de segurança.

Trabalho computador

Eu escrevi um programa para o robô, mas consegui obter algum tipo de resultado associado.

Primeiro: inglês. Ele começou na escola e, por isso, "chiamos", resolvemos o que são pishalka, migalka, yarkost e outras traduções. Entendemos pelo menos isso. Eu deliberadamente não usei minhas palavras nativas em inglês, pois ainda não atingimos esse nível.

Segundo: trabalho efetivo. Eles ensinaram combinações de teclas de atalho como executar rapidamente operações típicas. Periodicamente, quando eles escreviam o programa, trocávamos de lugar com meu filho, e eu dizia o que precisava ser feito (substituição, pesquisa etc.). Eu tive que repetir várias vezes: “clique duas vezes”, “segure Shift”, “segure Ctrl” e assim por diante. O processo de aprendizado aqui não é rápido, mas, penso, as habilidades serão gradualmente deixadas de lado.

Texto oculto
Você pode dizer que o acima exposto é quase óbvio. Mas, honestamente, neste outono, tive a oportunidade de realizar ciência da computação na 9ª série na mesma escola. Isso é horror. Os alunos não sabem coisas básicas como Ctrl + Z, Ctrl + C e Ctrl + V, seleção de texto com a tecla Shift pressionada ou clique duas vezes em uma palavra e muito mais. Isso apesar do fato de estarem no terceiro ano de estudos em ciência da computação ... Faça uma conclusão você mesmo.

Terceiro: toque na digitação. Confiei os comentários no código à criança digitando (deixe-a praticar). Coloque imediatamente as mãos certas para que os dedos se lembrem gradualmente da localização das teclas.

Como você pode ver, ainda estamos apenas começando. Aprimoraremos ainda mais nossas habilidades e conhecimentos e será útil na vida.

By the way, sobre a perspectiva ...

Desenvolvimento adicional


O robô é feito, cavalga, pisca e chia. E agora? Inspirados pelo que foi alcançado, planejamos aperfeiçoá-lo ainda mais. Existe uma idéia para fazer um controle remoto - como um veículo espacial lunar. Seria interessante, sentado em um console condicional, controlar o movimento do robô, que viaja em um lugar completamente diferente. Mas essa será uma história diferente ...

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



Obrigado pela atenção!

Link para o código

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


All Articles