[Vídeo do projeto]

Equipa: Grupo 07:
Vitor Correia (Coord.) , André Campos , Denys Zadorozhnyy , Maria João Carvalhais , Rafael Fonseca
Empresa: Entropic Ventures, Unipessoal Lda
Orientadores: Prof. Manuel de Oliveira Duarte (DETI)
Eng. David Carvalhão (Entropic Ventures, Unipessoal Lda)

Muitas vezes com a correria do dia-a-dia, tarefas como verificar a caixa do correio são esquecidas, este esquecimento pode levar a vários inconvenientes principalmente em correspondências com prazos limitados. O Detetor Genérico de Correspondência surgiu de uma conversa entre o Engenheiro David Carvalhão e um membro dos CTT, onde se verificou a necessidade de existir um produto que permitisse notificar um utilizador ao mesmo tempo que chegasse correio. Deste modo, o produto consiste num sistema que detete automaticamente a entrada de correspondência postal numa caixa de correio e notifique o utilizador através de uma aplicação. Em geral, o sistema é constituído por um microcontrolador com uma câmara associada, um sensor piroelétrico e um Reed Switch. A existência de uma câmara associada ao microcontrolador, possibilita ao utilizador visualizar o interior da caixa de correio, através de uma foto enviada para aplicação ao mesmo tempo que seja detetado correio. Assim, através deste produto é possível notificar o utilizador que chegou correspondência à sua caixa de correio, sem que seja necessário efetuar a verificação presencialmente.

O projeto foi implementado com o intuito de desenvolver um sistema capaz de detetar de forma automática a entrada de correspondência numa caixa de correio postal, este deve ser também capaz de notificar o utilizador, através de uma aplicação, sobre a chegada da mesma. Tendo em vista a implementação de um produto comercializável foi necessário estudar qual o método de sensorização mais eficaz para a deteção da chegada de correspondência. Assim sendo, foram definidas num estado inicial duas hipóteses:

  1. A primeira hipótese, rebate sobre o uso do sensor de infravermelhos, HC-SR501, que deteta a receção de correspondência através da emissão de radiação infra-vermelha.  
  2. A segunda hipótese, remete para o uso de um Reed Switch (RS) num modo Normally Closed, que possuí um íman aplicado numa pala móvel. Na posição de repouso, o RS e o íman encontram-se próximos, sendo que não ocorre fluxo de corrente no circui-to do RS. Após a chegada de correspondência, a pala móvel move-se, afastando o íman do RS, provocando assim o fluxo de corrente no circuito do RS, detetando correspondência. Após o desenvolvimento de vários testes foi possível apurar que, apesar de não ter sido considerado num ponto inicial como hipótese de implementação, o uso dos dois sensores em simultâneo levava a menos erros de deteção. Assim sendo, o módulo de sensorização migrou para uma terceira hipótese que funde a utilização de ambos os sensores.

O protótipo final apresenta um add-on sobre aquilo que foi o requisito inicial, tendo em vista novamente um produto comercializável, o utilizador pode ter acesso ao conteúdo da sua caixa de correio após a deteção de correspondência, através de uma fotografia que será carregada na aplicação mobile.

Desafio

O desafio proposto ao grupo pela empresa Entropic Ventures, consiste no desenvolvimento de um produto intuitivo e eficaz para detetar a entrada de correspondência em qualquer caixa de correio comercializável. Deste modo, as especificações iniciais propostas baseiam-se na construção de um produto de fácil instalação, barato, autonomia mínima próxima de um ano e erros praticamente nulos na deteção de entrada de correspondência.

Resultados

O produto realizado apresenta elevada eficácia de deteção de entrada de correspondência na caixa de correio, devido à utilização dos dois sensores referidos anteriormente (PIR e Reed Switch). Através dos sensores a entrada de correio será detetada e consequentemente será retirada uma foto ao interior da caixa, possibilitando ao utilizador visualizar o tipo de correio recebido. A aplicação desenvolvida, alerta para a chegada de correspondência postal através de uma notificação e permite que o utilizador possa verificar mais alguns detalhes sobre o produto, como: o registo das entradas de correspondência; a foto retirada ao interior da caixa de correio; a chave de identificador de usuário único; o estado da bateria; o manual de utilizador. De forma a proteger o produto, foi construída uma caixa para precaver qualquer dano a que este esteja sujeito. Assim, o produto final está ilustrado nas figuras seguintes:

produto_final_1 produto_final_2

Mais informação

Nesta secção serão abordados com detalhe todos os tópicos fundamentais para a realização do projeto.

Arquitetura do Produto

Segue-se a arquitetura do produto onde são destacados os seguintes módulos:

  • Módulo de Sensorização;
  • Módulo de Alimentação;
  • Módulo de Comunicação;
  • Módulo da Aplicação.
  • Estes módulos fundamentais serão apresentados de seguida.

    arquitetura

    Módulo Sensorização

    Diagrama de Código

    A constituição do código pode ser descrita pelas suas 3 principais funções:

    diagrama_codigo
  • setup(): faz todas as configurações relacionadas com a inicialização e pinos da ESP32, conexão ao WIFI e Firebase e inicialização da camara.
  • loop(): coloca a ESP32 em deep sleep mode e fica a espera que haja deteção nos sensores para gerar uma interrupção.
  • external_wakeup(): confirma que houve uma interrupção, faz o update da hora e data da ESP32, ativa o LED integrado e tira uma foto com a ESP32-CAM e envia e envia os dados para a Firebase.
  • Para que o processo descrito seja inicializado, é necessária a ativação do primeiro círculo de controlo, para tal existe um botão externo ao ESP32 que, tal como os sensores, gera uma interrupção externa. Este botão é utilizado como o botão de reset para a interface do utilizador.

    Módulo de Alimentação

    O Modulo de alimentação foi implementado para que o produto tenha grande autonomia. Para tal será utilizada uma pilha de carregamento de 9V. Como, quer o ESP32-CAM quer o sensor PIR estão limitados a uma tensão de alimentação de 5V, foi necessário incluir um regulador de tensão que regula a tensão de entrada para 5V.

    Módulo de Comunicação

    AccessPoint

    De forma que a ESP32-CAM comunique com a Firebase e consequentemente com a aplicação, a ESP32-CAM tem de ter acesso à Internet. Por isso, quando o produto é ligado pela primeira vez, a ESP32-CAM vai entrar em AccessPoint Mode (AP Mode); este modo é equivalente a ligar um hotspot de um telemóvel. O microcontrolador cria então uma rede Wi-Fi, à qual outros dispositivos se podem ligar.

    No entanto, ao contrário dos telemóveis, a ESP32-CAM não está efetivamente conectada à Internet. Por isso, este modo é usado para criar uma rede Wi-Fi local privada que está isolada da Internet. Como seria de esperar, neste modo o microcontrolador não tem as capacidades de performance de um router Wi-Fi convencional, nem é suposto, e, por isso mesmo, é que este apenas servirá para se poder enviar as credencias do Wi-Fi de casa do utilizador.

    Deste modo, o usuário através do telemóvel terá de se conectar à rede Wi-Fi local privada criada pelo microcontrolador, o que irá fazer com que seja gerada automaticamente uma página html, denominada por WiFiManager. Nesta página, o utilizador terá de clicar no botão Configure WiFi, para que insira as suas credenciais do Wi-Fi de casa e uma KEY. No campo Enter KEY, o usuário terá de introduzir a chave apresentada no botão Perfil da aplicação, que é o identificador de usuário único (uid) gerado pelo recurso Firebase Authentication. Através da KEY introduzida irá fazer com que a ESP32-CAM comunique com um campo específico na base de dados e todas as verificações posteriores feitas pelo microcontrolador a partir daí, são feitas dentro desse campo único. Para finalizar o processo, o utilizador terá de clicar no botão Save, para que todos os dados sejam armazenados na ESP32-CAM. Assim que a ESP32-CAM recebe os dados de que precisa, vai passar para o Station Mode (STA Mode) e conecta-se à rede de casa do utilizador (Wi-Fi AP). Após a conexão ao Wi-Fi, o dispositivo está funcional para notificar o usuário assim que exista correspondência na caixa de correio.

    wifi_manager

    Módulo de Aplicação

    APP

    A aplicação, encontra-se, visualmente, tal como é possível observar na figura. Quando o utilizador entra pela primeira vez na aplicação, pode criar a sua conta, inserindo um e-mail e uma password. Se for escolhida uma password muito simples, como por exemplo, “1234” ou “abcd”, é apresentada uma mensagem de erro, obrigando a que seja inserida uma password mais complexa. É também verificado se o e-mail introduzido já está a ser utilizado por outra conta.

    APP_1

    Se a criação da conta for bem-sucedida, o utilizador é redirecionado para a interface principal. Se realizar o log out ou desinstalar a aplicação, na próxima vez que decidir usar a app, poderá realizar o respetivo login diretamente, sendo que é verificado se a conta introduzida está registada na base de dados.

    Este gerenciamento referente ao login e ao sign up, é feito recorrendo ao recurso Firebase Authentication, que facilita o desenvolvimento de um sistema de autenticação seguro, além de melhorar a experiência de login e integração para os utilizadores finais. Para além disso, este recurso gera um identificador de usuário único (uid) no momento em que é realizada a criação de uma conta.

    Depois de fazer o primeiro login, a app “memoriza” essas credencias e, a partir daí, não é mais necessário introduzi-las, a menos que seja feito um log out.

    Na interface principal, essencialmente, são apresentados 4 botões: Registo, Definições, Perfil e Log Out. O registo permite a consulta de todas as notificações de correspondência recebidas, apresentando uma lista com a data e hora de cada uma. As definições permitem ao utilizador alterar algumas configurações simples, como por exemplo, se pretende ou não, receber a foto em conjunto com a notificação. O perfil apresenta algumas informações importantes sobre o usuário.

    Quando o usuário cria a sua conta, é criado um campo específico na base de dados com o seu uid. Todas as verificações posteriores feitas pela app, são realizadas dentro desse campo único.

    As notificações funcionam quando a aplicação está em foreground (aberta), background (minimizada) e terminada ou fechada. Para englobar estes 3 casos, foram precisos utilizar os seguintes recursos: Firebase Cloud Messaging e Firebase Cloud Functions.

    Firebase Cloud Messaging (FCM) é uma solução de mensagens multiplataforma que permite entregar mensagens de forma confiável e sem custos. É possível usar o FCM de modo a enviar mensagens a todos os utilizadores de uma determinada aplicação ou para usuários finais. Neste último caso, quando se pretende enviar uma notificação para um utilizador específico, é necessário usar o FCM token, um identificador exclusivo atribuído a cada instância da aplicação. Estes tokens são usados para identificar dispositivos registados para receberem mensagens de um servidor.

    Logo, quando uma instância da aplicação é registada no FCM, é gerado um token exclusivo para esse utilizador. Na nossa aplicação, este token é gerado cada vez que o utilizador faz o login, de modo a poder receber notificações em qualquer dispositivo que esteja a utilizar no momento. Depois de gerado, o token é enviado para a base de dados e guardado dentro do respetivo campo uid. Assim, mesmo que a aplicação esteja fechada, como o token identifica o próprio dispositivo, este consegue receber notificações.

    O objetivo é enviar uma notificação quando ocorrem mudanças na base de dados dentro do respetivo campo uid, ou seja, quando há a inserção de um novo registo de correspondência. Mas, se a aplicação estiver fechada, esta não consegue fazer essa verificação. É necessário que “algo”, independente da aplicação, faça essa verificação constantemente e envie a notificação. Foi por essa razão que foi essencial utilizar o recurso Firebase Cloud Functions. Trata-se de uma estrutura sem servidor que permite executar automaticamente o código de back-end em resposta a eventos acionados por recursos da Firebase e solicitações HTTPS. O seu código é armazenado na nuvem do Google e executado num ambiente gerenciado. Não há necessidade de gerenciar e dimensionar servidores próprios.

    Tendo isto em conta, foi implementada uma Cloud Function, escrita em JavaScript, que verifica, sem interrupções, se ocorrem mudanças na base de dados. A função consegue reter o campo uid onde ocorreu a mudança; de seguida acede ao respetivo token e envia uma notificação usando o FCM.

    Protótipo Caixa de Correio

    Após a programação de todo o software foi necessário desenvolver um protótipo que permitisse testar o sistema em ambiente real. Nesse sentido foi desenvolvido o seguinte protótipo de caixa do correio:

    prototipo_caixa_1 prototipo_caixa_2

    Esta caixa é constituída por duas peças: plano frontal da caixa, que possuí uma ranhura que permite a simulação da entrada de correspondência e um plano interior da caixa, que é constituído por uma pala móvel fixada nas laterais da caixa, onde sempre que é dada a entrada de correspondência ocorre um movimento que faz afastar o íman do ReedSwitch.

    Contrução da Caixa de Proteção

    Para proteger o sistema de qualquer tipo de dano, foi desenvolvida uma caixa de proteção através do programa SolidWorks. A caixa foi impressa através de uma impressora 3D utilizando filamento PLA, conforme é possível visualizar através da imagem.

    solidworks_tampa solidworks_caixa
    caixa_PLA

    Design do PCB

    O layout do PCB desenvolvido encontra-se na imagem seguinte, onde estão destacados alguns sub-circuitos que constituem o circuito principal:

    APP
  • Módulo de Alimentação: É constituído por dois pads que permitem a conexão com o suporte das pilhas e por um regulador de tensão de 9V-5V. Por recomendação do datasheet, foram adicionados dois condensadores de desacoplamento: o primeiro condensador tem como função reduzir a sensibilidade vista pela impedância de entrada às altas frequências e o segundo tem como premissa ajudar na estabilidade da tensão de saída do regulador de tensão.
  • Secção do sensor PIR: O sensor PIR está conectado ao PCB através de um conector do tipo PIN HEADER de três pinos. Estes encontram-se conectados ao ground e à tensão de alimentação, bem como a um dos pinos GPIO do ESP32.
  • Secção do ReedSwitch: A conexão entre o ReedSwitch e o PCB é feita através de pads, existem também pistas para conexão com um pino GPIO do ESP32.
  • Secção do botão de Reset: O PCB possuí também um sub-circuito que permite a conexão de um botão. Este botão é utilizado como auxiliar nas configurações associadas à primeira interação com o utilizador e para que seja possível fazer Reset ao produto.
  • Construção do PCB

    Numa primeira fase, o sistema foi montado numa placa furada, onde os componentes foram interligados com fios e solda, conforme é apresentado na imagem abaixo.

    placa_furada

    Após serem realizados todos os testes na placa furada e o sistema funcionar corretamente, procedemos à impressão do PCB. Na figura seguinte é apresentado o PCB final, onde todos os componentes apresentam-se soldados com bastante estabilidade.

    pcb_final

    Consumo Energético

    Assumindo entrada de correspondência na caixa de correio uma vez por dia, os equipamentos estão ativos os seguintes tempos diários:

  • Deep Sleep Mode ativo durante todo o dia;
  • Active Mode sem Flash ativo durante 10 segundos;
  • Active Mode com Flash ativo durante 5 segundos;
  • Sensor PIR HC-SR501 ativo durante todo o dia;
  • Sensor Reed Switch SPST-NC ativo durante 1 segundo;
  • Access Point Manager ativo durante 60 segundos.
  • Assim, os consumos energéticos anuais estão apresentados na tabela seguinte:

    Consumo Energético
    Categoria Descrição Consumo Anual
    Microcontrolador Deep Sleep Mode 35 000 mAh
    Microcontrolador Active Mode sem Flash 124 mAh
    Microcontrolador Active Mode com Flash 104 mAh
    Sensor PIR Sensor PIR HC-SR501 438 mAh
    Sensor Reed Switch Sensor Reed Switch SPST-NC 104 mAh
    Access Point Access Point Manager 3 mAh
    Consumo Anual Total: 35 773 mAh

    Custos do produto

    De seguida é apresentada a tabela de custo para a construção de um protótipo do produto:

    # Categoria Descrição Valor
    1 Microcontrolador ESP32-OV2640-CAM 12,80 €
    2 Sensor PIR Sensor PIR HC-SR501 2,40 €
    3 Sensor Reed Switch Sensor Reed Switch SPST-NC 6,05 €
    4 Regulador de Tensão LM7805 1,00€
    5 Pilha Pilha 9V 1000mAh 2,99 €
    6 Suporte para pilhas Suporte de pilhas 1x6F22, 6LR61 (9V) 1,86 €
    7 Suporte Suporte em acrílico 3,00 €
    8 Pala móvel Pala em acrílico 1,50 €
    9 Caixa Suporte Caixa em PLA 1,00 €
    Custo Total: 32,60 €

    Para um produto comercializável, espera-se um valor total mais baixo, pois a compra de produtos irá ser feita em maior quantidade. É necessário ter em conta que no processo de prototipagem inicial são utilizados produtos adquiridos em poucas quantidades.