RSS

Micro estação meteorológica com arduino

08 nov

Bom ideia partiu de um colega que trabalhou com meteorologia , ele precisava de um sistema
que armazena-se temperatura do tempo durante cada dia e depois de 30 dias ou mais ele
precisava saber o temperatura de cada dia, ele me mostrou o sistema que tinha feito com arduino,
bom pensei por que não fazer igual ? bom de primeira ele me aconselhou usar sensor digital
invés de analógico , usar baterias de lítio etc…

bom não terminei a micro estação meteorológica mas já andei fazendo alguns protótipos
vou ilustrar o que foi feito,olhamos o material

1X – protoboard
1X – 4.7K ohm Resistor
2X – DS18B20 (nosso sensor de temperatura)

vendo como fica na protoboard
sensortemp

Até aqui você deve de gastar uns 20 reais , mais para ficar mais legal vou usar
um display de LCD,não ter que passar os dados via porta serial…

veja meu video

o código

// coded by Cooler_

// vide http://www.arduino.cc/en/Tutorial/LiquidCrystal
#include <LiquidCrystal.h>
/* biblioteca de dallas
   cp -rf OneWire /usr/share/arduino/libraries 
   http://www.arduino.cc/playground/Learning/OneWire   
*/
#include <OneWire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

OneWire  ds(7);  // pin of sensor
void setup(void) {
  lcd.begin(16, 2);
  lcd.print("Coded by Cooler_");
  delay(3050);
  lcd.begin(16, 2);
  lcd.print("irc.freenode.net ");
  lcd.setCursor(0, 1);
  lcd.print("#c-br #reset");
  delay(3050);
  lcd.begin(16, 2);
  lcd.print("Cogumelo Binario");
}

void loop(void) {
  byte i=0,x=0;
  byte type_s;
  byte valores[12],addr[8];
  float celsius;
  
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // inicia a conversão
  delay(1000);     // talvez 750ms  ou ñ

  x = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  while(i < 9) {           // precisamos de 9 bytes
    valores[i] = ds.read();
    i++;
  }

  // coverte var valores para temperatura atual
//escovação de bit padrão para o funcionamento
  unsigned int raw= ( valores[1] << 8 ) | valores [0];
  if(type_s) {
    raw = raw << 3; // 9 bit para esquerda
    if (valores[7] == 0x10) {
      // contador com 12bit
      raw = (raw & 0xFFF0) + 12 - valores[6];
    }
  } else {
    byte cfg=(valores[4] & 0x60);
    if(cfg == 0x00) raw = raw << 3;  // 9 bit res, 93.85 ms
    else if(cfg == 0x20) raw = raw << 2; // 10 bit res, 187.15 ms
    else if(cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // padrão é 12 bit , 750 ms tempo da resolução 
  }
  celsius = (float)raw / 16.0;
//bota o cursor na linha de baixo para mostrar a temperatura
  lcd.setCursor(0, 1);
  lcd.print("temperatura:"); delay(30);
  lcd.print(celsius); lcd.print("-");
  lcd.print("Cogumelo Binario"); lcd.print("-");
}

Código bem simples para algo simples,ideia agora é usar um cartão SD
para gravar os dados e claro quando for guardar na caixa hermética tirar
o display de LCD não tem lógica usar o mesmo já que não queremos mostrar a
temperatura.

vou deixar link que estou estudando para conseguir trabalhar com cartão SD
http://code.google.com/p/sdfatlib/

Anúncios
 
1 comentário

Publicado por em novembro 8, 2011 em arduino, Linguagem C

 

Uma resposta para “Micro estação meteorológica com arduino

  1. eunotuitter

    novembro 8, 2011 at 7:17 pm

    Só posso deixar meu apoio e torcer para que dê certo, pois não sei codar nada riariariaria!
    A idéia é legal!

     

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: