An open-source desk buddy that blinks, tells the time, and notices when you're near.
Jarvis is an open-source desktop companion built on an ESP32. It shows a pair of animated eyes on an OLED display, keeps the time synced over WiFi, and uses an ultrasonic sensor to notice when you get close, looking up and reacting when you're near.
Timekeeping is handled over the network: the ESP32 connects to WiFi and syncs to an NTP server on boot, with automatic daylight-saving handling for the local timezone, so there's no dedicated RTC to keep set. The eyes are driven by the FluxGarage RoboEyes library, and a button lets you switch between moods and views.
The project is designed to be:
- Expressive, with animated eyes that blink, glance around, and react to presence.
- Easy to read, with a crisp OLED display and a WiFi-synced clock.
- Simple to build, on a single USB-C-powered board.
- Hackable and well-documented, as a learning reference for embedded projects.
The table below maps each component to its ESP32 GPIO. For the full wiring, the complete schematic is available as a PDF, and the entire KiCad project is included too, with the BOM and component details across several distributors.
| Component | Component Pin | ESP32 GPIO | Notes |
|---|---|---|---|
| OLED Display (SSD1306, I²C) | VCC | 3V3 | Do not use 5V / VIN |
| GND | GND | Common ground | |
| SDA | GPIO21 | I²C data | |
| SCL | GPIO22 | I²C clock | |
| Next Screen Button | Pin 1 | GPIO32 | INPUT_PULLUP; pressed = LOW |
| Pin 2 | GND | Other leg to ground | |
| Previous Screen Button | Pin 1 | GPIO27 | INPUT_PULLUP; pressed = LOW |
| Pin 2 | GND | Other leg to ground |
- PlatformIO (VS Code extension or CLI).
- An ESP32 board, an SSD1306 OLED and two push buttons (or just the Wokwi simulator, see below).
Wi-Fi credentials are kept out of version control. Copy the template and fill in your own:
cp secrets.h.example secrets.hThen edit secrets.h with your network details:
#define WIFI_SSID "your_wifi"
#define WIFI_PASS "your_password"pio run # compile
pio run -t upload # flash to the board
pio device monitor # open the serial monitorYou can run Jarvis entirely in VS Code without any physical hardware using the Wokwi simulator.
-
Install the Wokwi Simulator extension for VS Code.
-
Create a
wokwi.tomlfile in the project root with the following content:[wokwi] version = 1 firmware = ".pio/build/jarvis/firmware.bin" elf = ".pio/build/jarvis/firmware.elf"
-
Add a
diagram.jsonin the project root describing the circuit. You can copy it from the public Wokwi project here: wokwi.com/projects/469374163665964033. -
Set your credentials to Wokwi's guest network in
secrets.h:#define WIFI_SSID "Wokwi-GUEST" #define WIFI_PASS ""
-
Build the firmware with
pio run, then opendiagram.jsonand start the simulator.
Copyright © 2026 Carmen
Jarvis is open-source and released under the MIT License.
See LICENSE.md for the full details.
Built and maintained by Carmen :)
