HUBIr – Controle dispositivos através de comandos Infravermelho

Descrição

O HUBIr é o resultado de um projeto proposto na disciplina de Infraestrutura de Hardware, ministrada pelo professor Victor Medeiros, no primeiro semestre de 2017 na UFRPE. Tem como objetivo facilitar o manuseio de um ou mais dispositivos controlados através de sinais infravermelho, podendo ser aplicado em ambientes residenciais ou corporativos. Para o desenvolvimento do sistema foi utilizada a plataforma NodeMCU, baseada no módulo ESP8266. Para controlar o HUBIr foi desenvolvido um aplicativo Android.

A arquitetura do projeto e sua comunicação foi planejada em reuniões com o orientador e foi definida conforme Figura abaixo.

Arquitetura
Arquitetura do HUBIr

O HUBIr é composto por dois módulos, o NodeMCU e um circuito de LEDs infravermelho para envio dos comandos aos dispositivos. A comunicação entre o HUBIr e a aplicação é realizada via WiFi, utilizando uma API REST para comunicação e JSON para a serialização dos dados. Com a arquitetura definida, começamos a planejar a interação entre HUBIr e a aplicação.

Nosso protótipo foi desenvolvido com dois princípios norteadores: ser facilmente configurado e usado. Tivemos como inspiração o funcionamento do dispositivo Chromecast do Google. Na primeira inicialização o HUBIr cria uma rede WiFi permitindo que o usuário, pelo aplicativo, configure a rede que deve se conectar. Recebendo essa informação desliga a rede que está fornecendo e se conecta na rede informada. Caso o usuário forneça dados incorretos ou erre alguma informação, o HUBIr disponibiliza novamente a rede WiFi para ser configurado. Após a configuração do sistema ser realizada o usuário já pode utilizá-lo para controlar qualquer dispositivo que aceite comandos infravermelho através aplicativo.

A seguir é apresentado as telas do aplicativo:

Este slideshow necessita de JavaScript.

O MVP dá suporte apenas a projetores da Epson, ar-condicionados da LG e fornece uma opção para envio de qualquer comando IR pelo HUBIr, desde que esteja no formato Pronto Hex.

Componentes de Hardware

  • NodeMCU v1.0
  • Um resistor de 10 Ohms
  • Três LEDs infravermelho

Bibliotecas e Ferramentas Utilizadas

Bibliotecas para a IDE do Arduino:

Banco de dados com os códigos infravermelho:

Para o desenvolvimento da aplicação Android foi utilizado a ferramenta MIT App Inventor.

OBS¹: Usamos os códigos raw disponibilizados pelo usuário nokru e convertemos usando a ferramenta IrScrutinizer para o formato Pronto Hex.

Conexão dos Componentes de Hardware

hubir_breadboard

Código-fonte

O HUBIr possuem duas funções que são executadas quando recebe as requisições REST realizadas pelo aplicativo:

server.on("/new_ssid", new_ssid);
server.on("/ir", send_ir);

As duas tem o funcionamento parecido. Recebem o JSON da requisição, tratam usando a biblioteca ArduinoJson e realizam o os seus procedimentos. A função send_ir, descrita abaixo:

void send_ir() { //Handler for the body path
  String string_json = server.arg("plain");
  StaticJsonBuffer<512> jsonBuffer;
  JsonObject& json = jsonBuffer.parseObject(string_json);

  <strong>String pronto_hex = json["command"];</strong>
<strong>  ph.convert(pronto_hex);</strong>
<strong>  irsend.sendRaw(ph.convertedRaw, ph.length, ph.frequency);</strong>

  Serial.println();
  Serial.println("* IR command received *");

  server.send(200, "text/plain", static_json);
}

É responsável por receber os comandos no formato pronto hex, enviados pelo aplicativo, e converte para o formato raw e assim emitir o sinal pelos LEDs infravermelhos. A parte do código que realiza esse procedimento está destacada.

A função new_ssid, descrita abaixo:

void new_ssid() { //Handler for the body path
  String string_json = server.arg("plain");
  StaticJsonBuffer<512> jsonBuffer;
  JsonObject& json = jsonBuffer.parseObject(string_json);

  <strong>String ssid = json["ssid"];</strong>
<strong>  String pwd = json["pwd"];</strong>

  Serial.println();
  Serial.println("* New wifi config received *");

  server.send(200, "text/plain", static_json);

  delay(1000);
  <strong>try_connect(ssid, pwd);</strong>
}

É responsável por receber as novas configurações e repassar para a try_connect, onde essa realiza os procedimentos para conectar em uma nova rede ou disponibilizar novamente a rede de configuração do HUBIr.

É sabido que as duas tem trechos bastante parecidos, sendo:

String string_json = server.arg("plain");
StaticJsonBuffer<512> jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(string_json);

Isso é necessário para garantir rapidez para recuperar os dados do JSON, caso opte por utilizar somente um para as duas o HUBIr apresentará lentidão quando for consumir esses dados.

Repositório do projeto

https://github.com/peticormei/HUBIr

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s