Desenvolvimento IoT com Java 8 e Raspberry Pi

Aprenda neste artigo o que é, quais são os principais conceitos e como desenvolver um projeto voltado para a Internet das Coisas.

Fique por dentro
Este artigo tem como objetivo principal a introdução ao conceito de Internet das Coisas, bem como explorar suas potenciais aplicações, e, como o Java 8 consegue suprir as demandas de desenvolvimento originárias dessa nova tecnologia. Além dos conceitos de IoT, veremos como o Raspberry Pi, um microprocessador de baixo consumo e custo, pode ser utilizado como interface para a prototipação de projetos para a IoT.

A Internet das Coisas é hoje uma das áreas mais estudadas por entusiastas de tecnologia da informação. Assim, além de estar presente em vários artigos, tem despertado o interesse de várias empresas do setor de tecnologia, como Google, Oracle, Qualcomm e Microsoft.

O conceito de IoT, como veremos a partir de agora, é um pouco amplo e, portanto, difícil de resumir em uma sentença. De forma simples, entende-se por Internet das Coisas um ambiente que reúne diversos tipos de hardware, as “coisas” (things), que se comunicam entre si (M2M, ou Machine to Machine) com pessoas (através de displays de LED, por exemplo) ou ainda com outros sistemas computacionais (via Wi-Fi, Bluetooth, etc.). A Internet das Coisas, no entanto, transcende a conectividade entre sensores, motores, micro controladores, gadgets vestíveis, entre outras opções, e tem como propósito principal elevar o nível de comunicação entre dispositivos e seres humanos, transformando pulsos elétricos em dados que podem ser manipulados e enviados para sistemas maiores, com interface mais amigável.

Segundo a Gartner, referência de consultoria em tecnologia, hoje temos cerca de cinco bilhões de dispositivos interconectados que compõem a IoT e esse número deve saltar para 25 bilhões até 2020. Com essa quantidade de dispositivos gerando informações que trafegam na rede, alguns desafios precisam ser superados, tais como:

  1. Como processar essa quantidade de informação e transformá-la em algo útil?
  2. Como desenvolver soluções de integração entre bilhões de equipamentos e sistemas de grandes corporações?
  3. Quem será o desenvolvedor de tais sistemas? Um engenheiro da computação, eletrônico ou um analista de sistemas?
  4. Um protocolo de comunicação entre os dispositivos tem que ser estabelecido, bem como APIs de acesso a esses protocolos devem ser suportadas pelas linguagens de programação.

Atualmente já existem tecnologias que podem auxiliar na mineração e processamento de dados, tais como as soluções de Big Data de empresas como SAS, Oracle e IBM, superando assim o primeiro desafio. Porém, a resolução desse ponto não é o foco desse artigo.

O segundo desafio também já possui mais de uma solução, e entre as principais podemos citar as plataformas Arduíno e Raspberry Pi. O Arduíno é uma plataforma de prototipagem composta de uma placa microcontroladora, uma IDE e uma linguagem de programação própria, baseada em C e C++. O hardware segue os princípios do “hardware open source”, ou seja, tem uma especificação que pode ser fabricada por qualquer pessoa que estiver disposta a construir sua própria placa. A concepção dessa plataforma surgiu como um projeto da universidade italiana Ivrea Interaction Design Institute, com o objetivo de fornecer uma solução de baixo custo para que estudantes de engenharia pudessem desenvolver seus trabalhos acadêmicos mais facilmente.

O Arduíno pode ser conectado a diversos sensores, estabelecendo uma comunicação de duas vias com eles, de tal maneira que é possível ler dados dos sensores e escrever comandos (ligar e desligar, por exemplo) e parâmetros de configuração, tais como precisão de amostra, leitura contínua ou não, sentido de rotação de um motor, etc.

Devido às características supracitadas, o processo de desenvolvimento de uma aplicação para a plataforma Arduíno é um pouco diferente do processo de desenvolvimento de software para um microcomputador. O código fonte é compilado da mesma forma, no entanto o produto desse processo é gravado no microcontrolador e a aplicação é executada sempre que o dispositivo é ligado (não há um sistema operacional com janelas e ícones para o usuário iniciar/encerrar a aplicação).

Já o Raspberry Pi (RPi) é um microcomputador completo, com processador, memória RAM e ROM (basicamente um cartão de memória MicroSD), portas USB, HDMI e Ethernet. Esse computador tem aproximadamente o tamanho de um cartão de crédito, opera com apenas 5 volts e possui interfaces que podem ser conectadas a diversos dispositivos.

Um dos diferenciais do Raspberry Pi é que ele roda um sistema operacional. Originalmente, apenas uma versão do Debian customizada para a arquitetura de processadores ARM, mas outros SOs também passaram a ser suportados na versão 2 do Pi, tais como o Windows 10, Ubuntu, entre outros. Devido a isso, temos várias opções de linguagens de programação disponíveis para essa solução, como C, C++, Java, Python, etc. Além disso, o Raspberry viabiliza diversas opções de conectividade com sensores, tais como os protocolos I²C, SPI e UART. Pode-se dizer até que todos os sensores compatíveis com o Arduíno são compatíveis com o Raspberry Pi.

Com todos esses diferenciais, por que escolher o Arduíno, se o Raspberry Pi pode me oferecer mais? Em favor do Arduíno, temos que levar em consideração que além de ser mais barato e consumir menos energia, conta também com portas de entrada analógicas (capazes de ler informações mais precisas e não apenas 0s e 1s, como as digitais), que podem ser úteis em algumas situações. A escolha de qual plataforma utilizar, portanto, deve ser feita de acordo com as necessidades do projeto.

O terceiro desafio – quem vai desenvolver para IoT – é algo a se pensar, pois exigirá de um analista de sistemas com conhecimento básico em eletrônica. Palavras pouco comuns para um desenvolvedor, como resistores, transistores e voltagem, passam a fazer parte do vocabulário de quem se interessa por IoT. Desse modo, o perfil de profissional, ou entusiasta, que deseja adentrar nesse universo de sensores, motores, etc., é o de um engenheiro? À primeira vista, a resposta é sim. Um engenheiro da computação ou eletrônico, além do conhecimento de eletrônica, tem uma carga horária de faculdade bem interessante em linguagens de programação como C++ e Java, o que lhes dá boas condições para desenvolver uma integração entre sensores e um sistema computacional. Se você não tem esse perfil, no entanto, não se preocupe e não desista de conhecer esse novo mundo que se apresenta através da IoT. Provavelmente você terá um pouco mais de dificuldade, mas não precisa ser “cientista de foguetes” para fazer um LED acender quando a temperatura do ambiente atingir um valor muito alto, por exemplo.

O último ponto levantado, sobre protocolos e APIs de acesso ao hardware, é onde entra em cena o Java. Além de ser uma linguagem consagrada no mercado e com uma vasta quantidade de desenvolvedores, ainda tem uma característica fundamental para a adoção em um cenário tão heterogêneo quanto o da IoT, o fato de ser multiplataforma. Hoje em dia temos o Java rodando em artefatos simples como cartões, a poderosos computadores, passando por placas embarcadas, dispositivos móveis e outros aparelhos de menor poder de processamento e memória. Em sua essência, o Java mantém as mesmas características em todas as plataformas na qual funciona, apenas adaptando-se às particularidades de cada uma. Por isso temos alguns sabores de Java e dentre essas variações, duas podem ser utilizadas para IoT: Java Micro Edition e Java Standard Edition Embedded."

[...] continue lendo...

Artigos relacionados