O Mundo da Internet das Coisas (IoT)

Enfim a Internet chegou em todas as coisas! Hoje, qualquer objeto possui potencial de ser conectado à Internet e de gerar dados que sejam úteis para tomadas de decisão de uma pessoa ou até mesmo de outras coisas; mais do que isso, qualquer desenvolvedor é um criador com potencial de lançar novos dispositivos com capacidades sensoriais e que permitam diferentes experiências da mesma Internet que sempre esteve presente.

Neste artigo o leitor inicia um mergulho em uma Internet nova e já palpável: a Internet de vários dispositivos interconectados em um ambiente totalmente informatizado e sensorial.

Nesta trilha rumo à exploração de novas formas de interação entre humanos e máquinas, veremos que o Java tem todo o potencial para continuar sendo a linguagem principal de controle desses dispositivos. Portanto, prepare seus sensores!

Com tanta opção de aparelhos como interfaces para acessar aos mesmos sistemas, os laptops se tornaram equipamentos burocráticos para se conectarem à internet e aos poucos estão ganhando funções mais específicas como ferramentas de escritórios, já que esses outros dispositivos estão suprindo as necessidades de entretenimento, comunicação e coleta de informações, antes atendidas somente pelos laptops e PCs.

Gradativamente, as tecnologias vão surgindo e se mesclando em uma trilha de avanço contínuo, melhorando a experiência de interação dos usuários com os sistemas e ganhando velocidade de comunicação e processamento.

E para que tudo isso se torne possível, os servidores corporativos têm acompanhado tal evolução; seja através da migração para as nuvens, ganhando flexibilidade para crescer em infraestrutura e processamentos distribuídos, seja através de arquiteturas orientadas a serviços, tornando as complexidades de negócio cada vez mais modularizadas.

Os desktops e laptops continuam e possivelmente continuarão presentes por muito tempo, sendo predominantes em escritórios de call center, ambientes de desenvolvimento e afins, enquanto os smartphones seguem abrindo o caminho para uma interconexão sem precedentes na história da comunicação.

Agora está chegando a era em que várias coisas pessoais conectarão não só pessoas a pessoas, mas principalmente, coisas a coisas, tudo isso através de uma internet descentralizada e composta por dispositivos capazes de intercomunicação de forma automática. Mesmo uma adega de vinho, uma geladeira, um relógio ou o sistema elétrico de uma casa; coisas impessoais.

A estimativa para os próximos anos é de que aproximadamente 50 bilhões de dispositivos estarão conectados à grande rede. Isto representa um grande desafio de computação em nuvem, infraestrutura de armazenamento e processamento de eventos complexos em uma arquitetura mais elaborada e descentralizada. Este será, certamente, o grande desafio dos servidores corporativos e até mesmo pessoais (leiam-se caseiros). Porém, a maior evolução com a Internet das Coisas provém do fato que hoje os sistemas embarcados têm maior capacidade de processamento. Em grande parte, esses sistemas suportam Java, conseguem rodar serviços mais elaborados, conversar com sensores e dispositivos como câmeras e microfones.

Neste cenário, o foco tenderá a ser concentrado nos dispositivos embarcados. Serão esses dispositivos que efetuarão o processamento final, em vez de coletar informações e enviá-las a um servidor que concentre a inteligência e a força de processamento, como é o modo mais tradicional de arquitetura de sistemas. Esta mudança de paradigma já representa, por si só, um grande desafio no que diz respeito à instalação do software (deploy/delivery contínuo) por causa da quantidade e variedade de dispositivos simultâneos a serem atualizados individualmente com novas versões. Nestas condições, o Java já começa a empreitada levando a vantagem de permitir atualização dinâmica via rede; aliás, vale lembrar que o Java já nasceu com este intuito: o de ser a linguagem de programação de diversas coisas, flexível e potente o suficiente para caber desde em um chip de cartão de crédito, até em um servidor com arquiteturas complexas de processamento.

Pensando neste mercado que está se ampliando, a Oracle se antecipou e preparou mecanismos para que o desenvolvedor Java que hoje se concentra em aplicações comerciais e está acostumado com o desenvolvimento orientado a servidores como JBoss, GlassFish, Tomcat, Jetty, entre outros, possa continuar concentrado nestas ferramentas sem precisar mudar de paradigma ou se preocupar com muitas mudanças no desenvolvimento para plataformas embarcadas. O Java Embedded Suite, assunto explorado na Java Magazine 118, foi criado com a finalidade de suprir estas novas demandas. Através dele, é possível embarcar servidores completos como GlassFish, por exemplo, e utilizá-los como gateway de comunicação com outros dispositivos para enviar o estado de algum sensor ou receber comandos para executar alguma ação como ligar um sensor de Bluetooth, ler o valor de um sensor de humidade ou temperatura, tudo remotamente.

Em um dispositivo de arquitetura ARM, como um Raspberry PI, que é um computador bastante compacto e suficientemente barato, é possível configurar facilmente um servidor e ainda utilizar a sua saída de vídeo HDMI para trabalhar com interface gráfica em um ambiente Linux que hoje possui várias distribuições desenvolvidas para a sua arquitetura. Ele ainda conta com conectores Ethernet e USB, além de GPIO para conexão com sensores, o que permite conectar diversos dispositivos em ideias inovadoras. O Raspberry PI é considerado a tecnologia da vez nesta tendência de Internet das Coisas por apresentar-se já suficientemente completo, barato e compacto para rodar aplicações de processamento mais pesado; podendo ainda ser embarcado em uma solução de automação mais complexa.

Muito se tem falado sobre o termo IoT (Internet of Things), geralmente associado a automação de casas e criação de mecanismos inteligentes em que geladeiras gerenciam a si próprias e às suas necessidades de reabastecimento; banheiras que se enchem sozinhas quando o dono da casa está para chegar de um dia cansativo de trabalho; entre outros cenários. Mas o que faz com que tudo se conecte?

Quando tudo isto se tornará realidade e começará a funcionar como parte do cotidiano? Como o Java se encaixa nesse novo mundo? Como o desenvolvedor deve se preparar para estes novos desafios?

Neste artigo estas questões, entre outras, serão não somente respondidas, mas também exploradas, através da prototipação de um pequeno dispositivo capaz de medir a altura de uma pessoa e enviar essa informação a um Tablet, que poderá ficar na mesa de centro da sala de estar para apresentar ao visitante a sua altura, quando ele passar por baixo de um sensor ao atravessar a porta de entrada da casa.

NOTA: Sistemas embarcados são sistemas computacionais embutidos em um dispositivo completo, cujas funções dedicadas residem juntas a um sistema eletrônico ou mecânico maior. Tipicamente utilizados tanto em aplicações industriais como em aplicações de cliente final, os sistemas embarcados estão incorporando a linha de Internet das Coisas (IoT).

O que é a Internet das Coisas?

Não existe uma definição que explique de maneira geral este termo, principalmente pelo fato de que a Internet das Coisas representa uma ampliação de praticamente toda a ciência da computação como uma evolução natural do modo como as pessoas, de usuários finais a engenheiros, arquitetos e desenvolvedores, enxergam a tecnologia e seus novos meios de proporcionar outras experiências de usabilidade.

Essa evolução implica em diferenças na criação de novos produtos desde a arquitetura de novos dispositivos até o desenvolvimento de softwares e serviços, arquiteturas e infraestruturas de processamento.

Mas existe uma pergunta cuja resposta determina se algo faz parte da Internet das Coisas: um produto de um determinado fabricante pode se conectar aos produtos de outros fabricantes de forma automática? Um leitor de RFID (vide BOX 1) de um fabricante poderia, por exemplo, se conectar ao sistema de um portão eletrônico de outro fabricante para abri-lo ou fechá-lo através de um protocolo padrão?

BOX 1. Sistemas RFID (Radio Frequency Identification)

RFID ou identificação por radiofrequência é um termo genérico para as tecnologias que utilizam frequência de rádio para captura de dados. A forma mais tradicional desta tecnologia se dá através da leitura de etiquetas – mais conhecidas pelo nome em inglês (Tags) – que possuem códigos utilizados para identificar coisas, artigos de produtos, dispositivos ou pessoas.

Na Internet das Coisas, os leitores RFID, junto às etiquetas, apresentam-se como solução eficaz e barata para identificação de objetos ou ainda pessoas em soluções que exigem ações personalizadas.

Um exemplo é o reconhecimento de moradores na automação de uma casa. Qual quarto deve ter sua luz acesa quando determinado morador chegar? Que tipo de música tocar no aparelho de som? Para qual temperatura o ar-condicionado deve ser regulado? Todos estes parâmetros podem ser personalizados em um sistema orientado ao reconhecimento através de um cartão ou etiqueta via leitor RFID.

Para exemplificar esta premissa de intercomunicação entre dispositivos para que estejam aptos à Internet das Coisas, podemos considerar o seguinte cenário: Um morador se aproxima do portão de entrada de sua casa e então uma etiqueta RFID instalada em seu carro é detectada pelo sistema residencial, que desbloqueia o portão e ainda é capaz de identificar quem é o morador que está chegando.

O dispositivo wireless do portão envia uma mensagem via rede e dá o comando para que o quarto de solteiro tenha a luz ligada e o televisor é sintonizado em seu canal de esportes predileto, uma vez que o morador detectado é o filho adolescente de dezoito anos de idade.

Ainda neste cenário, ao reconhecer o adolescente, o sistema regula o ar condicionado do quarto, que teve sua potência reduzida enquanto o adolescente saía para estudar, para ficar mais confortável, na temperatura pré-estabelecida pelo garoto. Como é possível verificar, tudo está funcionando de forma coordenada, pois esta é a grande premissa da Internet das Coisas: coordenação entre múltiplas coisas (sem a intervenção humana).

Por que a Internet das Coisas é o futuro?

Estamos em uma era em que as crianças já nascem com acesso às mais avançadas tecnologias e estão desde muito cedo conectadas ao mundo, muitas vezes através dos próprios pais, que querem compartilhar o crescimento e os momentos dos filhos com toda a família e amigos.

As pessoas querem e fazem questão de estarem conectadas umas às outras, noticiando os mais diversos tipos de atividades cotidianas: uma corrida em um parque, uma cena engraçada do bichinho de estimação, um momento importante no trabalho, como estão ganhando peso, como estão perdendo peso, como estão evoluindo em uma atividade de estudo, na carreira, na escola.

Diante disso, a frase “The internet is everywhere”, vinda do inglês e traduzida livremente para “A internet está em todos os lugares”, nunca se fez tão latente.

Em um cenário como este, com tantos dispositivos se conectando e conectando pessoas, com tanta informação sendo compartilhada, os dispositivos ganham uma extensão essencial para que essa onda de conexão entre pessoas se torne possível e para que seja possível coletar tudo sobre qualquer coisa: os sensores.

Eles podem registrar mudanças de temperatura, claridade, pressão, som, movimento, entre outros. Se entrarmos no campo dos smartphones, então esta lista fica ainda mais interessante: sensores de batimentos cardíacos, velocidade, localização (GPS), vibração, etc.

Esses sensores são os olhos e orelhas dos dispositivos para o que acontece no mundo e permitem que máquinas ganhem sensibilidades que humanos possuem ou, em algumas ocasiões, sensibilidades que nem mesmo humanos possuem, como a detecção de presença de álcool.

Em uma rede em que todos compartilham quase tudo sobre si próprio, aplicativos e dispositivos que necessitem de entradas diretas, ou seja, que precisem de uma tecla digitada ou de um botão pressionado começam a se tornar alternativas menos utilizadas, já que a tendência é que os dígitos e cliques sejam substituídos por movimentos, momentos, cheiros, sabores, substâncias, ondas, luzes e vozes detectados por sensores, sendo estas alternativas mais naturais e sucintas, exigindo menor esforço e concentração do usuário para que a interação ocorra com a mesma ou melhor eficiência.

Antes de falarmos sobre o que os sensores fazem, vamos entender sua eletrônica. Os sensores são parte de uma categoria de dispositivos chamados de sistemas Micro-eletro-mecânicos (sim, esta palavra existe em Português e é abreviada como MEMS em inglês: Micro-Electro-Mechanical Systems) e são manufaturados de forma muito semelhante à produção dos microprocessadores: através de um processo de litografia, possibilitando a concepção de micro sistemas fáceis de serem embarcados nos circuitos integrados de um microcontrolador como um Arduino ou em um microprocessador como um Raspberry PI através dos conectores GPIO ou via wireless (por meio de frequência de rádio) para detectar informações do ambiente.

Nota: Sistema Micro-eletro-mecânico (Micro-Electro-MechanicalSystem, em inglês) é o nome dado para a tecnologia que integra elementos mecânicos, sensores, atuadores e eletrônicos em um pequeno chip que possui instruções de funcionamento inalterável em um firmware. São praticamente micromáquinas programadas para cumprir determinada atividade.

Nota: Na engenharia computacional, litografia é o processo pelo qual se criam os microprocessadores. Neste processo, um líquido foto resistente (ou seja, cuja resistência varia conforme a intensidade da luz) é aplicado sobre um disco de silício em rotação, fazendo com que o líquido seja espalhado uniformemente na placa.

Em seguida, através da projeção de luz Ultravioleta sobre o disco, o líquido reage com a intensidade da luz e forma o desenho dos circuitos em tamanho microscópico. Todos os pontos atingidos pela luz tornam-se solúveis e, portanto, removíveis.

Em seguida, íons de cobre são utilizados para recobrir a área removida e o processo se repete formando as várias camadas que criam o circuito final do chip. Esta etapa de injeção do líquido foto resistente e da sua “escrita” na placa através da luz Ultravioleta é o que chamamos de litografia.

Na prática, como os sensores funcionam?

O funcionamento dos sensores pode ser compreendido através da análise da seguinte situação: um desenvolvedor de sistemas um pouco sedentário resolve entrar em forma andando de patins. Assim, ele resolve instalar sensores de velocidade e distância percorrida em seus patins, além de um dispositivo capaz de enviar essas informações via Bluetooth para outros aparelhos.

O nosso novo esportista também adquire uma balança que, além de medir o peso, é capaz de medir a altura e enviar, também via Bluetooth, essas informações, assim como o IMC (Índice de Massa Corpórea), a outros dispositivos. O nosso desenvolvedor então tem a ideia de unificar todas essas informações da balança e dos patins em um aplicativo de celular que receberá automaticamente o peso aferido.

O aparelho, por sua vez, envia esses dados a um mini servidor Raspberry PI que executa uma aplicação Java Embedded em um web container Tomcat que ele instalou na rede local de sua casa. Com estas informações já sincronizadas com o servidor, ele sai para patinar e ao término emparelha o seu celular com os patins para coletar a velocidade média, tempo e distância percorrida.

Ao chegar em casa, o aplicativo envia essas novas informações ao servidor Raspberry PI, que utilizará essas novas entradas na geração de dados estatísticos sobre a evolução dos treinos, perda de peso, entre outras informações importantes para o nosso novo atleta.

Após todo esse exercício, o desenvolvedor então decide ir até a geladeira para comer um lanche, geladeira essa que possui um display como atuador conectado ao servidor Raspberry PI através da rede local.

Ao abrir a porta, o dispositivo é acionado e exibe uma sugestão de quantas calorias são recomendadas que ele consuma para repor a energia gasta durante a patinação e sugere até qual alimento consumir com base em seus hábitos alimentares. Para isso, manualmente, o nosso usuário também configurou o servidor com uma relação de quais produtos estão na geladeira junto às suas informações nutricionais, permitindo, assim, que o sistema consiga verificar a melhor alimentação para o momento, de acordo com a evolução física e nutricional.

Portanto, na prática existem poucas coisas que não possam ser feitas com alguns sensores e um pouco de criatividade. Nessa aplicação fictícia, os dados não saíram da rede local d ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo