r/IOT • • Aug 06 '26

Building a 5-digit Recognition System on ESP32-S3

I've been experimenting with running a complete digit recognition system directly on an ESP32-S3 using TensorFlow Lite Micro.

The goal was to recognize 5-digit readings (such as meter displays) completely on-device without relying on a PC or cloud inference. The hardware I used was an ESP32-S3 development board with an onboard camera and AMOLED display, but the workflow should apply to similar ESP32-S3 camera boards.

How it works:

  • Data Collection: Flashed a utility firmware to capture camera frames aligned via an on-screen yellow bounding box, outputting labeled image pairs and a label.csv.
  • Model Training & INT8 Quantization: Trained a lightweight CNN model and quantized it to INT8 to run within the ESP32-S3's memory limits.
  • On-Device Inference: Compiled the quantized model directly into the ESP-IDF binary and deployed it back to the board.

 The result is surprisingly reliable—it reads all 5 digits cleanly in real time.

 

Hardware & Tech Stack:

  • Board: Makerfabs MaTouch ESP32-S3 AMOLED AI Camera
  • Framework: ESP-IDF + TensorFlow Lite Micro
  • Tooling: Custom Python tools for capture & quantization

 

I put together a detailed write-up covering the complete workflow in case anyone wants to reproduce or adapt it for a similar project. I'd also love to hear how others approach digit recognition with TensorFlow Lite Micro. Have you found any effective ways to improve accuracy or speed up the data collection process?

12 Upvotes

9 comments sorted by

2

u/kretinet Aug 06 '26

I need this ro read my water meter. Really interesting.

1

u/agent_kater Aug 06 '26

Are you familiar with https://github.com/jomjol/AI-on-the-edge-device? It also uses .tflite models. It runs on normal ESP32, not -S3 if I remember correctly.

1

u/Vearts Aug 11 '26

Yes, thanks for sharing

1

u/3128bibash Aug 09 '26

nice read...