mbed - Algumas experiências on-line!

    Prezados amigos, a muito tem comprei o meu mbed e desde então não tive tempo para me dedicar a esta incrível ferramenta. Porem nesta semana consegui trabalhar com o mesmo, assim venho compartilhar as minhas experiências.

    Devido ao mundo girar em torno da rede mundial de computadores, resolvi experimentar a facilidade imposta pelo o mbed, no quesito acesso a redes! Para isto montei um hardware bem simples contendo um mbed, sensor de temperatura TMP102 e claro um conector RJ45 apropriado conforme é demostrado na figura a baixo.

    O primeiro desafio foi tentar fazer com que o meu mbed medisse a temperatura do ambiente e posta-se o resultado em minha página do twitter. Após uma pesquisa rápida no site oficial do mbed encontrei um projeto parecido onde no lugar do sensor de temperatura era utilizado um sensor RFID, deste modo após encontrar as biblioteca já desenvolvidas e testadas pelos usuários, simplesmente realizei a fusão de dois códigos fontes distintos, com o intuito de alcançar meu objetivo; abaixo segue o 1º código fonte:

#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPClient.h"
#include "TMP102.h"

EthernetNetIf eth;

TMP102 temperature(p9, p10, 0x90);

Serial pc(USBTX, USBRX);

char temp[32];

float rtemp;

int main()

{

   pc.printf("Init\n");

   pc.printf("\r\nSetting up...\r\n");
   EthernetErr ethErr = eth.setup();
   if(ethErr)
   {
      pc.printf("Error %d in setup.\n", ethErr);
      return -1;
   }
   pc.printf("\r\nSetup OK\r\n");

   HTTPClient twitter;

   wait(5);

   while(1)
   {
      rtemp = 0;
      rtemp = temperature.read();
      sprintf(temp,"%f",rtemp); //converte float para char
      HTTPMap msg;
      msg["status"] = "A Temperatura de Sao Paulo - SP medida pelo meu mbed é: "; //A good example of Key/Value pair use with Web APIs
      msg["status"] += temp;

      twitter.basicAuth("login", "password"); //We use basic authentication, replace with you account's parameters

      //No need to retieve data sent back by the server
      HTTPResult r = twitter.post("http://api.supertweet.net/1/statuses/update.xml", msg, NULL);
      if( r == HTTP_OK )
   {
   pc.printf("Tweet sent with success!\n");
   }
   else
   {
      pc.printf("Problem during tweeting, return code %d\n", r);
   }
   wait(60);

   }

   //return 0;

}

    A baixo uma imagem com o "post" automatico do meu mbed com o valor da temperatura!

     Já o segundo desafio, foi um pouco mais complicado, mas utilizou a mesma configuração de hardware, sendo baseado em websockets que é uma das novas feições do HTML5. Este define conexões full-duplex, no qual mensagens podem ser enviadas entre cliente e servidor.

     Nesta experiencia somente enviei dados a um servidor de teste disponibilizado gratuitamente na internet. Segue a baixo o código fonte utilizado:

#include "mbed.h"
#include "Websocket.h"
#include "TMP102.h"

Serial pc(USBTX, USBRX);

TMP102 temperature(p9, p10, 0x90);

Timer tmr;

//Here, we create a Websocket instance in 'rw' (write) mode
//on the 'samux' channel
Websocket ws("ws://sockets.mbed.org/ws/[seu canal]/rw");

int main()

   {
   char recv[128];
   char temp[32];
   float rtemp;
   while (1)

   {

      while (!ws.connect())
      pc.printf("cannot connect websocket, retrying\r\n");

      tmr.start();
      while (1)

   {
   if (tmr.read() > 5)
   {
      rtemp = 0;
      rtemp = temperature.read();
      sprintf(temp,"%f",rtemp);
      pc.printf(temp);
      ws.send("A Temperatura no Jardim Bonfiglioli é: ");
      ws.send(temp);
      if (ws.read(recv)) {
      pc.printf("recv: %s\r\n", recv);
   }
   tmr.start();
   }
   Net::poll();
   }
   }
}

   

    Assim o mbed enviava os dados em tempo real ao servidor e este por sua vez atualizava a pagina também em tempo real. A baixo uma imagem desta página com os dados:

    Acredito ter demonstrado um pouco do poder deste kit! Vou continuar realizando novas experiências e assim que possível publico algo novo! Dúvidas e Sugestões não exite!

    OBS: Os códigos fontes e bibliotecas aqui utilizados não são de minha autoria, foram disponibilizados no site http://www.mbed.org e por min somente adaptado, sendo os créditos dos devidos autores!

    Mais Informações em:

    http://www.mbed.org

    http://www.mbed.org/handbook/

    http://www.mbed.org/cookbook/

    http://www.mbed.org/cookbook/Twitter

    http://www.mbed.org/cookbook/websocket-and-mbed

    http://www.supertweet.net

    http://sockets.mbed.org

    

  

Exibições: 684

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 Euclides Franco de Rezende em 6 junho 2012 às 11:21

Olá Celso.

Algumas informações importantes são: o local (latitude e longitude) e horário da coleta dos dados.

Com algo simples assim pode se criar um belo sistema de acompanhamento do tempo (lógico, outros dados: Humidade relativa, pressão barométrica...etc...para quem trabalha com previsão do tempo...).

Até a próxima.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço