This project uses an ESP8266 Wifi chipset in order to access local weather information from an internet connection. With this information, the ESP8266 is able to drive RGB LED's in order to show the color of the temperature outside. 0F is pure blue, 50F is pure green and 100F is pure red. All other temperatures are a mixture of blue/green or red/green. There is also a graphical user interface developed in Megunolink. There may be future plans to release a standalone version.
Winter is in full effect, but we are having some interesting temperature fluctuations this week. This morning it was quite cold at 23F (-5C) outside. Below is the color of the temperature outside:
Later that night the temperature rose to a warmer 47F (8.3C). This is the color of the temperature outside:
This is a great example of how the Weather Color Strip can show you visually the temperature outside without having to look up the weather online. You can simply look at the color that is always there to gauge the temperature outside.
The RGB LED's are a major piece to Weather Color Strip, and mixing of the RGB elements is also important in order to accurately show the color of the temperature outside. The colors are mixed by calculating duty cycles for Red, Green and Blue LED's based on the temperature information parsed from a weather API. The duty cycles are determined using this graphic I have made:
The problem I have noticed is the color spectrum can be green heavy, red heavy or blue heavy depending on the color balancing of the RGB elements. Ideally I would like to see an even spread of blue/green at lower temperature and red/green at higher temperatures. Currently I have tried four different strategies and would like to document the results:
Equal Resistance
Each LED (Red, Green and Blue) will have the same current limiting resistor value
Equal Current
Each LED (Red, Green and Blue) will have the same current
Equal Intensity
Each LED (Red, Green and Blue) will have a scaled max current so each LED will have an equal intensity
3:6:1 Color Mixing Ratio
Create an overall target for intensity. 30% will be red, 60% will be green and 10% will be blue.
The LED's I used are Cree SLV6A-FKB-CK1P1G1BB7R3R3. Digikey page is below:
You will notice that the LED voltage drops in each formula are changing slightly. This is change is due to changes in LED current. This voltage drop is very important when calculating ideal LED resistor values. Relationship between LED current and voltage drop can be found in the following graphs:
Another important section of the datasheet are the Relative Luminous Intensity curves. These curves show the relationship between current and luminous intensity. These are important when trying to calculation the ideal LED currents:
Equal Resistance
For this strategy I simply used a common resistor values for Red, Green and Blue LED's. I chose a simple 1k resistor.
Actual resistances, currents and intensities are summarized below:
RED
GREEN
BLUE
RESISTOR VALUE (OHM)
1000
1000
1000
LED CURRENT (mA)
10.16
9.000
9.050
INTENSITY (mcd)
355.6
960.000
181.000
Equal Current
For this strategy I tried to make the LED current for Red, Green and Blue to be 10mA. Below is some math on how I calculated the LED resistor values:
RED
GREEN
BLUE
RESISTOR VALUE (OHM)
1000
887
887
LED CURRENT (mA)
10.16
10.124
10.169
INTENSITY (mcd)
355.6
1079.895
203.382
Equal Intensity
For this strategy I tried to scale each LED current in order to have the same intensity for each LED (Red, Green and Blue). I was trying to achieve a target intensity of 400mcd. Using the Relative Luminous Intensity curves, I figured out how much current each LED would need in order to achieve 400mcd. Below is some tables/math on how I calculated the LED resistors values:
RED
GREEN
BLUE
20mA INTENSITY (mcd)
700
1600
400
RELATIVE INTENSITY (@ 400mcd)
0.571
0.250
1.000
REQUIRED LED CURRENT (mA)
11.429
5
20
I have calculated the necessary current values to achieve 400mcd of intensity. Now I can perform similar calculations completed in the equal current strategy to calculate resistor values:
Actual resistances, currents and intensities are summarized below:
RED
GREEN
BLUE
RESISTOR VALUE (OHM)
887
2430
442
LED CURRENT (mA)
11.342
3.745
19.910
INTENSITY (mcd)
396.956
399.451
398.190
3:6:1 Color Mixing Ratio
This strategy involves having specific intensity ratios for red,...
I'd say this is cool, but sometimes it's hot too...
Did you consider modulating the color a bit to add another channel of weather data? Say, flashing for precip, with the frequency increasing as the intensity increases?
Maybe I can use RGBW and use the white LED to indicate weather states as you are suggesting. Let me think about this and I will probably add updates in my project log if I decide to implement a feature like this.
I'd say this is cool, but sometimes it's hot too...
Did you consider modulating the color a bit to add another channel of weather data? Say, flashing for precip, with the frequency increasing as the intensity increases?