05/Dez/2014
Este tutorial (o primeiro em uma srie de quatro partes) lhe apresenta ao microcontrolador
Arduino, discute como o autor o usou para resolver um problema de controle domstico,
apresenta alguns complementos de hardware para o Arduino e mostra como conect-los e
mostra tambm como carregar programas para testar o hardware.
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.
Muitos de vocs devem morar em uma casa saturada de tecnologia como eu. No centro dessa
web de dispositivos conectados est meu roteador de WiFi domstico, conectado Internet por
meio de um modem a cabo. Portanto, quando, de repente, voc ouve lamentaes de toda a casa
porque laptops, tablets, consoles de jogos, DVRs e todos os demais dispositivos conectados
Internet falharam pelo fato de o roteador WiFi ter parado de funcionar, sabe que algo est errado.
No passado, tentei vrias abordagens para melhorar essa situao: substitui o roteador por um
modelo novo, atualizei o firmware, substitui o modem a cabo e fiz a empresa de cabo verificar
o sinal nas linhas coaxiais tudo em vo. O consenso na comunidade virtual entre aqueles
com problemas semelhantes que o roteador ou o modem (ou ambos) deve estar ficando muito
quente. Isso pareceu improvvel para mim, pois no parecia quente no gabinete de fiao onde
eu instalei esses equipamentos, mas minha avaliao das temperaturas no era uma amostragem
cientfica. O que eu precisava era uma maneira de descobrir a temperatura do gabinete de fiao
no momento ou imediatamente antes de as falhas ocorrerem, para que eu pudesse ver se havia
uma correlao. E essa necessidade me levou ao meu experimento.
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 1: Desenvolva o
circuito e configure o ambiente
Marcas Registradas
Pgina 1 de 12
developerWorks
ibm.com/developerWorks/br/
Como muitos outros engenheiros, fui fascinado por vrios anos pelos recursos da plataforma de
eletroeletrnicos de software livre Arduino . O Arduino um microcontrolador de placa nica que
foi apresentado em 2005 (e batizado por seus criadores em homenagem a um bar na cidade de
Ivrea no norte da Itlia). O Arduino programado usando uma linguagem (chamada Processing)
baseada na linguagem Java . A comunidade do Arduino enorme e na web existem centenas
de exemplos do uso da placa para realizar medies a partir de vrios sensores e controlar todos
os tipos atuadores. Dessa forma, quando pensei sobre meu problema, minha ateno se voltou
para uma placa Arduino Uno abandonada ao lado da minha mesa, juntamente com um escudo
Ethernet Arduino na minha gaveta e o novssimo sensor de temperatura que havia chegado na
semana anterior e estava esperando por um projeto. E conforme eu pensava sobre o IBM Internet
of Things (IoT) Foundation e os recursos para o desenvolvimento de IoT que fazem parte do
IBM Bluemix , o conceito do meu projeto comeou a tomar forma. A Figura 1 mostra o projeto
todo que eu queria desenvolver.
Introduo a um Arduino
Se voc deseja acompanhar e desenvolver o mesmo sensor que eu, primeiro necessrio ter
uma das muitas placas Arduino ou clones do Arduino existentes. (Mas tenha cuidado embora
muitas placas, como a Intel Galileo, afirmem ser "compatveis com Arduino", h diferenas
suficientes nas bibliotecas e tolerncias dos eletroeletrnicos internos para, por vezes, tornar o
uso de uma placa "compatvel" complicado.) Eu gosto do Arduino Uno R3, que a reviso mais
nova do Arduino "clssico" baseada no chipset ATMega128. possvel encontrar facilmente essa
placa em lojas fsicas, como a Radio Shack, e na Amazon e outras varejistas online por menos de
US$ 30. A Figura 2 uma foto da parte superior da Uno R3.
Pgina 2 de 12
ibm.com/developerWorks/br/
developerWorks
Quando receber sua placa, visite primeiro o website do Arduino, que o lar da comunidade do
Arduino e contm uma profuso de informaes e documentaes das placas, seus recursos e
o software que foi escrito para aproveit-las. Para esse rpido tour, comearei na parte superior
da placa e irei gui-lo pela borda externa para revisar as partes mais importantes da placa da
perspectiva desse tutorial.
Na parte superior h uma linha de furos para pinos que podem ser usados para ler valores de
ou controlar dispositivos digitais. Passando para a parte inferior, h uma linha que metade
ocupada por pinos para leitura ou gravao de valores analgicos, enquanto os pinos restantes
nessa linha fornecem diferentes tipos de conexes de aterramento e energia. Na parte inferior
esquerda da placa, est uma tomada para uma fonte de alimentao de 5 V. Voc usar essa
tomada se desejar energizar seu projeto quando ele no estiver conectado ao computador. A
prxima tomada acima dessa no lado esquerdo da placa um conector para um cabo USB. Esse
conector usado para a comunicao com o computador a partir do qual voc programa a placa
e para energizar a placa quando o cabo est conectado. Por fim, na parte superior esquerda
da placa est o boto de reconfigurao apenas o item para quando seu software estiver se
comportando de forma inadequada.
Um dos pontos fortes da comunidade do Arduino o fato de que no apenas a placa bsica
teve suas especificaes liberadas na comunidade de software livre, resultando em muitas
verses dela, mas tambm foram desenvolvidos muitos escudos diferentes para ela. O desse
projeto a verso R3 do escudo Ethernet, que fornece acesso a uma conexo Ethernet a 10
ou 100 MB atravs de um conector RJ45 padro. Ele tambm est disponvel em muitos dos
mesmos varejistas que o Arduino Uno, por aproximadamente US$ 30. A Figura 3 mostra o escudo
Ethernet.
Pgina 3 de 12
developerWorks
ibm.com/developerWorks/br/
O que interessante sobre essas placas que uma se conecta a outra de forma que um
projeto pode ter um Arduino na parte inferior, um escudo Ethernet ou WiFi no meio e talvez um
escudo de motor (para controle por rob) ou um escudo de extenso adicional para sensores
especiais na parte superior. possvel ter uma ideia de como as placas ficam quando empilhadas
pela foto na Figura 4.
Aps empilhar as placas, voc pode pensar que est pronto para avanar, mas espere: primeiro
necessrio fazer o download e instalar o Arduino IDE, que est disponvel no link de download
no website do Arduino e compatvel com Mac, Windowse Linux. Se desejar, possvel testar
Desenvolva um sensor de temperatura pronto para nuvem com
o Arduino Uno e o IBM IoT Foundation, Parte 1: Desenvolva o
circuito e configure o ambiente
Pgina 4 de 12
ibm.com/developerWorks/br/
developerWorks
uma das verses beta mais novas, mas para esse tutorial usarei a verso liberada atual do IDE,
que a Arduino 1.0.5.
Faa o download do IDE (que normalmente vem em um arquivo ZIP ou TAR, dependendo do
OS do computador) e siga as instrues para instalar o IDE e os drivers USB no computador.
Nesse ponto, possvel conectar o cabo USB para energizar a placa (e muitas vezes concluir a
instalao do driver), conectar o cabo Ethernet, abrir o IDE e comear a testar os exemplos de
biblioteca fornecidos com o IDE mas isso est ficando um pouco frente do exemplo.
Desenvolvendo o circuito
Para o propsito desse projeto, h algumas outras peas de hardware a serem adquiridas. A
primeira uma "placa de ensaio" de criao de prottipos padro. Se voc engenheiro eltrico
ou tem a eletrnica com o hobby, certamente est familiarizado com elas. Se no for, ser
necessrio comprar uma como a mostrada na Figura 5.
Pgina 5 de 12
developerWorks
ibm.com/developerWorks/br/
possvel conectar um fio no pino d na linha 1, que poderia se conectar a outro componente
em outra linha. Usando a placa de ensaio, possvel criar rapidamente prottipos de circuitos
eltricos temporariamente uma maneira rpida e fcil de testar conexes entre diferentes
componentes.
Ento o que voc ir conectar? Bem, o Arduino e o escudo Ethernet tm a capacidade de ler
medidas digitais (1s ou 0s) de qualquer um dos pinos digitais na parte superior. possvel, ento,
escrever programas em Processing para enviar essas leituras (ou a interpretao delas) para
outros computadores. A informao especfica desejada uma leitura de temperatura e para
isso, necessrio um sensor de temperatura.
H diversos sensores de temperatura compatveis com Arduino disponveis, mas o que eu usei
no meu projeto o sensor de temperatura e umidade Virtuabotix DHT11. Ele est disponvel no
website da Virtuabotix ou na Amazon por menos de US$ 10. Essa pequena maravilha de quatro
pinos mostrada na Figura 6.
Quando voc receber o sensor DHT11, ele dever vir com um conjunto de documentao de
pinagem mostrando o que todos os pinos no sensor fazem. Se no, possvel encontrar essas
informaes no website da Virtuabotix.
Enquanto estiver visitando o website da Virtuabotix, faa o download das bibliotecas do Arduino
(que vm empacotadas como um arquivo zip) para o Virtuabotix DHT11. Elas esto disponveis
no link de download nessa mesma pgina. Extraia-as no subdiretrio Libraries da estrutura de
diretrio do Arduino IDE. Quando reiniciar o Arduino IDE, voc ver que as amostras do DHT11
esto disponveis para uso, da mesma forma que as amostras integradas para o escudo Ethernet
e outros dispositivos.
Pgina 6 de 12
ibm.com/developerWorks/br/
developerWorks
Agora que voc tem todas as partes fsicas, est na hora de conectar seu projeto. O diagrama de
conexo na Figura 7 mostra todas as conexes que precisam ser feitas.
Vamos revisar a conexo dessas peas. O Arduino colocado na parte inferior, enquanto o
escudo Ethernet colocado sobre ele (veja a Figura 4 para um exemplo de como isso funciona).
Eu apenas conectei o DHT11 em uma coluna de pinos no usada na placa de ensaio. Observe
que a frente do DHT11 com a grade de waffle no o lado com a etiqueta est voltado para
a frente. O pino terra no DHT11 (que o na extrema direita com a grade de waffle voltada para
a frente) conectado por meio do fio preto ao pino GND no Arduino. O pino VDD no DHT11 (o
mais a esquerda) conectado por meio do fio vermelho ao pino da fonte de alimentao de 5
V no Arduino. Por fim, o pino DTA (o segundo da esquerda) conectado ao pino Digital 3 no
Arduino. Lembre-se do nmero desse pino pino 3 porque ele se torna importante ao escrever
o software que referencia o DHT11.
Sua configurao final deve ter uma aparncia semelhante Figura 8.
Pgina 7 de 12
developerWorks
ibm.com/developerWorks/br/
Neste momento, uma boa ideia testar individualmente os componentes. Talvez voc deseje
comear testando a instalao adequada dos drivers USB no seu computador para ver se ele est
se comunicando com sucesso com o Arduino. Abra o Arduino IDE e clique em File > Examples >
01.Basics > Blink, como mostrado na Figura 9.
Pgina 8 de 12
ibm.com/developerWorks/br/
developerWorks
a direita, segundo boto a partir da esquerda na barra de ferramentas), como mostrado na Figura
10.
Se a mensagem Done uploading for exibida e voc observar que o LED comea a piscar, a
comunicao com o Arduino est sendo feita com sucesso. Caso contrrio, novamente, consulte
o website do Arduino para obter ajuda. Assim que comprovar que possvel se conectar ao
Arduino, voc deve testar um ou mais exemplos do escudo Ethernet, clicando em Examples >
Ethernet > Web Server.
Um truque para deixar exemplo de servidor da Web funcional que ele usa dois parmetros que
provavelmente precisam ser alterados. Prximo parte superior do sketch de exemplo, voc ver
as seguintes linhas de cdigo:
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
Nos escudos Ethernet mais novos, o endereo MAC est em um adesivo fixado no escudo.
(Para placas mais antigas, ser necessrio criar um.) Mude mac[] (valores da varivel) no cdigo
para corresponder ao endereo MAC mostrado no adesivo. Da mesma forma, necessrio
alterar o endereo IP para um endereo aberto na sua rede local. Faa essas alteraes, salve
o sketch com um novo nome e faa o upload dele. Ele deve funcionar agora. Por fim, se voc
fez o download e extraiu as bibliotecas do DHT11 para o diretrio correto, deve conseguir clicar
em Examples > DHT11 > dht11_functions e carregar o sketch. Prximo parte superior desse
sketch, voc ver o seguinte cdigo:
void setup()
{
DHT11.attach(2);
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
}
Pgina 9 de 12
developerWorks
ibm.com/developerWorks/br/
Lembra que voc conectou o pino DTA do DHT11 ao pino 3 no Arduino? Isso porque o pino 2
usado pelo escudo Ethernet e est indisponvel. Ento, altere o 2 na linha DHT11.attach(2) para
3, salve o sketch com um nome diferente e faa o upload dele. Em seguida, abra o Serial Monitor
(clique em Tools > Serial Monitor) e voc deve ver a sada do programa mostrando dados de
temperatura e umidade ao rolar a tela para baixo.
Pgina 10 de 12
ibm.com/developerWorks/br/
developerWorks
Recursos
IBM IoT 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.
DHT11: saiba mais sobre o sensor DHT11 no website da Virtuabotix.
Arduino IDE: Faa o download do IDE do website do Arduino.
Bibliotecas do sensor de temperatura DHT11: faa o download das bibliotecas do DHT11.
Pgina 11 de 12
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/)
Pgina 12 de 12