About this project
MoodLight is a window to the emotional state of the world.
"This small USB-powered lamp beautifully emits a twirl of color based on the emotions of Twitter users. Connor Nishijima has surpassed his goal of $935 on Kickstarter." - Atmel Semiconductors
"It’s great work from [Connor], and an interesting experiment in analyzing the state of the Internet." - Brian Benchoff, HackADay
"This is a great idea and would make a great tool for people who work in the world of marketing, having a constant update of emotion without having to stay connected to the twittersphere at all times." - Ponoko Staff
"This lamp won't read you the news, but it'll let you know when you should - before it's even posted." - Dan Powell, Redditor
There is a new way to stay connected with world events. moodLight is a 3″ tall USB powered lamp that beautifully emits a twirl of color based on the emotion of the online world! By taking a sample of all data posted to Twitter, we check each tweet against six emotions:
Each one of these emotions has several dozen sub-words that define it. For example:
- “I am so proud of my son for getting his degree! I’m going to miss him at home.”
This tweet contains the word “proud” (Joy > Pride > “proud”) and the phrase “miss him” (Sadness > Loss > “miss him/her/you/them”) making it a bittersweet tweet of both Joy and Sadness. These emotions would result in a twist of goldenrod and cyan in your lamp!
This however, is only one tweet. Over 700,000,000 tweets are posted every day from all over the planet, making for one hell of a data sample! If a major world event or trend rolls through, millions of Twitter users will be sharing their opinions to be collected and summarized in a pool of color on your nightstand, desk or counter.
Here are the live stats: (Graphs have been massively improved since 10/7!)
The system keeps a Weighted Moving Average of each emotion's Tweet Counts Per Minute, and uses this to build a sort of baseline average for each feeling. It then compares the most recent minute's data to the average to deliver a percentage value. For example:
If for two hours, about 1,200 tweets per minute about Love came in, but the most recent minute saw a spike of 2,400 t/min, the estimation for Love would be at 200%. I ran my system against archived data from a similar emotional analytics service, http://wefeel.csiro.au/ for August 11, 2014:
An example given in the video above, this was the emotional distress caused by the passing of Robin Williams. Around 5PM, the world found out and went crazy posting online. The spike consists of sadness, surprise and love from reminiscing fans - followed by a spike of anger from those in denial.
If you were away from news sources - in the kitchen cooking, or writing a Kickstarter campaign in your only tab - moodLight would have flooded and flashed twirls of light blue, in exactly the same fashion as the video (same data was used) and alerted you to check the news.
How does moodLight itself work?
moodLight is a combination of an ATMega328P and two lovely new technologies: The WorldSemi WS2812B for color (NeoPixel is the common name) and ESP8266 WiFi module from Espressif. (Just over a year ago, a WiFi module could cost twice what the moodLight sells for!)
Every second the moodLight makes a GET request to the moodLighting website. While the VPS backend running the service consumes many gigabytes of data per day, (2.4 million tweets on average) it compacts this content into 25-byte summaries that the lamps consume at 1-second intervals. This amounts to only 2.16MB of data consumed per day - smaller than the size of an MP3. Example 25-byte summary:
This contains all the data necessary if you split at every third digit:
- 001 - Header
- 113 - Love Percentage
- 106 - Joy Percentage
- 108 - Surprise Percentage
- 103 - Anger Percentage
- 106 - Sadness Percentage
- 108 - Fear Percentage
- 645 - Checksum
The “%” before the data is purely for parsing reasons inside the moodLight’s firmware. With this data, the lamp calculates the highest emotion and it's relation to the others to decide color levels. Here is the basic flow of information:
Tweets > ML Server > Analysis > Broadcast > ESP8266 > ATMega > WS2812B > Color
Here are some stats and specs:
- Dimensions: L 80mm, W 80mm, H 63mm,
- Birch Veneer housing, 5.2mm thick
- Power: 5V, 500-1000mA, micro USB
- Data consumed per day: 2.16MB
- Brightness: 12,060 mcd
- Tweets analyzed per day: ~2,472,000 (~902 million a year)
- Tweets analyzed since launch of service: 60,455,230 tweets
- Server: 2x DigitalOcean NYC-3 VPS
- Built in WiFi hotspot for initial configuration
- WiFi credentials stored in EEPROM, only set once!
MoodLight is IFTTT compatible!
moodLight can also be tied into If This Then That, or IFTTT for short, an online notification service. IFTTT makes it easy to make notifications cross the gap between platforms. For example:
Lets say you have a new Facebook notification. IFTTT's system will see this, and do almost any custom action in response, like email the notification to you, turn on a WeMo bulb, or set your Nest thermostat to a different temperature.
Millions of combinations are possible. In this case moodLight will act as a simple notification portal, flashing different combinations of colors for different notifications. An example would be:
- New Gmail: Flash red twice
- New Gmail from important address: Flash red twice, fade to yellow
- New pledge from backer: Flash green 3 times
- Package marked delivered - Flash brown, fade to blue
- Fitbit goal reached - Flash green twice, fade to blue.
And again, millions more are possible. Currently the moodLight is integrated using the Maker channel of IFTTT, but I am reaching out for a moodLight-specific IFTTT Channel.
Your moodLight is also controllable over UDP packets, making it easy to set your own color combinations, if you're not in the mood for moods. ;)
By sending packets very similar to the mood summaries above, you can change the color of one or more of the 9 pixels, set a global brightness level, put the lamp to sleep, wake it up, stream color data at 30+ FPS, and more - giving you functionality on par with a Philips Hue or LiFX bulb.
Detailed descriptions of each backer level are depicted in the Rewards section on the sidebar!
- $1 - Thank You
- $5 - Shout Out
- $25 - One moodLight Lamp (Early Bird)
- $30 - One moodLight Lamp (Unassembled housing)
- $35 - One moodLight Lamp (Assembled housing)
- $60 - Hacker Pack (Two lamps)
- $100 - Executive Level
Though only about $850 is needed to begin moodLight production, (plus up to $85 Kickstarter fee) I have many more plans in mind for the moodLight that are only possible with further funding. The minimum goal includes only 38 units sold for PCB manufacture reasons, so I expect that upon successful funding I'll have over-funded by 150% or more depending on media coverage. Here are my stretch goals:
$2,175 (75 lamps) - Machine Assembly
Below this threshold, I will be hand-assembling the PCBs from OSH Park in my lab with a custom-built reflow oven of my own. I have many hundreds of hours' experience with SMD reflow soldering, and I'll probably have the illnesses someday to prove it. ;) If more than 75 lamps are sold, I will switch to Jaycon Systems (www.jayconsystems.com) for automated PCB manufacture, assembly and fulfillment, as they have an awesome track record with helping Kickstarter creators.
$2,900 (100 lamps) - Native App Development
At 100 units sold, I will commission a Java/Objective-C developer to design an official app for moodLighting - a cross-platform interface to check current mood levels, get latest twitter trends during emotional spikes, and act as a GUI for the aforementioned UDP packet control of moodLight, giving it a complete out-of-box "smart bulb" functionality.
Doesn't this already exist?
Yes and no. An instructables user named RandomMatrix posted an instructable for a similar design here in May 2010:
While still an awesome project, this version has some setbacks:
- The lamp consumes the data itself (More bandwidth used, and still less data analyzed)
- Requires you to hard-code your own WiFi credentials in with the Arduino software (ML has a built in WiFi hotspot for configuring)
- Only uses 31 english terms for all emotions (moodLighting is using 3,590 words and phrases in English, French, German, Spanish and Japanese)
- Doesn't automatically update if the Twitter API changes
- Costs over $110 to assemble due to WiFly shield and full Arduino inside (moodLight is $30)
- No IFTTT or UDP control
- Single color display
- Only 11% the brightness of moodLight (1335mcd vs 12,060mcd)*
* based on RadioShack bulb used in Instructable
And the We Feel service you mentioned? Doesn't that already exist too?
Yes, yes of course. :) However - while We Feel currently consumes about 10x as much data as my own service, their numbers are not free to use in commercial products, and they only archive tweet counts themselves, not the relative percentages of each emotion against an average. For example, here is their data from the same Robin Williams day as above:
The spike in sadness is clearly visible, but because they graph just the tweet counts themselves, the amount of Joy is displayed as far beyond the level of sadness. (Which as you might personally recall, was not nearly the truth.)
Why should I back you, specifically?
I have been pursuing electronics professionally since 2012, and I don't sleep well if there's something more to do. I have been living and breathing the moodLight since it's conception in April '15, and I am highly anticipating the public response to this new tool. I have also been featured on HackADay twice!
Your funding of the moodLight is not only a method to receive one yourself, but a contribution to both myself and the community. I appreciate every single one of you.
For press inquiries, please contact firstname.lastname@example.org. Follow moodLight on Twitter @i_hate_lamp and on Facebook.
Here is a git repo containing many inside looks at moodLight's firmware and housing!
Any other questions?
Feel free to comment below, PM me here directly, and make sure to check out the FAQ's here and at http://moodlighting.co/frequently-asked-questions/ for more info!
Risks and challenges
I can assure you that nothing will be left to chance. I understand you are taking a risk yourself by backing me with your hard earned cash! As a Kickstarter supporter myself, I am intimately familiar with this. I respect and understand this, and will do everything in my power to keep this running as smooth as possible.Learn about accountability on Kickstarter
Support this project
- (30 days)