Академический Документы
Профессиональный Документы
Культура Документы
A Adafruit acho que a grande maioria aqui j conhece. Se trata de uma grande empresa internacional na
rea de embarcados e eletrnica, ela fabrica diversos hardwares e tambm mantm seu blog, frum,
videos no YouTube, bibliotecas para seu hardware dentre outras caractersticas. E agora ela tem sua
prpria plataforma de IoT, a Adafruit IO.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 1/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
A prpria Adafruit possui relatado em seu site o problema que a equipe possua em conectar os seus
hardwares de maneira fcil com a nuvem, mesmo com as inmeras plataformas existentes e consagradas
no mercado, ainda no seria o que eles almejavam.Diante deste motivo, eles solucionaram o problema
criando a Adafruit IO.
Broker MQTT
Websockets
API
Dashboard
Bibliotecas para tornar a utilizao de seus hardwares mais fceis.
Portanto iremos desenvolver um projeto que contar com um sensor e um atuador. O sensor de
temperatura ser o MCP9808 da Adafruit, j o atuador ser um mdulorel de dois canais.
Todo conjunto usar o ESP8266 NodeMCU juntamente com o protocolo MQTT para interagirmos com a
plataforma.
r
Materiais necessrios
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 2/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Abaixo segue a lista de materiais que sero utilizados no desenvolvimento deste projeto. Ambos esto
disponveis em nossosite para compra.
ESP8266 NodeMCU
Sensor de Temperatura MCP9808 Adafruit
Mdulo rel 2 canais
Jumpers macho-machoe macho-fmea
Protoboard
O MCP9808 se trata de um sensor de temperatura de alta preciso o qual utiliza comunicao I2C para
recebimento dos dados. Possui uma preciso de +- 0,25C entre 40C a +125C.
Uma das grandes vantagensdeste sensor, que o mesmo possui tenso de operao que varia de 2.7 a
5,5 Volts, ou seja, voc pode usar facilmente com placas Arduino, esp8266, Raspberry PI dentre outros
embarcados sem se preocupar com circuito externo.
Por padro este sensor vem congurado para funcionar no endereo I2C 0x18. Logo ser necessrio
apenas efetuar o download da biblioteca.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 3/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
O shield da foto acima se trata de um shield rel 5v de 2 canais. Como mencionado, o mesmo funciona
com operao em 5 Volts e tolera acionamentos de at 220 Volts ao limite de 10A.
Outro fator positivo deste rel, que ele tambm pode ser acionado em diferentes tipos de embarcados:
Arduino, ESP8266 e Raspberry PI por exemplo.
No projeto ser usado somente 1 canal do mdulo, o qual ter como objetivo acionar uma lmpada Led a
partir da dashboard da Adafruit.
Para efetuar o cadastro, voc dever acessar o link https://io.adafruit.com/ecaso j possua a conta, s
logar. Dado esse passo, voc ser redirecionado para uma pgina contendo a listagem de
suasDashboards em primeiro momento estar vazio.
Obs: a minha tela j possui algumas dashboards devido ao fato de j estar testando a plataforma.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 4/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Para comear voc dever criar sua Dashboard, para isso, clique no boto Actionse em seguida em
Create a new Dashboard, uma modal dever abrir. Entre com o nome de sua preferncia e uma
descrio, caso queira. Neste caso, darei o nome de FilipeFlop, para nalizar a criao clique no boto
Create.
Abrindo a dashboard criada, voc ver uma tela vazia, como demonstra na imagem abaixo.
Ser nesta tela que voc ir adicionar seus Widgets. Mas Douglas, o que so os tais Widgets? Widgets se
trata de um componente web. Para car mais claro, vamos aos exemplos: podemos citar um boto
ON/OFF, um color picker, um grco, dentre outros.
Tais widgets sero responsveis pela representao de seus itens conectados. No nosso caso teremos dois:
Um grco mostrando a temperatura e um boto ON/OFF para interagirmos com nossa lmpada.
Para criarmos nossos widgets, voc dever clicar no boto azul representado pelo cone de soma. Clicando
nele, abrir uma modal para que voc escolha o bloco(widget) que ser adicionado emsua Dashboard.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 5/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Widgets disponveis
At o momento da escrita deste artigo temos 10 widgets disponveis para uso, sendo eles:
Toogle
Momentary Button
Slider
Gauge
Text
Stream
Image
Line Chart
Color Picker
Map
ser
enviada
r
Pesquisaraprodutos
partir do sensor de temperatura.
m n
Portanto para comearmos, iremos adicionar um grco para que o mesmo represente a temperatura que
0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 6/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Escolhendo o grco Line Chart -, uma modal ser aberta pedindo para que voc escolha um Feed,
provavelmente voc no ter nenhum feed cadastrado(eu tenho pois j efetuei diversos testes antes do
desenvolvimento deste artigo), iremos cadastrar um feed com o nome de mcp9808. Veja na imagem a tela
que aparecer para voc.
Aps ter criado seu feed marque o item criado na tabela abaixo e clique em Next Step. Nesta outra etapa,
ser mostrado as conguraes para o bloco escolhido. Deixarei o padro sugerido pela plataforma. Veja
na imagem abaixo, a demonstrao da tela de conguraes.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 7/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Com o bloco criado, temos nosso primeiro widget adicionado. Falta um, concorda?Para fazer a adio do
prximo widget, neste caso o Toogle -, voc s precisa repetir os mesmos passos que efetuamos para
adio do grco, com a diferena que voc escolher outro widget e associar a outro Feed.
Obs: darei o nome rele01 para o feed responsvel por ligar/desligar a lmpada.
Veja na imagem abaixo como cou nossa Dashboard contendo nossos dois widgets que sero usados no
projeto.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 8/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Caso voc queira organizar sua dashboard, a Adafruit disponibiliza uma interatividade chamada Drag and
Drop, onde voc arrasta os blocos de acordo com sua preferncia para organiz-los.
Caso queria efetuar esta mudana, voc precisa clicar no primeiro quadradinho verde, assim voc ir
habilitar o modo de edio da dashboard, deixe sua dashboard de acordo com sua preferncia e salve suas
conguraes clicando no mesmo quadrado que ter o seguinte texto: DONE EDITING.
Dashboard congurada
Se cadastrar na plataforma;
Criar a dashboard;
Adicionar os Widgets conforme a nalidade deste artigo.
Obs: os nomes dados aos feeds sero usados posteriormente no rmware que ser desenvolvido no
esp8266. Ento lembre-se deles :).
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 9/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Obs: Caso for utilizar o projeto em sua casa por exemplo, recomendado alimentar o mdulorel com
uma fonte externa de 5 Volts.
Dependncias do projeto
Como dependncia do nosso projeto, ter que ser instalado 2 bibliotecas, ambas da Adafruit. A primeira
ser a lib do sensor de temperatura, j a outra, ser a lib para efetuar a comunicao via MQTT com a
plataforma da adafruit.
Ambas libs esto hospedadas nos repositrios da Adafruit no github, voc pode facilmente baix-las e
instalar em sua IDE:
Adafruit_MCP9808_Library
Adafruit_MQTT_Library
Dica: Voc pode facilmente instal-las diretamente da IDE do Arduino atravs do gerenciador de
bibliotecas contido na ide. Abrindo o gerenciador s procurar pelo nome da lib e instal-la. E estar
tudopronto :).
r
Pesquisar produtos
m
Para car claro o uxo que ser desenvolvido, veja na listagem abaixo n
0 como nosso rmware car
0 dividido:
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 10/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Para o desenvolvimento e upload para nosso nodemcu, ser utilizado a IDE do Arduino. Portanto veja
como dever car o script do nodemcu no sketch abaixo.
r m n
46
47 void initSerial();
48 void initPins(); 0 0
Pesquisar produtos
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 11/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
49 void initWiFi();
50 void initMQTT();
51 void initMCP9808();
52 void conectar_broker();
53
54 /*************************** Sketch ************************************/
55
56 void setup() {
57 initSerial();
58 initPins();
59 initWiFi();
60 initMQTT();
61 initMCP9808();
62 }
63
64 void loop() {
65 conectar_broker();
66 mqtt.processPackets(5000);
67
68 // Funo responsvel por ler e enviar o valor do sensor a cada 5 segundos
69 unsigned long currentMillis = millis();
70 if (currentMillis - previousMillis > 5000 && mqtt.connected()) {
71 previousMillis = currentMillis;
72
73 mcp9808.shutdown_wake(0);
74 float c = mcp9808.readTempC();
75
76 delay(200);
77 Serial.print("Temp: "); Serial.print(c); Serial.println("*Ct");
78
79 if (! _mcp9808.publish(c)) {
80 Serial.println("Falha ao enviar o valor do sensor.");
81 }
82 mcp9808.shutdown_wake(1);
83
84 }
85 }
86
87 /*************************** Implementao dos Prototypes ************************************/
88
89 /* Conexao Serial */
90 void initSerial() {
91 Serial.begin(115200);
92 delay(10);
93 }
94
95 /* Configurao dos pinos */
96 void initPins() {
97 pinMode(rele01, OUTPUT);
98 digitalWrite(rele01, HIGH);
99 }
100
101 /* Configurao da conexo WiFi */
102 void initWiFi() {
103 Serial.print("Conectando-se na rede "); Serial.println(WIFI_SSID);
104
105 WiFi.begin(WIFI_SSID, WIFI_PASS);
106
107 while (WiFi.status() != WL_CONNECTED) {
108 delay(500);
109 Serial.print(".");
110 }
111
112
Serial.println();
113 Serial.println("Conectado rede com sucesso"); Serial.println("Endereo IP: "); Serial.println
114 }
r m n
115
116 /* Configurao da conexo MQTT */
0 0
117
void initMQTT() {
Pesquisar produtos
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 12/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
118 _rele01.setCallback(rele01_callback);
119 mqtt.subscribe(&_rele01);
120 }
121
122 /* Inicializao do Sensor */
123 void initMCP9808() {
124 if (!mcp9808.begin()) {
125 Serial.println("Sensor MCP no pode ser iniciado!");
126 while (1);
127 }
128 }
129
130 /*************************** Implementao dos Callbacks ************************************/
131
132 /* callback responsavel por tratar o feed do rele */
133 void rele01_callback(char *data, uint16_t len) {
134 String state = data;
135
136 if (state == "ON") {
137 digitalWrite(rele01, LOW);
138 } else {
139 digitalWrite(rele01, HIGH);
140 }
141
142 Serial.print("Led: "); Serial.println(state);
143
144 }
145
146 /*************************** Demais implementaes ************************************/
147
148 /* Conexo com o broker e tambm servir para reestabelecer a conexo caso caia */
149 void conectar_broker() {
150 int8_t ret;
151
152 if (mqtt.connected()) {
153 return;
154 }
155
156 Serial.println("Conectando-se ao broker mqtt...");
157
158 uint8_t num_tentativas = 3;
159 while ((ret = mqtt.connect()) != 0) {
160 Serial.println(mqtt.connectErrorString(ret));
161 Serial.println("Falha ao se conectar. Tentando se reconectar em 5 segundos.");
162 mqtt.disconnect();
163 delay(5000);
164 num_tentativas--;
165 if (num_tentativas == 0) {
166 Serial.println("Seu ESP ser resetado.");
167 while (1);
168 }
169 }
170
171 Serial.println("Conectado ao broker com sucesso.");
172 }
Testando a Adafruit IO
Para realizar os testes, basta pegar o script acima e modic-lo de acordo com seu cenrio. Digo isso pois,
voc precisa colocar suas informaes da rede wi, suas informaes da Adafruit, e tambm o nome dos
feeds caso tenha colocado diferente do que foi criado aqui.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 13/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Um detalhe importante o uso de umaKeyque utilizada para realizar a autenticao nos servidores da
Adafruit. Voc ir dever encontr-la em sua dashboard no cone que remete a uma chave. S copie e
substitua no seu cdigo.
Com tudo devidamente congurado, voc dever fazer o upload do rmware para seu nodemcu. Quando
o upload estiver terminado, abre o monitor serial para acompanhar o que est acontecendo.
Em um primeiro momento, voc dever ter uma tela semelhante a da imagem abaixo.
Perceba que tudo ocorreu bem conexo com a rede wi e tambm com o broker da Adafruit IO. Veja
tambm, que a temperatura imediatamente j comeou a ser publicada.
Para testar o acionamento de nosso rele, basta ir at a dashboard e acionar o boto on/o. Feito isso, voc
j comear a observar uma certa interatividade entre o boto com o rele e tambm o sensor com o
grco.
Veja os resultados com o grco e o rele acionado e tambm como cou o prottipo do projeto
desenvolvido neste artigo nas imagens abaixo, respectivamente.
r
Resultado Dashboard
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 14/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Aqui, neste artigo usamos algo relativamente simples, para dar aquele start, para apresentar a plataforma
a vocs. Continuarei testando e validando a plataforma como tambm suas bibliotecas oferecidas.
Para quem se interessou pela plataforma, pelo que observei a Adafruit possui liberado o cdigo fonte do
back-end da plataforma no seu github, logo voc pode baixar, instalar em sua raspberry pi e at mesmo
em um servidor que esteja na nuvem Eu efetuei rpidos testes, e realmente funciona :). Fica aqui o link do
repositrio:https://github.com/adafruit/adafruit-io-node
Referncias
Adafruit MCP9808 Precision I2C Temperature Sensor Guide
Biblioteca Adafruit MCP9808
Biblioteca Adafruit MQTT
Pinagem I2C do NodeMCU
Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no nal do artigo),
comente e visite nossa loja FILIPEFLOP !
Posts
r
Relacionados
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 15/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Douglas Zuqueto
Campus Party Brasil 2017: Concurso Leve Seu Como usar acelermetro com ESP8266 NodeMCU
Rob
Conectar com:
O seu endereo de e-mail no ser publicado. Campos obrigatrios so marcados com *
Comentrio
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 16/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Nome * E-mail *
Site
Publicar comentrio
11 Comentrios
Zuquetto, parabns muito bom este tutorial. mais um broker que estou testando. Pela sua experiencia,
saberia me informar se existe a possibilidade de alterar a cor da tela de fundo, pois nesta tela preta muito
ruim de visualizar os componentes.
Acho que este o nico inconveniente deste MQTT.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 17/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
At onde eu vi, infelizmente no possvel realizar a mudana da cor da dashboard :/. Esperamos
que em algum upgrade futuro essa funcionalidade seja implementada :).
Atenciosamente,
Douglas Zuqueto.
Para usar o Momentary Button, basta utilizar a mesma estrutura do Toggle? Obrigado!
Sim, as etapas sero as mesmas. O que mudar ser o feed e as conguraes caso queira.
Vale ressaltar que o Momentary Button enviar somente 1 comando diferente do Toogle que envia 2
comandos(ON/OFF). Citando um exemplo de aplicao seria inverter o estado do rele quando o
boto fosse clicado.
Atenciosamente,
Douglas Zuqueto
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 18/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Zuquetto, timo post!! Sabe se existe algum app android para acesser o dashboard Adafruit IO?
Obrigado pelo Feedback Gerbert :D. Ocialmente no, mas eu conheci o app IoT MQTT Dashboard,
legal e muito ecaz. Relatei sobre ele em meu blog, ca a referncia caso lhe interesse:
https://douglaszuqueto.com/artigos/conhecendo-o-aplicativo-iot-mqtt-dashboard
Com ele voc consegue se conectar facilmente Plataforma da Adafruit usando as conguraes e
devidas credenciais
Perfeito! Voc conseguiria nos ajudar, a partir deste post, dar sequncia com a congurao do
MQTT Dashboard? O aplicativo excelente, porm para ns leigos ele se torna muito
complexo, em funo da necessidade da congurao inicial para efetuar a conexo. Tenho
certeza que com sua base de conhecimento voc iria desmembrar o problema e tambm
nossas dvidas.
r
Pesquisar produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 19/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Zuqeto, a partir de suas dicas efetuei algumas alteraes no projeto, entendi a API do
MQTT, como voc mencionou ela muito simples, o resultado nal esse:
https://goo.gl/photos/Thjy66sydCaGyncX7
Valeu pelo post e pelas dicas do MQTT Dashboard!
Pow, muito bacana heim Gerbert? Parabns mesmo pelo projeto e aplicao :D.
Seria bacana voc postar o projeto no grupo Arduino Brasil :), caso ainda no seja
membro, faa a solicitao que lhe adiciono l ;).
Link: https://www.facebook.com/groups/arduino.br/
Ol Douglas,
r m n
ADAFRUIT tem biblioteca. S que pretendo criar um log no dashboard para que haja a coleta de, por
exemplo uma semana de dados. Ser que h essa opo? 0 0
Pesquisar produtos
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 20/21
201796 AdafruitIOUmanovaplataformadeIoTFilipeFlop
Abraos!
Ento, sobre a substituio no tem problema algum, somente ter que adaptar o rmware.
Sobre o log, creio que no tenha exatamente esta funcionalidade. Porm possui o Widget Stream,
que um log de tudo que est acontecendo de acordo com seu feed.
Uma alternativa seria baixar os dados(formato csv ou json) que queira de acordo com seu Feed e
depois manipul-los atravs de um script python(por exemplo).
Se voc entende de Python e caso lhe interesse, eu escrevi em meu blog como integrar uma
aplicao com banco de dados sqlite, bem simples mesmo, porm algo bem funcional, segue o link
-> https://douglaszuqueto.com/artigos/integrando-a-aplicacao-web-com-banco-de-dados
Pesquisar
Categorias
Arduino (82)
Displayr
Pesquisar (7)
produtos
m n 0 0
https://www.filipeflop.com/blog/adafruitioplataformaiot/ 21/21