Adquira estes componentes na Loja do Lab de Garagem

Olá Garagistas! No tutorial de hoje, mostraremos como utilizar a chave óptica, e como demonstração utilizaremos ela para identificar cartões e liberar acesso, utilizando o serial monitor da Arduino IDE.

 

Materiais Utilizados:

1x Arduino

1x Chave Óptica

1x Resistor 330Ω

1x Protoboard Mini - 170 Pinos

Alguns Jumpers

1. O Funcionamento

Figura 1 - Chave Óptica

Uma chave óptica geralmente é constituída de um emissor (LED Infravermelho) e um receptor (Fototransistor). O dispositivo é montado de forma que entre o Emissor e o Receptor exista uma fenda onde possa ser introduzido algum objeto. A introdução desse objeto nessa fenda, interrompe o feixe de luz, provocando uma mudança do estado lógico da chave óptica de 1 para 0.

As chaves ópticas são rápidas e têm a vantagem de não utilizarem contatos mecânicos, que com o tempo acabam se desgastando, são muito utilizadas na automação como fim de curso, em robótica, e em muitas outras aplicações importantes relacionadas a mecatrônica e opto-eletrônica.

Na imagem abaixo, você pode ver um tipo de aplicação utilizando a chave óptica, como mecanismo de segurança. Nela é utilizado um cartão com uma certa combinação de recortes, para que quando o cartão for introduzido na “fenda” do mecanismo, ele permita fazer algum acionamento como, abrir um portão, um armário, ou simplesmente liberar algum tipo de acesso.

Figura 2 - Exemplo de Aplicação Utilizando-se a Chave Óptica

Em nossa aplicação utilizaremos cartões com recortes retangulares, para que ao passar o cartão pela fenda da chave óptica, a mesma detecte os recortes, deixando a luz infravermelha passar e conte para cada recorte um pulso, e para cada cartão, dependendo da quantidade de recortes atribui-se uma ID.

Imagem 1 - Cartão com 1 recorte (ID 1)

2. A Montagem

3. O Sketch

#define sensor 8 //Define "sensor" com valor 8

int estado=0; //Variável que detecta o estado da chave óptica
int ID=0; //Variável para IDentificar qual cartão passou pelo leitor
int i=0; //Variável para contagem

void setup()
{
  pinMode(sensor,INPUT_PULLUP); //Define o pino digital 8(sensor) como entrada...
                                //...habilitando o resitor de pullup
  Serial.begin(9600); //Inicia a Serial
}

void loop()
{
    while(i<200) //Fica lendo a chave óptica por 200 milissegundo
    {

    estado = digitalRead(sensor); //Lê o pino digital 8(sensor) e guarda o estado na variável estado
    if(estado == 0) //Se o estado da chave ótica for igual a 0(Objeto entre a fenda)
    {
      i=0; //Zera a variável de contagem
      ID = ID+2; //Incrementa +2 na ID
      while(estado == 0) //Enquanto o estado da chave óptica estiver em 0(Objeto entre a fenda)
      {
       estado = digitalRead(sensor); //Lê o estado da chave óptica
      }
    }
    delay(1); //Delay de 1 milissegundo
    i++;  //Incrementa a variável para contagem do tempo
    }

    switch(ID) //Pega a variável ID
    {
     case 4: //Se o valor na variável ID for igual a 4, libera acesso para a ID 4
            Serial.println("Marco Mello"); //Escreve no serial monitor o Usuário dessa ID
            Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem "ACESSO LIBERADO!"
            Serial.println(""); //Pula uma linha
            Serial.println(""); //Pula uma linha
            break; //Sai da comparação
     case 6: //Se o valor na variável ID for igual a 6, libera acesso para a ID 6
            Serial.println("Francisco Lourenco"); //Escreve no serial monitor o Usuário dessa ID
            Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem "ACESSO LIBERADO!"
            Serial.println(""); //Pula uma linha
            Serial.println(""); //Pula uma linha
            break; //Sai da comparação
     case 8: //Se o valor na variável ID for igual a 8, libera acesso para a ID 8
            Serial.println("Usuario 3"); //Escreve no serial monitor o Usuário dessa ID
            Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem "ACESSO LIBERADO!"
            Serial.println(""); //Pula uma linha
            Serial.println(""); //Pula uma linha
            break; //Sai da comparação
     case 10: //Se o valor na variável ID for igual a 10, libera acesso para a ID 10
            Serial.println("Usuario 4"); //Escreve no serial monitor o Usuário dessa ID
            Serial.println("ACESSO LIBERADO!"); //Escreve a mensagem "ACESSO LIBERADO!"
            Serial.println(""); //Pula uma linha
            Serial.println(""); //Pula uma linha
            break; //Sai da comparação
    }

    ID=0; //Zera a variável ID
    i=0; //Zera a variável de contagem(tempo)
}

 

 

Referências:

https://www.sparkfun.com/products/9299

https://www.sparkfun.com/datasheets/Components/GP1A57HRJ00F.pdf

http://arduinobymyself.blogspot.com.br/2012/08/arduino-chave-optica...

 

Exibições: 20270

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Leon Mandrake em 24 janeiro 2016 às 11:39

Primeiramente boa tarde a todos e parabéns pelo trabalho realizado aqui!

Sou iniciante no "Universo Arduino" e ainda estou impressionado com as possibilidades que ele nos propicia. Sou estudante de Engenharia Mecânica e estou me "arriscando" com esse pequeno notável! Rsrsrs

Já encontrei alguns desses sensores à venda prontos para utilizar no Arduino mas, gostaria de saber se é possível utilizar um sensor desses encontrados em impressoras, conforme comentado pelo Hallyson, e utilizá-lo com a mesma precisão que a impressora tem ao movimentar os eixos. Caso afirmativo e se possível, gostaria de alguma orientação.

Eu desmontei 1 das minhas impressoras "velhas" afim de coletar engrenagens e motores que utilizarei em um protótipo e me deparei com essas "belezinhas"! Elas podem ser muito úteis nesse projeto "Frankenstein".

Dês de já agradeço!

Desejo suscesso e muita Luz à Todos!

Comentário de Hallyson Aquino em 17 agosto 2013 às 20:20

 estou com varias chaves dessa , tem muito em  impressoras!!! fica a dica!

Comentário de Eduardo Barrica em 27 junho 2013 às 2:04

Muito boa ideia nessa aplicacao! parabens....

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço