Internet das Coisas (IoT): iBeacons e Arduino aplicação prática – Overview

Internet das Coisas (IoT): iBeacons e Arduino aplicação prática – Overview, um dos assuntos mais quentes no momento na área da Tecnologia da Informação (computação) sem dúvidas é a IoT, sua eminência é divulgada a cada dia com vários exemplos de aplicações práticas e com o surgimento de novos dispositivos inteligentes. Um dos dispositivos que está em evidência são os iBeacons, principalmente nas aplicações relacionadas a microlocalização.

O objetivo deste post é o emprego de dispositivos iBeacons no controle de presença de pessoas dentro de um ambiente controlado (presente ou ausente de uma determinada sala), utilizando microcontrolador Arduino, juntamente com o módulo Bluetooth BLE HM-10, representando um arquitetura de baixo custo para este tipo de controle.

Antes de continuar, é importante destacar que as publicações do tipo Overview , ou visão geral, aqui do site, tem como objetivos demonstrar uma aplicação prática de forma simples e clara, sem neste momento se aprofundar em nuances  teóricas, que podem ser exploradas em outros posts.

Visão dos Componentes Envolvidos

Bom, antes de entrar na parte prática é importante dar uma visão dos componentes envolvidos nesta prática.

Os iBeacons, ou simplesmente Beacons são pequenos dispositivos de comunicação sem fio, que emitem sinais de rádio frequência Bluetooth de baixa energia, do inglês Bluetooth Low Energy (BLE); ou seja, tem como características o baixo consumo de energia e a capacidade do envio de sinais de rádio frequência que podem atingir distâncias que vão de alguns centímetros, a até dezenas de metros.

Na Figura 1, pode-se verificar a arquitetura do dispositivo iBeacons Estimote, que é constituído por uma bateria CR2477 de lítio com autonomia de até 2 (dois) anos, CPU ARM cortex M0 de 32 bits, acelerômetro, sensor de temperatura, e tecnologia BLE de 2.4 GHz.

ibeacons arquitetura

Figura 1: Arquitetura iBeacons. Fonte da imagem: https://goo.gl/jfpUrd

O Arduino é uma plataforma de prototipagem fundamentada no conceito de hardware livre, composta por uma placa única, projetada com um microcontrolador, apresentando praticamente todos os componentes de um computador em uma escala menor. Tem como principais características ser um dispositivo barato, funcional e fácil de programar, sendo dessa forma acessível a estudantes e projetistas amadores.

O conceito de hardware livre empregado possibilita que qualquer um possa montar, modificar, melhorar e personalizar o Arduino, partindo do mesmo hardware básico. Sua placa é composta por um microcontrolador, circuitos de entrada/saída (digitais e analógicas); e que pode ser facilmente conectada à um computador e programada via Ambiente de Desenvolvimento Integrado, do inglês Integrated Development Environment (IDE) utilizando uma linguagem de programação fundamentada em C/C++. A Figura 2 apresenta uma placa Arduino do modelo Uno.

microcontrolador arduino

Figura 2: Visão de um Arduino Uno. Fonte da imagem: https://goo.gl/En2Nzt

E por fim, o sensor HM-10 BLE para identificação Bluetooth de baixa energia BLE, compatível com o Arduino, que pode ser utilizado para identificação dos iBeacons, pois apresenta capacidade de receber os  sinais de rádio frequência transmitidos por estes pequenos dispositivos. A Figura 3 ilustra este sensor.sensor HM-10

Figura 3: Sensor HM-10 BLE. Fonte: https://goo.gl/a4yFBL

Estes três componentes dão uma variedade enorme de possibilidade de criação de aplicações, com diferentes focos e objetivos, no caso deste post será demonstrada uma aplicação prática baseada na microlocalização de pessoas em ambiente controlados.

Método e Esquema Aplicado Aplicação Prática

Para a identificação das pessoas serão utilizados três dispositivos iBeacons, onde cada um representará uma pessoa, ou seja, cada pessoa terá um dispositivo único pré-definido que será carregado consigo para identificação e localização pessoal dentro do ambiente controlado, como visto na Figura 4.

iBeacons identificados

Figura 4: iBeacons identificados.

O sensor HM-10 BLE será acoplado no Arduino, como demonstrado no esquema da Figura 5.

Esquema de Ligação HM-10 BLE e Arduino

Figura 5: Esquema de ligação do sensor HM-10 BLE e o Arduino.

O fio vermelho é responsável pela energização do sensor (+), o fio preto pelo aterramento (-), o fio azul pelo RX e o fio amarelo pelo TX, que no caso foram ligados nas portas digitais 3 e 2 respectivamente, no Arduino. Essa definição será importante posteriormente na demonstração do código fonte aplicado.

Código Fonte

Agora vamos entrar na parte do código fonte, onde inicialmente na parte global da codificação teremos o seguinte código:

  • Para iniciar o código primeiramente é necessário incluir a biblioteca SoftwareSerial.h, responsável pela comunicação entre o sensor e o Arduino (linha 1). Na linha 2 é definida a constante BUFFER_LENGTH com o valor 512, variável que será usada no restante do código para limitar o Buffer de retorno. Na linha 3 é definida uma variável char, tendo como capacidade máxima o tamanho definido na variável BUFFER_LENGTH. Na linha 4 é instanciado o módulo Bluetooth BLE, nas portas digitais 2 (TX) e 3 (RX). Na linha 5 é definida a variável timeout com o valor de 800, que equivale a 800 milissegundos, responsável em controlar o tempo máximo de resposta dos comandos AT, ou seja se não responder dentro deste tempo será dado um retorno de timeout.

  • O evento Setup() abre a comunicação serial entre o microcontrolador (linha 2) e o sensor (linha 3), essa definição possibilitará a captura e exibição dos dados relacionados aos comandos AT.

  • Já o evento Loop() foi programado para ser repetido a cada 60 segundos, tempo configurado na linha 1. Na linha 2 é utilizada a chamada a função BLECmd(), responsável em executar os comandos AT que são passados como parâmetros, juntamente com o tempo de timeout e a variável global buffer que recebe o retorno string da execução do comando específico.
  • O processo que envolve o laço criado entre as linhas 5 e 40 é responsável a cada passagem pegar os dados referente a um dispositivo iBeacons. Dentro deste laço são empregados duas subestruturas de laço for, responsável em compor o texto de descoberta do nome (minor value) e o valor de RSSI.
  • Respectivamente nas linhas 8 e 14, gerando duas varáveis de identificação minor e rssi. O valor de minor é transformado em uma string na variável imirror que é utilizada para verificar pelo valor descoberto a quem pertence o dispositivo em questão, condicionais que acontecem entre as linhas 20 e 28. Identificado o detentor do dispositivo o valor da variável rssi é transformado em um valor inteiro na linha 29, conversão necessária para que seja aplicada a função getDistance(), responsável em calcular a distância aproximada.

Após a execução do código acima será apresentado o seguinte resultado, baseado na pré-definição realizada para este experimento nos iBeacons:

  • A cada laço do código do evento Loop() controlado por um delay de 60 segundos, ou seja, executado a cada 60 segundos, é retornado o reconhecimento dos iBeacons localizados próximos ao sensor, cada um dos iBeacons utilizados nos testes foram configurados para um alcance correspondente a 90 centímetros, que corresponderia a aproximadamente a uma sala de 1,8 por 1,8 metros quadrados sem barreiras físicas entre eles, pois o dispositivo receptor (Arduino e sensor HM-10 BLE), será colocado no centro da sala simulada.
  • Para cada iBeacons localizado é aplicada a fórmula de distância aproximada, retornando: o nome da pessoa pré-definida, o resultado do cálculo aproximado da distância, e por fim o indicativo se a pessoa está Presente, ou Ausente à sala. Com base na distância, onde acima de 90 centímetros indicaria Ausente (caso do BILL), ou acima de zero e abaixo de 90 centímetros indicará Presente (caso JHON e {JANE) – com base no exemplo acima.

Abaixo segue o vídeo incorporado no Youtube que ilustra o funcionamento do projeto:


Conclusão

Alguns aspectos importantes são importantes serem citados:
  • Através da comparação entre as medições físicas e as apontadas pela fórmula de distância aproximada aplicada, detecta-se que houve um erro que variou entre 10% a mais ou a menos relacionadas as medições físicas (reais).
  • Em virtude da diferença entre a velocidade de comunicação entre o microcontrolador e o sesor, este mais lento, dificulta ajustar o tempo para a execução do Loop(), principalmente quando se deseja valores pequenos;
  • As quantidade de carga de bateria dos dispositivos iBeacons podem interferir na força do sinal, algo que pode causar uma distorção maior nas medições físicas e as encontradas pela aplicação do cálculo de distância.

Após a configuração, aplicação e testes da arquitetura proposta dá para concluir que é possível usar Arduino, juntamente com o sensor HM-10 BLE para detecção de dispositivos iBeacons no controle de presença de pessoas, que pode ser facilmente estendido para o controle patrimonial ou de equipamentos.

A principal vantagem ligada a esta arquitetura é o baixo custo de investimento, mas apresenta uma desvantagem a ser considerada, relacionada a questão das limitações dos hardwares, limitando os projetos a pequenas aplicações.

A IoT está aí, para nós da área técnica (computação) não tem jeito de fugir, cada vez mais os projetos que estaremos envolvidos terão algo de IoT, por isso é importante buscarmos conhecimentos práticos sobre o assunto e formatarmos essas praticas com as teorias. Por fim, fica uma dúvida até onde a IoT pode chegar?

Leave a reply:

Your email address will not be published.