WiFi RGB Lamp Web Server

Dependencies:   mbed ESP8266_WebServer

RGB WiFi Lamp


This is the official firmware repository for the BinarySpace RGB WiFi Lamp project. This firmware is still in alpha stage, and subject to change.

Planned changes include:

  • Configure the WiFi Lamp to connect onto your SSID
  • Variety of operating modes like
    • Fixed colour operation
    • Rainbow gradient
    • Time-based colour changing
    • API-based colour changing

Connecting to the WiFi lamp

To connect to the WiFi lamp web server, scan for an open WiFi network using your cellphone, tablet or laptop that begins with the letters ESP_xxxxxx. This is the automatically created SSID of the ESP8266 WiFi module used in the lamp. Your WiFi client needs to be configured to use DHCP.

Once connected, simply point your browser at and you should see the rudementary web interface allowing you to switch the WiFi lamp on in the red colour or off.

A second option is to enter the following URL
where x is a number between 0 and 255 for the intensity of (r)ed, (g)reen and (b)lue respectively. Any of the r,g,b parts not specified will automatically default to 0

Supported Platforms

  • ST Nucleo F103RB
  • ST Nucleo F302R8
  • ST Nucleo L152RE
  • ST Nucleo F401RE

Unsupported Platforms

  • ST Nucleo F030R8 (unsupported due to insufficient registers for PololuLed library)

How to update your firmware

One of the best things about the ST Nucleo series is that they enumerate as a USB Mass Storage device when plugged in. Updating the firmware is as simple as compiling it using mbed compiler(free registration required to use) for your selected platform, plugging in your Nucleo and copying the .bin file created by the compiler to the USB drive enumerated by the Nucleo. That's it!

Code is fully Open Source

Please feel free to fork this repository and to submit pull requests if you make any cool additions/changes.

If you are developing changes to the firmware and monitoring via serial console for debugging purposes, note than you can simply comment out the #define DEBUG_WIFI line at the top of the main.cpp file to make the output much less verbose. This effectively disables debugging of the WebServer library code and echoing of communications between the Nucleo and the ESP. It also makes the web server noticeably faster, as it doesn't have to output a lot of serial data before handling requests.

LED Strip colour inconsistency

If you are experiencing problems with the LED's not all changing colour, or perhaps flickering or incorrect colour, there could be 2 potential problems we have identified.

  • Power Supply problems - If the power supply is not providing enough power, or not clean enough power, you may experience flickering or random colour changes. Ensure that your power supply can provide enough power (1A @ 5V recommended). If this does not solve your problem, soldering a capacitor over the power supply lines(5V, GND) may help to clean out any noise from the power supply. (100uF minimum)
  • Depending on cable lengths and connectors, noise on the data line may also be a problem. Try soldering a 100Ω - 500Ω resistor in line on the Din pin of the LED strip

Firmware update for the ESP8266 Module

We suggest you upgrade the firmware on the ESP8266 module to the latest official AT firmware from Espressif. Click Here for a detailed upgrade quide.


RevisionDateWhoCommit message
28:ba5c68a04f56 2015-01-08 sschocke Disco Mode default tip
27:88093aa94e24 2015-01-08 sschocke Fixed robots.txt spelling mistake
26:ea5e0ff46492 2015-01-07 leet Add favicon, robots.txt and LED Disco Function, no WebGUI yet.
25:841fc9daffa5 2015-01-06 sschocke Removed unnecessary code that was commented out
24:849265425708 2015-01-05 sschocke Fixed bug with ESP module startup sequence
23:3563e1699fb9 2015-01-04 sschocke Added config screen functionality; Updated Color Picker to be more bandwidth and RAM friendly; Merged in latest WebServer
22:6d7a72fab8ff 2015-01-01 sschocke Added Color Picker function to home screen
21:fab25540a789 2015-01-01 sschocke Moved Web Server to it's own library
20:f5a6527bfda6 2014-12-31 sschocke Rework of Web Server to handle multiple simultaneous requests
19:7fdccfd5b50b 2014-12-29 sschocke Merge leet's front page changes into new firmware branch
18:cdfe5eb7d3ad 2014-12-29 sschocke Merge memcpy fix into firmware branch
17:2c57a1451db8 2014-12-29 sschocke Merge memcpy fix into mainline
16:f2f2da9ef9ab 2014-12-28 leet Add alias for setcolour/setcolor; Add to frontpage, basic set colour form;
15:ad68100221b8 2014-12-29 sschocke Fixed to use memcpy instead of strcpy
14:416fff90cd0f 2014-12-29 sschocke Fixed SendReply to be able to send buffers
13:1e8f27da036a 2014-12-29 sschocke Updated revision after ESP8266 Firmware upgrade
12:fbf950985e1c 2014-12-28 sschocke Updated Lee's primary colour additions to new WebServer API
11:3ab606a42227 2014-12-28 sschocke WebServer API Updates for multiple content types
10:f48a9f923271 2014-12-28 leet Add green, blue and white links, with minor wording updates.
9:319aeb6e0123 2014-12-27 sschocke Updated ESP8266 Web Server to handle multiple requests better, and to automatically analyze and populate GET parameters
8:f819de1946a7 2014-12-19 sschocke 8 LED firmware with support for F302 Nucleo added
7:f15c81074400 2014-12-18 sschocke Moved all current WebServer functionality to ESP8266_WebServer class
6:f5df3b30181a 2014-12-18 sschocke Pulling setcolor changes in
5:42c6f9d916bc 2014-12-18 sschocke Starting to move web server functionality to class for ESP8266
4:4a502f72cbe3 2014-12-01 tomvdb added setcolor url
3:34cd0bb34971 2014-12-01 sschocke Added L152 support
2:48412ab84b71 2014-12-01 sschocke Fix Pololu LED Strip library to compile for both F401 and F103 platforms
1:f07afcffeb5a 2014-11-20 sschocke Extracting URI and Pololu LED Intergation
0:d21e3e1c0a4b 2014-11-16 sschocke Initial Commit