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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Baixe a versão mais recente do Arduino IDE em Arduino.
- 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
- Clique no menu Ferramentas. e definir a placa para Arduino Nano no menu suspenso.
Tabuleiro de Configuração
- 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
- No mesmo menu de ferramentas, defina o processador para ATmega328P (antigo bootloader).
Processador
- 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.
- Sistema de rastreamento.
- Objetivos de medição de distância.
- Isso pode ser usado em robôs de aspiração automática.
- Isso pode ser usado em bastões para cegos.