Ambient light with sensors and MQTT
Please read Liability Disclaimer and License Agreement CAREFULLY
Transform your living space with this ambient light device, powered by STM32 microcontroller, APA102 LED strip, connected with Wi-Fi and MQTT, and controlled in OpenHAB.
Create the perfect atmosphere with intuitive lighting control and effortless integration with your smart home system.
This DIY solution is easy to set up and customizable to your preferences. Elevate your home experience with this DIY technology.
This Ambient light device is build as alternative to Philips Hue Play HDMI Sync Box with extra features.
In order to get the colors displayed by a TV we are using TCS34717FN/TCS34727FN color light-to-digital converter sensors.
They are place in front of TV screen on each side in such way that each sensor sees 1/4 of the screen
The Sensor Controller Board
Each TCS34717FN/TCS34727FN sensor is connected to the sensor controller via I2C
Two sensor and one sensor controller are assembled in a small 3D printed enclosure - stp model available for download here.
The placement of the sensor is shown in the image below (top side of the enclosure is hidden).
The 3D model in STP format for this enclosure can be downloaded here.
as well the interrupt pins PB5 and PA8 that are triggering the color data read from sensors.
When the CRGB data from both sensors is available, we normalize it considering the Clear channel and we get the RGB values for each sensor.
We RMS the values for RGB from each sensor to get intermediary values that will ensure a smooth transition of color variation from top to bottom of the TV screen.
Using USART2 we are sending an array of 9 bytes to the Ambient Light Controller.
The first 3 bytes are the RGB values from sensor 1, next 3 byte are the RMS values for RGB and last3 bytes the RGB values from second sensor.
Ambient Light Controller
1. Power supply input
2. INA280 high-precision current sense amplifier - is used to monitor the power consumption. It is connected to the MCU using I2C1 pins PB6 and PB7 plus a interrupt connected to PB8 as EXTI8
3. Programming header is exposing the following pins: NRST, SWCLK, SWDIO, SWO
4. Header to connect 1000uF capacitors on the APA102 power line
5. APA102 RGB LED headers connector
We are using SPI1 and SPI2 SCK and MOSI lines to transmit color data to LED strips.
6. Headers to connect the Sensor Controller Boards with the Ambient Light Controller on USART1 (PA9 and PA10)and USART2 (PA2 and PA3)
7. Connection toward ESP-01 or ESP8266 using USART3 PB10 as Rx and PB11 as Tx. To reset the ESP module pin PB2 configured as GPIO output is used.
8. TXS0104E 4-Bit Bidirectional Voltage-Level Translator we move from 3.3V logic level to 5V logic level of APA102
KiCAD and CubeMX configuration files can be downloaded here.
ESP-01 or ESP8266 is running a small Arduino IDE program that is adding Ambient light device in my WiFi network, connect it to my MQTT server and allows me to control this in manual mode using my home automation software OpenHAB.