Skip to content

ESP32-S3-BOX-3 smart display with Material Design WiFi icons, intelligent reconnection, and animated robot eyes using FluxGarage/RoboEyes library

License

Notifications You must be signed in to change notification settings

carlinkkit/ESP32-Box3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ESP32 Box3 - Smart Display with WiFi Status

A professional ESP32-S3-BOX-3 project featuring Material Design WiFi status indicators, intelligent reconnection logic, and animated robot eyes display.

ESP32 Box3 Display ESP32 Box3 showing the animated robot eyes with time, date, and WiFi status

πŸ™ Acknowledgments

RoboEyes Library

This project uses the excellent RoboEyes library by FluxGarage for the animated robot eyes display.

Special thanks to FluxGarage for creating this delightful library that brings personality and charm to embedded displays! πŸ€–πŸ‘οΈ

🌟 Features

πŸ“‘ Intelligent WiFi Management

  • 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

🎨 Professional Display

  • 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

πŸ”§ Development Pipeline

  • SVG to Bitmap: Automated conversion from Material Design SVGs
  • Python Environment: Virtual environment with all dependencies
  • Cross-platform: macOS support with Homebrew integration

πŸš€ Quick Start

Prerequisites

# Install PlatformIO
pip install platformio

# For icon generation (optional)
brew install cairo pango gdk-pixbuf

Build & Upload

# Clone and navigate to project
cd ESP32-Box3

# Build and upload firmware
pio run --target upload

# Monitor serial output
pio device monitor --baud 115200

WiFi Configuration

  1. Copy the WiFi configuration template:
cp include/wifi_config.h.template include/wifi_config.h
  1. 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.

πŸ“ Project Structure

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

πŸ”„ WiFi Reconnection Logic

Connection States

  • Connected: Green WiFi icon, real-time NTP sync
  • Disconnected: Red WiFi icon, automatic reconnection attempts

Reconnection Strategy

  1. Quick Mode: 10 attempts, 1 second intervals
  2. Slow Mode: Continuous attempts, 1 minute intervals
  3. Auto-Recovery: Returns to quick mode when connection restored

Serial Console Output

πŸ“‘ 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...

🎨 Icon Generation

Regenerate WiFi Icons

# 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

Custom Icons

  1. Replace SVG files in assets/icons/
  2. Run the generation script
  3. New bitmaps will be written to include/MaterialDesignIcons.h

πŸ› οΈ Hardware

  • Board: ESP32-S3-BOX-3
  • Display: ILI9341 320x240 TFT
  • Features: WiFi, Bluetooth, Touch screen
  • Power: USB-C

πŸ“Š Display Layout

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             01/26/2025                                    πŸ“Ά    β”‚ ← Date & WiFi Status
β”‚             07:57 PM                                            β”‚ ← Time (12-hour format)
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚                        πŸ‘οΈ   πŸ‘οΈ                                β”‚ ← Animated Robot Eyes
β”‚                          ─                                     β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”§ Technical Specifications

Performance

  • 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

Colors

  • Background: Black
  • Time/Date: Orange (#f6b26b / RGB565: 0xFD60)
  • WiFi Connected: Green
  • WiFi Disconnected: Red
  • Robot Eyes: Blue

πŸ“ License

This project is open source. Feel free to modify and distribute.

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Material Design Icons

WiFi icons are based on Google's Material Design icon set, converted to high-quality bitmaps for embedded use.

οΏ½ Support

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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy