ESP32 Smart Light

ESP-IDF IoT LED Controller with BLE provisioning, HTTP control, NVS storage, and OTA updates



๐Ÿ’ก Project Overview

The ESP32 Smart Light is a custom firmware project built with the ESP-IDF framework in C.
Itโ€™s designed to control an LED over WiFi, with Bluetooth Low Energy (BLE) provisioning,
HTTP-based control, non-volatile storage (NVS) for persistent settings, and
over-the-air (OTA) firmware updates for easy maintenance.

The project demonstrates my ability to connect hardware and software,
from low-level embedded development to network protocols and update mechanisms.


โš™๏ธ Key Features

  • BLE WiFi Provisioning โ€” Configure WiFi credentials via Bluetooth from a mobile device.
  • HTTP API Control โ€” Control LED state using REST-style requests.
  • NVS Storage โ€” Save and retrieve configuration data persistently.
  • OTA Updates โ€” Deploy firmware updates remotely without a wired connection.
  • Built with ESP-IDF in C โ€” Full control over hardware features.


๐Ÿ“‚ Repository


๐Ÿ› ๏ธ Hardware Setup

Below is the ESP32-C6 Mini hardware used in the project, shown both in real life and as a wiring diagram for clarity.

Real hardware on a breadboard

Wiring: GPIO 23 โ†’ LED โ†’ 220 ฮฉ resistor โ†’ GND


๐Ÿ“ถ BLE Device Setup

The mobile app enables BLE-based provisioning for your ESP32 Smart Light.
You can scan for nearby ESP32 devices, connect, and send WiFi credentials from your phone.
This process allows the device to join your local network without hardcoding credentials.

The BLE provisioning screen scans for nearby devices and allows you to send WiFi credentials from your phone to the ESP32 device. After connection you can toggle LED and update the hardware.


๐Ÿ  Home & Control Screens

Below you can see the main device list and the control interface for an individual ESP32 Smart Light.
The home screen shows all discovered devices on your network, while the control screen allows you to toggle the light and view device details.

The home screen shows all discovered devices on your network, while the control screen allows you to toggle the light and view device details. The device control interface lets users toggle and update the device after a successful connection.
IDF monitor log of light toggling.


๐Ÿ”„ OTA Update Screen

The ESP32 Smart Light supports over-the-air (OTA) firmware updates directly from the mobile app.
The screenshot below shows the OTA update process in progress, allowing you to seamlessly upgrade your device without physical access.

OTA update in progress: The app downloads and installs new firmware to the ESP32 device over WiFi.


๐Ÿ“ƒ Summary

In short, this was my โ€œforever projectโ€ where there is only more to develop and the expansion of the project is only limited by my own time and interest.

Next, I might add an RGB LED and frontend controller for it. Or whatever comes to mind. Motors? Scanners? Who knows! ๐Ÿ˜„

If youโ€™re interested in the source code, check here: Repository