Fundamentos IoT

Escolhendo o protocolo certo para enviar dados para dispositivos remotos

Agustín Pelaez
· 4 min de leitura
Enviar por e-mail

Este artigo é baseado em outro artigo que Ubidots contribuiu para a edição de setembro/outubro de 2015 da revista Microsolutions da Microchip.

A Internet das Coisas ( IoT ) não envolve apenas milhões de coisas conversando conosco; trata-se também - mais importante - de sermos capazes de responder a eles. Tomemos como exemplo os aplicativos de análise de varejo. Suponha que um varejista tenha um sensor que conta quantas pessoas entram e saem da loja. Esses dados são reportados para a nuvem, onde uma interface web agradável ajuda a loja a analisar o comportamento dos compradores em tempo real, comparando o desempenho da loja entre diversas lojas ou vendo como as taxas de visitantes por cliente mudam ao longo do tempo, especialmente ao lançar um campanha de marketing.

Esta solução é, na verdade, um nicho crescente IoT com vários fornecedores que estão ajudando milhares de varejistas a otimizar seu desempenho de vendas (na verdade, uma vez publicamos um tutorial sobre como construir um People Counter usando um Raspberry Pi e um sensor PIR

Com base nessas métricas, imagine as possibilidades se o sistema pudesse controlar automaticamente os dispositivos dentro da loja. Poderia exibir publicidade contextual com base no número de pessoas que passam à sua frente, enviar códigos promocionais para os telefones dos compradores, dependendo do sexo e da idade, ou talvez até brincar com as luzes da loja para criar um ambiente específico. Ser capaz de controlar dispositivos certamente enriqueceria a experiência IoT no varejo e em quase todos os outros mercados que ainda não foram impactados pela IoT . Agir com base nesse ciclo de feedback permitirá que a IoT realize todo o seu potencial.

Comunicação bidirecional para IoT

Do ponto de vista técnico, a comunicação da nuvem para o dispositivo revelou-se mais complexa do que a comunicação tradicional do dispositivo para a nuvem. Por que é que? A Internet foi originalmente projetada em um modelo cliente-servidor, onde o cliente era sempre o iniciador da solicitação. Até agora, isso permitiu que os dispositivos iniciassem a comunicação sempre que precisassem enviar dados para a nuvem. Mas o que acontece se o servidor precisar enviar dados para um cliente sem que o cliente faça uma solicitação primeiro? Os desenvolvedores da Web criaram algumas técnicas para superar esse desafio. Aqui estão três opções que consideramos mais “portáteis” para o mundo embarcado.

A maneira mais básica de resolver esse problema de comunicação é chamada de short polling — um método em que o cliente pergunta periodicamente ao servidor se há novos dados disponíveis para ele. Esta é a solução mais simples para codificar, embora não seja recomendada se você precisar notificar um dispositivo em tempo real.

A próxima opção é a pesquisa longa. Neste caso, o cliente realiza a solicitação e o servidor não responderá até que tenha algo para enviar. Isso permite notificações push em tempo real da nuvem para os dispositivos, embora exija que o dispositivo deixe a conexão aberta pelo tempo que for necessário para ouvir o servidor. Usar esta técnica consome mais energia e também corre o risco de perda da conexão. Considere o caso em que um dispositivo controla remotamente a porta de um caminhão. Se uma solicitação de pesquisa longa tiver sido feita e o caminhão entrar em um túnel, a conexão móvel será interrompida. O dispositivo precisará então de lógica adicional para encerrar a conexão interrompida e abrir uma nova.

Uma terceira opção é usar protocolos mais recentes como CoAp ou MQTT, por exemplo, que foram projetados para fornecer baixa latência, pacotes pequenos e comunicação estável em redes fracas. Esses protocolos mais recentes fornecem um canal de comunicação bidirecional, que por sua vez oferece suporte a notificações push. Isso os torna boas opções para projetos IoT que exigem a capacidade de controlar dispositivos conectados em tempo real. A única desvantagem pode ser a falta de bibliotecas de firmware e exemplos para dispositivos embarcados, que são significativamente mais abundantes para conexões baseadas em HTTP.

A escolha do protocolo correto dependerá da sua aplicação e da frequência com que você precisará se comunicar com um dispositivo. No exemplo de projeto descrito abaixo, a pesquisa curta foi escolhida porque os dados precisam ser atualizados apenas a cada minuto e porque o manuseio da matriz de LED deixando uma tomada aberta exigiria mais poder de processamento.

Prática prática

Neste exemplo, queríamos explorar como usar o método de pesquisa curta para enviar dados da nuvem Ubidots para uma placa de desenvolvimento chipKIT™ Uno32™ usando um chipKIT Wi-Fi® Shield. Nosso exemplo assume que existe um contador de pessoas enviando dados para Ubidots , após o qual nosso dispositivo chipKIT lerá o último valor do contador e o exibirá em uma matriz de LED. Observe que a memória e o poder de processamento da placa chipKIT nos permitiram controlar as matrizes de LED e ao mesmo tempo poder fazer polling na nuvem Ubidots , conforme mostrado abaixo:

Não poderíamos ter alcançado essa quantidade de processamento com outras placas semelhantes ao Arduino®. Leia nosso artigo “ Enviando dados para uma placa chipKIT com um LED Maxtix ” para obter mais informações sobre como este projeto foi construído.

Suporte para seu projeto de detecção

Ubidots é uma plataforma de desenvolvimento de aplicativos baseada em nuvem que não apenas adere ao padrão da web (HTTP), mas também foi projetada especificamente para IoT , fornecendo um rico conjunto de funções de API que os desenvolvedores podem entender .

Além disso, trabalhamos em estreita colaboração com nossos usuários para implantar interfaces API específicas do cliente para atender às suas necessidades, desde endpoints TCP/UDP tradicionais que comunicam dados binários até protocolos mais avançados, como MQTT ou CoAP.

Ao desenvolver projetos para a IoT , os engenheiros embarcados esperam um back-end robusto para armazenar dados de sensores, a capacidade de executar tarefas como computação matemática ou operações estatísticas sobre esses dados, a capacidade de acionar alertas ou web-hooks com base nas leituras de sensores e, claro , a capacidade de criar interfaces fáceis de usar para seus clientes finais. Todos esses são serviços que Ubidots oferece para ajudá-lo a capturar, armazenar e dar sentido ao seu projeto de detecção.

Para começar a resolver problemas com a Internet das Coisas hoje, basta criar uma conta Ubidots e enviar facilmente seus dados para a Plataforma de Desenvolvimento de Aplicativos IoT Ubidots para desenvolver, visualizar e implantar seu Aplicativo de Solução de Problemas hoje mesmo.