You are on page 1of 14

Desenvolva um sensor de temperatura pronto para

nuvem com o Arduino Uno e o IBM IoT Foundation,


Parte 2: Escreva o sketch e conecte ao Quickstart do
IBM IoT Foundation
Kyle Brown
Distinguished Engineer, CTO for Cloud and Emerging
Technologies
IBM

05/Dez/2014

Este tutorial (a segunda parte de uma srie de quatro partes) apresenta o MQTT
(anteriormente Message Queueing Telemetry Transport), o protocolo para o Internet of
Things (IoT), e mostra como possvel implementar o MQTT no Arduino. Aprenda sobre as
ferramentas e tcnicas para testar e depurar problemas com o MQTT de forma local e escreva
um sketch do Arduino que se conecta ao Quickstart do IBM Internet of Things Foundation para
representar graficamente dados customizados.
Visualizar mais contedo nesta srie
Inscreva-se no IBM Bluemix
Esta plataforma em nuvem fornece muitos servios grtis, tempos de execuo e
infraestrutura para ajudar a desenvolver e implementar rapidamente o seu prximo aplicativo
mvel ou da web.

Na Parte 1 dessa srie de tutoriais de quatro partes, discuti o design de um projeto para monitorar
as temperaturas no meu gabinete de fiao, desenvolvido usando o Arduino Uno e o sensor
de temperatura DHT11 da Virtuabotix. Mostrei a construo de um circuito para o projeto e o
guiei pela instalao do Arduino IDE e por como testar cada um dos componentes individuais do
projeto com diferentes sketches de amostra do Arduino. Agora voc est pronto para ver o design
do sketch que vincula o projeto do IoT na nuvem e as etapas para ativar o monitoramento dos
dados de temperatura e umidade em tempo real remotamente. Porm, primeiro preciso discutir o
protocolo que ser usado para se comunicar com o IBM IoT Foundation: o MQTT.

O que o MQTT?
O MQTT (anteriormente Message Queueing Telemetry Transport) um protocolo de comunicao
rpido e leve projetado para o Internet of Things. Ele tem suas origens na IBM (onde foi
Copyright IBM Corporation 2014. Todos os direitos reservados.
Desenvolva um sensor de temperatura pronto para nuvem com o
Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Marcas Registradas
Pgina 1 de 14

developerWorks

ibm.com/developerWorks/br/

desenvolvido originalmente por Andy Stanford-Clark) e desde ento tem sido enviado para
a Organization for the Advancement of Structured Information Standards (OASIS) para
padronizao, onde a verso atual do padro do protocolo a 3.1. O terminal especificao
MQTT V3.1 Protocol Specification declara que seu propsito ser um "protocolo de sistema de
mensagens para publicar/assinar baseado em broker leve projetado para ser aberto, simples,
leve e fcil de implementar". No perodo desde sua apresentao, a parte "fcil de implementar"
certamente se provou verdadeira, uma vez que vrias bibliotecas diferentes implementando
clientes do MQTT foram desenvolvidas. possvel encontrar links para praticamente todas elas
na pgina do projeto Eclipse Paho.
O MQTT perfeito para o uso em dispositivos integrados porque ele:
assncrono, com vrios nveis diferentes de qualidade de servio, o que importante nos
casos em que as conexes de Internet no so confiveis.
Envia mensagens curtas e precisas que o tornam til para situaes de largura de banda
baixa.
No requer muito software para implementar um cliente, o que o torna excelente para
dispositivos como o Arduino com memria limitada.
O MQTT o protocolo do qual o QuickStart do IBM IoT Foundation foi desenvolvido para aceitar
entradas.

Fazendo o download e instalando as bibliotecas do MQTT do


Arduino
Nesse tutorial, voc usar os recursos integrados do
Quickstart do IBM Internet of Things Foundation para
representar graficamente os dados em tempo real do
sensor do Arduino.
Instalar as bibliotecas do cliente do MQTT para o Arduino to fcil quanto localizar e instalar
as bibliotecas que voc j analisou na Parte 1 para os dispositivos de hardware especficos. A
biblioteca especfica a ser usada para seu projeto pode ser encontrada no website Arduino Client
for MQTT , que descreve a biblioteca, oferece links para a documentao e fornece outro link para
o GitHub, onde possvel fazer o download dela.
No meu exemplo, usei o cliente V1.9.1 do link do GitHub. Faa o download do arquivo ZIP ou
TAR e extraia o diretrio PubSubClient do archive no subdiretrio de bibliotecas do seu diretrio
do Arduino IDE. Em seguida, reinicie o Arduino IDE. O terminal PubSubClient>mqtt_auth,
PubSubClient>mqtt_basic e PubSubClient>mqtt_publish_in_callback (opes de menu)
devem estar disponveis agora, como mostrado na Figura 1.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 2 de 14

ibm.com/developerWorks/br/

developerWorks

Figura 1. Menu PubSubClient

Testando o MQTT de forma local


O processo que voc est seguindo at agora nessa srie de tutoriais tem como objetivo
introduzir um novo componente ou tecnologia na soluo e test-la independentemente para
garantir que est funcionando corretamente. Agora que voc fez o download e instalou o software
cliente do MQTT, far o mesmo para ele. No entanto, ainda necessrio um software adicional
para testar seu cliente.
O MQTT um protocolo baseado em broker: os clientes se conectam a um broker que faz a
mediao da comunicao entre eles. Na realidade, um processo simples. Um conjunto de
clientes registra seu interesse em um tpico com o broker. Quando outro cliente publica uma
mensagem sobre esse tpico, o broker encaminha a mensagem para os clientes assinantes.
O broker que ser usado para o teste local outra contribuio de software livre chamada
Mosquitto. possvel instal-lo no PC local sendo usado para programar o Arduino e depois
testar se o Arduino consegue se comunicar com o broker.

Mosquitto
possvel fazer o download do Mosquitto no website do Mosquitto. Ele est disponvel para
Windows, Mac e a maioria das variantes do Linux . A instalao dele simples: para Linux,
ela simplesmente equivale instalao de um novo pacote; para Windows, possvel instalar o
sistema como um servio do Windows ou um executvel separado. Se estiver usando Windows,
certifique-se de desmarcar a caixa de seleo para instalar como um servio. mais fcil
execut-lo da linha de comando, pois possvel visualizar com mais facilidade as informaes
sobre depurao conforme elas so registradas.
Aps instalar o Mosquitto, inicie-o pela linha de comando (em qualquer plataforma) executando o
comando:
mosquitto -v

O terminal -v (sinalizao) para a criao de log "detalhada", o que significa que possvel ver
informaes sobre as conexes sendo feitas e as mensagens sendo recebidas ou enviadas. Voc
ver o resultado disso em um minuto conforme comear a enviar mensagens para o broker local.
Desenvolva um sensor de temperatura pronto para nuvem com o
Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 3 de 14

developerWorks

ibm.com/developerWorks/br/

Fazendo o download do sketch de amostra


A prxima etapa fazer o download do sketch de amostra que rene todas as partes (consulte
Download). Voc publicar uma mensagem pelo MQTT para um broker MQTT (primeiro para
seu broker local e depois para o broker que faz parte do QuickStart do IoT Foundation). Para
o QuickStart do IoT Foundation finalmente analisar e exibir os dados do sensor, necessrio
public-los em um tpico chamado iot-2/evt/status/fmt/json. De forma semelhante, tambm
necessrio formatar os dados de uma maneira especfica. Se voc procurar na documentao do
QuickStart do IoT Foundation pela receita "Connect my device to QuickStart", ver que os dados
devem estar no seguinte formato JavaScript Object Notation (JSON):
{
"d": {
"name1": "stringvalue",
"name2": intvalue,
...
}
}

O sketch de amostra um programa simples. A partir das outras amostras do Arduino que eu
apontei na Parte 1, possvel ver que todos os programas do Arduino tm a mesma estrutura.
Eles incluem um conjunto padro de funes chamadas setup() e as variveis do loop(),
juntamente com algumas declaraes de varivel opcionais e declaraes de quaisquer funes
de utilitrio usadas nas suas funes setup() ou loop() . Primeiro, voc se voltar para o incio
do cdigo para fazer alteraes em algumas dessas declaraes de varivel para que seja
possvel testar o programa de forma local.

Alteraes no sketch de amostra


Como em todos os outros sketches do Arduino, a parte superior do programa contm referncias
s bibliotecas usadas no sketch:
#include
#include
#include
#include

<SPI.h>
<Ethernet.h>
<PubSubClient.h>
<dht11.h>

Como possvel ver, o sketch usa as bibliotecas Ethernet para orientar o escudo Ethernet e as
bibliotecas do DHT11 para o acesso s leituras do DHT11 como nos exemplos analisados na
Parte 1. Porm, voc tambm est usando as bibliotecas PubSubClient pela primeira vez. Para
aproveit-las, necessrio fazer algumas alteraes no cdigo para test-la com relao ao
servidor local:
// Update this to either the MAC address found on the sticker on your Ethernet shield (newer shields)
// or a different random hexadecimal value (change at least the last four bytes)
byte mac[]
= {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
char macstr[] = "deedbafefeed";
// Note this next value is only used if you intend to test against a local MQTT server
byte localserver[] = {192, 168, 1, 98 };
// Update this value to an appropriate open IP on your local network
byte ip[]
= {192, 168, 1, 20 };

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 4 de 14

ibm.com/developerWorks/br/

developerWorks

Como o primeiro comentrio diz, a primeira alterao que precisa ser feita a atualizao das
variveis mac e as variveis do macstr para corresponder ao endereo MAC do seu escudo
Ethernet. Os escudos Ethernet mais novos tm essa informao impressa em um adesivo na
placa. Se estiver usando uma placa mais antiga, apenas altere aleatoriamente os ltimos quatro
caracteres hexadecimais para outros valores hexadecimais vlidos e no ter problemas. Em
seguida, altere o elemento ip (varivel) para ser um endereo IP aberto na sua rede local.
As bibliotecas Ethernet podem usar DHCP e possvel consultar como fazer isso se estiver
interessado, mas mais simples usar endereos IP fixos sempre que possvel. Em seguida,
atualize a varivel localserver para o endereo IP do computador no qual voc est usando o
servidor Mosquitto. Por fim, voc atualizar o sketch para se conectar ao seu servidor MQTT local
em vez de ao servidor do QuickStart do IBM IoT Foundation.
Localize essa seo do cdigo:
// Uncomment this next line and comment out the line after it to test against a local MQTT server
//PubSubClient client(localserver, 1883, 0, ethClient);
PubSubClient client(servername, 1883, callback, ethClient);

Remova o comentrio da linha que contm o construtor iniciando o client(localserver e


comente a linha abaixo dela iniciando o client(servername. E salve o sketch.
Agora que voc fez as alteraes necessrias, analisar rapidamente o restante desse programa
simples. Entre os dois fragmentos que voc j viu, h um conjunto de declaraes de varivel:
char servername[]="messaging.quickstart.internetofthings.ibmcloud.com";
String clientName = String("d:quickstart:arduino:") + macstr;
String topicName = String("iot-2/evt/status/fmt/json");
dht11 DHT11;
float tempF = 0.0;
float tempC = 0.0;
float humidity = 0.0;
EthernetClient ethClient;

Como possvel ver, h variveis para a temperatura em Fahrenheit e Celsius e para a umidade.
H tambm uma varivel que conter a instncia do cliente Ethernet que ser usado pelo cliente
PubSub.
Em seguida, vem a definio da funo setup() :
void setup()
{
// Start the Ethernet client, open up serial port for debugging, and attach the DHT11 sensor
Ethernet.begin(mac, ip);
Serial.begin(9600);
DHT11.attach(3);
}

Essa funo bastante simples, ela inicializa o cliente Ethernet com o endereo MAC fornecido
e o endereo IP esttico em que o cliente ser executado. Depois, inicializa a porta serial (para

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 5 de 14

developerWorks

ibm.com/developerWorks/br/

comunicao com o Serial Monitor para fins de depurao) e, por fim, abre a comunicao com o
DHT11 no pino 3.
A prxima funo a ser examinada a loop(), que chamada continuamente contanto que o
Arduino esteja em operao:
void loop()
{
char clientStr[34];
clientName.toCharArray(clientStr,34);
char topicStr[26];
topicName.toCharArray(topicStr,26);
getData();
if (!client.connected()) {
Serial.print("Trying to connect to: ");
Serial.println(clientStr);
client.connect(clientStr);
}
if (client.connected() ) {
String json = buildJson();
char jsonStr[200];
json.toCharArray(jsonStr,200);
boolean pubresult = client.publish(topicStr,jsonStr);
Serial.print("attempt to send ");
Serial.println(jsonStr);
Serial.print("to ");
Serial.println(topicStr);
if (pubresult)
Serial.println("successfully sent");
else
Serial.println("unsuccessfully sent");
}
delay(5000);
}

Como possvel ver, a maior parte dessa funo dedicada produo da sada de depurao.
No entanto, h alguns elementos centrais a serem observados. Prximo parte superior da
funo, h uma chamada para a funo getData() (que voc examinar a seguir) que obtm os
dados de sensor do DHT11. O terminal loop() (funo) realiza uma verificao para ver se o
cliente PubSubClient est conectado. Se ele no estiver conectado, a funo loop() tenta se
conectar ao broker MQTT. Se ele estiver conectado, a funo loop() formata uma cadeia de
caracteres JSON usando buildJson() e a publica no broker MQTT usando o mtodo publish()
do PubSubClient. Por fim, loop() espera por 5.000 ms na parte inferior da funo antes do
tempo de execuo do Arduino voltar ao ponto inicial e chamar a funo novamente.
Em seguida, analise a funo getData() :
void getData() {
int chk = DHT11.read();
switch (chk)
{
case 0:
Serial.println("Read OK");
humidity = (float)DHT11.humidity;
tempF = DHT11.fahrenheit();
tempC = DHT11.temperature;
break;
case -1:

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 6 de 14

ibm.com/developerWorks/br/

developerWorks

Serial.println("Checksum error");
break;
case -2:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
}

Essa funo simplesmente verifica o status dos dados da biblioteca do DHT11 e faz a leitura
dos valores dos dados do sensor se eles estiverem prontos, caso contrrio, ela imprime uma
mensagem informativa no console.
Por fim, analise a funo que formata a sada JSON:
String buildJson() {
String data = "{";
data+="\n";
data+= "\"d\": {";
data+="\n";
data+="\"myName\": \"Arduino DHT11\",";
data+="\n";
data+="\"temperature (F)\": ";
data+=(int)tempF;
data+= ",";
data+="\n";
data+="\"temperature (C)\": ";
data+=(int)tempC;
data+= ",";
data+="\n";
data+="\"humidity\": ";
data+=(int)humidity;
data+="\n";
data+="}";
data+="\n";
data+="}";
return data;
}

Um dos pontos fracos do Processing como implementado no Arduino a falta de boas instalaes
para o processamento de cadeias de caracteres. Voc deve ter notado algumas das converses
peculiares que precisaram ser feitas entre instncias da classe String e o tipo cadeia de
caracteres para chamar funes esperando uma ou outra. De forma semelhante, formatar at
mesmo uma simples cadeia de caracteres JSON como essa pode ser desafiador em virtude
da falta de uma boa biblioteca de formatao de cadeia de caracteres embora existam tais
funes para formatar a sada para o console.

Testando com relao ao broker Mosquitto local


Ok, a primeira parte est quase concluda. Agora faa o upload do sketch modificado para o
Arduino seguindo os procedimentos para upload discutidos na Parte 1. Assim que visualizar o
status "Done uploading." na linha de status do Arduino IDE, abra o Serial Monitor pressionando
Ctrl-Shift-M.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 7 de 14

developerWorks

ibm.com/developerWorks/br/

Validando sua sada


Agora, supondo que tudo ocorreu corretamente, voc deve ver o seguinte tipo de sada na janela
do terminal em que iniciou o Mosquitto:
1405807697: mosquitto version 1.2.3 (build date 22/12/2013 13:36:32.54) starting
1405807697: Using default config.
1405807697: Opening ipv6 listen socket on port 1883.
1405807697: Opening ipv4 listen socket on port 1883.
1405807718: New connection from 192.168.1.20 on port 1883.
1405807718: New client connected from 192.168.1.20 as d:quickstart:arduino:deedb
afefeed (c2, k15).
1405807718: Sending CONNACK to d:quickstart:arduino:deedbafefeed (0)
1405807718: Received PUBLISH from d:quickstart:arduino:deedbafefeed (d0, q0, r0,
m0, 'iot-2/evt/status/fmt/json', ... (100 bytes))
1405807723: Socket error on client d:quickstart:arduino:deedbafefeed, disconnect
ing.
1405807723: New connection from 192.168.1.20 on port 1883.
1405807723: New client connected from 192.168.1.20 as d:quickstart:arduino:deedb
afefeed (c2, k15).
1405807723: Sending CONNACK to d:quickstart:arduino:deedbafefeed (0)
1405807723: Received PUBLISH from d:quickstart:arduino:deedbafefeed (d0, q0, r0,
m0, 'iot-2/evt/status/fmt/json', ... (100 bytes))
1405807729: Received PUBLISH from d:quickstart:arduino:deedbafefeed (d0, q0, r0,
m0, 'iot-2/evt/status/fmt/json', ... (100 bytes))
1405807734: Received PUBLISH from d:quickstart:arduino:deedbafefeed (d0, q0, r0,
m0, 'iot-2/evt/status/fmt/json', ... (100 bytes))

A chave para saber que as coisas esto ocorrendo corretamente que voc ver as ltimas
linhas sobre Received PUBLISH from.... Isso significa que o sketch do Arduino est se
conectando com sucesso ao broker Mosquitto. Agora examine no Serial Monitor; ele deve conter
mensagens como a seguir:
Read OK
Trying to connect to d:quickstart:arduino:deedbafefeed
attempt to send {
"d": {
"myName": "Arduino DHT11",
"temperature (F)": 71,
"temperature (C)": 22,
"humidity": 43
}
}
to iot-2/evt/status/fmt/json
successfully sent

Conectando o Arduino ao Quickstart do IoT Foundation


Ok, agora que as coisas esto funcionando localmente, voc est pronto para test-las com
relao ao Quickstart do IoT Foundation. No seu navegador, visite o website do IBM Internet of
Things Foundation , mostrado na Figura 2.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 8 de 14

ibm.com/developerWorks/br/

developerWorks

Figura 2. Pgina inicial do IBM IoT Foundation

Clique no boto que diz Try it out with our Quickstart. Voc ver a pgina mostrada na Figura 3.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 9 de 14

developerWorks

ibm.com/developerWorks/br/

Figura 3. Pgina de boas-vindas do Quickstart do IBM IoT Foundation

Nesse tutorial, voc usar os recursos integrados do Quickstart do IoT Foundation para
representar graficamente os dados em tempo real do sensor do Arduino. Na Parte 3 e as variveis
do Parte 4, voc escrever um aplicativo para fazer algo mais interessante com os dados
recebidos.
O IoT Foundation tem vrias receitas existentes para outros dispositivos. Se voc tem um
dispositivo mais sofisticado, como um Intel Galileo ou um Raspberry Pi, desejar testar essas
receitas. Por enquanto, apenas digite o endereo MAC do seu Arduino. Mas antes de clicar em
Go, h mais uma alterao a ser feita no sketch.

Alterando o sketch
Voc se lembra de algumas instrues atrs quando alterou o sketch para apontar para o servidor
MQTT local em vez do servidor MQTT no IoT Foundation? Agora voc est pronto para alter-lo
de volta. Comente e remova os comentrios das linhas que voc alterou de volta para o cdigo
original:
// Uncomment this next line and comment out the line after it to test against a local MQTT server
//PubSubClient client(localserver, 1883, 0, ethClient);
PubSubClient client(servername, 1883, callback, ethClient);

Aps fazer essa alterao, salve o sketch e faa o upload dele no Arduino. Se desejar reiniciar
o Serial Monitor, possvel, mas a prova real ser o que voc visualizar ao olhar no IoT
Desenvolva um sensor de temperatura pronto para nuvem com o
Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 10 de 14

ibm.com/developerWorks/br/

developerWorks

Foundation. Volte para seu navegador, clique no boto Go na pgina do endereo MAC e espere
alguns minutos.

Representando os dados graficamente


Se tudo funcionou corretamente, voc deve ver uma pgina que exibe um grfico das suas
leituras de temperatura, como o mostrado na Figura 4.

Figura 4. Dados representados graficamente

Voc conseguiu! Agora voc tem um dispositivo desenvolvido por voc e que parte do IoT
global. Para meu caso simples especfico, isso tudo que eu precisava: um grfico que eu
pudesse acompanhar por algumas horas para verificar a temperatura dentro do meu gabinete
de fiao. A m notcia que mesmo ao meio dia em um dia quente, a temperatura nunca ficou
acima de 73 F, portanto, estou de volta prancheta para descobrir qual o meu problema. Mas
sua jornada no aprendizado sobre como aproveitar o IoT est apenas comeando.

O que vem a seguir?


Nos dois prximos tutoriais nessa srie, voc escrever seu prprio aplicativo em execuo
no IBM Bluemix pode manter os dados enviados do seu Arduino e permitir a exibio e
comparao de dados atuais com relao a dados histricos.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 11 de 14

developerWorks

ibm.com/developerWorks/br/

Downloads
Descrio

Nome

Tamanho

Sample sketch

MQTT_IOT_SENSORS.ino

4KB

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 12 de 14

ibm.com/developerWorks/br/

developerWorks

Recursos
MQTT V3.1 Protocol Specification: leia a verso mais recente da especificao do MQTT.
IBM Internet of Things Foundation: experimente o IBM IoT Foundation e inscreva-se para o
programa beta.
Arduino: visite o website do Arduino.
"Bluemix and the Internet of Things" (Ryan Baxter, developerWorks, julho de 2014): descubra
como o IBM Bluemix e o IBM IoT Foundation podem trabalhar juntos.
Cliente do MQTT para Arduino: clique no link do GutHub para fazer o download do cliente.
Mosquitto: faa o download do broker Mosquitto.
Projeto Eclipse Paho: faa o download dos clientes do MQTT.

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 13 de 14

developerWorks

ibm.com/developerWorks/br/

Sobre o autor
Kyle Brown
Kyle Brown Distinguished Engineer na IBM Software Services para WebSphere,
especializado em SOA e Tecnologias Emergentes. Kyle fornece servios de
consultoria, educao e mentorizao em SOA, tpicos orientados a objetos e
tecnologias J2EE para clientes da Fortune 500. Ele coautor de Enterprise Java
Programming with IBM WebSphere e as variveis do Persistence in the Enterprise.
Tambm um palestrante frequente em conferncias sobre os tpicos de SOA,
Enterprise Java, design em OO e padres de design.
Copyright IBM Corporation 2014. Todos os direitos reservados.
(www.ibm.com/legal/copytrade.shtml)
Marcas Registradas
(www.ibm.com/developerworks/br/ibm/trademarks/)

Desenvolva um sensor de temperatura pronto para nuvem com o


Arduino Uno e o IBM IoT Foundation, Parte 2: Escreva o sketch e
conecte ao Quickstart do IBM IoT Foundation

Pgina 14 de 14

You might also like