For this project, I use the ESP32S3 AI Camera module 1.0 (DFR1154) by DFRobot and a microSD card. The AI Camera Module is a 1.5” x 1.5” ESP32-based board featuring:
The module captures pictures at regular intervals.
Each picture is sent to a local ML model trained with Edge Impulse.
The model returns a score answering: “Does this picture contain a face?”
If the result passes a configurable threshold, a greeting is played asking for the visitor’s name.
The visitor’s answer is recorded and transcribed using OpenAI Whisper.
The transcription is sent to ChatGPT, which decides whether to open the door (via relay) or notify remotely via Telegram.
Using ChatGPT adds flexibility — for instance, my name was transcribed as Ronnie Bandini, but the LLM still recognized that I had an appointment. It also allows decision-making based on complex, unforeseen logic.
Why Edge Impulse? Because it simplifies the full ML workflow — data collection, labeling, training, testing, deployment — and even generates inference code and an optimized model for embedded systems.
systemMessage["content"] = "You are a receptionist at an office. Today, only Roni Bandini and John Smith are allowed to enter. If a visitor's name matches either of them — even with spelling variations — greet them with: "Welcome, push the door". For all other visitors, respond with: "Sorry, I cannot let you in.";
Upload Settings:
Board: ESP32S3 Dev Module
USB: Correct USB port
Options: USB CDC On Boot
Partition: 16MB Flash (3MB app, 9.9MB FS)
Flash mode: QIO
PSRAM: OPI
Download the 3D printable case from: https://cults3d.com/en/3d-model/gadget/aibellPrint in PLA. No supports needed.Optional: Pause mid-print to change filament color for a custom cover.