Participantes
Leandro Zuin Quibao
Augusto Paes Villas Boas
Descrição do projeto
O projeto consiste em uma caixa com uma placa ESP32-S3 EYE responsável por todo o controle e aquisição de dados. sua câmera, apontada para um módulo de balança, aguarda até que o usuário posicione um item de sua compra. Através da visão computacional embarcada, o item é identificado e o peso medido através de uma célula de carga conectada em um módulo de aquisição de sinal HX711. Ao identificar o item com sucesso, o sistema verifica se o item foi retirado e levado para a direita (compra realizada) ou esquerda (desistência da compra), adicionando ou subtraindo o valor do item já calculado de acordo com o peso medido. as informações referentes a compra aparecem na tela embarcada do ESP32-S3 EYE, que ao ser finalizada, gera e envia o cupom para ser impresso.
Apesar de já existirem dispositivos de self-checkout em supermercados, eles dependem de itens com códigos de barra para identificação do produto, o que inviabiliza a contabilização automática de itens como frutas, legumes, vegetais e demais itens vendidos “a-granel”. A proposta do projeto visa utilizar de recursos da visão computacional para identificar itens no momento da pesagem e automatizar o processo da contabilização da compra. É uma solução adequada para pequenos mercados e mercearias que não possuem ou não pretendem possuir infraestrutura avançada de TI, tudo o que é necessário ao funcionamento dessa aplicação é embarcado na ESP32-S3 EYE, não necessitando de servidores e serviços adicionais além de uma conexão a rede Wifi, fazendo com que a solução seja simples, de baixo consumo energético e custo reduzido.
A solução utiliza primariamente um modelo de reconhecimento TensorFlow Lite, treinado para identificar até 10 produtos diferentes, servindo como uma prova de conceito em se utilizar um único dispositivo de baixo custo para identificação e classificação de produtos em um mercado. Esse projeto servirá como uma forma de analisar a viabilidade do ESP32-S3-EYE como um terminal completo de reconhecimento, pesagem e remissão de cupons, podendo se mostrar como uma solução viável, de baixo custo, baixo consumo e de fácil operação.
Hardware
- Módulo principal: Placa de desenvolvimento ESP32-S3-EYE
- Módulo Auxiliar: ESP32-WROOM-UE Devkit
- Impressora bluetooth MTP-II para bobinas de 40mm
- Célula de carga até 5KG + módulo HX711
- Cartão microSD 16GB
Elementos adicionais:
- Estrutura customizada, fabricada com placas de plástico PEAD
- Objetos diversos com pesos conhecidos
- Modelos de frutas artificiais realistas (Maçã, Laranja, Carambola, Banana)
Treinando o modelo
Foi utilizado o dataset Fruit Recognition, de Chris Gorgolewski como base para o treinamento do modelo no Edge Impulse. Selecionamos 4 frutas no dataset correspondente aos modelos artificiais disponíveis (Maçã, Laranja, Pêra, Banana e Carambola. Foram selecionadas todas as imagens que apresentavam apenas uma fruta na imagem, e no caso da Maçã, foi selecionado uma das variantes que mais se aproximava do modelo artificial disponível.
Após o treinamento e teste, obtivemos uma acurácia de 94% no modelo em questão. O próximo passo foi exportar o modelo quantizado como uma biblioteca Arduino
Software/Firmware
O firmware de reconhecimento de imagem foi desenvolvido na IDE Arduino, utilizando bibliotecas fornecidas pela Edge Impulse.
O firmware do módulo secundário foi desenvolvido no PlatformIO, sendo responsável por coletar a informação da célula de carga e enviar através de Bluetooth BLE para o ESP32-S3-EYE.
Para testes rápidos do módulo HX11 e da impressora MTP-II, foram utilizados códigos desenvolvidos no Arduino IDE 2.0.
Desafios
A proposta do projeto inicialmente era de reconhecer 10 elementos distintos. Foram selecionados 5 elementos de acordo com a disponibilidade de frutas artificiais que estivessem presentes no dataset, bem como fossem suficientemente distintas para garantir que fossem classificadas com mais facilidade pelo nosso primeiro contato com a tecnologia.
Nos primeiros testes com aplicação no ESP32-S3-EYE, percebeu-se que a inferência era muito lenta (quase 2 segundos), uma performance insatisfatória. Como solução apresentada no artigo de Marcelo Rovai, foi substituída a biblioteca de função Neural Network desenvolvida pela Edge Impulse que aproveita das funcionalidades do ESP32-S3 e a inferência no dispositivo passou a ser realizada em até 250ms
Histórico do desenvolvimento
Utilizamos uma fresa CNC para cortar os materiais construtivos da estrutura, compondo uma base fixa, um apoio para a célula de carga e a bandeja.


Após análise da viabilidade de ligar diretamente o módulo HX711 na ESP32-S3-EYE nos GPIOs expostos atrás do display, optamos por conectar em um ESP32 secundário e transmitir as leituras da célula de carga através de Bluetooth, assim não será necessário modificação que traga riscos permanentes para a placa de desenvolvimento. Na imagem, vemos a ligação simplificada para validar a leitura da célula de carga e transmitir via Bluetooth com o ESP32 auxiliar.
A imagem em 3D abaixo mostra uma projeção da estrutura, bem como o posicionamento do ESP32-S3-EYE no centro da placa superior.
To-Do:
O projeto ainda não alcançou todos os seus objetivos. Após tentativas de desenvolvimento que passaram pelo ESP-IDF (e exemplos do ESP-WHO) e PlatformIO, encontramos dificuldades para compilar o código e, quando realizado esse processo, incorporar o modelo de reconhecimento gerado pelo Edge Impulse.
Foi a partir da adaptação de códigos com outra placa de desenvolvimento baseada em ESP32-S3 (a XIAO, da SeedStudio) que conseguimos incorporar e rodar o modelo de reconhecimento em código compilado pela IDE Arduino.
Deve-se verificar a viabilidade de se aumentar o número de classes reconhecidas, bem como ajustar o overfitting.
Referências
Modelos 3D:
https://grabcad.com/library/thermal-printer-2 – Impressora térmica
https://grabcad.com/library/esp-eye-1 – ESP-32-EYE
https://grabcad.com/library/celula-de-carga-strain-gage-1 – Célula de carga
Datasets:
https://www.kaggle.com/datasets/chrisfilo/fruit-recognition
Material de leitura e orientação:
https://www.edgeimpulse.com/blog/announcing-official-support-for-the-espressif-esp-eye-esp32
https://www.hackster.io/mjrobot/esp32-cam-tinyml-image-classification-fruits-vs-veggies-4ab970










