cd ~

Published on 1ST JUN 2023

TELLME

Public

A smart door-side device that lets visitors leave secure messages, captures their photo, and delivers everything to the homeowner in real time. Capstone team project.

The Problem

Leaving a message for someone who is not home has not changed much in decades. You scribble a note on paper, fold it under the door or clip it somewhere visible, and hope it does not get lost, rained on, or read by the wrong person. There is no confirmation that the homeowner saw it, no record of who left it, and no privacy for the sender.

In a world where smartphones handle almost every form of communication, this gap felt like an obvious problem worth solving. TELLME was built as a capstone project: a compact device installed on the inside of a front door that replaces the paper note entirely. A visitor uses their phone to send a message via Bluetooth, the device captures their photo, and the homeowner receives both the message and the image by email, in real time, from anywhere.

TELLME device mounted on inside of front door

How It Works

A visitor approaching the door sees a sticker indicating the presence of the TELLME device. They open a BLE-compatible app on their phone, type their message, and send it. The device receives the message, activates the camera to capture the visitor's photo, stores both on the SD card with a timestamp from the RTC module, and then sends the message and image to the homeowner's email address over WiFi. Inside the house, the homeowner's Nextion touchscreen displays all incoming messages in a log they can browse at any time. BLE and WiFi alternate: after a message is received, BLE is temporarily disabled while the email is sent, then re-enabled for the next visitor.

  • Visitor sends message from their phone via BLE (Android and iOS)
  • Camera captures visitor photo at time of message receipt
  • Message and photo stored on SD card with RTC timestamp
  • Email with message text and photo sent to homeowner over WiFi via SMTP
  • Nextion touchscreen inside house displays full message log
  • BLE used for initial WiFi credentials and email address setup
  • Works offline: messages saved to SD card even without WiFi connection

Components

TELLME is built around the ESP32 microcontroller, which handles every communication layer in the system: BLE for receiving messages, WiFi for sending emails, UART for the touchscreen, I2C for the camera and RTC, and SPI for the SD card. All other modules connect to and through it.

01. ESP32 Microcontroller

ESP32 D-WROOM module

The ESP32 D-WROOM is the central controller of the device. It manages all communication protocols simultaneously: BLE for message intake, WiFi for email delivery, UART for the Nextion display, I2C for the camera and RTC module, and SPI for the SD card. Its dual-core architecture handles the coordination of these tasks without blocking the BLE listener while other operations are in progress. The ESP32 also manages the alternation between BLE and WiFi modes after each message is received.

  • Central controller managing BLE, WiFi, UART, I2C, and SPI simultaneously
  • Dual-core architecture enables concurrent task management
  • Handles BLE/WiFi mode switching after each message receipt
  • Stores and reads WiFi credentials and email address from SD card

02. Nextion 4.3" Touchscreen Display

The NX4827T043 is a 4.3-inch resistive HMI touchscreen that serves as the homeowner-facing interface inside the house. It connects to the ESP32 via UART and displays a home screen, a message log, and a settings page. Resistive touch was chosen specifically so the screen remains usable with gloves on. The interface was designed in Nextion Editor, which compiles the layout directly onto the display's own processor, offloading rendering entirely from the ESP32. Page transitions and layout were configured to be clear and easy to read at a glance.

Nextion NX4827T043 display module
  • 4.3-inch resistive touchscreen: usable with gloves
  • Connects to ESP32 via UART
  • Displays home screen, message log with timestamps, and settings
  • Interface designed in Nextion Editor and compiled onto the display's onboard processor
  • Rendering fully offloaded from the ESP32
Nextion Editor interface design
Nextion Editor — UI layout compiled directly onto the display's processor

03. OV7670 Camera Module

OV7670 camera module

The OV7670 is a VGA CMOS image sensor that captures a photo of the visitor at the moment a message is received. It communicates with the ESP32 over I2C. External pull-up resistors were added to the I2C lines to ensure reliable signal levels, which are required for stable operation of the OV7670 at the correct clock speed. Captured images are saved to the SD card and attached to the outgoing email so the homeowner can see who left the message.

  • OV7670 VGA CMOS sensor: captures visitor photo on message receipt
  • I2C communication with external pull-up resistors for signal reliability
  • Images stored on SD card and attached to homeowner email

04. SD Card & RTC Module

A MicroSD card module connected via SPI stores all messages, captured images, and system configuration including WiFi credentials and the homeowner's email address. Data persists through power outages. A separate Real-Time Clock (RTC) module tracks the exact date and time of every message independently of network connectivity, so timestamps remain accurate even when WiFi is unavailable. The timestamp is displayed next to each message in the log and included in the email notification.

RTC module
  • MicroSD via SPI: stores messages, images, WiFi credentials, and email address
  • Data persists through power loss
  • RTC module: maintains accurate timestamps independent of network connectivity
  • Timestamp shown in message log and included in outgoing email

05. Custom PCB

All components are integrated onto a custom PCB designed in EasyEDA with help from a friend who assisted with the PCB layout and printing. The board consolidates the ESP32, the UART header for the Nextion display, I2C lines for the camera and RTC (with shared pull-up resistors), the SPI SD card module, and power regulation across the 3.3V and 5V rails. Programming and debug headers are exposed on the board to make testing and iteration straightforward without desoldering components. The compact layout was designed to fit within the 3D-printed enclosure alongside the display.

PCB schematic in EasyEDA
Circuit and PCB design in EasyEDA
  • Designed in EasyEDA; custom layout for all modules on a single board
  • UART, I2C, SPI, and power rails all routed on board
  • Shared pull-up resistors for I2C (camera + RTC) on board
  • Programming and debug headers exposed for easy iteration
  • Sized to fit within the 3D-printed enclosure
PCB layout view

Enclosure

The entire device is housed in a custom 3D-printed enclosure designed to mount cleanly on the inside of a front door. The enclosure holds the PCB, the battery or power connector, and the Nextion touchscreen, which is visible through a cutout on the front face. A small aperture on the door-facing side allows the OV7670 camera to capture the visitor without the lens being visible or obstructed. The only external connection required is a power cable, making installation straightforward.

Device placement inside, homeowner-facing

Email Delivery

When WiFi is available, the homeowner receives an email containing the visitor's message text, the timestamp, and the captured photo as an attachment. Email is sent using the ESP-Mail-Client library over SMTP. Credentials are configured once via BLE using a simple command format and stored persistently on the SD card, so the homeowner does not need to interact with the device again after initial setup.

Change WiFi:   WiFi:NAME:{your_wifi_name},PASS:{your_wifi_password}
Change email:  EMAIL:youremail@example.com
Example email received from TELLME device

Technologies & Learnings

Applied

C / C++Primary language for all ESP32 firmware and module integration
SolderingHand-soldered all components and assembled the final PCB
Email from microcontrollerExtended prior knowledge of SMTP from microcontrollers using ESP-Mail-Client
3D modellingDesigned the full device enclosure and camera aperture in a 3D tool

Newly learned

PCB design (EasyEDA)First time designing a custom PCB from schematic to printed board
BLE (Bluetooth Low Energy)First time implementing BLE on a microcontroller for phone-to-device communication
WiFi on ESP32First hands-on integration of WiFi networking in an embedded project
RTC moduleFirst use of a real-time clock for persistent, power-independent timestamping
OV7670 camera moduleFirst time interfacing a camera sensor over I2C in embedded firmware
I2C protocol (hands-on)First practical use of I2C, including pull-up resistor configuration for reliable signals
Nextion display & editorFirst time working with an HMI display: layout design in Nextion Editor and UART communication

Project Info

Project typeCapstone project, team
HardwareESP32, OV7670, Nextion 4.3", RTC, MicroSD, Custom PCB
RepositoryPublic (GitHub)