ESP32-S3 Firmware

Flash Your LED Matrix

Install the mood atom visualizer directly from your browser. No software installation required.

Requirements

  • ✓ Chrome or Edge browser (Web Serial API)
  • ✓ ESP32-S3 board with USB connection
  • ✓ 8×8 WS2812B LED matrix on GPIO 2

Your browser doesn't support Web Serial

Please use Chrome or Edge browser (v89 or later)

Web Serial access denied

Check browser permissions and allow serial port access

1

Connect USB

Plug in ESP32-S3

2

Click Button

Press Flash above

3

Select Port

Choose serial port

4

Wait

~30 seconds

Flashing Failed? Try Manual Boot Mode

If the device won't enter flash mode automatically, manually trigger boot mode:

  1. 1. Press and hold the BOOT button on your ESP32
  2. 2. While holding BOOT, press and release the RESET button
  3. 3. Release the BOOT button
  4. 4. Click "Flash Firmware" again

This puts the ESP32-S3 into download mode for flashing

🎭

6 Team Moods

Upbeat, Flow, Calm, Uncertain, Stressed, Frustrated - psychology-backed team climate states

Comet Trails

Beautiful fading tails (45→20→10→5→1 brightness) for smooth animations

🌊

Fluid Motion

30 FPS with momentum-based trajectories and Pac-Man style wraparound

📡

WiFi Provisioning

Beautiful captive portal for easy WiFi setup - no hardcoding credentials!

💡

LED Status Feedback

Corner LED shows WiFi status with pulsing blue (AP), flashing yellow (connecting), green/red flashes

🔍

mDNS Discovery

Find your device at howdo.local once connected to WiFi

What Gets Installed

Visual Features

  • Proportional color scaling (preserves hue)
  • Additive color blending for overlapping atoms
  • Exponential brightness fade on trails

Movement System

  • 8-directional quantized movement
  • 85% directional bias with 15% randomness
  • Periodic 45° turns every 2-6 seconds

After Flashing

1. Mood atoms start immediately - watch the colorful particles dance!

2. Device creates "Howdo" WiFi network - password: howdo2024

3. Connect your phone/laptop - captive portal opens automatically

4. Select your WiFi & enter password - device reboots and connects

5. Find it at howdo.local - or check your router for the IP

Remote Team Polling

Sync your display with a central mood API - perfect for distributed teams!

🌐 How It Works

  • Device polls your HTTPS endpoint at regular intervals
  • Endpoint returns JSON: {"moods": ["upbeat", "calm", ...]}
  • Device spawns atoms at random positions with mood-based colors
  • Multiple devices can display the same team moods uniquely

🔐 Secure with BIP39

We recommend using 12-word BIP39 passphrases for authentication:

  • 128 bits of entropy (secure against brute force)
  • Human-readable (easy to share verbally)
  • Simple monthly rotation (revoke access for leavers)

Example passphrase:

abandon ability able about above absent absorb abstract absurd abuse access accident

Firmware Build Info

Version 1.4.4 • Built Jan 30, 2026

File Checksums (SHA256)

howdo-led.bin (970 KB)
cda1f2013f36307971076ed19978a624d2931a4029fe671385290eae7603fa40
bootloader.bin (21 KB)
bcf41fda50d454d13a4a525330311f1374491402f19f3c0ecd0b8186419df1fc
partition-table.bin (3 KB)
7f00b6c042a89b15b0cac534f82ed988caf29278ff5700b0c511eb1b5bb7c820

What's New in v1.4.4

  • 🔧 Fixed stack overflow crash after multiple HTTPS polls
  • 🌐 Fixed HTTP handler registration (all 21 endpoints now work)
  • 🔒 Mutex protection for atom data - prevents race condition crashes
  • 🎛️ Centralised display state management