This project brings a "brain" to an interactive picture frame (nicknamed Wall-E), powered by the Google Gemini API. It captures voice commands, processes them using Gemini's multimodal capabilities, and displays generated art on a Pimoroni Inky Impression e-ink display.
Full build video on YouTube
- Voice-to-Art: Record audio prompts that Gemini transcribes and uses to generate unique images.
- Multimodal AI: Powered by
gemini-3.1-flash-image-previewfor advanced multimodal generation. - E-ink Integration: Automatically resizes and optimizes images for the Pimoroni Inky Impression 7.3" Spectra.
- Audio Feedback: Features a custom soundboard for system status (activation, processing, success, and errors).
- Event-Driven: Triggered by physical hardware buttons.
- Production-Ready: Includes a systemd service for autonomous operation on startup.
- Controller: Raspberry Pi Zero 2W
- Display: Pimoroni Inky Impression 7.3" (600x448) Spectra e-ink
- Audio Input: USB Microphone
- Audio Output: MAX98357 I2S Class-D Mono Amp
- Enclosure: 3D-Printed 7.3" Frame (Remixed by TrisM)
| Amp Pin | Raspberry Pi Pin |
|---|---|
| Vin | 5V Power |
| GND | Ground |
| DIN | GPIO 21 |
| BCLK | GPIO 18 |
| LRCLK | GPIO 19 |
- Dependencies: Managed via
uv. Runuv syncto install everything. - API Key:
- Copy
.env.exampleto.env. - Add your
GEMINI_API_KEYfrom Google AI Studio.
- Copy
- Run:
uv run labs/brain_mac.py
Ensure you have uv installed on your Raspberry Pi:
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/envClone this repository to your Pi:
git clone https://github.com/lahirumaramba/wall-e.git
cd wall-eCheck that your USB Microphone and Inky Impression display are detected:
arecord -l # Verify your USB Microphone is listed
# Inky Impression: Detected automatically via the Python scriptInstall core and Pi-specific dependencies:
cp .env.example .env
nano .env # Configure your API key and hardware settings
uv sync --extra piuv run brain.pyPress Button A on the Inky Impression to trigger a recording.
- Button Mapping: Uses GPIO 5 (Button A) for activation.
- Auto-Detection: Uses
inky.auto()for seamless setup. - Saturation: Fine-tune via
INKY_SATURATIONin.env.
To run the project automatically on boot:
- Edit the service file:
Open
wall_e.serviceand replace<YOUR_USERNAME>and<YOUR_PROJECT_PATH>with your actual details. - Install the service:
sudo cp wall_e.service /etc/systemd/system/wall-e.service sudo systemctl daemon-reload sudo systemctl enable wall-e.service sudo systemctl start wall-e.service
The labs/ directory contains secondary, experimental scripts:
labs/brain_mac.py: A version of the brain optimized for local Mac testing without e-ink hardware.
- Sound Effects: All sound files used in this project are sourced from freesound.org.
- 3D-Printed Enclosure: Inky Impression (2025 Edition) 7.3" Frame Remixed by TrisM.
- Hardware: Built for the Pimoroni Inky Impression series.
