Participantes
Wallace Brito
Guilherme Aparecido Gregorio
Resumo
Construção de um protótipo catraca inteligente para academias, automatizando o reconhecimento dos usuários por meio de reconhecimento facial e realizar cobranças para pagamento via Pix.
Descrição do projeto
Atualmente os dispositivos de IoT estão cada vez mais presentes em nosso cotidiano e sendo mais comum presenciarmos e interagimos com objetos que possuem alguma inteligência atrelada a eles. Isso se torna possível devido ao desenvolvimento contínuo de IoT em conjunto com o desenvolvimento de inteligência artificial, computação em nuvem e outros. Com isso, podemos criar aplicativos e dispositivos com grande utilidade e aplicabilidade no mercado de uma forma geral. Um exemplo é o reconhecimento facial que pode ser aplicado em uma grande gama de dispositivos.
No final do ano de 2020 o Banco Central do Brasil lançou um meio de pagamento (PIX) de fácil acesso e que é capaz de realizar transações entre instituições bancárias em poucos segundos.
O objetivo deste trabalho é unir esses dois mundo a IoT com a grande evolução do sistema de pagamento brasileiro e trazer mais robustez para uma catraca que no caso será aplicada ao contexto de academia mas nada impede de se expandir para outros cenários. A liberação do cliente para entrar no estabelecimento deve acontecer 100% automática, assim com o pagamento via PIX, uma vez que o cliente já possui cadastro realizado. Além disso, deve ser possível controlar alguns dados, como por exemplo o tráfego de cliente em um determinado tempo, quantidade de clientes novos e etc. Com isso pretendemos trazer mais praticidade para o dono do comércio e para os seus clientes.
Hardware
Placa de desenvolvimento ESP32-S3 EYE:
Software/Firmware
Backend
O backend foi desenvolvido na linguagem Python usando o Flask para exportar os endpoints onde a ESP32 irá consumir.
Os endpoints:
- POST /user
- Registra um usuário na base de dados
- GET /user/:id
- Consulta usuário cadastrado
- GET /users
- Lista usuários
- POST /face/detection
- Detecta face em uma imagem
- POST /face/recognition
- Reconhece a face do usuário com a base de dados
Execução do backend via docker:
Banco de dados
Para persistência dos dados dos clientes da academia foi usado um banco relacional em MySQL, abaixo segue o diagrama com todas as tabelas.
Front-End para controle dos clientes
Foi criada uma interface simples apenas para demonstração do sistema e para dar mais sentido ao contexto e funcionalidade de CRUD de usuários.
Modelo ML CNN
Para o reconhecimento de face foi usado o tensorflow para criação de um rede CNN. Onde foi treinado para exibição com 7 classes, sendo essas representante dos usuários do sistema.
Arquitetura da rede:
Treinamento da rede
O treinamento da rede deve acontecer a cada cadastro de um novo cliente no sistema. Para os testes foram treinadas 7 classes, com a execução de 10 épocas para imagens com tamanho máximo de 240×240, onde cada classe com pelo menos 200 imagens. Abaixo segue o resultado de execução para cada classe e a confiança.
Firmware
O firmware da placa ESP32-S3 EYE está sendo desenvolvido na linguagem Python, usando o CircuitPython na versão 8.2.2.
A imagem abaixo ilustra compilação do circuitpython para geração do firmware:
Foi utilizado a Mu 1.2 IDE para o desenvolvimento do firmware:
Realizando testes com manipulação de textos e imagens:
Realizando testes com câmera e display:
Realizando testes realizando a conexão Wi-Fi e fazendo requisição para internet:
Apresentação do protótipo
Histórico do desenvolvimento
Na tabela abaixo mostra o histórico de desenvolvimento do projeto:
| Data | Atividade | Status |
| 05/04/2023 | Início de desenvolvimento do protótipo do projeto | OK |
| 05/04/2023 | Estudo do hardware ESP32-S3 EYE | OK |
| 14/04/2023 | Recebimento do kit ESP32-S3 EYE | OK |
| 16/04/2023 | Testes iniciais com ESP32-S3 EYE rodando códigos de exemplo | OK |
| 18/04/2023 | Início de testes com tensorflow lite | OK |
| 22/04/2023 | Estudo para definição da linguagem de programação para ESP32-S3 EYE | OK |
| 25/04/2023 | Testes de exemplos básicos com CircuitPython com uso da câmera e display | OK |
| 02/05/2023 | Criação do projeto base para implementação do backend | OK |
| 05/05/2023 | Estudo do datasheet dos recursos ESP32-S3 EYE | OK |
| 10/05/2023 | Início de estudo de algoritmos de reconhecimento facial e bibliotecas existentes | OK |
| 08/05/2023 | Inicio de integração dos algoritmos de reconhecimento facial no backend | OK |
| 15/05/2023 | Estudo para aplicar o projeto no framework IDF | OK |
| 20/05/2023 | Implementação dos endpoints do backend | OK |
| 28/05/2023 | Treinamento de modelo lite para reconhecimento e criação de base para testes. | OK |
| 31/05/2023 | Integração com Pix na ESP32-S3 EYE | OK |
| 01/06/2023 | Integração com a ESP32-S3 EYE e o backend | OK |
| 15/06/2023 | Criação do schema do banco de dados para backend | OK |
| 20/06/2023 | Criação das telas exibição no display da ESP32-S3 EYE Telas de reconhecimento, liberação da catraca e pagamento pix | OK |
| 01/07/2023 | Inicio de implementação do frontend | OK |
| 12/07/2023 | Configuração da API Pix com sistema backend | OK |
| 25/07/2023 | Testes finais com fluxo completo | OK |
| 06/08/2023 | Gravar vídeo para exibição do protótipo | OK |
| 06/08/2023 | Publicação final do projeto | OK |
Referências
- https://github.com/espressif/tflite-micro-esp-examples
- https://github.com/espressif/esp-idf-template
- https://www.espressif.com/en/products/devkits/esp-eye/overview
- https://www.tensorflow.org/lite/microcontrollers?hl=pt-br
- https://github.com/espressif/esp-idf
- https://github.com/espressif/esp-who
- https://www.tensorflow.org/api_docs/python/tf/all_symbols
- https://docs.circuitpython.org/en/latest/shared-bindings/index.html










