Programe no Arduíno – Alerta para gelo na estrada

40 Comentários

Por Filipe Caetano | MagicKey para o PPLWARE
Depois do nosso primeiro artigo sobre Arduino (ver aqui), hoje vamos desenvolver um pequeno programa que avisa se a temperatura está abaixo dos 0 graus Célsius.  Para quem não sabe, o Arduino é uma plataforma extremamente útil para quem quer começar a dar os primeiros passos no mundo da electrónica, mas que ainda não tem grandes conhecimentos nesta área.

Esta ferramenta disponibiliza já diversas placas tendo todas elas como base microcontroladores da Atmel. É ainda disponibilizado um muito útil e intuitivo IDE para que se possam fazer e carregar programas de forma simples e rápida.

arduino_00

O IDE disponibiliza desde logo exemplos que podem ser muito úteis nos primeiros contactos com está ferramenta.

Partindo de um programa exemplo fornecidos no IDE 21 (ver parte de donwload no final do artigo), construiu-se um pequeno programa que avisa que a temperatura está abaixo dos 0 graus Célsius, e que assim poderá haver gelo na estrada.

Após abrir o exemplo apresentado para entradas analógicas (AnalogInput), basta apenas tratar o valor recebido da entrada analógica.

Código do exemplo: Código adaptado:
int sensorPin = A0; // select the input pin for the potentiometerint ledPin = 13; // select the pin for the LED

int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {

// declare the ledPin as an OUTPUT:

pinMode(ledPin, OUTPUT);

}

void loop() {

// read the value from the sensor:

sensorValue = analogRead(sensorPin);

// turn the ledPin on

digitalWrite(ledPin, HIGH);

// stop the program for <sensorValue> milliseconds:

delay(sensorValue);

// turn the ledPin off:

digitalWrite(ledPin, LOW);

// stop the program for for <sensorValue> milliseconds:

delay(sensorValue);

int sensorPin = A0; // select the input sensorint ledPin = 13; // select the pin for the LED or buzer

int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {

// declare the ledPin as an OUTPUT:

pinMode(ledPin, OUTPUT);

}

void loop() {

// read the value from the sensor:

sensorValue = analogRead(sensorPin);

if(sensorValue<75)

{

// turn the ledPin on

digitalWrite(ledPin, HIGH);

}

else if(sensorValue>77)

{

// turn the ledPin off:

digitalWrite(ledPin, LOW);

}

// stop the program 1000 milliseconds:

delay(1000);

}

Podemos então verificar que no código adaptado foi apenas necessário verificar se o valor obtido da entrada analógica é inferior a 75, se sim é porque a temperatura está abaixo de 0 graus logo liga um led para avisar, se pelo contrário o valor obtido for superior a 77 a temperatura já não representa perigo, desliga o led.

O valor 75 surge da calibragem do sensor, ou seja, submeteu-se a montagem a zero graus Célsius e o valor obtido do sensor era de 75.

Utilizando uma placa Arduino Duemilanove (ou Arduino Uno) desenvolveu-se o cenário apresentado na imagem seguinte.

arduino_00

Podemos ver a ligação de um termistor (T) com um dos seus terminais ligados aos 5volts enquanto o outro terminal liga directamente a porta analógica 0.

Se apenas ligarmos o termistor(10KΩ) à porta analógica, este fornece uma tensão constante muito elevada, o que faz com que o valor recebido da porta analógica 0 do Arduino é sempre 1023 (valor máximo da ADC deste microcontrolador). É então necessário ligar uma resistência com um terminal à porta analógica 0 e o outro ao GND, fazendo assim com que haja uma diminuição da tensão de entrada na porta analógica.

A resistência (R) utilizada foi de 1KΩ, no entanto outra poderá ser usada.

O uso de uma resistência diferente faz com que o valor de referência para os 0 graus se altere, desta forma deixara de ser de 75 e será necessário refazer a calibragem.

A indicação de perigo é dada pelo led (L), ou seja quando este está ligado é porque a temperatura se encontra abaixo dos zero graus Célsius havendo assim a possibilidade de formação de gelo na estrada.

Em nome do pplware, quero agradecer a disponibilidade do Filipe Caetano por este excelente artigo. Aproveito ainda para dar mais uma vez os parabéns à equipa do projecto MagicKey, pelo excelente trabalho realizado.

Artigos relacionados

Licença: Freeware
Sistemas Operativos: Windows/MacOS/Linux
Download: [Win] arduino-0021 (85,53MB)
Download: [MacOS] arduino-0021 (73,52MB)
Download: [Linux] (32 bits) 32bits | 64 bits (3,43MB)
Homepage: Arduino
Homepage: Placa Arduino

Partilhar:
Tags:

Comentários

40

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Jago

    Ora aqui está um bom exemplo de uma aplicação com o Arduino, para quem se quer iniciar nestas coisas da electrónica com micro-controladores.
    Esperemos que no futuro apareçam mais artigos como estes para elucidar as pessoas que pensam que a electrónica é um bicho de 7 cabeças.
    Cumprimentos.

  2. Avatar de Carlos
    Carlos

    Gosto sempre de ler os artigos sobre o Arduino. No entano, não seria mais simples usar logo um sensor de precisão de temperatura barato como LM35. Apenas ligando 1 pino a 5V, outro ao GND e outro ao AnalogIn ?? Apenas com uma linha de codigo é possivel saber imediatamente a temperatura em ºC, não sendo necessária calibração como descrita no artigo:
    “O uso de uma resistência diferente faz com que o valor de referência para os 0 graus se altere, desta forma deixara de ser de 75 e será necessário refazer a calibragem.”

    Deixo aqui a dica para os interessados. 🙂

    Bom artigo.

    1. Avatar de JPedrosa
      JPedrosa

      Penso que a ideia aqui é trabalhar sobre a plataforma Arduino e não a melhor forma de o fazer ou a mais simples

      1. Avatar de Carlos
        Carlos

        Era só uma sugestão. Acho que era mais prático só isso.

        1. Avatar de Filipe Caetano
          Filipe Caetano

          Boa tarde,

          na verdade o LM35 é um sensor de temperatura mais fácil de utilizar que o um termistor, no entanto tal como é descrito no post este artigo destina-se a principiantes na electrónica, desta forma parece-me que a utilização dos termistor poderá ajudar na compreensão do funcionamento. Reparem que esta montagem poderá trazer uma maior compreensão do funcionamento das portas analógicas, isto porque mostramos que é necessário adicionar uma resistência para que a porta não fique saturada, enquanto que se usássemos o LM35 apenas o ligaríamos a porta.

    2. Avatar de PauloMalas
      PauloMalas

      Mas como o LM35 fornece um valor para tensoes negativas?

  3. Avatar de wolfytuga

    Olá,
    Muito fixe este artigo 🙂
    Mas posso dar aqui uma sugestão, que é mais uma alternativa ao termistor (que até se devia usar uma ponte de Wheatstone para maior rigor), podia usar-se um sensor de temperatura LM35.

    Cumps!
    _________
    Nota 1: Para quem gosta de reciclar Hardware e tiver uma velha impressora HP Inkjet da série 600 que já não use, pode encontrar um LM35 na placa onde está o interruptor do detector de papel na bandeja. Esta está alojada por detrás da barra metálica por onde circulam os tinteiros.

    Nota 2: Informação sobre o LM35: http://www.national.com/mpf/LM/LM35.html

    Nota 3: Ponte de Wheatstone: http://pt.wikipedia.org/wiki/Ponte_de_Wheatstone

  4. Avatar de Paulo
    Paulo

    Boa tarde,

    sei que se calhar aqui não é o sítio indicado , mas aqui vai. Alguém tenha recentemente adquirido este equipamento? Se sim onde? É que ando a procura de um sítio que seja “de confiança” mas ouço sempre pós e contras e alguns sites que penso que sejam de confiança o produto esta esgotado. Por isso ainda não comprei nenhum.

    Parabéns pela variedade de artigos que aqui são colocados. Penso que não só a qualidade deles mas também a diversidade dos mesmos, leva ao grande número de pessoas por estes lados. Obrigado

    1. Avatar de Filipe Caetano
      Filipe Caetano

      Boa tarde Paulo,

      Em relação a placa utilizada, a Duemilanove deixou de estar no mercado, no entanto poderá adquirir a Uno que é muito semelhante a Duemilanove. O mais importante é ter em atenção ao micro-controlador que esta trará que deve ser o Atemaga 328.

      1. Avatar de Paulo
        Paulo

        Obrigado pela resp 🙂

        Sim eu já tinha visto isso nas minhas pesquisas acerca do assunto. Será que me pode indicar um site onde possa encomendar algum e que seja de confiança?Obrigado mais uma vez e desculpe o incomodo.

        1. Avatar de Filipe Caetano
          Filipe Caetano

          Eu pessoalmente costumo comprar na cooking-hacks, tem apenas um inconveniente, demoram em media uma semana a enviar o equipamento. No entanto apesar de varias compras que já la efectuei nunca tive qualquer problema.

          link: http://www.cooking-hacks.com/

      2. Avatar de MiguelR
        MiguelR

        Continuam no Ebay a $10.

    2. Avatar de O Silva
      O Silva

      Não querendo fazer qualquer tipo de publicidade, http://www.ptrobotics.com, http://www.lusorobotica.com

      1. Avatar de Paulo
        Paulo

        Obrigado pela resposta

        Pois a lusoRobotica já tinha visitado e continua na mesma maneira ou seja indisponível. A outra também já tinha verificado aos uns tempos mas agora vejo que já têm o produto novamente, obrigado pela ajuda.

    3. Avatar de Nimboos
      Nimboos

      Olá Paulo,

      à uns meses comprei o Arduino UNO(http://www.ptrobotics.com/product.php?id_product=324) na PTRobotics (http://www.ptrobotics.com/) e fiquei totalmente satisfeito com o serviço.

      Caso venhas a comprar uma placa destas, lembro que é necessário comprar o cabo USB, que não vem incluído.

      Abraço

      1. Avatar de Paulo
        Paulo

        Pois isso desconhecia 🙂 Muito útil Obrigado.

      2. Avatar de Filipe Caetano
        Filipe Caetano

        O cabo é um simples cabo USB-A to USB-B.

    4. Avatar de Paulo
      Paulo

      Obrigado a todos pela a ajuda já fiz a minha encomenda agora é esperar

    5. Avatar de Jorge Teixeira

      ebay consegues arduino e sensosres muito baratos.. mandei vir o meu com mais 7 sensores e so paguei 35€ ja com os portes.. arduino , sensor de luz, magnetico, pressao, temperatura, interruptor,etc

    6. Avatar de Rui Jorge

      Boas, não sei se já compraste ou se já vou tarde…
      Mas no site oficial do Arduino, http://www.arduino.cc, encontras uma lista de distribuidores. Nessa lista há algumas portuguesas e são todas de confiança.
      Os preços não variam muito de uns sítios para os outros.
      As cópias baratas que encontras no ebay são outra opção, mas cuidado com as alfândegas…Tenta sempre comprar dentro da união europeia.

  5. Avatar de joaodh
    joaodh

    bom post.
    achei bastante interessante realmente e simples para quem nao tem grandes conhecimentos a nivel de electronica. espero que venham a desenvolver mais posts destes temas pois acho muito interessante para quem quer fazer uns projectos porreiros sem muitos conhecimentos

  6. Avatar de STP
    STP

    Interface semelhante ao do Processing.

  7. Avatar de AAA
    AAA

    Boas!

    Será que este tutorial da para fazer um com Breaduino?

    Nao tou muito por dentro do assunto mas qual é a diferença de um Arduino para um Breaduino?

    Cumps

    1. Avatar de Nimboos
      Nimboos

      Olá AAA,

      pelo que percebi, o Breaduino é um kit com os componentes essenciais do Arduino a avulso. E a ideia é montar esses componentes numa placa breadboard (http://pt.wikipedia.org/wiki/Protoboard).

      Torna-se uma alternativa mais económica, para quem já tem uma placa breadboard, e esteja familiarizado com montagens na mesma. Acho que o Breaduino não traz qualquer componente para ligação com o computador. Será assim necessário arranjar forma de efectuar uma ligação via porta série, ou arranjar uma interface serie-USB.

      Como tal, este tutorial é totalmente compatível com o “Breaduino”.

      Mas na minha opinião, para iniciantes, é preferível usar a placa Arduino. Já vem tudo montado e pronto a utilizar.

      Abraço.

      1. Avatar de AAA
        AAA

        Ola Nimboos,

        Obrigado pelo esclarecimento!
        Quanto a ligação de serie com o Breaduino acho que se chama FTDI pode-se usar um cabo CA-42 da Nokia, resta-me saber como carregar o bootloader no ATMEGA e arranjar uma Protoboard.

        São alguns euros que se poupa e acho que desta forma da mais gozo a coisa.

        Cumps

        1. Avatar de Nimboos
          Nimboos

          Olá AAA,

          Se comprares o kit Breaduino, acredito que o bootloader Arduino já venha no ATMEGA. Mas é uma questão de te informares antes da compra.

          Abraço.

  8. Avatar de Nimboos
    Nimboos

    Já agora deixo o link para um documentário recente sobre o Arduino.

    Arduino The Documentary (http://arduino.cc/blog/2011/01/07/arduino-the-documentary-now-online/).

  9. Avatar de Ikari-Pt
    Ikari-Pt

    Não é por nada mas usar um arduino é incrivelmente overkill, pois substituindo o arduino por um transístor, e mantendo o resto (resistências sensor e led), obtém-se o mesmo efeito :p.

    Fora isso, mto bom tutorial pois um arduino serve para mil e uma implementações, dp de bem desenhado, é comprar o microcontrolador apenas e fazer uma board apenas com o necessário.

  10. Avatar de Ricardo Pereira

    Olá,

    Porque não usar termómetros 100% calibrados e fiáveis?

    Afinal de contas com os desvios de tensão de referência do ADC entre outros aspectos sempre se perde fiabilidade.

    Obviamente para este exemplo e para o seu uso penso que tanto um LM35 como um termistor servem.

    No entanto, se querem usar algo fiável, preciso e 100% calibrado recomendo SHT11, SHT21, DS1822 e DS1822-PAR.

    * DS1822 usa 1-Wire protocol.
    * DS1822-PAR A versão PAR no necessita alimentação externa.

    * SHT21 usa I2C, PWM, SDM protocol
    * SHT11 usa algo parecido ao protocolo I2C

    Muito bom para quem quer ir mais longe do que um simples projecto.

    Abraços.

    1. Avatar de Filipe Caetano
      Filipe Caetano

      Boa noite Ricardo,

      Sem duvida que o ideal era usar qualquer um desses sensores que refere da Sensirion, no entanto parece-me totalmente desadequado aos objectivos deste post, e repare por duas razões.
      1º. O objectivo é produzir algo muito simples para quem começar a “mexer” no Arduino.
      2º. Não se pretende saber com exactidão a temperatura, mas sim quando existe a possibilidade de formação de gelo na estrada.

      1. Avatar de Ricardo Pereira

        Ola Filipe,

        “…Obviamente para este exemplo e para o seu uso penso que tanto um LM35 como um termistor servem…”

        Afinal temos a mesma opniao… ¿Ou nao? :oP

        Abraço, Ricardo.

  11. Avatar de Sergio
    Sergio

    Como já aqui foi dito, o objectivo não é a monitorização da temperatura, mas sim aprender a mexer com a plataforma. Até poderia um simples potenciómetro. Isso é irrelevante.

  12. Avatar de Cristiano Alves

    Mais artigos destes e isto fica a verdadeiramente corresponder a todas as minhas necessidades…
    OBRIGADO

  13. Avatar de Telmo Antero
    Telmo Antero

    Ola boa tarde gostaria de saber se posso ligar o arduino a um acelerometro adxl 202 com a finalidade de elaborar um sensor???
    e já agora que tipo de arduino uso para este tipo de acelerometro??
    obrigado
    ´cumprimentos

  14. Avatar de Filipe Caetano
    Filipe Caetano

    Boa Tarde Telmo,

    sim, é possível utilizar o acelerometro que refere com o Arduino, no entanto não é nada fácil sobretudo para um principiante.
    Visto que os dois sinais de saída são ambos feitos através de PWM, é necessário analisar o PWM no Arduino. A forma mais facil de o fazer é criar um Timer com uma frequência de disparo superior em 10 vezes a frequência do PWM vindo do sensor, a cada disparo do timer deve ser incrementada uma variável que deve ser colocada a zero logo quando o sinal de PWM sobe, desta forma quando o sinal de PWM descer teremos o numero de disparos feitos com o sinal de PWM no nível alto que poderá ser relacionado com a aceleração do sensor.

    Cumps.

  15. Avatar de Filipe Caetano
    Filipe Caetano

    Faltou apenas referir que para a utilização deste sensor pode utilizar-se o Arduino Duemilanove ou o Arduino Uno.

    1. Avatar de Telmo Antero
      Telmo Antero

      muito obrigado por a ajuda isto está complicado para o meu lado…obrigadona mesma…
      cumprimentos

  16. Avatar de José Luís
    José Luís

    Obrigado pelo artigo!

    ————————-

    A quem interessar :p

    Arduino Firmata Visual Basic .NET
    http://www.acraigie.com/programming/firmatavb/default.html

    Arduino with Visual Basic
    http://www.codeproject.com/KB/system/ArduinoVB.aspx

  17. Avatar de manuel
    manuel

    que arduino aconselham ?

  18. Avatar de RFilipe
    RFilipe

    É possível através de um programa desenvolvido em c#, utilizar os valores obtidos através do arduíno???

    Obrigado.

    Cumprimentos