A Bluetooth Low Energy (BLE) controlled RGB LED lamp built on the ESP32 microcontroller. The lamp supports multiple lighting modes, real-time color and brightness control, and temperature monitoring — all controllable wirelessly via nRF Connect app. A dedicated mobile application is currently under development.
---Schematic and board layout designed in Eagle CAD.
---Physical PCB after printing and soldering.
---The lamp is currently controlled using the nRF Connect mobile app. Temperature readings are exposed as a BLE characteristic and visible directly in the app.
Press the physical button to apply a random color using ESP32's hardware RNG.
Simulates a realistic flickering candle effect.
Smooth brightness breathing effect.
Seamless smooth transitions across the full RGB spectrum.
- Full RGB color control — set any color via BLE (values 0–255 per channel)
- Brightness control via MOSFET PWM (low-side configuration)
- Temperature monitoring — DS18B20 sensor exposed as a BLE characteristic
- Random color button — applies a random color using ESP32's hardware RNG
- Lighting modes:
- Candle (flicker simulation)
- Pulse (breathing effect)
- Wave (smooth RGB transitions)
- BLE communication — controlled via nRF Connect (dedicated app in development)
| Pin | Function | Component |
|---|---|---|
| 23 | Red channel (PWM) | RGB LED — Red |
| 24 | Green channel (PWM) | RGB LED — Green |
| 25 | Blue channel (PWM) | RGB LED — Blue |
| 9 | 1-Wire data | DS18B20 Temperature Sensor |
| 11 | Button input | Random color trigger |
| Component | Description |
|---|---|
| ESP32 DevKit | Main microcontroller with built-in BLE |
| RGB LED 3W (Star) | High-brightness point light source |
| MOSFET (×3) | Low-side PWM drivers for each RGB channel |
| LM2596 Buck Converter Module | Steps down 12V supply to 3.3V for ESP32 |
| DS18B20 | Digital 1-Wire temperature sensor |
| Resistor 33Ω 5W | Custom current-limiting resistor |
| Push Button | Physical control for random color |
The repository includes pre-built external libraries for ESP32 DevKit, DS18B20, and the custom 33Ω 5W resistor component (Eagle library).
The project uses the following external libraries bundled in the repository:
ESP32 BLE Arduino— BLE GATT server implementationDallasTemperature+OneWire— DS18B20 sensor support- Custom Eagle component library — 33Ω 5W resistor footprint
- Open the project in Arduino IDE or PlatformIO
- Select board:
ESP32 Dev Module - Install libraries from the
/librariesfolder (or use the bundled ones) - Flash the firmware to your ESP32
- Open nRF Connect on your mobile device
- Scan for the device and connect
- Use GATT characteristics to:
- Write RGB values (3 bytes: R, G, B)
- Write lighting mode
- Read temperature
Until the dedicated app is released, the lamp can be fully controlled via nRF Connect:
- Write
[R, G, B]bytes to the color characteristic to set color - Write a mode byte to switch lighting modes:
Candle— CandlePulse— PulseWave— Wave
- Read the temperature characteristic to monitor the LED temperature
- University: Silesian University of Technology
- Faculty: Faculty of Automatic Control, Electronics and Computer Science
- Subject: Microprocessor and embedded systems
- Author: Maciej Porębski








