terça-feira, 6 de setembro de 2011

TUTORIAL: Scratch e Arduino (Sensor de Luminosidade)

Resumo: Ler um sensor de Luminosidade (LDR), utilizando o Arduino. Converter o sinal analógico lido em digital, e monitorar a partir de então a variação de luminosidade no ambiente que o sensor se encontra. Tudo isso com Scratch.

  • Componente

Arduino


Figura 1: Arduino

Arduino é uma plataforma de hardware e software abertos que simplifica a criação e prototipagem de projetos de eletrônica.
Uma típica placa Arduino é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao computador, que é usado para programá-la e interagi-la em tempo real.

Neste exemplo, vamos utilizar uma porta analógica do Arduino, haja vista que iremos ler um sensor analógico.O Arduino é dotado de seis portas analógicas, que vão de A0 a A5, figura 01. Com resolução de 10 bits, e faixa de leitura de 0 à 5V. E 14 portas digitais, que vão de 0 a 13, figura 1.


Sensor de Luminosidade


Figura 2: Sensor de Luminosidade


LDR (do inglês Light Dependent Resistor ou em português Resistor Dependente de Luz) é um tipo de resistor cuja resistência varia conforme a intensidade de radiação eletromagnética do espectro visível que incide sobre ele.
Um LDR é um transdutor de entrada (sensor) que converte a luz em valores de resistência. É feito de sulfeto de cádmio (CdS) ou seleneto de cádmio (CdSe). Sua resistência diminui quando a luz é muito alta, e quando a luz é baixa, a resistência no LDR aumenta. Um multímetro pode ser usado para encontrar a resistência na escuridão ou na presença de luz intensa. Estes são os resultados típicos para um LDR padrão:


Escuridão : resistência máxima, geralmente acima de 1M ohms.

Luz muito brilhante : resistência mínima, aproximadamente 100 ohms.


Obs.: Como o LDR não tem uma resposta rápida, variações muito rápidas de luminosidade não são detectadas por ele, por exemplo: raios.

  • SCRATCH


Figura 3: Scratch

O Scratch é uma linguagem de programação desenvolvida pelo MIT, em 2007. Por não exigir o conhecimento prévio de outras linguagens de programação, ela é ideal para pessoas que estão começando a programar e também foi desenvolvida para ajudar pessoas acima de 8 anos no aprendizado de conceitos matemáticos e computacionais. Com ela é possível criar histórias animadas, jogos, programas interativos e agora ate mesmo desenvolver uma interface de interação e controle de funções do Arduino, proporcionando conceitos de robótica e automação.
Scratch é muito mais acessível que outras linguagens de programação, por se utilizar de uma interface gráfica que permite que programas sejam montados como blocos de montar, lembrando as peças de encaixar do brinquedo LEGO.


Montagem

O circuito proposto fará a leitura do sensor analógico, irá converter o sinal em digital no Arduino, de 0-5V (analógico) para 0-1023 (digital), e a partir daí o usuário poderá utilizar esse valor convertido para monitorar a variação de luz no ambiente. E interagir com outros dispositivos, se for desejado.


Figura 4: Circuito montagem LDR + Arduino.


No circuito acima o LDR é excitado pelo próprio Arduino, e o sinal analógico é enviado para porta A0 do Arduino.

Programa no Scratch


Figura 5: Programa no Scratch

Descrição do programa:

Começamos com a instrução “quando (bandeira) clicado”, para iniciar o programa, em seguida com o laço “sempre”, para que o programa fique sempre dentro do bloco executando as tarefas lá contidas. Dentro do bloco sempre adicionamos uma condicional “se / senão”, que fará a comparação do valor lido no sensor de luminosidade, através de uma instrução chamada “value of sensor (Analog1)”, onde estará lendo o sensor ligado a porta analógica 1, associando a isto um comparador “>” (maior), contido na aba “operadores”, podemos realizar a comparação.
Como exemplo, percebi que quando coloco a mão sobre o sensor, o valor lido pelo Arduino chega a ser inferior a “100”, enquanto que exposto a luz ambiente é superior a “700”. Logo na condicional “se / senão”, quando o valor lido é maior que “500” (valor que eu estipulei para comparação) o Scratch exibe uma mensagem “Ta claro...” e senão “Ta escuro...”


Resultados


Figura 6: Montagem do circuito

Após a montagem do circuito, clicamos na (bandeira) do Scratch para iniciar o programa.

Neste momento o sensor esta exposto apenas a luz ambiente, como visto na figura 6, e podemos verificar que o valor lido pelo Arduino é de “708”, logo é maior que “500”, conforme estipulado no programa, então o Scratch exibe a mensagem “Ta claro...”.




Figura 7: Programa no Scratch, funcionando...


Neste momento coloco a mão sobre o sensor, bloqueando a luz que incide sobre ele, portando o valor lido pelo Arduino deverá baixar, haja visto que há pouca luz no sensor.


Figura 8: Montagem do circuito.

De fato, como previsto o valor do sensor diminuiu, fica com "49" quando coberto com minha mão, e o Scratch exibe a mensagem “Ta escuro...” conforme o programa que desenvolvemos.


Figura 9: Programa no Scratch, funcionando...


Obrigado..!!

Duvidas ou sugestões, deixe como comentário ou mande email para (helio.engenharia@gmail.com).

Você pode assistir a esse tutorial em vídeo passo-a-passo no You Tube, link abaixo, ou no site www.engcomper.com (Tutoriais). Divirta-se...






3 comentários:

  1. Eu tentei unir este projeto de sensor de luminosidade com o uso do relé. No entanto, não estou conseguindo. É possível fazer as duas verificações? Tipo, o sensor verifica se a lampada está acesa, se tiver é possível apaga-la, e não acendê-la. É possível ver isto?

    ResponderExcluir
  2. Sim é possível, se for utilizar o Scratch, faça o mesmo esquematico deste tutorial, e no programa na condicional "se/senão" podemos verificar quando tem luz ou não tem, nas posições onde estão as peças: "diga (ta claro)" e "diga (ta escuro)", Então você faz o seguinte: coloca no lugar da peça "diga (ta claro)" a peça "digital (13) OFF", que se encontra na aba "Movimento", certifique-se que o modulo relá esteja ligado no pino 13.
    Lembrando que a descrição acima é para você desligar a lampada quando tiver acesa, porem já partindo da condição em que ela já estivesse ligada. Se precisar da mais informações pode mandar email para (helio.engenharia@gmail.com), se quiser mandar seu código fonte, eu posso analizar para que chegue no resultado que deseja.
    Att.
    Helio

    ResponderExcluir
  3. Olá!
    Qual o resistor utilizado no projeto?

    ResponderExcluir