- Componentes necessários:
- Módulo de sensor ultrassônico:
- Explicação do circuito:
- Como funciona:
- Explicação de programação:
Os robôs são máquinas que reduzem os esforços humanos em trabalhos pesados, automatizando as tarefas em indústrias, fábricas, hospitais etc. A maioria dos robôs são executados usando alguma unidade de controle ou componentes como um botão de pressão, controle remoto, joystick, PC, gestos e por executar algum comando usando controlador ou processador. Mas hoje estamos aqui com um Robô Automático que se move de forma autônoma sem nenhum evento externo evitando todos os obstáculos em seu caminho, sim estamos falando de Robô Evitando Obstáculos. Neste projeto, utilizamos Raspberry Pi e Motor driver para acionar o robô e sensor ultrassônico para detectar objetos no caminho do Robot.
Anteriormente, cobrimos muitos robôs úteis, você pode encontrá-los em nossa seção de projetos de robótica.
Componentes necessários:
- Raspberry Pi
- Módulo de sensor ultrassônico HC-SR04
- Chassi ROBÔ completo com parafuso
- Motores DC
- L293D IC
- Rodas
- Tábua de pão
- Resistor (1k)
- Capacitor (100nF)
- Fios de conexão
- Fonte de alimentação ou banco de energia
Módulo de sensor ultrassônico:
Um Obstacle Avoider Robot é um robô automatizado e não precisa ser controlado por nenhum controle remoto. Esses tipos de robôs automatizados têm alguns sensores de 'sexto sentido', como detectores de obstáculos, detector de som, detector de calor ou detectores de metal. Aqui, fizemos a detecção de obstáculos usando sinais de ultrassom. Para tanto, utilizamos o Módulo Sensor Ultrassônico.
Sensores ultrassônicos são comumente usados para detectar objetos e determinar a distância do obstáculo do sensor. Esta é uma ótima ferramenta para medir a distância sem nenhum contato físico, como Medição de Nível de Água no tanque, medição de distância, robô evitador de obstáculos etc. Então aqui, detectamos o objeto e medimos a distância usando Sensor Ultrassônico e Raspberry Pi.
O sensor ultrassônico HC-SR04 é usado para medir distâncias na faixa de 2 a 400 cm com uma precisão de 3 mm. O módulo sensor consiste em um transmissor ultrassônico, receptor e circuito de controle. O sensor ultrassônico consiste em dois olhos circulares, dos quais um é usado para transmitir a onda ultrassônica e o outro para recebê-la.
Podemos calcular a distância do objeto com base no tempo que a onda ultrassônica leva para retornar ao sensor. Como o tempo e a velocidade do som são conhecidos, podemos calcular a distância pelas seguintes fórmulas.
- Distância = (Tempo x Velocidade do som no ar (343 m / s)) / 2.
O valor é dividido por dois, pois a onda se move para frente e para trás cobrindo a mesma distância. Assim, o tempo para atingir o obstáculo é apenas metade do tempo total gasto.
Portanto, calculamos a distância (em centímetros) do obstáculo como abaixo:
pulse_start = time.time () while GPIO.input (ECHO) == 1: #Verifique se o ECHO é HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distância = redondo (distância, 2) avgDistance = avgDistance + distância
Onde pulse_duration é o tempo entre o envio e o recebimento do sinal ultrassônico.
Explicação do circuito:
O circuito é muito simples para este robô que evita obstáculos usando Raspberry Pi. Um módulo de sensor ultrassônico, usado para detectar objetos, é conectado aos pinos 17 e 27 do GPIO do Raspberry Pi. Um Motor Driver IC L293D é conectado ao Raspberry Pi 3 para acionar os motores do robô. Os pinos de entrada do driver do motor 2, 7, 10 e 15 são conectados ao pino número 12, 16, 20 e 21 do Raspberry Pi GPIO, respectivamente. Aqui, usamos dois motores CC para acionar o robô em que um motor está conectado aos pinos de saída 3 e 6 do acionador de motor IC e outro motor está conectado aos pinos 11 e 14 do acionador de motor IC.
Como funciona:
Trabalhar com este robô autônomo é muito fácil. Quando o Robô é ligado e começa a funcionar, o Raspberry Pi mede as distâncias dos objetos, na frente dele, usando o Módulo Sensor Ultrassônico e armazena em uma variável. Em seguida, RPi compara este valor com valores predefinidos e toma as decisões adequadas para mover o robô para a esquerda, direita, para frente ou para trás.
Aqui neste projeto, selecionamos a distância de 15 cm para a tomada de qualquer decisão pelo Raspberry Pi. Agora, sempre que o Raspberry Pi fica a menos de 15 cm de distância de qualquer objeto, o Raspberry Pi para o robô, move-o para trás e vira-o para a esquerda ou direita. Agora, antes de movê-lo para frente novamente, Raspberry Pi verifica novamente se algum obstáculo está presente dentro do intervalo de 15 cm de distância, se sim, então novamente repete o processo anterior, senão mova o robô para frente até que detecte qualquer obstáculo ou objeto novamente.
Explicação de programação:
Estamos usando a linguagem Python aqui para o Programa. Antes de codificar, o usuário precisa configurar o Raspberry Pi. Você pode verificar nossos tutoriais anteriores de Introdução ao Raspberry Pi e Instalação e configuração do Raspbian Jessie OS no Pi.
A parte de programação deste projeto desempenha um papel muito importante para realizar todas as operações. Em primeiro lugar, incluímos as bibliotecas necessárias, inicializamos variáveis e definimos pinos para sensor ultrassônico, motor e componentes.
importar RPi.GPIO como GPIO importar tempo #Import time library GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Depois disso, criamos algumas funções def forward (), def back (), def left (), def right () para mover o robô para frente, para trás, para a esquerda ou direita respectivamente e def stop () para parar o robô, verifique as funções no Código fornecido abaixo.
Então, no programa principal, iniciamos o Sensor Ultrassônico e lemos o tempo entre a transmissão e a recepção do sinal e calculamos a distância. Aqui, repetimos este processo 5 vezes para melhor precisão. Já explicamos o processo de cálculo da distância usando o sensor ultrassônico.
i = 0 avgDistance = 0 para i no intervalo (5): GPIO.output (TRIG, False) time.sleep (0,1) GPIO.output (TRIG, True) time.sleep (0,00001) GPIO.output (TRIG, False) enquanto GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () enquanto GPIO.input (ECHO) == 1: #Verifique se o ECHO é HIGH GPIO.output (led, Falso) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
Finalmente, se o Robô encontrar algum obstáculo à sua frente, após nos distanciarmos do obstáculo, nós o programamos para seguir uma rota diferente.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
O código completo para este robô para evitar obstáculos do Raspberry Pi é fornecido abaixo com um vídeo de demonstração.