Prezados amigos, a muito tempo comprei o meu mbed e desde então não
tive tempo para me dedicar a esta incrível ferramenta. Porém 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 bibliotecas 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;
}
Abaixo uma imagem com o "post" automático 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 experiência somente enviei dados a um servidor de teste
disponibilizado gratuitamente na internet. Segue abaixo 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
Nenhum comentário:
Postar um comentário