Ready for ESP32 + TFT

Expressive face.
Instant personality.

Full animated robot face engine for ESP32. Smooth emotions, touch interaction, and serial control — designed for 3D-printed AI companions.

ESP32 / ESP32-S3
TFT_eSPI • 25–40 FPS
CAPABILITIES

Everything you need for a living face

12+ Rich Emotions

Happy, Sad, Angry, Surprised, Love, Thinking, Excited, Wink and more. Smooth 0.6–1.2s transitions between any state.

Touch & Interaction

Look-at-touch, pet reactions, gaze control, and independent mouth animation for speaking.

Serial API

Simple text commands over UART for any LLM, voice system, or external brain. Perfect for dual-MCU architectures.

INTERACTIVE PREVIEW

Try the face in your browser

Faithful recreation of the DANI Face rendering engine. Click emotions, drag to look around, or tap to pet.

Drag on the face to control gaze • Works best on desktop
DOCUMENTATION

Everything you need to build

3D Printing Guidelines
Mounting • Bezel • OpenSCAD
  • Recommended display cutout with 0.3–0.6 mm clearance
  • Recessed lip (1.5–2.5 mm) for flush glass
  • Matte black interior paint for contrast
  • Parametric OpenSCAD example included
AI Brain Integration
LLM • Voice • Vision
  • Single ESP32 or dual-MCU architectures
  • Sentiment → emotion mapping examples
  • TTS amplitude / viseme sync
  • FreeRTOS task recommendations
  • Camera-based gaze tracking support
QUICK START

Get running in minutes

# 1. Install TFT_eSPI and configure your display
# 2. Copy DANI_Face folder into libraries
#include <DANI_Face.h>

DANIFace face;

void setup() {
  face.begin();
  face.setEmotion(Emotion::Happy);
  face.setAutoBlink(true);
  face.setIdleGaze(true);
}

void loop() {
  face.update();
}