A professional ESP32-S3-BOX-3 project featuring Material Design WiFi status indicators, intelligent reconnection logic, and animated robot eyes display.
ESP32 Box3 showing the animated robot eyes with time, date, and WiFi status
This project uses the excellent RoboEyes library by FluxGarage for the animated robot eyes display.
- Library: FluxGarage RoboEyes for OLED Displays
- Creator: FluxGarage
- Repository: https://github.com/FluxGarage/RoboEyes
- Features: Realistic eye movement, blinking animation, idle behavior
Special thanks to FluxGarage for creating this delightful library that brings personality and charm to embedded displays! π€ποΈ
- Smart Reconnection: 10 attempts every second, then once per minute
- Visual Status: Material Design icons (green=connected, red=disconnected)
- Real-time Logging: Comprehensive serial console output
- Automatic Recovery: Seamless reconnection with NTP time sync
- Time & Date: 12-hour format with custom orange color (#f6b26b)
- Anti-flicker: Selective rendering for smooth updates
- Robot Eyes: Animated eyes with idle movement and auto-blinking
- High-Quality Icons: 16x16 anti-aliased Material Design bitmaps
- SVG to Bitmap: Automated conversion from Material Design SVGs
- Python Environment: Virtual environment with all dependencies
- Cross-platform: macOS support with Homebrew integration
# Install PlatformIO
pip install platformio
# For icon generation (optional)
brew install cairo pango gdk-pixbuf
# Clone and navigate to project
cd ESP32-Box3
# Build and upload firmware
pio run --target upload
# Monitor serial output
pio device monitor --baud 115200
- Copy the WiFi configuration template:
cp include/wifi_config.h.template include/wifi_config.h
- Edit
include/wifi_config.h
with your actual WiFi credentials:
const char* ssid = "YourWiFiNetwork";
const char* password = "YourPassword";
Note: The wifi_config.h
file is excluded from Git to keep your credentials private.
ESP32-Box3/
βββ README.md # This file
βββ platformio.ini # PlatformIO configuration
βββ src/main.cpp # Main ESP32 firmware
βββ include/MaterialDesignIcons.h # Generated WiFi icon bitmaps
βββ lib/ # Arduino libraries
βββ test/ # Test files
βββ assets/ # Development assets
βββ docs/ # π Documentation
β βββ SIMPLIFIED_CHANGES_SUMMARY.md
β βββ DISPLAY_MOCKUP.md
β βββ WIFI_ICON_MOCKUP.md
β βββ VERSION_ROLLBACK_GUIDE.md
βββ scripts/ # π Development scripts
β βββ svg_to_bitmap.py # SVG to C bitmap converter
β βββ requirements.txt # Python dependencies
βββ icons/ # π¨ Source SVG files
β βββ wifi.svg # Material Design WiFi icon
β βββ wifi-off.svg # Material Design WiFi-off icon
βββ backups/ # ποΈ Project backups
- Connected: Green WiFi icon, real-time NTP sync
- Disconnected: Red WiFi icon, automatic reconnection attempts
- Quick Mode: 10 attempts, 1 second intervals
- Slow Mode: Continuous attempts, 1 minute intervals
- Auto-Recovery: Returns to quick mode when connection restored
π‘ WiFi CONNECTION LOST!
Starting reconnection attempts (quick mode - 10 attempts every 1 seconds)
π WiFi RECONNECTION attempt 1/10 (quick mode - 1 second interval)
Connecting to SSID: YourNetwork
Attempting connection..........
β WiFi reconnection FAILED
Next attempt in 1 seconds
β
WiFi CONNECTED successfully!
IP Address: 192.168.1.100
Signal Strength: -45 dBm
Re-syncing NTP time...
# Activate Python environment
source .venv/bin/activate
# Set library paths (macOS)
export DYLD_LIBRARY_PATH="/opt/homebrew/opt/cairo/lib:$DYLD_LIBRARY_PATH"
# Generate new bitmaps
python assets/scripts/svg_to_bitmap.py
- Replace SVG files in
assets/icons/
- Run the generation script
- New bitmaps will be written to
include/MaterialDesignIcons.h
- Board: ESP32-S3-BOX-3
- Display: ILI9341 320x240 TFT
- Features: WiFi, Bluetooth, Touch screen
- Power: USB-C
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 01/26/2025 πΆ β β Date & WiFi Status
β 07:57 PM β β Time (12-hour format)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ποΈ ποΈ β β Animated Robot Eyes
β β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Memory Usage: 14.2% RAM, 14.3% Flash
- Update Frequency: 5 seconds (time/date), 20ms (eyes - 50 FPS optimized)
- WiFi Check: Every loop cycle (~20ms)
- Eye Clearing: Optimized selective clearing (no more slow sweeping)
- Anti-flicker: Selective rendering
- Background: Black
- Time/Date: Orange (#f6b26b / RGB565: 0xFD60)
- WiFi Connected: Green
- WiFi Disconnected: Red
- Robot Eyes: Blue
This project is open source. Feel free to modify and distribute.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
WiFi icons are based on Google's Material Design icon set, converted to high-quality bitmaps for embedded use.
For issues or questions:
- Check the documentation in
assets/docs/
- Review the serial console output
- Verify WiFi credentials and network connectivity
Built with β€οΈ for the ESP32 community