Oficina Maker de IoT - Conecte sua planta a Internet com o IBM Watson IoT

Oficina Maker

Neste tutorial vamos explicar como conectar sensores que monitoram uma planta à Internet utilizando um conjunto eletrônico simples e a IDE Arduino. Com um módulo NodeMCU, encontrado no mercado, conectamos 3 sensores (de umidade de solo, de temperatura e de umidade) e conectamos o módulo a uma plataforma de nuvem. Para esse experimento foi escolhido o IBM Bluemix. A seguir está listado o que é necessário para a experiência.

 

O material utilizado para a oficina foi:

  • 1 Node MCU
  • 1 Cabo USB
  • 1 Sensor Umidade de Solo
  • 20 Unidades Cabos Jumper  Macho - Macho
  • 1  Sensor DHT11
  • 1  Protoboard
  • 1 planta (utilizamos um vaso pequeno com Margarida)

 

Foi utilizado o sistema operacional Windows 10 para a oficina. Nele foram instalados.

 

  1. Instalação da IDE Arduino

Entre neste link e faça o download da IDE Arduino. Utilize a opção Windows ZIP file for non admin install. Baixe o zip e descompacte na pasta c:

 

  1. Instalação do plugin para uso do NodeMCU

Abra a IDE do Arduino e instale o Plugin para NodeMCU. Para isso selecione File > Preferences e na opção Additional Boards Manager URLs coloque o seguinte endereço:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Confirme clicando em OK.

Selecione Board > Board Manager

 

 

Procure por NodeMCU e clique em Install.

 

 

E então selecione a placa utilizada nessa experiência. Procure por NodeMCU.

 

 

Antes de conectar o NodeMCU ao PC, é necessário instalar o driver USB para que o Windows 10 reconheça a placa como dispositivo válido. Existem dois NodeMCUs diferentes, cada um deles necessita de um driver diferente. A seguir estão apresentados dois drivers que podem ser utilizados, instale o que for utilizar no seu caso.

 

https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

https://github.com/nodemcu/nodemcu-devkit/tree/master/Drivers

 

Para utilizar a biblioteca do sensor DHT, é necessário fazer o download da pasta lib no link a seguir:

https://github.com/adafruit/DHT-sensor-library

e colocá-la na mesma pasta onde a IDE Arduino busca as bibliotecas. No meu caso, a pasta é a seguinte C:\Users\Thiago\Documents\Arduino\libraries.

 

É necessário instalar a lib PubSubClient na IDE do Arduino. Para isso clique em Sketch > Include Library > Manage Libraries.

 

 

Procure por PubSubClient e instale o plugin.

 

 

Para utilizar o IBM Bluemix, é necessário criar uma conta grátis antes da experiência, utilizando o browser em um PC conectado à internet.

https://console.bluemix.net/registration/

 

Configurar o dispositivo IoT no IBM BLUEMIX

 

Vamos criar um dispositivo IoT desde o início utilizando o IBM Bluemix.

 

Acesse

https://console.bluemix.net/catalog/

e faça uma conta grátis.

 

Este é o Dashboard de entrada do Bluemix:

 

 

Clique em Explore our Offerings.

Digite internet of things na barra de busca.

Clique em Internet of Things Platform Starter.

 

 

Crie um nome único no campo App name. Eu chamei de esalqApp.

Clique em Create para criar o aplicativo.

 

 

Aguarde. Esse comando pode demorar um pouco.

 

Veja que a mensagem starting fica aparecendo…

 

 

E então, após um tempo, muda o status pra Running.

 

 

A partir de agora, o app está no ar e funcionando. Volte pro Dashboard clicando na esquerda acima.

 

 

Clique no serviço de internet of things criado pra sua aplicação. No meu caso o nome do serviço é esalqApp-iotf-service. Clique nele.

 

 

Clique em Launch para entrar no serviço IoT.

 

 

O seguinte painel vai abrir.

 

 

Clique em devices, no desenho do chip, do lado esquerdo da tela.

 

 

Clique em Add Device. Você vai criar um novo dispositivo.

 

 

 

Clique em Create a device type.

 

 

Clique em Create Device Type. Eu chamei o meu dispositivo de Device1.

 

 

Não coloque nada no campo descrição. Clique em Next.

 

 

Clique em Next.

 

 

Clique em Next.

 

 

Clique em Create.

 

 

Clique em Next. Em Device ID, eu nomeei meu dispositivo como D1.

 

 

Cliquei em Next.

 

 

Clique em Next.

 

 

Clique em Next.

 

 

Clique em Add.

 

 

Copie esses dados. Vamos precisar deles para configurar o nosso software.

 

O tipo de dispositivo criado chama Device1, e o seu ID chama-se D1.

 

Organization ID n554fo

Device Type Device1

Device ID D1

Authentication Method token

Authentication Token k9&x1&C?VM)gpXhITg

 

 

Feche essa janela. O dispositivo está criado.

 

No painel de Devices, é possível verificar que o dispositivo foi criado e está disponível para uso.

 

 

Do lado esquerdo, clique em apps.

 

 

Clique em Generate Api Keys.

 


 

Anote esses dados:

  • API Key a-n554fo-lluxr4ht88
  • Authentication Token Cti!qZ-!a5_HHgU?ZO

 

Clique em generate, para gerar uma nova API. Vamos nos conectar utilizando ela.

 

 

Firmware do NodeMCU

 

Baixe o arquivo da oficina OficinaMakerIoTEsalqShow.ino e modifique os campos que estão marcados como XXXXX. É necessário modificar o firmware para incluir as informações que acabamos de gerar no IBM Bluemix:

 

Os dados que conseguimos foram os seguintes:

 

Organization ID n554fo

Device Type Device1

Device ID D1

Authentication Method token

Authentication Token k9&x1&C?VM)gpXhITg

 

API Key a-n554fo-lluxr4ht88

Authentication Token Cti!qZ-!a5_HHgU?ZO

 

Então modificamos o firmware abaixo dessa forma:

 

//__ Informações do dispositivo
#define DEVICE_TYPE  "Device1"
#define DEVICE_ID    "D1"

//__ Informações da conexão com o servidor
#define ORG     "n554fo"
#define TOKEN   "Cti!qZ-!a5_HHgU?ZO"

//__ Variáveis de conexão com o servidor (Não customizaveis)
char server[]   = ORG ".messaging.internetofthings.ibmcloud.com";
char topic[]    = "iot-2/type/Device1/id/D1/evt/1-anl/fmt/json";
char authMeth[] = "a-n554fo-lluxr4ht88";
char token[]    = TOKEN;
char clientId[] = "a:" ORG ":" DEVICE_ID;

 

O firmware utilizado está a seguir:

 

 

Montagem do Hardware e programação

 

Monte o circuito na protoboard conforme a figura a seguir. Utilize o pino D4 para o dispositivo DHT11, pino 3 (dispositivo azul) e o pino A0 para o sensor de umidade de solo, pino 1. Ligue a alimentação de ambos os sensores, GND e 3V, nos sinais do NodeMCU. Entre os pinos 3 e 4 do sensor DHT11, coloque um resistor de 10k.

 

 

A seguir está uma foto de como fica o hardware montado.

 

 

Conecte o dispositivo na USB do PC. Verifique se o PC reconheceu o dispositivo. Clique em Tools > Port e verifique se a placa aparece em alguma COM, como, por exemplo, COM5. Compile e Programe utilizando a opção Sketch > Upload. O dispositivo vai ser programado, vai iniciar, se conectar à Internet e depois à IBM e vai começar a enviar dados pra lá.

 

Verificando se os dados chegaram na nuvem

 

Pra ver se estão chegando as informações na IBM, acesse

https://console.bluemix.net/catalog/ e vá até o Dashboard.

 

 

Clique no serviço - IoT Service.

 

 

 

Clique em launch:

 

 

Clique em devices. Escolha um device e clique:

 

 

Selecione o dispositivo, role a barra e veja as mensagens chegando.

 

 

Trabalhando com Node Red e lendo os dados dos dispositivos

 

Volte para o Console e abra o app. No meu caso, abriu uma nova janela em:

https://esalqapp.mybluemix.net

 

 

 

Clique em Next.

 

Clique em Not Recommended e em Tick this box e clique em Next.

 

Clique em finish.

 

 

 

Clique em Go to your Node-Red flow editor.

 

 

A seguinte tela vai abrir. Clique em IBM IoT App In:

 

 

Em API Key, clique no lápis ao lado do nome.

 

 

Utilizei os seguintes parâmetros:

Name Device1

API Key a-n554fo-lluxr4ht88

Authentication Token Cti!qZ-!a5_HHgU?ZO

 

Clique em Add.

 

 

Clique em done. Clique em Deploy no lado direito acima.

 

 

A compilação é um sucesso! Clique em debug no lado superior direito da tela. Conecte o dispositivo à internet.

 

 

Os dados vão chegar como na imagem anterior.

 

Se clicar no lado direito na mensagem que está chegando, é possível visualizar todos os dados.

 

 

Apague tudo e deixe apenas os seguintes blocos:

 

 

Na busca, na esquerda acima, digite change.

 

 

Arraste três balõezinhos desse pro meio do diagrama.

 

 

Refaça as conexões da seguinte maneira:

 

 

Clique no primeiro balãozinho laranja e preencha.

 

 

Faça o mesmo para o segundo.

 

 

Faça o mesmo pro terceiro.

 

 

O diagrama então fica assim:

 

 

Clique em deploy.

Três dados vão chegar e já estão filtrados.

Umidade do Solo, Temperatura e Umidade do Ar.

 

 

Instalando a Interface de usuário para visualizar os dados

 

Vamos instalar um plugin de interface com o usuário.

 

 

Clique em install.

 

 

Procure por node-red-contrib-ui. Clique em install.

 

 

Clique em install. Procure por node-red-contrib-aggregator e selecione install para instalar.

 

 

Clique em close. Do lado esquerdo é possível encontrar agora as funções para interface de usuário.

 

 

Programação dos paineis para visualizações dos sensores

 

Vamos usar o Gauge

Arraste 3 balõezinhos de Gauge para o node-red

 

 

Conecte os três aos três sensores.

 

 

Clique no primeiro Gauge. Ao lado de Tab, em Add new ui_tab…, clique no lápis. Coloque o nome Home e clique em Add.

 

 

Preenchi o primeiro dessa forma:

 

 

Clique em Done. Cliquei duas vezes no segundo Gauge e preenchi da seguinte forma.

 

 

Cliquei em Done. Cliquei duas vezes no terceiro Gauge e preenchi da seguinte forma.

 

 

Cliquei em Done. Copiei a URL que estava no topo do browser e modifiquei o final para ui

https://esalqapp.mybluemix.net/red/#flow/deb0d57.1c46528

https://esalqapp.mybluemix.net/ui

e abra em uma nova aba do navegador. Veja a imagem que deve aparecer no browser.

 

 

Agradecimentos

 

Fizemos essa oficina a pedido da Secretaria de Agricultura do Estado de São Paulo. Fabio Souza e Thiago Lima representaram o Embarcados neste evento. Mais de 50 pessoas realizaram a oficina nos dias 10 e 11 de outubro durante a EsalqShow. Essa foi uma ação para promover o próximo evento chamado Agrifutura, que vai ser realizado no fim do mês de novembro de 2017 em São Paulo.

 

Gostaríamos de agradecer a Daniel Junho e Jorge Guzman que indiretamente ajudaram na construção do experimento, por conta de sua participação nas noites de Computação Cognitiva do LHC, Laboratório Hacker de Campinas.

 

Gostaríamos de agradecer ao IBM Thinklab pela distribuição dos vouchers para a realização da oficina.

 

Gostaríamos de agradecer também à Secretaria que viabilizou a realização desse evento.

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Thiago Lima
Apaixonado por sistemas digitais e circuitos eletrônicos, ja contabilizo 16 anos trabalhando com desenvolvimento de produtos eletrônicos. Formado na USP Sao Carlos, com mestrado em Engenharia Elétrica no Rochester Institute of Technology pelo CsF, atualmente lidero boa parte das operações do Embarcados, buscando levar conhecimento de sistemas eletrônicos para o Brasil. Experimentar o mundo das startups nos EUA foi transformador. La fui cofundador de uma startup de tecnologia chamada Una, sendo acelerado e incubado por um programa especial de Startups no RIT. Ao final, recebemos um prêmio de melhor startup do programa. No Laboratório Hacker de Campinas sou um dos entusiastas de novas tecnologias e apoio iniciativas da comunidade. Tambem participo de atividades comunitarias e sou um dos responsáveis pela Plataforma Ituiutaba Lixo Zero, onde escrevo regularmente artigos sobre redução de resíduos. Sou sonhador mesmo e quero acender a luz ?

3
Deixe um comentário

avatar
 
3 Comment threads
0 Thread replies
4 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Thais C. MoraesHelio Coragemluiz leonardo moreira martins Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Thais C. Moraes
Visitante
Thais C. Moraes

qual versão da IDE do Arduíno que você utilizou?

Helio Coragem
Visitante
Helio Coragem

Excelente artigo! Quem já mexeu com este mix de tecnologias sabe das dificuldades da chegada. Isto é para poucos. Parabéns!

luiz leonardo moreira martins
Visitante
luiz leonardo moreira martins

Parabéns!!! Show!!! Muito bem detalhado e de grande valia.