Posted on 6 Comments

#14: Ambient tile using Arduino, ESP8266, and NeoPixel compatible LEDs

Ambient information displays allow a home automation system to provide you with subtle feedback embedded within your environment. Concealing RGB LEDs behind a wall tile allows them to display status information when they are turned on, but still be totally invisible when turned off.

View directly on YouTube:

Parts Required

Assemble Hardware

Because I installed the tile so many years ago, I used original Freetronics Addressable RGB LED Modules that came out before the term “NeoPixel” was invented and used the WS2801 driver IC. Newer modules use the WS2812B, which integrates the controller chip into the LED body itself.

Connect up as many LEDs as you need, and glue them in place behind the tile. It’s best to keep the controller somewhere accessible in case you need to replace or repair it, so just have the LEDs permanently fitted behind the tile. You don’t want to have to rip out tiles and then re-tile your wall just to plug in a USB cable and update the firmware!


I’ve published an example sketch that has two separate functions: firstly it subscribes to an MQTT topic and watches for messages telling it to change the colour of an LED, and secondly it reads periodically from a DHT-22 temperature and humidity sensor and publishes the readings to other MQTT topics.

You can see the example sketch at

6 thoughts on “#14: Ambient tile using Arduino, ESP8266, and NeoPixel compatible LEDs

  1. […] Read more and get the source code here […]

  2. Do you have the complete source code with the libraries as i cannot seem to fins all the correct ones to compile it?

  3. […] SuperHouseTV #14: Ambient tile using Arduino, ESP8266, and NeoPixel compatible LEDs […]

  4. The code is having an error on 60th line. It says
    ‘MQTT’ does not name a type
    exit status 1
    ‘MQTT’ does not name a type

    1. That means you don’t have the PubSubClient library installed. You can install that in the Arduino IDE by going to Sketch -> Include Library -> Manage Libraries, searching for PubSubClient, and clicking Install.

Leave a Reply

Your email address will not be published. Required fields are marked *