O Robô Seguidor de Linha é um eficiente projeto baseado em uma plataforma robótica chassi 2WD, um verdadeiro carrinho com 3 rodas, das quais duas são tracionadas e estão localizadas na parte traseira e a terceira conhecida como “roda boba” encontra-se na parte dianteira, auxiliando nas voltas e serem executadas.
A base é constituída em acrílico com 3 mm de espessura, o que proporciona movimentos rápidos e maior resistência a pequenos impactos, além disso apresente suporte para pilhas na parte inferior que pode ser utilizado para alimentação dos motores.
Como microcontrolador foi utilizado um Arduino Mega, mas pode perfeitamente ser construído com um Uno, que na prática vai apresentar os mesmos resultados e possibilidades de integração com sensores e programação, além disso, vai precisar de um driver para controle dos motores e Robô Seguidor de Linha com 4 sondas para a leitura da pista.
Esse tipo de robô tem como finalidade seguir de forma autônoma através de uma pista pré definida, onde a partir de linhas no chão vai fazendo a leitura da luz emita pelas sondas, conseguindo seguir perfeitamente o traçado. Para que funcine é necessário que os traços sejam na cor preta quando o chão for claro, ou branco se o chão for escuro, criando o contraste para o perfeito funcionamento.
Projetos Arduino nesse formato são especialmente utilizados para apresentação em feiras de ciência e competições robóticas em escolas e universidades, possibilitando demonstrar os melhores projetos com a programação mais eficiente quando em pista, permitindo aos alunos maior destaque.
Vídeo Robô Seguidor de Linha
Produtos Utilizados no Projeto:
- Carrinho Arduino / Carro Robô 2WD 200RPM MDF – Kit Chassi;
- Sensor de Linha Infravermelho 4 Sondas;
- Driver Duplo Ponte H de motor DC ou Passo – L9110S;
- Arduino UNO R3;
- Protoboard 830 pontos;
- Jumpers;
- Suporte para Pilhas.
Montagem do Robô Seguidor de Linha
Com todos os itens supramencionados em mãos, daremos início à montagem do projeto. É necessário utilizar algum tipo de bateria, no nosso caso utilizamos o suporte de pilhas que vem acompanhado do carrinho, juntamente com 4 pilhas recarregáveis.
Funcionamento do Código (Biblioteca)
Neste código temos uma lógica um pouco mais complexa devido à necessidade de fazer a leitura dos sensores. Por meio de constantes varreduras e conforme o resultado obtido o sistema acionará o motor da direita ou da esquerda, com a finalidade de seguir a linha demarcada.
Download do Código para Teste
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
// Módulo seguidor de linha; // Código carrinho seguidor de linha. int UT1 = 12; int UT2 = 11; int UT3 = 10; int UT4 = 9; int B1B = 7; int B1A = 6; int A1B = 5; int A1A = 4; int Sensor1 = 0; int Sensor2 = 0; int Sensor3 = 0; int Sensor4 = 0; void setup() { pinMode(UT1, INPUT); pinMode(UT2, INPUT); pinMode(UT3, INPUT); pinMode(UT4, INPUT); pinMode(B1B, OUTPUT); pinMode(B1A, OUTPUT); pinMode(A1B, OUTPUT); pinMode(A1A, OUTPUT); } void loop() { ler(); if(Sensor1==1) { MotorDireita(); } if(Sensor2==1) { MotorDireita(); } if(Sensor3==1) { MotorEsquerda(); } if(Sensor4==1) { MotorEsquerda(); } if((Sensor1==0) && (Sensor2==0) && (Sensor3==0) && (Sensor4==0)) { MotorFrente(); } if((Sensor1==1) && (Sensor2==1) && (Sensor3==1) && (Sensor4==1)) { MotorParar(); delay(1000); } delay(2); } void ler() { Sensor1 = digitalRead(UT1); Sensor2 = digitalRead(UT2); Sensor3 = digitalRead(UT3); Sensor4 = digitalRead(UT4); return; } void MotorDireita() { digitalWrite(B1B, HIGH); digitalWrite(A1A, LOW); digitalWrite(A1B, LOW); digitalWrite(B1A, LOW); delay(5); } void MotorEsquerda() { digitalWrite(A1B, HIGH); digitalWrite(B1A, LOW); digitalWrite(B1B, LOW); digitalWrite(A1A, LOW); delay(5); } void MotorFrente() { digitalWrite(B1A, LOW); digitalWrite(A1A, LOW); analogWrite(A1B, 180); analogWrite(B1B, 180); } void MotorParar() { digitalWrite(A1B, LOW); digitalWrite(B1B, LOW); digitalWrite(B1A, LOW); digitalWrite(A1A, LOW); delay(5); } |
Conclusão
O Robô Seguidor de Linha com Arduino é o projeto ideal para estudantes, hobbystas, desenvolvedores, entre outros. Ele é um kit Chassi muito prático, não exigindo necessidade de adaptações para motores e rodas. O funcionamento dos sensores e do driver foram muito satisfatórios, pois cumpriram exatamente os comandos e funções ordenados. A partir de agora é com você, desperte sua criatividade e construa o que imaginar!
Autor: Leonardo Dalla Porta
Olá. O meu está dando o seguinte erro:
Arduino: 1.6.8 (Windows 7), Placa:”Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”
C:\Users\Gabriel\Documents\Arduino\sketch_jun15a\sketch_jun15a.ino: In function ‘void loop()’:
sketch_jun15a:49: error: ‘amp’ was not declared in this scope
if((Sensor1==0) && (Sensor2==0) && (Sensor3==0) && (Sensor4==0)) {
^
sketch_jun15a:49: error: expected ‘)’ before ‘;’ token
if((Sensor1==0) && (Sensor2==0) && (Sensor3==0) && (Sensor4==0)) {
^
sketch_jun15a:49: error: ‘amp’ was not declared in this scope
if((Sensor1==0) && (Sensor2==0) && (Sensor3==0) && (Sensor4==0)) {
^
sketch_jun15a:49: error: expected ‘;’ before ‘)’ token
if((Sensor1==0) && (Sensor2==0) && (Sensor3==0) && (Sensor4==0)) {
^
sketch_jun15a:52: error: expected ‘)’ before ‘;’ token
if((Sensor1==1) && (Sensor2==1) && (Sensor3==1) && (Sensor4==1)) {
^
sketch_jun15a:52: error: expected ‘;’ before ‘)’ token
if((Sensor1==1) && (Sensor2==1) && (Sensor3==1) && (Sensor4==1)) {
^
exit status 1
‘amp’ was not declared in this scope
Biblioteca inválida encontrada em C:\Users\Gabriel\Documents\Arduino\libraries\examples: C:\Users\Gabriel\Documents\Arduino\libraries\examples
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
Olá Gabriel, nosso código estava com erro, já corrigimos a falha.
Peço que tente novamente.
Qualquer dúvida estamos a disposição.
Equipe Usinainfo
Como faço para no lugar da Ponte h eu usar o motor shield seria a mesma coisa?e se eu adaptar um sensor utrasonico para desviar o obstáculo?poderia mandar o código obrigatório ❤
A adaptação desejada pode ser realizada sem problema, porém vale observar que os pinos podem não ser os mesmos e será necessário, desta forma, uma alteração física e de código para o perfeito funcionamento do projeto.
posso usar outro modelo de ponte H?
Bom dia Carlos!
Sim, outros modelos de Ponte H podem ser utilizados, porém vale ficar de olho nos esquemas de conexão e utilização de cada modelo.
eu posso usar 4 sensores tcrt5000 no lugar desses ai?
Podem sim ser utilizados outros equipamentos infravermelho, porém vale ressaltar que a alteração física do projeto traz consigo a necessidade de uma alteração no software também, como bibliotecas e variáveis específicas.
Boa tarde!! Comprei esse sensor seguidor de linha com 4 sensores, porém não estou conseguindo acertar a calibragem dos 4 ao mesmo tempo. Ou seja, os 4 ligados ou os 4 desligados. Existe algum macete para acertar essa calibragem? Obrigado!!
Olá Roberto, tudo bem?
A calibragem deste sensor comumente dá-se para um ajuste de sensibilidade, quando ao estado de leitura do mesmo, ele vem padronizado já de fábrica
Boa tarde!! Comprei esse sensor seguidor de linha com 4 sensores, porém não estou conseguindo acertar a calibragem dos 4 ao mesmo tempo. Ou seja, os 4 ligados ou os 4 desligados. Existe algum macete para acertar essa calibragem? Obrigado!!
Olá Roberto!
Esta questão não depende apenas de calibragem, o problema pode estar no código ou na ligação dos módulo, verificou isto? Outro problema que pode estar ocorrendo é quanto a distância que os mesmos estão instalados no solo, esta distância é a mesma para os 4 sensores? Verifique através de um celular se os LEDs infravermelhos estão todos em funcionamento e verifique a distância de detecção do seu módulo.
Muito bom o projeto.
Estou elaborando um TCC e gostaria de utilizar esse projeto, porém gostaria de adicionar um sensor ultrassônico para os motores pararem quando se tem um obstáculo.
Poderia me ajudar a desenvolver a programação ? Como incluir isso nessa programação.
Bom Dia Fabio!
Infelizmente não temos um código pronto com esta função, porém as funções e variáveis do sensor ultrassônico podem ser facilmente encontradas no artigo “ALARME COM ARDUINO E SENSOR ULTRASSÔNICO – PROJETO PÁSCOA SEGURA!“, com isto basta adaptar o seu código de forma que se torne compatível com o que deseja.
Oi, o que significa int UT1, UT2 etc?
Boa Tarde Juliana!
As abreviações UT nomeiam os pinos utilizados pelo sensor de linha, ou seja, indica que o item UT1 está conectado no pino 12, o UT2 no pino 11 e assim por diante.
Olá, poderia me dizer o que significan o delay(2) logo após do delay(1000) e o que significan o 180 no comando analogwrite? Se for possivel ficaria bom colocar algumas informacoes sobre o que está have do em cada parte do programa, descarreguei o programa no Arduino e o robo funcionou perfeitamente sem necessidade de mexer no código, agradeço a vocês por compartilhar conhecimento
Boa Tarde Filipe!
Ficamos felizes que o mesmo tenha lhe sido útil, o delay de 2 micro segundos é o tempo estipulado para a execução de um novo comando, já o 1000 segundos é referente ao comendo em específico. Quanto ao analogwrite, o mesmo é referente a variação de sinal analógico.
ali na saida do modulo da ponte H possui 2 cores, poderia me dizer qual delas é o positivo, o verde ou o amarelo ? creio que seja o verde, mas por vias das duvidas é bom perguntar.
Bom Dia Lucas! A saída para motores da Ponte H não possui exatamente uma polaridade, a instalação dos motores DC irá interferir apenas em seu sentido de rotação, cuide apenas para realizar a instalação dos motores de uma maneira igual. Após a ligação, caso seja necessário invertê-los para adequar-se ao seu projeto, pode fazer sem problema.