Skip to content

EmilyKeer/ESP32-WiFi-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ESP32-S3 WiFi Manager with RGB LED Control

License: MIT PlatformIO ESP32 Arduino

A complete IoT WiFi management and addressable RGB LED control solution for ESP32-S3 microcontroller. Control your ESP32-S3-DevKitC-1 board's WiFi connection and onboard WS2812/NeoPixel RGB LED through an elegant web interface or serial commands. Perfect for home automation, IoT projects, LED art installations, and embedded systems development.

🎯 TL;DR: Scan WiFi networks β†’ Connect via web UI β†’ Control RGB LED colors β†’ Build IoT applications faster!

ESP32-S3 WiFi Manager & RGB LED Control Demo

ESP32-WIFI-Manager-Demo.mp4

What you'll see: Web interface with WiFi status monitoring and LED control panel, plus the RGB LED rainbow effect on the ESP32-S3 board.

πŸ› οΈ Technologies & Tech Stack

Hardware Platform

  • ESP32-S3-DevKitC-1 - Dual-core Xtensa LX7 microcontroller with WiFi & Bluetooth or similar kits with ESP32-S3
  • WS2812/NeoPixel RGB LED - Addressable RGB LED (onboard GPIO 48 or 38)

Development Framework

  • Arduino Framework - Easy-to-use embedded development platform
  • PlatformIO - Professional IDE for embedded development with unified build system
  • C++11/14 - Modern C++ for embedded systems

Core Libraries & Dependencies

  • WiFi.h (ESP32) - Native WiFi connectivity and network management
  • ESPAsyncWebServer - Asynchronous HTTP web server for ESP32
  • AsyncTCP - Asynchronous TCP library for ESP32
  • Adafruit NeoPixel - Addressable LED control library
  • ArduinoJson - Efficient JSON parsing and serialization
  • ESP32Ping - Network connectivity testing and diagnostics

Web Technologies

  • JavaScript (ES6+) - Interactive web controls and API communication
  • REST API - JSON-based endpoints for LED and WiFi control

Testing & Quality

  • Unity Test Framework - Unit testing for embedded systems
  • Native Testing - Desktop-based tests without hardware
  • Embedded Testing - On-device hardware validation
  • Mock Libraries - Arduino and NeoPixel mocks for CI/CD

Features

WiFi Management

  • πŸ“‘ Scan and display available WiFi networks
  • πŸ” Connect to WPA/WPA2/WPA3 protected networks
  • πŸ”“ Support for open networks
  • πŸ’Ύ Automatic reconnection with saved credentials
  • πŸ“Š Real-time connection status monitoring
  • 🌐 Network diagnostics (ping test, signal strength)

RGB LED Control

  • 🎨 Full RGB color control (0-255 for each channel)
  • πŸ’‘ Brightness control (0-255)
  • 🌈 Rainbow effect animation
  • 🎯 8 preset colors (Red, Green, Blue, Yellow, Cyan, Magenta, White, Off)
  • πŸ“± Responsive web interface

Web Interface

  • πŸ“Š WiFi Status Dashboard
    • Connection status
    • SSID and IP address
    • Signal strength with visual indicator
    • Gateway and DNS information
  • 🎨 LED Control Panel
    • RGB sliders with live preview
    • Brightness control
    • Preset color buttons
    • Rainbow effect toggle
  • πŸ“± Mobile-friendly responsive design

Serial Interface

  • πŸ’» Command-line control via USB serial
  • πŸ› οΈ Full WiFi management from serial terminal
  • πŸ“‘ Network scanning and connection
  • πŸ” Status checking and diagnostics

πŸ’‘ Use Cases & Applications

Home Automation & Smart Home

  • Smart lighting control - RGB ambient lighting with web-based color control
  • IoT sensor nodes - WiFi-connected environmental monitoring devices
  • Status indicators - Visual feedback for home automation systems (door locks, security, appliances)
  • Network configuration - Easy WiFi setup for headless IoT devices

Maker Projects & Education

  • Arduino learning platform - Teach WiFi connectivity and web APIs
  • ESP32 prototyping - Quick-start template for ESP32-S3 projects
  • Embedded web servers - Learn asynchronous web programming on microcontrollers
  • LED art installations - Create interactive RGB displays with remote control

Professional Development

  • Product prototyping - Rapid WiFi-enabled product development
  • IoT proof-of-concept - Demonstrate connected device capabilities to clients
  • Embedded systems testing - Hardware validation with comprehensive test suite
  • Firmware templates - Production-ready code structure for ESP32-S3 projects

Creative & Entertainment

  • LED art projects - Addressable RGB LED control for creative installations
  • Mood lighting - Dynamic color-changing ambient lighting
  • Event decorations - WiFi-controlled lighting for parties and events
  • Visual effects - Rainbow animations and custom color patterns

βš™οΈ Hardware Requirements

What You'll Need

  • ESP32-S3-DevKitC-1 development board (v1.0 or v1.1) - Espressif's dual-core WiFi microcontroller
  • USB-C cable for programming and power supply
  • WiFi network (2.4GHz, WPA/WPA2/WPA3 or open)

Onboard WS2812 RGB LED Pin Configuration

  • v1.0 boards: GPIO 48 (default)
  • v1.1 boards: GPIO 38

If you have a v1.1 board, edit include/LEDController.h line 15:

#define RGB_LED_PIN 38  // Change from 48 to 38 for v1.1

πŸ’» Software Requirements & Dependencies

Development Environment

  • PlatformIO (recommended) - Professional embedded development platform
  • Arduino IDE (alternative) - Beginner-friendly option with ESP32 board support
  • USB drivers for ESP32-S3 (CP210x or CH340, usually installed automatically)

Required Libraries (Automatically Installed via PlatformIO)

  • ESP32 Arduino Core
  • Adafruit NeoPixel
  • ESPAsyncWebServer
  • AsyncTCP
  • ArduinoJson
  • ESP32Ping

πŸ“₯ Installation & Setup

Get started with your ESP32-S3 WiFi Manager in minutes! Choose your preferred development environment:

Using PlatformIO (Recommended for Professional Development)

  1. Clone or download this repository

    git clone <repository-url>
    cd ESP32-WiFi-Manager
  2. Open in PlatformIO

    • Open the project folder in VS Code with PlatformIO extension
    • Or use PlatformIO CLI
  3. Build the project

    pio run
  4. Upload to ESP32-S3

    pio run --target upload
  5. Open serial monitor

    pio device monitor

Using Arduino IDE (Great for Beginners & Hobbyists)

  1. Install ESP32 board support in Arduino IDE (ESP32-S3 support required)
  2. Install required libraries via Library Manager:
    • Adafruit NeoPixel
    • ESPAsyncWebServer (from GitHub)
    • AsyncTCP (from GitHub)
    • ArduinoJson
  3. Open src/main.cpp and rename to .ino
  4. Select board: ESP32S3 Dev Module
  5. Upload to board

Quick Start Guide

First Time Setup

  1. Connect your ESP32-S3 to your computer via USB-C

  2. Upload the firmware using PlatformIO or Arduino IDE

  3. Open the serial monitor at 115200 baud

  4. Connect to WiFi:

    • The device will automatically prompt you to connect
    • Type scan to see available networks
    • Type connect and follow the prompts
    • Select network number and enter password
  5. Access the web interface:

    • After successful connection, note the IP address displayed
    • Open a web browser and navigate to http://<ESP32-IP-ADDRESS>

Serial Commands

Once connected via serial (115200 baud), you can use these commands:

Command Description
help Show all available commands
status Display current WiFi connection status
scan Scan for available WiFi networks
connect Connect to a WiFi network (interactive)
disconnect Disconnect from current WiFi
forget Clear saved WiFi credentials
ping Ping google.com to test internet connectivity

Web Interface Usage

  1. Navigate to WiFi Status Tab:

    • View connection details
    • Check signal strength
    • See network configuration
    • Refresh status as needed
  2. Navigate to LED Control Tab:

    • Color Selection: Use RGB sliders to pick any color
    • Brightness: Adjust LED brightness
    • Preset Colors: Click preset buttons for quick colors
    • Rainbow Effect: Click "Rainbow Effect" for animation
    • Turn Off: Click "Off" to turn LED off

πŸ“ Project Structure & Architecture

Clean, modular codebase designed for easy customization and extension:

ESP32-WiFi-Manager/
β”œβ”€β”€ include/
β”‚   β”œβ”€β”€ CommandHandler.h       # Serial command processing
β”‚   β”œβ”€β”€ Config.h                # Configuration settings
β”‚   β”œβ”€β”€ LEDController.h         # RGB LED control
β”‚   β”œβ”€β”€ NetworkTester.h         # Network diagnostics
β”‚   β”œβ”€β”€ SerialInterface.h       # Serial communication
β”‚   β”œβ”€β”€ WebServer.h             # Web server & API
β”‚   └── WiFiManager.h           # WiFi management
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ CommandHandler.cpp
β”‚   β”œβ”€β”€ LEDController.cpp
β”‚   β”œβ”€β”€ main.cpp                # Main program entry
β”‚   β”œβ”€β”€ NetworkTester.cpp
β”‚   β”œβ”€β”€ SerialInterface.cpp
β”‚   β”œβ”€β”€ WebServer.cpp
β”‚   └── WiFiManager.cpp
β”œβ”€β”€ platformio.ini              # PlatformIO configuration
└── README.md                   # This file

πŸ”Œ REST API Endpoints

Build your own custom apps! The embedded web server exposes RESTful JSON API endpoints for remote control:

WiFi Status

  • GET / - Main web interface (HTML)

LED Control

  • POST /led/color - Set LED color
    {"r": 255, "g": 0, "b": 0}
  • POST /led/brightness - Set brightness
    {"brightness": 128}
  • POST /led/off - Turn LED off
  • POST /led/rainbow - Start rainbow effect

Configuration

WiFi Settings

WiFi credentials are stored in memory and persist through:

  • Automatic reconnection after power loss
  • Network disconnections
  • Use forget command to clear credentials

LED Settings

Default brightness: 50 (adjustable 0-255) Default pin: GPIO 48 (change in LEDController.h for v1.1 boards)

Web Server

Default port: 80 (HTTP) Automatically starts when WiFi connects

πŸ”§ Troubleshooting & Common Issues

Having problems? Here are solutions to common ESP32-S3 WiFi and LED issues:

LED Not Working

  • Check GPIO pin: Verify correct pin for your board version (48 or 38)
  • Brightness too low: Increase brightness slider
  • Web server connection: Ensure you're on the same WiFi network

WiFi Connection Issues

  • Wrong password: Use forget command and reconnect
  • Weak signal: Move closer to router
  • Network compatibility: Ensure WPA2/WPA3 support
  • Reset credentials: Use forget command

Serial Monitor Shows Nothing

  • Check baud rate: Must be 115200
  • USB driver: Install CH340 or CP210x drivers if needed
  • Port selection: Select correct COM port

Web Interface Not Loading

  • Check IP address: Use status command to verify IP
  • Same network: Ensure computer is on same WiFi network
  • Firewall: Check if firewall is blocking port 80
  • Refresh browser: Try clearing cache or different browser

Build Errors

  • PlatformIO: Run pio lib install to install dependencies
  • Board not found: Update platform: pio platform update espressif32
  • Library conflicts: Remove .pio folder and rebuild

Contributing

Contributions are welcome! We appreciate your help in making this project better.

To contribute:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please read CONTRIBUTING.md for detailed guidelines including:

  • Code style requirements
  • Testing procedures
  • Development setup
  • Pull request process

License

This project is licensed under the MIT License - see the LICENSE file for details.

Third-Party Licenses

This project uses several open-source libraries. See NOTICE file for complete attribution and license information for:

  • Adafruit NeoPixel (LGPL-3.0)
  • ESPAsyncWebServer (LGPL-3.0)
  • AsyncTCP (LGPL-3.0)
  • ArduinoJson (MIT)
  • ESP32Ping (MIT)

Acknowledgments

Author

EmilyKeer - GitHub Profile

Created for ESP32-S3-DevKitC-1 development board

Repository

GitHub: https://github.com/EmilyKeer/ESP32-WiFi-Manager

πŸ’¬ Support & Community

Need help with your ESP32-S3 project? Here's how to get assistance:

  1. Check the Troubleshooting section
  2. Review serial monitor output at 115200 baud
  3. Verify hardware connections and board version
  4. Search existing issues
  5. Open a new issue with detailed description

Changelog

Version 1.0.0 (2025)

  • Initial release
  • WiFi management with serial interface
  • RGB LED control via web interface
  • Automatic reconnection
  • Network diagnostics (ping)
  • Beautiful responsive web UI
  • Support for ESP32-S3-DevKitC-1 v1.0 and v1.1

🏷️ Keywords & Topics

GitHub Topics: esp32 Β· esp32-s3 Β· wifi-manager Β· neopixel Β· ws2812 Β· rgb-led Β· platformio Β· arduino Β· iot Β· home-automation Β· web-server Β· async-webserver Β· led-control Β· embedded-systems Β· microcontroller Β· esp32-devkit Β· addressable-led Β· wifi-configuration Β· iot-platform Β· maker-projects

Related Search Terms: ESP32-S3 WiFi setup, ESP32 web interface, NeoPixel ESP32, WS2812 Arduino, ESP32 LED control, IoT WiFi manager, ESP32 async web server, addressable LED control, ESP32-S3-DevKitC-1 projects, PlatformIO ESP32, Arduino ESP32 examples, ESP32 home automation, RGB LED web control, WiFi provisioning ESP32, ESP32 IoT projects


Enjoy your ESP32-S3 WiFi Manager with RGB LED Control! πŸŽ¨πŸ“‘

Copyright (c) 2025 EmilyKeer - Licensed under MIT License

About

ESP32 WiFi Manager - Interactive WiFi scanner and connector

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published