Sleep Analyzer – O Projecto

Dec 22
2010

Ja esta ai ao lado o projecto “finalizado” mas com alguns pormenores ainda a resolver..

Como sempre sugestoes e ideias sao excelentemente bem vindas.

Mais uma vez quero agradecer a Faneca pelo excelente logotipo que me fez para este projecto.

SleepAnalyzer

ps: depois falo mais, mas agora tenho que ir para um almoço de natal 😉

Feliz Natal

Dec 19
2010

Sao os votos do JAPAB para todos. 🙂

E como nao podia deixar de ser, os votos de feliz natal tinham que ser via Arduino 😉

Mais uma vez tenho que agradecer à Faneca por me ter feito esta excelente montagem.

Xbee – Teste de alcance!

Dec 18
2010

Como ja tinha combinado com a Faneca, hoje era dia de fazer o teste de alcance dos arduinos com xbee. Mas para isso era necessario que um dos arduinos fosse autonomo, ou seja, battery operated. Por isso mais umas comprinhas eram indispensaveis, aproveitei que tive que sair de casa de manha e passei na loja de electronica da “Esquina” e comprei uma bateria de 9V, o conector, e um conector para o arduino, que nao era do tamanho certo, bolas…mas por sorte tinha ca em casa ja antigo um connector com o tamanho perfeito. Mas enfim isso é para outro post.

Vamos ao teste, fiz dois pequenos codigos para colocar em cada arduino, um que fazia print para a serial port de 5 em 5 segundos de um numero e ia incrementando ate 10000, calculei que nao ia precisar de mais. e realmente tinha razão. E no outro, ou seja o que estava em casa tinha apenas um serial read que ia mostrando os tais numeros.

O teste era simples, saia de casa com o GPS, a levava um radio Motorola Talkabout e ela ficava com o outro e assim que comecassem a aparecer numeros no ecrá era porque estava tudo a funcionar, quando deixassem de aparecer, era porque ja nao tinha sinal, simples nao? e desta vez correu bem… até porque isto era realmente um teste muito profissional. 😉

O primeiro sitio para onde virei o carro perdeu logo sinal ao fim de 21.5 Mts, como podem ver na imagem abaixo neste post.

Antes de continuar convem mencionar que a Faneca estava em casa e eu andava na rua, ou seja temos que ter em consideração as paredes que por acaso sao muito boas, ou seja usando outro exemplo que nao tem nada a ver, eu em casa tenho que ter dois routers wifi, porque o do 1º andar nao tem sinal no R/C. Voltando ao teste, virei a curva e tinha alem da minha casa ainda mais uma casa pelo meio, por isso até nao achei nada mal.

Decidi ir pelo outro lado e realmente é como eles dizem em linha de visao o sinal é muito maior, ou seja, quando estava nos intervalos de casas, podendo ter uma linha recta ate a minha conseguia ter sinal, assim que metia mais uma casa pumba, la se ia o sinal. Ainda tinha mais por onde ir em linha de visao, mas como estava de carro nao dava muito jeito…Mesmo assim consegui uns 72.6Mts. Se amanha ou num destes dias estiver bom tempo, impõe-se um teste num descampado 🙂

Para ja o que posso dizer é que estou bastante satisfeito, porque um dos projectos que tenho para os Xbee, nunca ira ser necessario mais de 100 mts em linha de visao, por isso é perfeito.

 

 

A imagem consegui fazendo no Google Earth, mas os waypoints foram importados de um GPS, por isso “estão” correctos!

Isto nao é um teste profissional e em condiçoes perfeitas, foi apenas para poder ter uma ideia de ate onde posso ir, alem disso pode-se sempre usar outras antenas e afins para aumentar o alcance do respectivo Xbee, podem ver mais no site o SpaceBits onde eles conseguiram alcances, senao estou em erro ate 60KM’s em linha de visão.

Por isso divirtam-se e façam prai testes e mandem os resultados aqui po estaminé…

NOTA: Na realidade podia ter verificado se os dois xbee’s estava a comunicar olhando para as luzes do shield, esta la uma que diz se o xbee esta sincronizado com o COORDINATOR, mas nao tinha a mesma piada 😉

E mais novas peças!

Dec 18
2010

Eu sei, eu sei, isto ja começa a ser repetitivo, os posts de novas peças, mas ei o que querem que faça?! isto é um vicio, e novos projectos nao param de me surgir na cabeça…

Mas desta vez é so uma, bem so uma alem do Xbee USB Explorer que tive que comprar para poder configurar os Xbee’s.

É um Triple Axis Accelerometer Breakout – MMA7260Q que me vai permitir partir para mais dois projectos em paralelo, e em paralelo, porque as finanças não dão para tudo.

Um dos projectos é à noite, e apenas durante uma semana para curiosidade e o outro ainda não esta a 100%, falo do projecto TerraSentes que foi um dos projectos em que participei no Codebits 2010 e que nos valeu um prémio nos dez primeiros.

Sobre o projecto nocturno, podem ver na pagina dos Projectos, apesar de ainda não ter começado nada, mas ja la está o nome.

Mais uma vez todas estas peças foram compradas na Inmotion.pt e mais uma vez tenho que agradecer ao Filipe Valpereiro a rapidez com que ele envia as encomendas.

E ja agora, tenho a impressão que depois do Natal, ainda vai haver um post sobre novas peças, porque acho que o Sr das Barbas Brancas, aka Pai Natal, me vai mandar pela chaminé, trazido pelo seu treno controlado por arduinos, mais umas peças para eu brincar 😉

Xbee as aventuras.

Dec 18
2010

Como ja tinha dito num post anterior, aqui ficam as minhas aventuras e desaventuras com os Xbee’s Pro 2.5…

Tudo indicava que nao ia ser dificil, mas como tudo o que ja tenho feito com arduinos, acabou por ter alguma dificuldade, nada de grave, mas mesmo assim deu trabalho.

Um dos principais problemas com os novos xbee’s que nao acontecia com os antigos, é que antes de se usar tem mesmo que se fazer algumas alterações, ou seja tem que se configurar um como ZNET COORDINATOR 2.5 AT e o outro como ZNET 2.5 ROUTER/END DEVICE AT, e apesar de podermos ter um enorme numero de xbees em rede, tem sempre que haver um COORDINATOR.

Mas ainda antes disto tudo, temos que arranjar maneira de configurar os mesmos, e para isso precisamos de um software muito importante que é o X-CTU, que é um software gratuito, mas que tem o enorme inconveniente de so funcionar em windows…tambem podem usar em wine, li de casos de quem tenha instalado VirtualBox no macOS e depois tenha instalado Linux e corrido o x-ctu com Wine…ora que grande volta que foram dar, mas hei, como eu costumo dizer, “Funciona!!” e isso é o que interessa. Eu no meu caso usei com Windows em VirtualBox.

Abrindo o X-CTU aparecia o meu primeiro problema, que era nao conseguir fazer update de firmwares e softwares que ficam guardados no X-CTU para upgrade respectivo do xbee que cada um tiver. É ainda importante sacar os drivers para FTDI que estao tambem na pagina que mencionei acima do X-CTU porque o windows por qualquer motivo nao reconhecer a emulaçao de serial port que a Xbee USB Explorer faz.

Tendo isto tudo instalado vamos entao proceder a cofiguraçao do Xbee.

Coloca-se o primeiro xbee e faz-se o Test/Query apenas para verificarmos que modelo de xbee temos e se a comunicação entre os dois devices esta a correr bem. ATENÇÃO ao BaudRate que tem que estar a 9600. Em seguida vamos ao tab Modem Configuration e fazemos Read, se tudo correr bem ele deverá logo reconhecer o xbee que temos e dar-nos a informaçao toda que temos sobre o xbee. Caso nao dê que foi o meu caso, podem tentar fazer o que esta neste link – Aqui, na realidade isto nao acontece ser fizerem os updates todos que era algo que eu ainda nao tinha feito porque a rede do meu virtualbox estava mal configurada. Mas testem e depois digam qualquer coisa.

Enfim agora que ja temos os xbees a comunicar com o X-CTU vamos a configuraçao:

  • 1º XBEE
  1. ZNET COORDINATOR 2.5 AT
  2. PAN ID: (aqui podem colocar o que quiserem, desde que os outros xbees na rede tenham o mesmo numero)
  3. BD: (aqui podem mudar, mas nao metam mais de 57600) eu no meu caso deixei os 9600, torna-se mais simples.
  • 2º XBEE
  1. ZNET 2.5 ROUTER/END DEVICE AT
  2. PAN ID: (aqui podem colocar o que quiserem, desde que os outros xbees na rede tenham o mesmo numero)
  3. BD: (aqui podem mudar, mas nao metam mais de 57600) eu no meu caso deixei os 9600, torna-se mais simples.

No final de cada xbee é so escolher na drop down que diz Version e escolher a mais recente e fazer write. Atençao que o firware do COORDINATOR é diferente da do ROUTER/END device, nao se assustem, é mesmo assim.

Existem muitos outros parametros que podem mudar entretanto, mas eu tinha feito isso e depois nada funcionava, por isso para este primeiro teste aconselho a não mudarem mais nada, se depois tiverem tudo a funcionar, vão alterando e descobrindo, e claro mandem vir informaçao ;).

Apos isto tudo feito é so seguirem este Tutorial do Arduino Xbee e em principio tudo estará a funcionar. Simples nao? Pois agora que ja passei um dia inteiro a ler e a procurar ja acho simples, mas confesso que nao foi assim tão facil de inicio.

Aproveito tambem para reforçar como ja tinha dito no outro post que as minhas configurações, foram feitas usando um XBee Explorer USB, porque os meus arduinos sao UNO, mas quem tiver outros pode fazer, mediante um pequeno truque, a configuraçao utilizando o arduino.

Todas estas configurações podem ser feitas por AT comands, eu nao os fiz, mas nos links que anexo mostram como fazer, uma vez que nao usei, prefiro nao falar muito nisso. Isto caso nao queriam ter trabalho com o X-CTU é a soluçao ideal, mas tem a desvantagem que nao da para fazer upgrades de firmware.

Ficam aqui os links de onde tirei a informação:

XBeeTM ZNet 2.5/XBee-PROTM ZNet 2.5 OEM RF Modules

Xbee-Setup.pdf

Sacar Firmware caso nao consigam fazer update do X-CTU

Mais alguma info

Como sempre, eu andei a pesca e correu bem, mas se tiverem algum azar com o vosso xbee, nao me posso responsabilizar, porque como sempre eu digo, EU nao percebo nada disto 😉

Save My Plant

Dec 16
2010

Ora ai está…

Brevemente…toda a informção sobre um dos meus projectos.

Inicialmente o nome deste projecto era para ser “Save a Plant…By Twitter” mas apos conversa com a Faneca chegamos a conclusão que assim ficava melhor.

O logotipo é da autoria da minha Faneca!

Fiquem atentos, nos proximos dias irá sair toda a info de como fiz, o que li, o que ainda nao fiz e o que gostava de fazer, mas nao tenho orçamento 😉

Programar o Xbee usando o Arduino

Dec 14
2010

Em primeiro lugar, se tiverem um Arduino que nao seja o UNO, escusam de ler o resto do post porque isto so acontece, aparentemente com o Arduino UNO.

Entao, queriam programar o Xbee com o X-CTU usando o ARduino UNO? Pois bem a resposta é:

NAO É POSSIVEL!!

Ou pele menos eu nao consegui. Fiz todos os testes e mais alguns, li resmas e resmas de paginas e nada, inclusive estive em conferencia com o Filipe Valpereiro da Inmotion.pt ontem a tentarmos tudo…ate que encontrei uma que me disse realmente o que precisava de saber e isto apos ter lido a documentaçao de como instalar o X-CTU e algo muito importante, que podem ou nao ter que instalar, que são os Drivers de FTDI.

À, já agora, convém mencionar também que o X-CTU infelizmente ainda só funciona em Windows, por isso se como eu usarem mac ou linux, terão que recorrer a outra maquina ou então a um VirtualBox, Wine ou VMware.

Voltando à NÃO programaçao com o Arduino Uno.

Bem, para resumir, a instalação não é possivel por que o arduino uno não tem o chip ftdi, como podem ver neste link para um forum que encontrei aqui. Ora, se não tem esse chip entao não pode ser usado como “serial port” para o Xbee shield. Simples nao? bahhhh que gaita… isto obriga-me a ter que adquirir um XBee Explorer USB, ate porque os Xbee’s Pro 2.5 nao veem configurados de fábrica prontos a usar.

Por isso amigos, se estavam a pensar poupar 20 euritos, ja foram…tem mesmo que ser! A nao ser que… sim é verdade quem tiver ai para casa perdido um Arduino Duemilanove, podem usar estes mesmo para programar os xbee’s usando o X-CTU. Quem me manda a mim querer o topo de gama, bah!

Podem ver Aqui como o fazer, seus sortudos…

Boa sorte, e ja agora se descobrirem uma maneira de usar o X-CTU com o Arduino Uno avisem, porque há muita gente a precisar de o fazer… 20 euros sempre são 20 euros pa…a crise anda aí 😉

Peças novas e a sua soldadura!

Dec 14
2010

Ora bem…

Chegaram na segunda feira, depois de umas atribuladas voltas a procura da estaçao de correios certa, os meus XBee Pro 50mW Series 2.5 Wire Antenna e as respectivas Arduino Stackable Header – 6 Pin e as Arduino Stackable Header – 8 Pin!

Nao vou para ja fazer uma revisao sobre isto porque ainda nao as consegui usar devidamente…afinal falta-me algo, para poder programar os XBee…

Num post mais a frente, falarei sobre os Xbee. ja agora a peça é um XBee Explorer USB.

Bem, mas antes de poder usar os xbee’s e as respectivas shield’s que ja tinha falado num post anterior, avizinhava-se uma longa noite de soldadura porque são qualquer coisa como 64 soldaduras nas duas placas para ter os terminais soldados.

Depois de muitos videos youtube, la vi como é que “teoricamente” se soldava e meti mãos a obra… o resultado foi melhor do que o que estava a espera, passados 30 minutos ja tinha a primeira placa toda soldada, e mais ou menos 1 hora depois tinha as placas ligadas nos arduinos com umas belas soldaduras…

Um Howto muito importante que eu vi esta no site da sparkfun.com e explica como fazer o assembling destes shields. Vejam o GPS Shield Assembly Guide, apesar de ser para o GPS Shield, o principio é o mesmo.

E como nao podia deixar de ser, aproveitei quando fui soldar o segundo shield para fazer um pequeno timelapse…

Divirtam-se:

Mais para a frente ja vou colocar um post sobre a programação e a parte de realmente usar o xbee para comunicar entre dois arduinos.

Como sempre, eu não percebo nada disto, por isso não me responsabilizo por coisas que possam danificar o vosso material, mas ei, eu também estou a aprender 😉

Ethernet Shield – Problemas

Dec 10
2010

Logo a seguir a ter escrito o post anterior Temperatura+Arduino+Mysql=RDDTool deparei-me com o LED do meu arduino, que ate à cinco minutos estava a actualizar perfeitamente, completamente acesso e os logs do webservice parados…Mas o que poderia estar a correr mal uma vez que o sketch que estava a usar ainda ontem funcionava sem problemas. La me decidi a ir ao google uma vez que isto ja me tinha acontecido algo parecido mas nunca pensei que fosse realmente da parte do hardware e não do software, aka código feito por mim.

E relamente encontrei logo nas primeiras pesquisas um forum onde alguem se queixava do mesmo problema e assim que removia o micro-SD card da slot que começava tudo a funcionar sem problemas…e não é que aconteceu mesmo isso? Assim que removi o cartão o shield começou imediatamente a funcionar sem qualquer problemas e ja esta assim a cerca de 2 horas.

Entretanto ja tentei meter novamente o cartao e pumba, voltou a crashar, nao sei se crashar será bem o termo correcto, será se calhar preferivel chamar-lhe “freezar” porque é o que faz, assim que removo o cartao começa novamente a funcionar sem problemas. Já mandei alguns mails e estou a espera de respostas. A parte mais estranha é que nem sequer estou a usar as libs para o cartão, a sdFatLib.

Por isso, para quem tem a nova EthernetShield com SD card, cuidado se por acaso de repente aquilo ficar “freezado”, testem sempre remover o cartão, para confirmar se é do cu ou das calças

Boa sorte…

Ja agora se alguém tiver uma solução para isto, por favor digam-me qualquer coisa. Como sempre a gerência agradece.

Temperatura+Arduino+Mysql=RDDTool

Dec 10
2010

Epa…tanta coisa num so titulo… a realidade é que é mesmo tudo isso que tenho andado a montar nos últimos dias. Isto porque temporariamente tive que, devido a falta de peças, abandonar o projecto Good Morning Dave, e focar-me mais no projecto “Save a Plant…by Twitter”.

Para aqueles que me seguem no twitter, ja perceberem que o arduino ja esta a mandar tweets com alguns bitaques, nomeadamente, as horas e a temperatura da sala, por isso ja posso dizer que a primeira parte do projecto “Save a Plant…by Twitter” estava feita, ou seja a parte do Twitter.

Por isso a segunda parte da ideia era de colocar os dados dos varios sensores numa base de dados para poder com esses dados gerar uns graficos todos bonitos, e poder fazer umas estatisticas caso seja necessario. Nao sou fã de estatisticas, mas ei, porque nao prevenir ja.

Mais uma vez, tudo parecia facil, era so montar um Webclient no Arduino e invocar um php ou um cgi que fazia a parte da inserção dos dados na BD(mysql)…mais uma vez erradoooo….

Eu em casa, por motivos de poupança de electricidade não tenho nada de servidores ligados, e isto porque um dia recebi um acerto da EDP de 370€ de luz e achei que estava na altura de NÃO ter servidores em casa, por isso surgia aqui o primeiro problema, que era onde é que vou por uma BD de mysql  e correr os scripts. Bem, a hipótese mais simples era usar este mesmo site, uma vez que tem tudo o que preciso, posso correr scripts, tenho BD!

Surgia aqui o meu segundo problema…DNS, por isso rapidamente abandonei a ideia de usar este estaminé. Num outro post falarei de porque abandonei o DNS.

Bem..tem que ser, vamos instalar um linux ca por casa com Mysql+Php+Perl+Apache+RDDTool+alltherest.

Esta foi a parte facil, demorou cerca de 1 hora e pumba tinha o servidor pronto, agora era so começar a inserir os dados na BD.

Para quem nunca usou o arduino para inserir dados extraidos de um sensor numa base de dados, o melhor é começar por fazer um webclient usando um dos exemplos e depois esquecer tudo aquilo que viu..wait!!?! say what!?!? pois isso mesmo, é que um dos maiores problemas que tenho tido com os exemplos é que sao quase sempre apontados para coisas com a Serial Port e eu quero mesmo é coisas que nao usem a Serial Port mas sim variaveis and stuff..

Depois de muito pesquisar e muito bater com a cabeça eis o codigo que usei para retirar os dados do sensor de temperatura que ja falei anteriormente e inserir na BD.

#include 
#include 
#include 
#include 
 
byte mac[] = { 0xDE, 0xDE, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 177 };
byte server[] = { 192, 168, 2, 70 }; // DB
 
Client client(server, 80);
 
// Time Settings
byte SNTP_server_IP[]    = { 81, 92, 212, 46 }; // 3.pt.pool.ntp.org
time_t prevDisplay = 0; // when the digital clock was displayed
const  long timeZoneOffset = 0L; // set this to the offset in seconds to your local time;
 
// Temperature
int analoginput=0;
int value=0;
int R1=1000;
int Vin=5;
float tmp=0.0;
float Vout=0.0;
float f=0.0;
int lastTempReport = 0;
int currentTempReport = 0;
 
// Clock
int hora, minutos, ano, mes, dia;
 
int ID=69; //sensor ID
 
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
 
   //Clock Begin
  Serial.println("waiting for sync");
  setSyncProvider(getNtpTime);
  while(timeStatus()== timeNotSet)
    ; // wait until the time is set by the sync provider
 
}
 
void loop()
{
      addDB();
}
 
void addDB() {
 temperatura();
  int currentHumReport=10;
  Serial.print("CurrentHumReport");
  Serial.println(currentHumReport);
  delay(1000);
   char date[144] ="";
   char horas[144] ="";
   ano=(year());
   mes=(month());
   dia=(day());
   hora=(hour());
   minutos=(minute());
 
   sprintf(date, "%.2d-%.2d-%.2d", ano, mes, dia);
   sprintf(horas, "%.2d:%.2d", hora, minutos);
  if (client.connect()) {
    Serial.println("connected");
    delay(1000);
    client.print("GET /cgi-bin/sensor/inserir.cgi?date=");
        Serial.print("GET /cgi-bin/sensor/inserir.cgi?date=");
    client.print(date);
        Serial.print(date);
    client.print("&time=");
        Serial.print("&time=");
    client.print(horas);
        Serial.print(horas);
    client.print("&id=");
        Serial.print("&id=");
    client.print(ID);
        Serial.print(ID);
    client.print("&temperatura=");
        Serial.print("&temperatura=");
    client.print(currentTempReport);
        Serial.print(currentTempReport);
    client.print("&humidade=");
        Serial.print("&humidade=");
    client.print(currentHumReport);
        Serial.print(currentHumReport);
    client.println(" HTTP/1.1");
        Serial.println(" HTTP/1.1");
    client.println("Host: arduino.rechena.com");
        Serial.println("Host: arduino.rechena.com");
    client.println("User-Agent: Arduino");
        Serial.println("User-Agent: Arduino");
    client.println("Accept: text/html");
        Serial.println("Accept: text/html");
    client.println("Connection: close");
        Serial.println("Connection: close");
    client.println();
        Serial.println();
  }
  else {
    while (client.connected() && client.available()) {
      char c = client.read();
      Serial.print(c);
    }
  client.stop();
  delay(5000);
}
}
 
void temperatura () {
 
  Vout=1023-analogRead(0); // Invert the number because of setup
  Vout=(Vout/1024.0)*5;
  f=1000*exp(-20000/298.15); // 298.15K = 25C, 20000 seems to be the B value for a standard 1kOhm NTC
  tmp=(R1*Vin)/Vout-R1;
  value=(20000/log(tmp/f))-273.15;
   currentTempReport = value+7;
}
 
/*-------- NTP code ----------*/
 
unsigned long getNtpTime()
{
  sendNTPpacket(SNTP_server_IP);
  delay(1000);
  if ( UdpBytewise.available() ) {
    for(int i=0; i < 40; i++)
       UdpBytewise.read(); // ignore every field except the time
    const unsigned long seventy_years = 2208988800UL + timeZoneOffset;
    return getUlong() -  seventy_years;
  }
  return 0; // return 0 if unable to get the time
}
 
unsigned long sendNTPpacket(byte *address)
{
  UdpBytewise.begin(123);
  UdpBytewise.beginPacket(address, 123);
  UdpBytewise.write(B11100011);   // LI, Version, Mode
  UdpBytewise.write(0);    // Stratum
  UdpBytewise.write(6);  // Polling Interval
  UdpBytewise.write(0xEC); // Peer Clock Precision
  write_n(0, 8);    // Root Delay & Root Dispersion
  UdpBytewise.write(49);
  UdpBytewise.write(0x4E);
  UdpBytewise.write(49);
  UdpBytewise.write(52);
  write_n(0, 32); //Reference and time stamps
  UdpBytewise.endPacket();
}
 
unsigned long getUlong()
{
    unsigned long ulong = (unsigned long)UdpBytewise.read() << 24;
    ulong |= (unsigned long)UdpBytewise.read() << 16;
    ulong |= (unsigned long)UdpBytewise.read() << 8;
    ulong |= (unsigned long)UdpBytewise.read();
    return ulong;
}
 
void write_n(int what, int how_many)
{
  for( int i = 0; i < how_many; i++ )
    UdpBytewise.write(what);
}

Como podem ver o código é bastante simples. E funciona, a parte da BD não vou explicar com muito detalhade, ate porque o que não falta por ai são howtos de mysql e podem querer usar outras BD’s. Mas assim por alto tem uma tabela com um ID, Data, Hora, SensorID, Temperatura, Humidade. Algo importante é que o ID seja do tipo auto-increment, porque facilita bastante depois o tirar os dados para inserir nos gráficos de RDDTool.

Para a parte de tirar os dados da BD tambem nao vou falar nisso porque eu usei perl, muitos preferem php, python, etc, por isso em vez de criar uma guerra, usem cada um o seu. Se quiserem que mande os scripts e o export da bd que usei, avisem ai nos comentários ou email. Aviso que não é um codigo bonito, mas funciona 😉

Um pormenor importante, eu insiro da hora e data na BD directamente do arduino, podem cortar este passo e usar o proprio script que invocam no servidor, sempre torna o sketch do arduino mais leve, mas eu como quero depois usar este sketch para outros projectos onde me convém ter a hora e data directamente no arduino, vou usar assim, e não noto muita diferença em ter e não ter a hora/data no arduino. Também nao uso tudo directamente no void loop() por motivos de arrumação, assim quando quero fazer testes basta retirar a invocação do void especifico do loop e pumba esta a funcionar, ou nao…

Os graficos:

Nao é mais do que um rrdtool que recebe dois valores, um da temperatura e um da humidade e gera o grafico. Mas ei, funciona e faz gráficos, claro que se pode melhorar alguns pormenores, mas isto ainda é um prototipo do prototipo.

Peças necessarias:

1- Arduino

2- Sensor de Temperatura

3- Ethernet Shield

4 – Servidor com mysql+rrdtool+apache+etc

5- Tempo e paciencia.

No geral é tão simples quanto isto:

1 – Saca os dados do sensor
2- Formata os dados dos sensores
3- Insere os dados na BD do servidor
4- Formata os dados no servidor
5- Gera um grafico.

Como sempre, convém avisar que não percebo nada disto, e não me responsabilizo de usarem o meu código e derem cabo de qualquer coisa no vosso servidor ou no vosso arduino ;). Duvidas e sugestões, como sempre são muito bem vindas.

No futuro a ideia é usar o SD card do ethernet shield como backup caso a BD esteja em baixo, ou simplesmente tirar a BD da equação e guardar tudo no SD card e ir uma vez por dia via script buscar os dados ao SD card…

Follow Me