This repository contains the software for "Don Distillo", an AI-powered cocktail robot. Don Distillo helps you discover new cocktail recipes and assists you in mixing them to perfection.
Don Distillo is designed to be a hands-free cocktail assistant. You can control it entirely with your voice, and it will talk back to you, guiding you through the process of making a delicious cocktail. The robot is powered by a Large Language Model (LLM), which allows for natural and intuitive interaction.
display_loop.mp4
- Voice-controlled: Just tell Don Distillo what you want to do.
- Recipe discovery: Ask for cocktail ideas based on ingredients you have or flavors you like.
- Guided mixing: The robot uses a scale and a display to help you pour the right amount of each ingredient.
- Speech interaction: Don Distillo provides audio feedback and instructions.
- Docker
- Docker Compose
- PlatformIO (for flashing the ESP32 firmware)
- The cocktail robot itself (or the parts to build one).
- Microcontroller: ESP-32-Pico-Kit-1
- Scale: Elecrow Crowtail-Weight Sensor V2.0
- Microphone: INMP441 MEMS
- Speaker Driver: SparkFun I2S Audio Breakout
- Display: Waveshare 1.3-inch LCD
For running the services in GPU mode, you will need:
- An NVIDIA GPU
- NVIDIA driver version ≥ 12.9
- The NVIDIA Container Toolkit
This project uses a microservice architecture and Docker Compose to orchestrate the different services.
Before running the services, you need to create a .env file in the root of the repository. You can copy the provided sample file:
cp .env.sample .envThen, edit the .env file with your configuration.
Required for all configurations:
ESP_ADDR: The IP address of your ESP32.OPENAI_API_KEY: Your OpenAI API key.
Required only for CPU mode (docker-compose.cpu.yml):
When running in CPU mode, the TTS service uses Azure's cloud-based text-to-speech. You will need to provide the following credentials:
AZURE_SPEECH_KEY: Your Azure Speech API key.AZURE_REGION: The Azure region for your Speech service.
When running in GPU mode (docker-compose.gpu.yml), the TTS service runs a local model and does not require these keys.
-
Connect the ESP32 to your computer.
-
Navigate to the firmware directory:
cd firmware/esp -
Build and upload the firmware:
pio run -t upload
Important
Make sure the ESP32 is running and connected to the network before starting the services.
You can run the services in either CPU or GPU mode
CPU Mode:
docker-compose -f docker-compose.cpu.yml up --buildGPU Mode:
docker-compose -f docker-compose.gpu.yml up --buildNote
Each service has its own README.md for further information (see services/).
Portions of this project are based on the Waveshare 1.3-inch LCD HAT C library (© Waveshare).

