OIC - Omnidirecional Infrared Center
Participantes:
Maikel Luis KollingResumo do projeto:
Este projeto visa desenvolver uma solução centralizada para o acúmulo de diversos controles remotos de diferentes dispositivos baseados em comando infravermelhoDescriçã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: MQTT Client: $sudo apt-get install git (se já tem instalado não precisa) 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