O Carrinho Arduino com Controle Infravermelho é um experimento desenvolvido especialmente para makers que adoram incrementar e aplicar os mais diversos tipos de projetos eletrônicos, trabalhando com diferentes tipos de motores, drives, sensores e formas de controle dos robôs.
Ele é ideal para aplicações em feiras de escolas e universidades, permitindo que os alunos interajam mais facilmente e relacionem as teorias que aprendem com práticas sobre eletrônica e tecnologia, além da integração de diferentes sistemas de comunicação.
Com o uso do sistema de comunicação por infravermelho, o controle remoto vai enviar códigos para o microcontrolador Arduino, que conforme estiver programado reconhecerá cada código enviado de acordo com o botão selecionado, executando o comando para que foi programado (para frente, para trás, direita, esquerda).
O Projeto Carrinho Arduino com Controle Infravermelho tem como objetivo controlar um carrinho através de um controle sem fios juntamente com um Chassi 2WD, uma Ponte H L298N e um Arduino Uno. O controle deverá ter um alcance de aproximadamente 10 metros em linha reta, sem obstáculos, pois o receptor precisa ter visão do controle emissor, já que trabalha com pulsos infravermelhos (radiação de luz não visível para olho humano), os quais se “perdem” ao “colidir” com algum obstáculo.
Produtos Utilizados no Projeto Carrinho Arduino com Controle Infravermelho
- 1 x Controle Remoto Infravermelho;
- 1 x Driver Controlador L298N Ponte H;
- 1 x Arduino UNO R3;
- 4 x Pilhas tipo AA;
- 1 x Bateria 9V;
- 1 x Carrinho Arduino / Carro Robô 2WD 200RPM;
- 1 x Protoboard 830 pontos;
- 1 x Buzzer;
- 1 Kit de Jumpers;
Padrões de Comunicação Infravermelho
O Controle Remoto Infravermelho trabalha com protocolo NEC. O protocolo NEC é um protocolo usado pela maioria dos controles remotos infravermelhos, ele funciona com uma sequencia determinada de pulsos, esses pulsos são decodificados pelo Arduino, o qual nos retorna um valor em binário. Os Pulsos são organizados da seguinte forma:
Montagem do Projeto Carrinho Arduino Infravermelho
A montagem é simples, mas precisa de muita atenção para que todas as conexões sejam feitas correatamente, Primeiro conectaremos os fios da seguinte forma: o terminal positivo do Buzzer será ligado ao pino 8 do Arduino, o terminal negativo do Buzzer será conectado ao GND, o pino de dados (S) será conectado ao pino 11 o terminal do meio é o positivo no 5v do Arduino e o terminal nomeado de “-“ no GND.
O terminal negativo da bateria deve estar conectado ao GND do Arduino e com o terminal negativo das pilhas, o terminal positivo das pilhas é conectado ao Drive de ponte H, o conector positivo da bateria será conectado ao pino “Vin” do Arduino, os motores estão diretamente ligados nas saídas do Drive Ponte H. Os pinos de dados do Drive Ponte H são ligados respectivamente Drive – Arduino: IN1 – 4; IN2 – 5; IN3 – 2; IN4 – 3.
Funcionamento do Código de Programação
O Código por sua vez tem função de ler o código que esta sendo recebido pelo controle, converte-lo, e fazer comparação com as funções de (Ir para frente, para trás, para o lado, para o outro…) e executa-las conforme o código recebido.
O Arduino compara os valores recebidos com os comandos hexadecimais pré-definidos para cada tecla do controle, os códigos para cada botão são os seguintes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Frente: 0xFF629D Atrás: 0xFFA857 Direita: 0xFFC23D Esquerda: 0xFF22DD OK: 0xFF02FD 1: 0xFF6897 2: 0xFF9867 3: 0xFFB04F 4: 0xFF30CF 5: 0xFF18E7 6: 0xFF7A85 7: 0xFF10EF 8: 0xFF38C7 9: 0xFF5AA5 *: 0xFF42BD 0: 0xFF4AB5 #: 0xFF52AD |
Download do Código de Programação
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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
/********************************* ***Autor: Leonardo Dalla Porta**** ***********19/04/2014************* *************Atenção************** ***O Codigo esta livre para uso,** *desde que seja mantida sua fonte* ********e seu autor.************** ********Faça um bom uso*********** ******Att. Equipe UsinaInfo******* *********************************/, #include <IRremote.h> float Codigo; int R1D = 2; int R1E = 3; int R2D = 4; int R2E = 5; int buz = 8; IRrecv irrecv(11); decode_results results; void setup() { pinMode(R1D, OUTPUT); pinMode(R1E, OUTPUT); pinMode(R2D, OUTPUT); pinMode(R2E, OUTPUT); pinMode(buz, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Codigo = (results.value); if (Codigo == 0xFF629D) //Frente { Frente(); } if (Codigo == 0xFFA857) //Atras { Atras(); } if (Codigo == 0xFFC23D) //Direita { Direita(); } if (Codigo == 0xFF22DD) //Esquerda { Esquerda(); } if(Codigo == 0xFF02FD) { Buzina(); } irrecv.resume(); } } void Frente() { digitalWrite(R1D, HIGH); digitalWrite(R2D, HIGH); delay(1000); digitalWrite(R1D, LOW); digitalWrite(R2D, LOW); } void Atras() { digitalWrite(R1E, HIGH); digitalWrite(R2E, HIGH); delay(1000); digitalWrite(R1E, LOW); digitalWrite(R2E, LOW); } void Esquerda() { digitalWrite(R1E, HIGH); digitalWrite(R2D, HIGH); delay(500); digitalWrite(R1E, LOW); digitalWrite(R2D, LOW); } void Direita() { digitalWrite(R1D, HIGH); digitalWrite(R2E, HIGH); delay(500); digitalWrite(R1D, LOW); digitalWrite(R2E, LOW); } void Buzina() { digitalWrite(buz, HIGH); delay(500); digitalWrite(buz, LOW); } |
Conclusão
O desempenho do Carrinho Arduino com Controle Infravermelho ficou ótimo, podendo haver melhorias nas baterias, como no exemplo foi utilizado pilhas AA e uma bateria 9V. Você pode colocar baterias maiores e assim aumentar a velocidade e sua força.
Vale lembrar que se conectarmos a alimentação das pilhas no pino “Vin” diretamente (6v), quando os motores acionarem o Arduino acaba “se perdendo” dentro do seu código, isso acontece pois os motores utilizam uma corrente maior, acarretando assim a queda da tensão da alimentação do Arduino, onde o dispositivo perde sua “lucidez”. Para corrigir o problema, utilizamos uma bateria de 9V.
O Esquema apresentado foi feito com o uso de uma protoboard para facilitar as ligações e apenas fixá-la com todos os demais acessórios diretamente no chassi, no entanto, a conexão pode ser livremente alterada para fixação direta no chassi dos módulos, sem a necessidade de intermediadores, apenas preste atenção para fazer as ligações corretamente.
Autor: Leonardo Dalla Porta
amigo, programei e fiz as ligacoes conforme informado acima. Apareceu carregado no program. Quando aciono o controle pisca no receptor mas ele nao movimenta. Voce saberia informar o que pode ter acontecido.
Coloquei o arquivo teste ir remote. terai que acrescentar algo mais?
Boa Tarde Antonio! Está utilizando o nosso controle infravermelho e seguindo todos os esquemas de ligação do projeto? De alguma maneira pode ser que o Arduino esteja recebendo algum código diferente do programado, teria que tentar utilizar um código de receptor IR para testar o código individual das teclas e se necessário alterar no código. Assim como pode ser problema de alimentação como pilhas fracas ou ligação das mesmas.