Internet of Things na prática

agosto 9, 2016 5:00 pm Publicado por Deixe um comentário

Muito se tem falado sobre IoT (Internet of Things) e em como ela irá revolucionar a maneira de fazer negócios e mudar a vida das pessoas em áreas como medicina, segurança e cidades inteligentes. Mas o que é exatamente IoT?

IoT ou Internet das Coisas (Internet of Things, em inglês) é um termo utilizado para designar a ideia de um dispositivo/hardware que pode interagir e capturar dados do ambiente ao seu redor, de modo que essas informações possam ser enviadas para a internet (via http, por exemplo) e sejam relevantes para o usuário.

Como exemplo de case de IoT, podemos citar a OnFarm Systems, uma statup americana que melhorou a produtividade e gerenciamento na área agrícola, ajudando a expandir negócios no setor. Agora, a startup visa incluir resolução de problemas ambientais, como a conservação de água em larga escala.

Neste artigo tem um tutorial para construir um case simples de IoT. Nele, será possível capturar a temperatura do ambiente por meio de um Arduíno (nosso hardware) e enviá-la para uma Dashboard de IoT com uma aplicação em Node, enquanto teremos outra aplicação em Node esperando por eventos postados nessa Dashboard e apresentando os dados coletados em uma página html.

Então, são 3 abordagens:

  1. Hardware
  2. Aplicação que enviará os dados do Arduíno
  3. Aplicação que consumirá os dados do Arduíno

Vamos lá?

1. Hardware

É desejável que, para melhor aproveitamento, você tenha algum conhecimento de Arduíno – como capturar um valor de um sensor, por exemplo. Mas isso não é um requisito, uma vez que teremos o sketch ilustrado.

Para montar nossa sketch, vamos precisar de:

  • Arduíno (Uno R3, por exemplo)
  • Cabos para fazer o esquema elétrico
  • Resistor
  • Sensor de Temperatura NTC
  • Cabo Usb-Serial

Instruções

O primeiro passo é fazer o download do ambiente de desenvolvimento do Arduíno. Depois, é só seguir os passos da instalação.

Para esse exemplo, vamos trabalhar com Firmata, um protocolo que permite comunicação de microcontroladores a partir de um software em um computador (pode ser uma Raspberry, por exemplo, mas para esse primeiro tutorial vamos usar um computador/desktop).

Para utilizar o protocolo Firmata, vamos subir um projeto já existente, que proverá o modelo de comunicação entre o computador e o Arduíno. Para isso, basta ir no menu da IDE: Arquivo/Exemplos/Firmata/StandadFirmata. O projeto vai carregar na IDE e, logo em seguida, você deve subi-lo para o Arduíno com o botão carregar. Essa mensagem deve ser exibida no terminal:

image02

Depois disso, o Arduíno está apto para utilizar o protocolo Firmata para se comunicar via USB com o notebook/computador.

A ideia para o nosso hardware é a de um Arduíno capturar a temperatura local assim que nossa aplicação Node solicitar essa informação. Por isso, vamos alimentar nosso sensor com 5V do Arduíno e teremos um divisor de resistência, com o qual vamos realizar a leitura do sensor na porta analógica A0 e fechar o circuito no GND.

Segue o esquema elétrico para o Arduino:

image00

Nosso hardware vai ficar assim:

image03-700x933

2. Aplicação que enviará os dados do Arduino:

Para essa etapa, vamos trabalhar com uma lib chamada johnny-five. Ela permite solicitar informações e comandar nosso Arduíno, utilizando-se do modelo de comunicação Firmata. Para realizar a postagem da temperatura capturada em uma Dashboard IoT, utilizamos a lib node-dweetio. O código da nossa aplicação pode ser clonado/baixado neste repositório.

Nosso arquivo principal vai ficar assim:

image05-1 (1)

Observe que a implementação é extremamente simples. Definimos um sensor para temperatura, no qual o parâmetro pin especifica em qual porta vamos esperar pelo dado e o parâmetro threshold, que especifica de quantos em quantos graus vamos disparar o evento ‘change’. Para nosso exemplo, utilizamos 4.

A aplicação espera pelo evento ‘change’ do nosso sensor, ou seja, vai esperar por uma mudança de temperatura e, após isso, vai enviar os dados para uma thing (web-client-iot-cs) em uma Dashboard IoT.

3. Aplicação que consumirá os dados do Arduíno:

Por fim, vamos criar uma aplicação que vai ouvir a Dashboard de IoT, para onde a aplicação que controla o Arduíno envia os dados, ou seja, a mesma espera por postagens feitas por nossa aplicação server.

Utilizamos a lib socket.io para prover a comunicação em tempo real entre nossa dashboard IoT e nossa aplicação que vai apresentar os dados postados. Para o front-end, utilizamos um modelo pronto feito em bootstrap, para facilitar o trabalho. O código do projeto client que vai consumir essas informações pode ser baixado neste repositório. Nosso arquivo principal deve ficar assim:

image07

Utilizamos o express para gerar a estrutura de roteamento. Os dois principais pontos de nosso arquivo app.js são os eventos “on(‘connection’,..)”, que é disparado ao acessarmos nossa página index, estabelecendo uma conexão socket, e o evento “dweetio.listen_for(‘web-client-iot-cs’,..” que irá ouvir nossa thing na Dashboard IoT. Quando for postado algo lá, nosso socket vai emitir o evento ‘sensor-data’ para nossa index, que irá receber esses dados e disponibilizar em uma tabela:

image04-1 (1)

image06 (1)

A partir daí, nossa aplicação deverá criar uma nova linha na tabela para cada vez que nossa aplicação server enviar uma temperatura diferente capturada em nosso hardware (respeitando o range de 4º estabelecidos).

image01

Esse é um case bem simples de IoT. Em breve, podemos postar aqui tutoriais com cases mais complexos.

Ficou alguma dúvida ou tem alguma sugestão? Aproveite os campos abaixo!

Se você quiser estudar mais sobre o assunto, pode ver essas referências:

Até a próxima!

Mensagem do anunciante:

Ferramentas da IBM exclusivas para criar seu próximo app! Acesso a APIs de computação cognitiva, livros técnicos da O'Reilly, Packt e muito mais no developerWorks Premium. Saiba mais.

Source: IMasters

Categorizados em:

Este artigo foi escrito pormajor

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *