Huge thank you to anyone who helped me during this project !
I LOVE Interactive Media Arts!
- Equipment & Software
- 3 RGB LEDs
- Grove-Digital Light Sensor
- Arduino & Processing
- Autodesk Tinkercad (I use this model already existed in the Tinkercad community, but changed the size based on what I need and were able to 3D print.)
- 123D Circuits
- 3D printer
2. Code & Scheme
- Code that I learn from in Arduino & Processing examples: Dimmer, Reading a serial ASCII-encoded string, string toInt(), and online research "parsing-string-with-delimiter(input-through-serial-interface)"
- The latest version of my code (color mapping still needs optimization.)
3. Design Concept (My Understanding of Smart Home Design) & Goal
The lamp in our home is dull. Usually it has only one color or several kinds of brightness setting. Even in the hot trend of smart home design now, the mindset of a lot of smart home design products focuses on the fact that human controls all the settings in the way they want through a app that is designed by the producer beforehand. But, the truth is, most users don't want a platform to build on, instead, they want a product to improve their life because not all users are highly skilled. A key reason why smart homes haven't succeeded so far in the market is they've been built for people who love technology. Because they are the early adopters and keen to try new things, they are more accepting of flaws and willing to tinker.
Besides, active interaction is only a small part of how the general public use the devices that surround them in their house. Instead, the smart home products should work in the background, helping us and keeping us comfortable, without engaging us. In smart home design, customers won't change their habits built up over years to fit in your idea of how things are supposed to work. Light switches, for example, work well, and you won't change people’s habit of using them.
To win users over, smart home designs need to focus on building services and products that offers clear value, a very small amount of potential for tinkering.
Last but not least, don’t replace everything. People won't want to replace everything at home with entirely new products just to meet the new trend of smart home design. But we can change users’ habit by starting with plug-in product, plug-ins that can be put or installed on the product we already have at home. And then, when costumers’ using habit has been changed to the way designers want, then it is the best timing for smart home design to take over the market.
I want to make a smart light. Unlike most app controlled smart lights, which is set through your finger tips on a specific app, my smart light is sensor controlled. It will change color and brightness automatically based on the change of environment, like weather, humidity and brightness. It will also generate more saturated colors than conventional lamps.
Here is a short video about this project.
5. Difficulties and Optimization
- There's nothing really simple about controlling the RGB LED. Just the difference between the forward voltages and driving currents mixed in with different sensitivity of human eye to different colors can drive you crazy. Color mixing mechanism(How colored light is produced) is something that I was not familiar with, even now. There may never be a perfect LED RGB value mixing ratios to realize optimal color in signs and displays. What calculations can determine a proper mix? I guess the only thing we can do is to try as many times as we can to find a better one. Also intuitively, I think there should be some mathematically analytical way of determining the color interval. But I need to understand the color mixing mechanism very well. That’s probably something I will do for my Math research in the future. http://planetpixelemporium.com/tutorialpages/light.html
- How is coloured light produced from LEDs? The colour of light produced is dependent on the inorganic material used in the P-type and N-type semiconductor (organic material in the case of O-LED). Different inorganic materials in the semiconductor release different amounts of energy when the LED is connected to a power supply. This amount of energy released defines the colour of light produced. For example, red is a low energy light and blue is a high energy light. (From lighting.philips.com)
- Color mapping is still something that is kind of unfinished, as to find an algorithm which can show the color changing instantly from blue to yellow based on the temperature/humidity/brightness data change is no easy task. Besides, the RGB LEDs I use are not very precisely produced, which means it won't give me a perfect simulation of color changing. And also these tiny RGB LEDs don't provide a good diffusing effect, which means the colors the 3 cathodes produce won't be mixed perfectly.
- Websites I learnt from about the color mechanism:
- Serial Communication: There is communication between Processing and Arduino back and forth, which means we will write and read data instantly at the same time. Figuring out what to send and not to is not easy, as you don’t want to send a lot of useless data and crush the two softwares. Such a large amount of data processing may lead to the delay between Arduino and Processing. Also the data type and byte size Processing and Arduino can handle also needs to be considered. How to separate the Processing data and parse them into ints, and uses those to fade an RGB LED is the biggest challenge in this project.
6. Important lessons I learn
- Version control:
As I have tried different ways to translate the data and send them back and forth between Arduino and Processing, to make sure that the Temperature, Humidity(the first two data come from Yahoo weather library), and Brightness(this data come from digital light sensor) data can be sent to the proper place, thus control the color of the RGB LED lights.
But, when I kept modifying codes to try different ways of writing data to the Arduino(to control the LEDs), I just deleted and added stuff, but forgot to solve the main ways that I used for coding. I mean people can learn so many things from codes that didn’t work. And sometimes, when one version of the product works at first, then you change a little bit of things and unfortunately, it doesn’t work. Then you may want to go back to the earlier version and try to figure it what’s wrong. If you don’t save earlier version immediately, life could be horrible.
- How to present your product
Maybe your product can function in the way you want, only when there are different real data coming in. However, in real life, this sometimes may not be able to accomplish. But you want to show people your product can actually work under different circumstances. This is the moment when you need to input “fake” data that you may not be able to get now, but do will get in real life situations. Then use those data to represent different circumstances to finish your demo.