Pequeno Rover
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 2 | ||||
| × | 2 | ||||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
![]() |
| |||
|
Aplicativos e serviços online
![]() |
|
Sobre este projeto
Antecedentes
Meu sobrinho (9 anos) e minha sobrinha (7 anos) enlouqueceram quando viram um vídeo de um robô para evitar obstáculos que eu construí há um tempo.
O tutorial para esse, infelizmente, nunca virá, pois é anterior à morte do meu disco rígido e à descoberta dos benefícios dos backups e DropBox, GitHub etc. :)
Então eu decidi ver se eu poderia inventar algo que fosse ao mesmo tempo (um pouco) educacional e divertido. Simplifiquei meu brinquedo o máximo que pude e criei este pequeno veículo espacial.
O chassi é uma caixa que originalmente continha bastões de caranguejo. Acontece que o tamanho era perfeito. (Obrigado, papai, por mastigar aqueles na caixa cheia:D) Um recipiente de margarina provavelmente também seria do tamanho certo.
Como isenção de responsabilidade, descreverei aqui como construímos esses robôs e deixamos que as crianças fizessem quase todo o trabalho sozinhas. Eu não recomendo, de forma alguma, fazer isso. Cabe a vocês, como pais / responsáveis / tia / tio / babá responsáveis ... determinar se cada criança em questão pode ser confiável para as várias tarefas. Mesmo sem ser realmente necessário, as crianças foram obrigadas a usar óculos de proteção ao trabalhar nos robôs. As caixas que usamos eram feitas de plástico realmente macio, então deixei meu sobrinho e minha sobrinha cortá-las eles próprios depois de uma instrução sobre os perigos de apontar a faca de carpete em sua direção ou em seus próprios membros. Para fazer os orifícios para os LEDs, usamos um pequena chave de fenda elétrica sem fio para limitar os ferimentos potenciais.
Fico feliz em informar que o kit médico que eu tinha em espera ainda não foi usado. :)
Mas, para reiterar, VOCÊ é o adulto!
Circuito
Eu fiz o circuito um pouco mais complicado do que poderia ter conectado os dois servos da maneira que fiz.

Para as crianças ... Eu sempre digo isso, mas as 'crianças' incluíam minha irmã (35 anos) e minha mãe (65 anos), ambas as quais gostaram da tarde de robôs e artesanato tanto quanto crianças reais. :)


Então, para o meu público, imprimi a imagem em uma página A4 tentando manter a escala da placa de ensaio 1:1 com o mundo real e dei a eles todos os fios elétricos da cor e comprimento corretos.
Assim que o circuito estiver montado, basta carregar o programa no Arduino. Incluí comentários no código para ajudá-lo a ajustá-lo um pouco, caso seja necessário. Se tudo estiver conectado corretamente, os servos devem começar a girar e os LEDs piscarão. E se você colocar sua mão na frente do sensor, um servo servo irá parar e o outro girará na outra direção brevemente.
Tudo pronto!
Montagem
É hora de pegar seu 'chassi' e fazer furos nele.
Na frente, marque a posição do seu sensor e corte os orifícios do 'olho'.
Na lateral, meça bem onde você quer que as rodas fiquem e faça um orifício na lateral, na borda da parte inferior da caixa, grande o suficiente para o servo caber, mas pequeno o suficiente para que os suportes de montagem não entrem Através dos.
Usando uma pequena broca, faça 2 pequenos orifícios para os LEDs.
No fundo da caixa, na parte de trás, aparafuse o rodízio (ou cole com cola quente).



Agora você está pronto para colocar tudo na caixa e cola quente no lugar.
Monte as rodas nos servos uma vez que a cola tenha endurecido.
Decore a caixa! (E postar fotos neles! Seria incrível!)

Coloque as baterias e observe o pequeno veículo espacial se mover pela sala aleatoriamente até que as baterias acabem. Ou você se cansa do barulho. Ou o cachorro pega! :D
Código
- LittleRover
LittleRover Arduino
Esta é a versão do código para o sensor ultrassônico de 4 pinos#include/ * Se você tiver um sensor com apenas 3 pinos, retire o comentário da linha 6 e comente a linha 7 * /// int distanceR =A0; // Trigger pinint distance =6; // Trigger pinint pingDelay =10; // comprimento do pulso do sensorint ultrassônico distanceR =A0; // Echo pinint led1 =8, led2 =9; // LEDsServo leftPower; Servo rightPower; unsigned long flashTime; unsigned long nextSensorTime; float obstacleDist =0.0f; void setup () {//Serial.begin(115200); leftPower.attach (3); rightPower.attach (5); leftPower.write (90); rightPower.write (90); pinMode (led1, OUTPUT); pinMode (led2, OUTPUT); atraso (1000);} loop vazio () {LEDs (); / * Isso evita que o sensor esgote a bateria muito rapidamente, limitando as verificações a 5 vezes por segundo. Você pode aumentar este número para verificar com menos frequência, mas ele pode bater na parede ... * / if (millis () - nextSensorTime> 200) {nextSensorTime =millis (); / * Eu faço 2 leituras aqui porque às vezes o sensor fica confuso e não retorna nada ... * / float reading1 =TakeReading (); atraso (100); float reading2 =TakeReading (); Serial.println (leitura1); Serial.println (leitura2); // Então pegamos a maior distância para obstacleDist obstacleDist =reading1> =reading2? lendo1:lendo2; // Se a distância for menor que 10cm, vire, caso contrário, dirija em linha reta. if (obstacleDist <10.0f) {//Serial.println("turn "); vez(); } else {//Serial.println("forward "); frente(); }}} void LEDs () {if (millis () - flashTime> 1000) flashTime =millis (); if (millis () - flashTime <500) {digitalWrite (led1, LOW); digitalWrite (led2, HIGH); } else if (millis () - flashTime> 500) {digitalWrite (led1, HIGH); digitalWrite (led2, LOW); }} void forward () {/ * Se você descobrir que seu robô está indo para trás, troque o 135 e o 45. * / leftPower.write (135); rightPower.write (45);} void turn () {/ * Se você quiser que seu robô vire para o outro lado, remova as linhas 92-93 abaixo e comente 95-96 * / //leftPower.write(90); //rightPower.write(135); leftPower.write (45); rightPower.write (90); atraso (350);} float TakeReading () {eco longo sem sinal =0; resultado flutuante =0,0f; pinMode (distância, SAÍDA); digitalWrite (distância, BAIXO); atrasoMicrosegundos (2); digitalWrite (distância, ALTO); delayMicroseconds (pingDelay); digitalWrite (distância, BAIXO); pinMode (distanceR, INPUT); digitalWrite (distanceR, HIGH); eco =pulseIn (distanceR, HIGH, 38000); resultado =eco / 58.138; resultado de retorno;}
Esquemas
littlerover_87IypZOgwm.fzzProcesso de manufatura