Desenvolvimento

6 abr, 2017

Programação para IoT

Publicidade

Bem-vindo à era da Internet das Coisas! Uma tecnologia que tem a finalidade de conectar objetos de uso diário das pessoas – de tênis e geladeira a carros –  à internet, de forma que gerem informações relevantes, melhor experiência de uso e inúmeras vantagens, como eficiência no consumo de energia elétrica, segurança residencial, automação de tarefas na agricultura e pecuária de precisão, acompanhamento médico e clínico de pacientes, entre muitas outras. Basta uma boa imaginação e uma excelente aplicabilidade para os negócios para utilizar sistemas de IoT em benefício das pessoas.

Neste artigo, faremos uma demonstração do que é possível fazer com IoT: um dispositivo que informe a temperatura atual do ambiente que está sendo monitorado. Depois, será possível criar um software cliente para mostrar esses dados.

Como posso começar a programar para IoT?

Para o nosso projeto iremos utilizar a placa Arduino e o sensor LM35 para monitorar a temperatura do ambiente.  Com os dados gerados por esse projeto, já podemos ter algumas ideias de aplicações como uma estação de monitoramento da sala de servidores de TI, controle de temperatura do escritório ou da nossa própria casa, entre outros. Também podemos expandir essa ideia para um ecossistema de IoT, onde de acordo com uma determinada leitura de temperatura, podemos automaticamente acionar o ar-condicionado para climatizar o ambiente, entre outros fins.

Utilizaremos o protocolo MQTT (Message Queue Telemetry Transport) projetado pela IBM, que tem como objetivo principal enviar dados através de redes intermitentes. Este protocolo foi baseado em vários conceitos que garantem uma alta taxa de entrega das mensagens e que seja simples e leve. Ele utiliza um middleware chamado “broker”, que é responsável em receber, enfileirar e disparar mensagens recebidas dos publishers (responsável por se conectar ao broker e publicar a mensagem) para os subscribers (responsável por se conectar ao broker e receber as mensagens que ele tiver o interesse). Por utilizar o padrão de projeto de publish/subscribe, o MQTT utiliza o conceito de topics (tópicos) para processar as mensagens, isto é, cada mensagem é enviada para um determinado assunto. Vamos começar a montar nosso exemplo, que realizará a medida da temperatura de um equipamento (“Thing” ou “coisa”).

O que iremos precisar?

  • 1 Arduino Uno
  • 1 Shield Wi-Fi CC3000
  • 1 Sensor de Temperatura LM35
  • 1 Protoboard
  • 3 Jumpers macho/macho

Vamos montar nosso exemplo, utilizando uma placa Arduino, conforme ilustrado na figura abaixo:

Placa de Arduino configurada. Não esqueça de adicionar o shield de Wi-Fi antes de conectar os jumpers.

Mosquitto

O Mosquitto é um broker MQTT open source, compatível com as versões 3.1 e 3.1.1 do protocolo, sendo adequado para mensagens de IoT, com sensores de baixa potência ou dispositivos móveis, tais como smartphones, computadores embutidos ou microcontroladores Arduino. Baixe e instale-o no seu computador. 

Configurando o software Mosquitto

No terminal podemos executar os seguintes comandos:

Ativar o software mosquitto
Subscribe em um tópico mosquitto_sub -t “nomedotopico” -h “servidor”

Exemplo: mosquitto_sub -t temperatura -h 192.168.2.5

Publish em um tópico mosquitto_pub -t “nomedotopico” -h “servidor” -m “mensagem”

Exemplo: mosquitto_sub -t temperatura -h test.mosquitto.org -m “25”

Programando nosso Arduino

Para que possamos utilizar o MQTT precisamos da biblioteca PubSubClient e também do Adafruit_CC3000. É preciso baixar essas bibliotecas para desenvolver nosso exemplo.  Após baixá-las, devemos disponibilizá-las para nossa IDE, colocando dentro da pasta libraries do Arduino. Para quem tem Mac: abra o Finder ⇒ Aplicativos ⇒ Botão direito sobre a Arduino IDE ⇒ Mostrar Conteúdo de Pacote ⇒ Contents ⇒ Java ⇒ libraries.

Vamos configurar nosso exemplo. Para isso, abrir a Arduino IDE, em seguida digite o código disponível em https://github.com/heiderlopes/iot_imaster/tree/master/arduino e altere os parâmetros necessário de acordo com o seu projeto.

Quais parâmetros devemos modificar? 

  • #define WLAN_SSID “XXXXXXXX” – nome da sua rede Wifi 
  • #define WLAN_PASS “XXXXXXXX” – senha da sua rede Wifi 
  • #define LM35 A – porta analógica do sensor de temperatura conectado 
  • ArrayToIp server = { 5, 2, 168, 192 } – endereço IP do servidor MQTT  invertido. Por exemplo: se o IP for 192.168.2.5 deverá ficar { 5, 2, 168, 192} 
  • mqttclient.publish(“temperatura”,”Device01 – Conectado”) – o primeiro parâmetro do publish é o tópico e o segundo é a mensagem a ser enviada 
  • temperatura = (float(analogRead(LM35))*5/(1023))/0.01; – conversão da temperatura para graus Celsius
  • void callback (char* topic, byte* payload, unsigned int length) { } – callback para receber as mensagens enviadas 

Realizando o deploy do código para a placa Arduino

Para “enviar e publicar” o nosso código no Arduino, siga os seguintes passos:

  1. Conecte sua placa na porta USB do seu computador
  2. Defina a placa que você está utilizando através do Menu Ferramentas ⇒ Placa ⇒ SUAPLACA
  3. Selecione a porta USB a qual seu Arduino está conectado
  4. Clique no botão Carregar
  5.  Abra o Serial Monitor e acompanhe o seu device se conectando à rede.
Resultados das configurações realizadas dos passos 1 ao 5. Atente-se à velocidade, ela deverá ser o mesmo valor informado no método Serial.begin que se encontra no método void loop(void).

6. Inscreva-se no tópico para visualizar as temperaturas enviadas pelo sensor. Por exemplo: mosquitto_sub -h 192.168.2.5 -t temperatura

Teremos o seguinte resultado:

Pronto. Com isso já temos o nosso dispositivo informando a temperatura atual do ambiente que está sendo monitorado. Agora, podemos criar um software cliente para mostrar esses dados (pode ser um aplicativo Android, uma página Web, ou até mesmo um outro Arduino para acionar um led caso a temperatura esteja muito alta).

Enfim, essa foi uma pequena demonstração do que podemos fazer com a tecnologia de IoT Esperamos que você tenha tido uma boa experiência e que acompanhe de perto essa realidade, pois muitas empresas estão investindo nisso, e cada vez mais o mercado de trabalho necessitará de bons desenvolvedores que façam uso da tecnologia de IoT.

***

Artigo escrito em colaboração com Heider Lopes, professor da disciplina de Desenvolvimento de Aplicações Móveis aplicando Internet das Coisas (Beacons, Drones, 3D printer e Automóveis) na Faculdade de Tecnologia FIAP.