Como Fazer Obstáculo Evitando Robot Usando Arduino?

O mundo está se movendo rapidamente e a tecnologia também está avançando com ele no campo da robótica. As aplicações da robótica podem ser vistas em todo o mundo. O conceito de robôs móveis ou autônomos que se movem sem qualquer ajuda externa é o campo de pesquisa mais imerso. Existem tantos tipos de robôs móveis, por exemplo, intérpretes de Self Localization and Mapping (SLAM), Line following, Sumo Bots, etc. Um obstáculo para evitar o robô é um deles. Ele usa uma técnica para mudar o caminho se detectar algum obstáculo em seu caminho.



(Cortesia de imagem: resumo do circuito)

Neste projeto, um robô evitando obstáculos baseado em Arduino é projetado, o qual usará um sensor ultrassônico para detectar todos os obstáculos em seu caminho.



Como evitar obstáculos usando sensor ultrassônico?

Como conhecemos o resumo do nosso projeto, vamos dar um passo à frente e reunir algumas informações para iniciar o projeto.



Etapa 1: Coletando os Componentes

A melhor abordagem para iniciar qualquer projeto é fazer uma lista de componentes completos no início e passar por um breve estudo de cada componente. Isso nos ajuda a evitar os transtornos no meio do projeto. Uma lista completa de todos os componentes usados ​​neste projeto é fornecida abaixo.



  • Chassi de roda de carro
  • Bateria

Etapa 2: estudar os componentes

Agora, como temos uma lista completa de todos os componentes, vamos dar um passo à frente e fazer um breve estudo do funcionamento de cada componente.

O Arduino nano é uma placa de microcontrolador amigável à placa de ensaio que é usada para controlar ou realizar diferentes tarefas em um circuito. Nós queimamos um Código C no Arduino Nano para informar à placa do microcontrolador como e quais operações executar. O Arduino Nano tem exatamente a mesma funcionalidade do Arduino Uno, mas em um tamanho bem pequeno. O microcontrolador na placa Arduino Nano é ATmega328p.

Arduino Nano



O L298N é um circuito integrado de alta corrente e alta tensão. É uma ponte dupla completa projetada para aceitar a lógica TTL padrão. Possui duas entradas de habilitação que permitem que o dispositivo opere de forma independente. Dois motores podem ser conectados e operados ao mesmo tempo. A velocidade dos motores é variada através dos pinos PWM. A modulação por largura de pulso (PWM) é uma técnica na qual o fluxo de tensão em qualquer componente eletrônico pode ser controlado. Este módulo possui uma ponte H que é responsável pelo controle do sentido de rotação dos motores invertendo o sentido da corrente. O pino A de habilitação e o pino B de habilitação são usados ​​para alterar a velocidade de ambos os motores. Este módulo pode operar entre 5 e 35V e corrente de pico de até 2A. A entrada Pin1 e Input Pin2 e para o primeiro motor e a entrada Pin3 e Input Pin4 são para o segundo motor.

Motorista L298N

A placa HC-SR04 é um sensor ultrassônico que é usado para determinar a distância entre dois objetos. Ele consiste em um transmissor e um receptor. O transmissor converte o sinal elétrico em um sinal ultrassônico e o receptor converte o sinal ultrassônico de volta para o sinal elétrico. Quando o transmissor envia uma onda ultrassônica, ela reflete após colidir com um determinado objeto. A distância é calculada usando o tempo que o sinal ultrassônico leva para ir do transmissor e voltar para o receptor.

Sensor ultrasônico

Etapa 3: montagem dos componentes

Agora como já sabemos o funcionamento da maioria dos componentes usados, vamos começar a montar todos os componentes e produzir um robô evitando obstáculos.

  1. Pegue os chassis de uma roda de carro e cole uma placa de ensaio em seu topo. Monte o sensor ultrassônico na frente dos chassis e uma tampa da bateria atrás dos chassis.
  2. Fixe a placa Arduino Nano na placa de ensaio e conecte o driver do motor logo atrás da placa de ensaio, nos chassis. Conecte os pinos de habilitação dos motores ao Pin6 e Pin9 do Arduino nano. Os pinos In1, In2, In3 e In4 do módulo do driver do motor são conectados ao pino 2, pino 3, pino 4 e pino 5 do Arduino nano, respectivamente.
  3. Os pinos trigonométricos e echo do sensor ultrassônico são conectados ao pin11 e in10 do Arduino nano, respectivamente. O Vcc e o pino de aterramento do sensor ultrassônico são conectados ao 5V e o aterramento do Arduino Nano.
  4. O módulo controlador do motor é alimentado pela bateria. A placa Arduino Nano obtém energia da porta 5 V do módulo do driver do motor e o sensor ultrassônico obtém energia da placa Arduino nano. o peso e a energia das baterias podem se tornar o fator determinante de seu desempenho.
  5. Certifique-se de que suas conexões sejam as mesmas mostradas abaixo no diagrama de circuito.

    Diagrama de circuito

Etapa 4: Introdução ao Arduino

Se você ainda não está familiarizado com o IDE do Arduino, não se preocupe porque um procedimento passo a passo para configurar e usar o IDE do Arduino com uma placa de microcontrolador é explicado abaixo.

  1. Baixe a versão mais recente do Arduino IDE em Arduino.
  2. Conecte sua placa Arduino Nano ao seu laptop e abra o painel de controle. no painel de controle, clique em Hardware e som . Agora clique em Dispositivos e Impressoras. Aqui, encontre a porta à qual a placa do microcontrolador está conectada. No meu caso é COM14 mas é diferente em computadores diferentes.

    Encontrar o porto

  3. Clique no menu Ferramentas. e definir a placa para Arduino Nano no menu suspenso.

    Tabuleiro de Configuração

  4. No mesmo menu de ferramentas, defina a porta para o número da porta que você observou antes no Dispositivos e Impressoras .

    Porta de configuração

  5. No mesmo menu de ferramentas, defina o processador para ATmega328P (antigo bootloader).

    Processador

  6. Baixe o código anexado abaixo e cole-o em seu Arduino IDE. Clique no Envio botão para gravar o código na placa do microcontrolador.

    Envio

Para baixar o código, Clique aqui.

Etapa 5: Compreendendo o Código

O código é bem comentado e autoexplicativo. Mas ainda assim, é explicado abaixo

1. No início do código, todos os pinos da placa Arduino Nano que estão conectados ao sensor ultrassônico e ao módulo do driver do motor são inicializados. Pin6 e Pin9 são pinos PWM que podem variar o fluxo de tensão para variar a velocidade do robô. Duas variáveis, duração, e distância são inicializados para armazenar dados que posteriormente serão usados ​​para calcular a distância do sensor ultrassônico e o obstáculo.

int enable1pin = 6; // Pinos para o primeiro motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Pinos para o segundo motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Trigger Pin Of Ultrasonic Sesnor const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor long duration; // variáveis ​​para calcular a distância float distance;

2 configuração vazia () é uma função que é usada para definir todos os pinos usados, como ENTRADA e RESULTADO. A taxa de transmissão é definida nesta função. A taxa de transmissão é a velocidade de comunicação pela qual a placa do microcontrolador se comunica com os sensores integrados a ela.

void setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, OUTPUT); pinMode (motor1pin2, OUTPUT); pinMode (motor2pin1, OUTPUT); pinMode (motor2pin2, OUTPUT); }

3 - void loop () é uma função que é executada repetidamente em um ciclo. Nesta função, informamos à placa do microcontrolador como e quais operações realizar. Aqui, primeiro, o pino de disparo é definido para enviar um sinal que será detectado pelo pino de eco. Então, o tempo que o sinal ultrassônico leva para viajar de e para o sensor é calculado e salvo na variável duração. Então, esse tempo é usado em uma fórmula para calcular a distância do obstáculo e do sensor ultrassônico. Em seguida, é aplicada a condição de que se a distância for maior que 5ocm, o robô se moverá para frente em uma linha reta e se a distância for menor que 50cm, o robô fará uma curva acentuada à direita.

loop vazio () {digitalWrite (trigPin, LOW); // Envio e detecção do sinal ultrassônico delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duração = pulseIn (echoPin, HIGH); // Calcular o tempo levado pela onda ultrassônica para refletir a distância de volta = 0,034 * (duração / 2); // Calcular a distância entre o robô e o obstáculo. if (distance> 50) // Avançar se a distância for maior que 50cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } else if (distance<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

Formulários

Então aqui estava o procedimento para fazer um obstáculo evitando o robô. Esse obstáculo evitando a tecnologia pode ser processado em outras aplicações também. Alguns desses aplicativos são os seguintes.

  1. Sistema de rastreamento.
  2. Objetivos de medição de distância.
  3. Isso pode ser usado em robôs de aspiração automática.
  4. Isso pode ser usado em bastões para cegos.