AssistIoT – Assistente Doméstico com Tecnologias IoT

Participantes:

Daniel Teixeira de Andrade
Lucas Abritta Costa

Resumo do projeto:

Esse projeto visa monitorar à distância membros de família em condições especiais, através de uma plataforma móvel que poderá ser controlada remotamente e realizar controle de ambientes domésticos.

Descrição do projeto:

Nos últimos anos, com a crescente evolução de áreas como robótica, telecomunicações, inteligência artificial e internet das coisas, e de diversas soluções que essas áreas fornecem aos mais variados segmentos, muitas atividades, anteriormente atribuídas apenas a seres humanos, são cada vez mais realizadas por dispositivos e ferramentas inteligentes, com um alto grau de precisão, robustez e segurança.

Na indústria em geral ou no meio doméstico, o uso desses dispositivos inteligentes, manipuladores robóticos ou robôs (ou mesmo carros) autônomos está cada vez mais amplo, como apontam diversas pesquisas, tanto no Brasil como no mundo. A Figura 1 representa uma dessas pesquisas:

Figura 1: Tabela com a demanda anual por robôs industriais no Brasil e no mundo.

Porém, ao contrário do uso de celulares e seus aplicativos serem amplamente disponíveis e usados por pessoas de diferentes padrões sociais em todo mundo, muitas tecnologias ainda ficam restritas a uma pequena porção da população devido ao seu alto custo e complexidade de utilização.

O projeto AssistIoT tem como principal objeto desenvolver uma plataforma simples e de baixo custo de um assistente doméstico para monitoração à distância de pessoas em condições especiais ou animais domésticos, além da análise e controle remoto de variáveis de ambiente, como temperatura, luminosidade, entre outras.

Cenários de Aplicação

O uso de celulares ou de câmeras fixas em cômodos de uma residência, nem sempre são a melhor solução de se entrar em contato ou monitorar um membro da família em condições especiais ou animais domésticos.

Os cenários a seguir representam algumas situações em que o AssistIoT pode ser usado em um ambiente doméstico:

  • Cenário 1: um idoso que mora sozinho, mas que eventualmente precisa de algum suporte para tomar remédio ou que precisa ser monitorado em caso de necessidade. Um filho ou outro responsável pode usar o AssistIoT para monitorações frequentes ou esporádicas;
  • Cenário 2: um animal de estimação que precisa ficar sozinho durante 2 ou 3 dias, pois seus donos viajaram. O AssistIoT pode monitorar a ração, a água e ajudar na conversa dos donos com o animal para ele não ficar muito triste;
  • Cenário 3: um pai ou uma mãe que precisa viajar e gostaria de monitorar seu filho pequeno (mesmo sendo cuidado por outro responsável) e até interagir com ele. Além de ajudar na conversa normal com um dos pais, o AssistIoT pode conversar com a criança com voz alterada para ela pensar que é algum personagem que está falando numa brincadeira;
  • Cenário 4: um pai ou uma mãe que precisa se ausentar por algumas horas e gostaria de monitorar seu filho com deficiência física ou mental (mesmo sendo cuidado por outro responsável).

Em todos os cenários acima, o AssistIoT deve ser controlado remotamente se deslocando até o cômodo da residência onde se encontra a pessoa ou o animal de estimação a ser monitorado.

Para auxiliar no controle remoto em tempo real, devido a falhas de conexão ou possíveis atrasos no envio das imagens ou dos comandos de controle de movimento do AssistIoT, rotinas de reconhecimento de imagens devem detectar possíveis obstáculos, evitando assim que ele se choque com paredes ou com outros objetos.

Através de seus sensores, o AssistIoT pode medir variáveis de ambiente do cômodo onde se encontra a pessoa ou o animal de estimação que estará sendo monitorado. Com essas informações disponíveis na aplicação web, dispositivos poderão ser acionados, regulados ou desabilitados remotamente para adequar o ambiente de acordo com as necessidades da pessoa ou do animal de estimação monitorado.

No caso de animais de estimação, dispositivos que controlam a quantidade de água e ração disponível também poderiam ser controlados.

Os dispositivos que podem ser controlados remotamente, como ventiladores, luminárias, humidificadores, entre outros, devem ser conectados com módulos de comunicação sem fio existentes no mercado ou preparados durante o projeto. Esses módulos devem se comunicar com o AssistIoT através de conexão WiFi.

Além do fornecimento de imagens, o AssistIoT também deve realizar a comunicação por voz. Crianças muito pequenas, idosos ou pessoas com deficiências físicas ou mentais que não podem usar celulares, e animais de estimação podem se beneficiar muito com essa funcionalidade de comunicação por voz.

Detalhes da Solução

A plataforma móvel do AsistIoT tem como base, em sua parte frontal, um eixo com duas rodas conectadas a dois motores independentes. A parte trazeira tem duas rodas com giro livre de direções. Em cima dessa plataforma móvel está fixada a placa de desenvolvimento (mangOH Red da Sierra), placas auxiliares (por exemplo, uma Raspberry PI para suporte e testes de funcionalidades do projeto), uma webcam para captura de imagens em tempo real, sensores de análise das variáveis de ambiente (por exemplo, os sensores de temperatura e de luminosidade, baterias para alimentar a placa de desenvolvimento e os motores, e um suporte para apoiar um personagem ou uma peça de roupa (ambos opcionais) para melhorar a interação com a pessoa (por exemplo, crianças) ou com o animal de estimação que devem ser monitorados.

O conjunto de placas de desenvolvimento (mangOH Red mais as placas auxiliares), são conectadas a Internet através de uma conexão WiFi local ou através de uma conexão m2m (através da mangOH Red) dependendo da disponibilidade de sinal. Esse conjunto envia imagens capturadas pela webcam em tempo real, assim como as variáveis de ambiente, para uma aplicação web sendo executada na nuvem (por exemplo, no Firebase).

Essa aplicação web pode ser acessada de qualquer navegador (inclusive de celulares) e pode  apresentar as imagens e as variáveis de ambiente enviadas pelo conjunto de placas de desenvolvimento. Essa aplicação web também apresenta comandos para controlar remotamente os movimentos da plataforma móvel do AssistIoT, além de comandos para acionamento, regulagem ou desligamento de dispositivos que controlam a variáveis de ambiente, por exemplo, ventiladores, ar condicionados, humidificadores, luzes, entre outros.

A figura a seguir representa um exemplo da aplicação web sendo executada na nuvem e conectada com o conjunto de placas de desenvolvimento do AssistIoT:

Histórico do desenvolvimento:

Semana 1 (13/08/2018 – 19/08/2018)

  • Primeiras análises (artigos, vídeos e projetos) da plataforma de desenvolvimento da Sierra, mangOH Red;
  • Atualização do planejamento do projeto (ainda dependente do recebimento do kit da Sierra);
  • Compra / seleção de outros materiais que serão usados no projeto (placas auxiliares, componentes eletrônicos, eixo com 2 motores e rodas independentes, 2 rodas de direção livre, palitos de plástico para o chassi, parafusos, porcas e arruelas):

Semana 2 (20/08/2018 – 26/08/2018)

  • Preparação da placa Raspberry PI para suporte e testes de funcionalidades do projeto;
  • Aplicação Node.js: teste de recebimento de comandos REST para comunicação com a Raspberry;
  • Montagem da placa auxiliar com o CI L293D para controle dos motores;
  • Montagem do primeiro modelo da plataforma móvel com o eixo de 2 motores e rodas independentes e 2 rodas de direção livre, como mostrado nas fotos abaixo:

 

  • Aplicação Java: teste do acionamento dos motores através da Raspberry.

Semana 3 (27/08/2018 – 02/09/2018)

  • Recebimento do kit da Sierra e análise de seus componentes;
  • Execução de 5  passos (total de 6) do tutorial (Getting Started Guide) do site da mangOH Red. O passo 6 depende do registro da placa mangOH Red no site AirVatange. Mas esse registro está falhando.
  • Contato com o suporte da Kore para confirmar a que as linhas estão ativadas;
  • Contato com o suporte da Sierra para reportar o problema de registro. Aguandando retorno do suporte da Sierra. Esse problema também já reportado no Fórum do concurso, aqui;
  • Configuração do ambiente de desenvolvimento Developer Studio, sendo executado na imagem “mangOH Dev using Legato 18.07.0 on Ubuntu 18.04 – r0” do Oracle VM VirtualBox;
  • Atualização e execução do exemplo de teste “helloWorld”, através de linha de comando (CLI — Command Line Interpreter) no terminal;
  • Atualização da documentação.

Semana 4 (03/09/2018 – 09/09/2018)

  • Aplicação Node.js: teste de envio de comandos REST para o controle dos motores através da Raspberry PI;
  • Aplicação C++: teste de envio de comandos REST para a aplicação da nuvem através da Raspberry PI;
  • Tratamento de comandos REST para o comando dos motores;
  • Atualização do pacote Legato Application Framework para a versão 18.07.0, por exemplo seguindo esse post, para sincronizar com a versão atualizada do firmware da mangOH Red.
  • Testes de compilação e execução do exemplo “helloWorld”;
  • Atualização da documentação.

Semana 5 (10/09/2018 – 16/09/2018)

  • Diversas tentativas de execução dos exemplos “helloWorld” e “redSensorToCloud” em modo debug com o pacote Legato 18.07.0 foram realizados, porém sem sucesso;
  • Testes de execução do exemplo “helloWorld” em modo debug com o pacote Legato 16.10.4 foram realizados com sucesso;
  • Testes de compilação execução do exemplo “redSensorToCloud” com o pacote Legato 16.10.4 foram realizados sem  sucesso. Esse exemplo de aplicação parece ser compatível apenas com a versão 18.07.0.

Semana 6 (17/09/2018 – 23/09/2018)

 

  • Escrita desse post para ajudar outros participantes que usam a placa Sierra mangOH Red a fazerem o registro no site AirVantage;
  • Atualização da documentação.

Semana 7 (24/09/2018 – 30/09/2018)

  • Testes com as APIs do site AirVantage para obter os valores de medição dos sensores:

  • Escrita de uma pergunta no fórum da Legato (aqui), sobre o problema com a execução de aplicações no modo debug com o pacote Legato Framework 18.07.0;
  • Montagem do segundo modelo da plataforma móvel, incluindo a webcam e a placa mangOH Red, como mostrado nas fotos abaixo:

  • Teste da aplicação de exemplo redSensorToCloud na versão 18.07.0 no modo debug attach, baseado na resposta do fórum oficial da Legato (aqui). Esse teste foi realizado com sucesso e assim será possível debugar outras aplicações de exemplo para estudo;
  • Resposta de agradecimento no fórum oficial da Legato (aqui) e escrita dessa dica para outros participantes do concurso (aqui);
  • Análise e debug do código fonte da aplicação “wifiClientTest” para tentar a comunicação com uma rede WiFi local. Porém está ocorrendo alguns erros como reportados no fórum oficial da mangOH aqui e aqui;
  • Instalação do ambiente de desenvolvimento das aplicações web em Angular.

Semana 8 (01/10/2018 – 07/10/2018)

  • Estudo de acesso a webcam em Angular;
  • Estudo de instalação dos pacotes adicionais no ambiente de desenvolvimento do Angular;
  • Criação de labels para mostrar as leituras de sensores;
  • Criação de um mock para testar como os dados chegarão na página e serão mostrados;
  • Testes de leitura de sensores de umidade/temperatura nas placas Raspberry e Arduíno;
  • Estudo de como integrar novos sensores na placa mangOH Red;
  • Estudo de como modificar o projeto exemplo “redSensorToCloud” para integrar a leitura de novos sensores.

Semana 9 (08/10/2018 – 14/10/2018)

  • Criação de botões para o controle de dispositivos na aplicação web;
  • Criação dos caminhos para a comunicação entre a aplicação web na nuvem e a placa;
  • Estudo dos comandos REST para obter os valores de leitura dos sensores originais da placa mangOH Red. Ainda não está claro como executar os requests sem precisar estar logado no site da AirVantage;
  • Uso do projeto exemplo “redSensorToCloud” como base para aplicação do projeto AssistIoT;
  • Criação da primeira versão do front-end com os botões de controle funcionais;
  • Configuração do site AirVantage para o envio de comandos para ativar e desativar um dos LEDs da placa mangOH Red através do projeto exemplo “redSensorToCloud”;
  • Estudo do projeto exemplo “gpioCf3Demo” para entender como acessar os pinos de GPIO da placa mangOH Red;
  • Estudo da API de Web do site da AirVantage (aqui) para entender como obter os valores dos sensores, e como enviar comandos para a placa mangOH Red, a partir de uma aplicação web;
  • Diversos testes realizados com a ferramenta Postman para obter os valores dos sensores e para enviar comandos para a placa mangOH Red. O testes foram realizados com sucesso:

  • Criação de uma coleção de comandos para obter o token de autorização, para enviar comandos de GET e de POST.

Semana 10 (15/10/2018 – 21/10/2018)

  • Construção do modelo da página web do projeto AssistIoT em MVP, como mostrado na foto abaixo:

  • Testes dos comandos de leitura dos sensores. Como pode se observar na figura acima, ao apertar o botão de “refresh”, ocorre uma simulação da atualização dos valores dos sensores. Essa atualização deverá ocorrer através do envio de comandos GET para a API da página da AirVantage como já testado com sucesso através da ferramenta Postman;
  • Criação do projeto AssistIoT no Firebase e upload da aplicação web. Essa aplicação web está disponível para visualização e testes aqui;
  • Participação na feira Futurecom como visitante. Contato com o Carlos, gerente comercial da Sierra do Brasil, e com o Bruno Evangelista da Qualcomm:

E contato com representantes de outras empresas como Ericsson, Inatel e Furukawa:

  • Análises e testes com os projetos exemplos “gpioCf3Demo” e heartbeatRed” para  acessar os pinos de GPIO da placa mangOH Red. Os testes foram realizados com sucesso, onde 4 pinos de GPIO (pinos 7, 11, 13 e 15 do conector CN307, compatível com a Raspberry) foram configurados como pinos de saída e podem ser setados para HIGH ou para LOW através do site da AirVantage.

Semana 11 (22/10/2018 – 28/10/2018)

  • Retomada das análises (iniciadas na semana 7) do uso do WiFi on board da mangOH Red. Novos testes com o projeto exemplo “wifiClientTest”, mas sem sucesso. Mesmo usando linha de comando, o serviço de “wifi client” não inicia. De acordo com os posts já citados (aqui e aqui), ainda não há solução para esse problema com o pacote da Legato. O suporte técnico é necessário nesse caso:

  • O uso do módulo WiFi mt7697 on board da mangOH Red é de extrema importância para se estabelecer uma comunicação wireless com as placas remotas (Arduinos) para controle das variáveis de ambiente (intensidade de luz, temperatura, entre outros). Assim os passos descritos nesse wiki da mangOH foram seguidos com sucesso. Porém ocorreu a seguinte falha na inicialização do módulo WiFi:

  • Essa falha está descrita no fórum da mangOH Red (aqui) como uma falha conhecida da versão atual do firmware (Release 16 do WP8548). Como entendido, deve-se aguardar um fix desse problema em futuras versões do firmware ou tentar um downgrade. Porém a versão anterior (Release 15) não suporta o projeto exemplo “redSensorToCloud” que é base para o projeto AssisIoT;
  • Como não foi possível utilizar o módulo WiFi mt7697 on board da mangOH Red como descrito acima, uma alternativa seria o uso do módulo IoT para WiFi (aqui) enquanto não ocorre um fix da versão atual do firmware. Mas devido ao tempo escasso para compra e recebimento desse módulo, essa alternativa está descartada;
  • Como solução provisória e para prova de conceito, outra alternativa pode ser a conexão de alguns pontos de GPIO da mangOH Red com a Raspberry. Assim a Raspberry poderia realizar o envio dos comandos para as placas remotas através de uma comunicação WiFi. Analises dessa possibilidade estão sendo feitas;
  • Conexão e reconhecimento da webcam na Raspberry;
  • Várias análises e testes de envio de dados de vídeo para a aplicação web. Uso desse tutorial como base para transmissão de vídeo através do Firebase;
  • Implemetação desse site para transmissão de vídeo da Raspberry para o site do AssistIoT;
  • Últimas implementações do site do AssistIoT;
  • Mapeamento dos comandos do site do AssistIoT no projeto exemplo “redSensorToCloud”, seguindo as regras:

Controle de Movimentos:
1 – cima (E-F – gpio22) e (D-F – gpio35)
2 – baixo (E-T – gpio23) e (D-T – gpio24)
3 – direita (D-T – gpio24) e (E-F – gpio22)
4 – esquerda (E-T – gpio23) e (D-F – gpio35)

Cômodo 1 – fazer barrinhas para representar
5~10 – ventilador
11~16 – luz
17~18 – umidificador (primeiro numero desligado – segundo numero ligado)

Cômodo 2 (primeiro numero desligado – segundo numero ligado)
19~20 – ventilador
21~22 – luz (LED local da mangOH Red)
23~24 – umidificador

  • Os resultados finais das funcionalidades implementadas no projeto AssistIoT foram demonstrados através dos seguintes vídeos:

Transmissão de imagem em tempo real

Leitura de variáveis de ambiente no cômodo atual

Comandos para controle remoto da plataforma móvel

Controle remoto de dispositivos domésticos

  • Atualização final da documentação;
  • Início da descrição dos passos de montagem do projeto AssistIoT no site do Instructables.

Hardware:

  • Kit de desenvolvimento da Sierra, incluindo a placa mangOH Red e o módulo WP8548;
  • Raspberry PI (para suporte e testes de funcionalidades do projeto);
  • Arduinos One e Due para receberem e executarem os controles de acionamento de dispositivos domésticos;
  • Módulo WiFi ESP8266 para o Arduino poder se comunicar;
  • Webcam ELOAM 299 UVC – USB;
  • Placa auxiliar com o CI L293D para controle dos motores;
  • Fonte de alimentação para a Raspberry PI;
  • Suporte de pilhas para a alimentação dos motores;
  • Eixo com 2 motores e rodas independentes;
  • 2 rodas de direção livre;
  • Diversos: palitos de plástico, parafusos, porcas e arruelas para a montagem do chassi, entre outros.

Software/Firmware:

  • O diagrama de blocos de software usado no projeto AssistIoT é representado a seguir:

 

Referências:

Todas as referências se encontram ao longo dos textos acima através de links.