OIC - Omnidirecional Infrared Center

Participantes:

Maikel Luis Kolling
Diego Cardoso
Roger Douglas Machado

Resumo do projeto:

Este projeto visa desenvolver uma solução centralizada para o acúmulo de diversos controles remotos de diferentes dispositivos baseados em comando infravermelho

Descrição do projeto:

A Aplicação é o controle remoto virtual do usuário. Para acessá-la o usuário deverá na primeira vez abrir o navegador e inserir na barra de navegação um endereço web HTTP definido previamente. Nas vezes subsequentes bastará clicar sob o ícone da aplicação PWA (Progressive Web Apps). Este endereço corresponde ao local onde a Central(dragonBoard410C) estará com o serviço ativo na rede. Através da Aplicação, o usuário conseguirá enviar comandos à Central. A Central será o árbitro do sistema, é responsável por fazer o meio de campo entre a Aplicação (comandos do usuário) e os eletroeletrônicos, enviando os sinais na frequência e sequência correta. Como a própria central é detentora da aplicação que o usuário faz download, ela saberá quando usar o canal bluetooth e ou wifi ou o módulo infravermelho.

Quando o eletroeletrônico estiver no mesmo cômodo este recebe comandos por infravermelho diretamente (ex. televisor na imagem), quando estiver fora do alcance do emissor 360º então usará bluetooth, neste caso haverá próximo do equipamento um dispositivo receptor bluetooth (mini-módulo bluetooth e ou wifi) que comandará o infravermelho apontando para o eletroeletrônico (ex. home theater na imagem). A central gravará em uma memória interna qualquer comando que recebe e responde para possível análise/estatística de dados posterior.

Acompanhe o desenvolvimento: https://github.com/diegocardoso93/OIC

Histórico do desenvolvimento:

 

Tarefa Deadline Anotações
Assinatura contratos ✓Assinado Concluído: Agosto 2018
Receber Kit pelos correios ✓Recebido Concluído:25/08/2018
Unboxing ✓Realizado Concluído: 27/08/2018
Setup da placa 410C. Fazer o flash da última versão do linux linaro. Plugar o linker mezzanine e fazer o blink do led por MQTT. 0%[▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%

Montando sd imagem ✓

Instalar Linux ✓

Configurar acesso remoto ✓

Instalar GCC ✓

Instalar MQTT Client ✓

Instalar lib GPIO ✓

Início: 27/08/2018 10:40

Links:

How To Install:

https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/installation/

Img Linaro:

http://releases.linaro.org/96boards/dragonboard410c/linaro/debian/latest/dragonboard-410c-sdcard-installer-*.zip

Win32DiskImageWirter:
https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/installation/windows-sd.md.html

MQTT Client:

$sudo apt-get install git (se já tem instalado não precisa)
$sudo apt-get install libssl-dev (se já tem instalado não precisa)
$sudo apt-get install gcc (se já tem instalado não precisa)
$sudo apt-get install doxygen graphviz (se já tem instalado não precisa)
$sudo git clone https://github.com/eclipse/paho.mqtt.c.git
$cd org.eclipse.paho.mqtt.c.git
$sudo make
$sudo make html
$sudo make install

lib GPIO:

$sudo apt-get install libsoc-dev

Definir linguagem para interagir com a placa, python, node, c, etc, analisar qual melhor opção Discutimos sobre fazer tudo em C, mas como usa SO completo, nada impede de misturar várias opções.
Levantamento dos sensores/ lista de componentes que precisarão ser comprados, orçar 2 ou 3 sites Talvez não seja necessário, analisar quantos emissores IR precisaremos.
Criar/Editar “blog” com o start do projeto. Conta criada, Pendente de edição

0%[▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%

Conta criada, link acesso
https://contest.embarcados.com.br/wp-login.php
Criação de estrutura do código do projeto e repositório 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
Acesso remoto à placa por ssh com dns fixo 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
Aplicação da DragonBoard – Definição de tópicos broker mqtt 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
SUBSCRIBE control/tv ✓
SUBSCRIBE control/split ✓
SUBSCRIBE control/iluminacao ✓
SUBSCRIBE control/receptor-tv ✓
SUBSCRIBE calibrate ✓ (mapeamento)
Aplicação do front (Vue.js) 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ░]100%
Definição de opções principais –> (Mapeamento, Controle, Estatísticas) ✓
Criação de telas principais (vide Software/Firmware) ✓
Criação de tela controle tv
Criação de tela controle split
Criação de tela controle iluminação
Criação de tela controle receptor tv
Criação de Estatísticas
Criação de Mapeamento
Criação de Mapeamento de Voz
Aplicação do back (Node.js) – Definição&criação de rotas/endpoints 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
GET /tv/:button ✓
GET /split/:button ✓
GET /iluminacao/:button ✓
GET /receptor-tv/:button ✓
GET /read/temperatura ✓ (sensor na placa p/ display no controle do split)
GET /calibrate/:control/:button ✓
GET /feed/calibrate ✓
GET /cfg/control/:control ✓
GET /stats/control-use ✓
GET /stats/control-button ✓
Node.js (com Koa.js e mqtt client) irá interfacear a comunicação entre o broker e o aplicativo
Aplicação do back (Node.js) – Escrita/leitura de comandos nos tópicos mqtt 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
PUBLISH control/tv ‘{value}’ ✓
PUBLISH control/split ‘{value}’ ✓
PUBLISH control/light ‘{value}’ ✓
PUBLISH control/receptor-tv ‘{value}’ ✓
SUBSCRIBE write/temperatura ✓
Node.js (com Koa.js e mqtt client) irá interfacear a comunicação entre o broker e a aplicação; falta definir rotas para estatísticas (deixar para final, não onerar mqtt, fazer conexão direta do node a um db, tanto para gravar quanto para ler)
Comunicação IR com protocolo NEC 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
LEITURA ✓
ENVIO ✓
Devido a limitações de velocidade de escrita em gpio através da user interface do sistema operacional linux, ficou definido que será usado um microcontrolador intermediário (ESP32) para envio de comandos no protocolo NEC a 38kHz, a DragonBoard ficou responsável pela leitura IR A comunicação entre os dispositivos é pela rede através do protocolo MQTT
Criação de classe DragonBoardNative 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100% Essa classe é responsável por invocar programas que rodam no sistema operacional e trazer para o ambiente de execução de node.js a captura do buffer escrito na saída padrão após a execução. Atualmente tem a função de fazer a leitura do sensor de temperatura.
Aplicação da DragonBoard – definição/instalação de um banco de dados para logs/estatísticas e mapeamento de botão -> controle 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
Instalação do mongo e definição de estruturas de dados a serem gravadas ✓
Criação de banco de dados “oic” ✓
Definição de collection que guarda os controles com botões mapeados (Collection IRcontrols) ✓
Definição de collection que guarda as estatísticas de uso (Collection IRlogs) ✓
Criação de funções para interagir com mongo por interface node.js
Tela de mapeamento de botões 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100% Tendo em vista os diferentes layouts de controles remotos, essa opção é importante para que o usuário possa escolher qual botão terá determinada função ao apertar. O acesso inicial ao controle remoto será com todos os botões apagados, necessitando que seja efetuado o mapeamento para ativar a utilização.
Gráficos da tela de estatísticas 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100% A cada pressionar de botão para os controles, é gravada uma linha na coleção IRlogs, as informações gravadas são controle, botão e a data, posteriormente através de operações de consulta e agregação com esses dados foi possível elaborar os gráficos que podem ser vistos na seção software abaixo. Um deles gráficos pizza que demonstra os controles mais utilizados. O outro de barras mostra mais detalhadamente cada um dos botões pressionados para cada controle
Comandos por voz 0%[ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓]100%
Transcript em tempo real no software
Elaboração de ‘dicionário’ de principais palavras/frases ✓ (depreciado)
Fazer com que o comando de voz seja configurável após mapeamento de botões para cada controle (usuário escolhe a frase/palavra que dispara comando)
Víncular botões à palavras/frases e fazer publish no tópico correto ✓

Hardware:

Software/Firmware:

Referências:

NEC Protocol. SB-Projects. https://www.sbprojects.net/knowledge/ir/nec.php
VISHAY. Data Formats for IR Remote Control. http://ecee.colorado.edu/~mcclurel/vishay_ir_data_formats.pdf