Introduction: IoT Jar Chandelier, Physical Gmail Twitter Facebook & Weather Notifier
This is my second instruct about chandelier, which I very favorite and wanted to make it more and more perfect.
I am a full time working with computers, but I don't have much time to check new messages from social networks like Facebook or Twitter and Gmail too. But I want something quickly without wasting time, I have to get my emails immediately when it has to mailbox, or tweet of someone that I follow. Perhaps the smartphone that best meet my request, but I want to made something really unique, made by myself.
EUREKA! This is a notification lamp, which can cause notice with light.
I use glass jars and put inside it some notification icon like Gmail, Twitter bird, Facebook and a few weather icons, and warning gas, fire icons.
Step 1: Intro: Gallery
Take a look at my chandeliers and think about how you receive a new email message, it's a really unique way.
Removing the audio message, the lamp can cause your attention by different light colors, which is very smooth. When you have a new email, the lamp will light up for email notification, the lights will turn off when you check mail finished. Similar to Facebook and Twitter.
My lamp also features gas and flame warning by the grove sensors from Seeedstudio. This is very great truly.
Step 2: Materials List
Here is what you need to make your chandelier:
Electronics:
Intel® Edison and Arduino Breakout Kit
Arduino Pro Mini 328 - 5V/16MHz
PCB sheet
RGB Leds (150 pcs)
8-bit shift register 74hc595d SMD (54 pcs)
Octal Bus Transceiver 74hc245d
Electrolytic Decoupling Capacitors - 100uF/16V
Electrical wire
...
Frame:
Acrylic sheet
Copper wire
Glass jars (9 pcs)
...
Tools:
Handsaw
Drill
Drill bits
Hot glue and it's gun
Super glue
Soldering iron
Solder
Wire cutters
Pliers ...
Step 3: Power Module
I use LM2596 Step Down Power Module to 5V power supply for LEDs and control circuitry. Intel Edison board has integrated voltage regulator circuit.
Here are a few parameters of the LM2596 module :
Input: DC 3V to 40V (input voltage must be higher than the output voltage to 1.5v above can not boost)
Output: DC 1.5V to 35V voltage continuously adjustable, high-efficiency maximum output current of 3A.
Features: high-Q inductance with output value of high-power LED indicator
Dimensions: 45 (L) * 20 (W) * 14 (H) mm (with potentiometer)
I adjust the output voltage by a small potentiometer on this module. Output voltage used in this case is 5V, can lower a bit, but if you rotate the potentiometer to more output voltage 5.5V, can be dangerous for the ICs and LEDs. Be very careful when doing this.
I use LM2596 module in most of my projects, because it has many features and cheap.
Step 4: HC-SR505 Mini PIR Motion Sensor
I use this sensor to detect the movement close to lights. Some effects display will change when someone move.
Here are some parameters of this sensor, it is easy to use with only one pin output. This pin at high level in 8s when sensor detects someone moving.
" HC-SR505 Mini PIR Motion Sensor is based on infrared technology and it can automatic control by itself with high sensitivity and high reliability. Because of the minimum size and low-power operation mode, it widely used in various of automatic electronic equipment, especially battery-powered automatic products. "
Specification
Operating voltage range: DC4.5-20V
Quiescent Current: <60uA
Level output: Gao 3.3V / Low 0V
Trigger: reusable trigger (default)
Delay Time: The default 8S + -30%
Board Dimensions: 10 * 23mm
Induction angle: <100 degrees cone angle
Sensing distance: 3 meters
Working temperature: -20 to +80 degrees
Sensor Lens Dimensions: Diameter: 10mm
Step 5: RGB LED Shift Pwm Testing
I am very interested in the shift register, especially 74HC595. You can fully control hundreds of RGB LEDs with Arduino through this shift register. There is also a library available for Arduino PWM control through SPI.
In the image above, I used Intel Edison to communicate with Arduino pro mini via UART. I use Edison to change the effect and process time effects display.
Explain:
Each RGB led consists of three colors, corresponding to 3 pins controller.
Each 8-bit shift register 74HC595 has 8 control output. I need to control 16 RGB Leds, which means I need 16x3 = 48 pins control, corresponding to 48/8 = 6 shift registers.
HOW TO UPLOAD THOSE SKETCHES TO AN ARDUINO MINI:
I’ve been into Arduino programming lately and looking forward to create a small form factor project. To get code into it you might want to try the following technique.
You’ll need an USB Serial Light Adapter or Arduino Uno, Duemillanove or something similar to act as a HOST (detachable Chip!!) .
Basically, connect the main Arduino’s 5v, GND, RX,TX (not crossed, just RX to RX and TX to TX) and RESET to the mini. Now for the most important part. DETACH the ATMega chip from the host board (Duemilanove, Uno.. what ever) and start uploading your sketches as you would with the normal arduino. No need to change the Board in the Arudino software. THAT’s IT. Nothing more. Just do it and enjoy.
About Programming:
I using ShiftPWM library for Arduino, you can download at Elcojacops Githup. Very thankful to Elco Jacobs for this library. You can refer to the example file in this library.
Based on software PWM on site http://www.elcojacobs.com/shiftpwm/ I chose the PWM frequency is 60, the maximum brightness is 200. My code file is attached below.
Step 6: Circuit Diagram and Program for Arduino
I've attached the PWM RGB LED program for Arduino pro mini. Just load and run.
Attachments
Step 7: Making Printed Circuit
Making a PCB circuit boards is simple for anyone who loves electronics. Just search step by step and you will be able to have any printed circuit boards that you like.
Here are a few photos of PCB process of me. I need nine boards to put in nine round glass jar. 9th is a beautiful number. Haha ...
Schematic and layout diagram are attached below.
Step 8: LEDs Soldering
I have very carefully solder the LEDs on printed circuit boards, which cost a lot of time and boredom. So I recommend this to being done when you feel most comfortable.
Step 9: Design Icons and Frame
I drew the icons like the logo of Twitter, Facebook, Gmail and some weather icon by Corel Draw.
I used 5mm thick acrylic sheet to make frame and 2 mm thick acrylic to make the sides.
Download the file attached below and open it in Corel Draw X7 or later.
Step 10: Laser Cut Acrylic
I don't have a laser cutting machine for the simple reason that it is too expensive. All my design file is done by a laser cutting services in my local, of course I have to pay for this. If you like me, send your design file to a nearby convenience store and wait to receive them.
I have tried to arrange the icons together to save the size of acrylic sheet. You should try the logo with a few different colors, such as red for Gmail, blue for Facebook and Twitter, ..
Step 11: Try to Position the Glass Jars
The glass jar size is 3 inches in diameter, so I designed the lamp frame with a diameter of approximately 14 1/2 inches to hold for all nine of the jar inside it.
I tried to arrange the glass jar in a circle below the acrylic frame, it looks great. I imagine my chandeliers How beautiful.
Step 12: Checking the Brightness of the 3mm LED
The next step is to make the icons light up your way. I used the 3mm LEDs strong light with many different colors, eg white for Gmail, blue for cloudy, orange for the sun and moon...
Using the test board to check the brightness of them, some kind of transparent LEDs are more powerful than other LEDs.
Step 13: Assembling the Pieces of Icons
I solder the LED in parallel and placed it inside the icon. This requires much time and meticulous.
Fixed the LEDs on the icon with super glue and using plastic ties to make the wires do not slip out of the icon.
Spend a lot of time for this step because I know a beautiful lamp is due to this icons.
Step 14: Checking the Brightness of the Icons
After assembling the acrylic pieces of icon together, I test them again to make sure that they will light up when power on.
Step 15: Attach the Icon on Printed Circuit Boards of the LEDs
Next step is to solder two wires of icons on LED board. A wire is connected to 5V, the other is control wire.
Step 16: Mounting of Printed Circuit Boards in the Cap of Glass Jar
I use foam tape to support the board LEDs below the lid, the plastic ties used to hold the lid and printed circuits together, prevent the jars from falling down.
Step 17: Last Checked
Check the last time to make sure all of them are light when powered on.
Step 18: Wrap the Electrical Wire by Insulation Sleeving Pipe
Step 19: Attach the Glass Jar on Acrylic Frame
Using plastic ties.
Step 20: Intel Edison Getting Started and Checking With Grove Sensors
For this project, I am using Intel's Edison board, so I will go through the process of how to setup with this particular board.
- Intel Edison needed a USB driver which you can download here, After driver installation is complete, you'll have three virtual COM port on your computer.
- If you're new to Intel Edison, looking at Intel Edison getting started
- Next step is install Flash Tool Lite, Flash Tool Lite is the preferred method of updating (flashing) your board’s firmware.The firmware is your board’s operating system, and also allows for use of Wi-Fi*, Bluetooth*, analog and digital controls, and other functions. It’s important to keep your firmware up-to-date to ensure the best stability and performance for your board.
Finally, set up a wifi connection so you have a real IoT device.
Connecting to the Network:
There a couple things to change in the code so that it connects to your local network, your network name and password. You will find the lines that need to be changed near the top of the sketch.
char ssid[] = "YOUR NETWORK"; // your network SSID (name)
<p>char pass[] = "NETWORK PASSWORD"; // your network password</p>
In this project, I used grove sensors system which easily connects and is built on a standard. They include MQ2-Gas sensor, Flame sensor, Air quality sensor, Infrared Temperature sensor, Speaker. You can find more information in Grove wiki page.
Download the attached file and open it in Intel's Arduino IDE.
Attachments
Step 21: Programming Your Intel Edison
In this project, I get information in three different ways. But they have a common point is run a python file to get information from the Internet via API, then save this information in a text file. I just read this text file and get the information I want.
Update Weather Conditions
The chandelier get the weather information from openweathermap.org. This program works with any microcontroller that can be programmed using Arduino's IDE and that has WiFi capabilities. The program makes a HTTP request for data on a JSON page hosted on openweather's server. It then uses the TextFinder Arduino library to look for specific information, such as the current temperature, and stores it in a variable.
You need a free account to get free API key which gives you access to openweathermap.org anytime to get information. Just visit this link syntax:
api.openweathermap.org/data/2.5/weather?q={YourCityCode/Name},{YourCountryCode}&appid={YourAPI}
After pressing Enter, you will get a few parameters such as:
{"id":88319,"dt":1345284000,"name":"Benghazi",<br> "coord":{"lat":32.12,"lon":20.07}, "main":{"temp":306.15,"pressure":1013,"humidity":44,"temp_min":306,"temp_max":306}, "wind":{"speed":1,"deg":-7}, "weather":[ {"id":520,"main":"rain","description":"light intensity shower rain","icon":"09d"}, {"id":500,"main":"rain","description":"light rain","icon":"10d"}, {"id":701,"main":"mist","description":"mist","icon":"50d"} ], "clouds":{"all":90}, "rain":{"3h":3}}
I will take a few parameters about the weather icon and save it to a text file, then I use the Arduino IDE to programming read the text file and turn on / off a weather icon on the chandelier.
Update Unread Email
To get information about the number of unread emails in your inbox, simply connecting to an IMAP4 server, authenticating with our login/password, and checking your email. This work is done by a python file which is stored in Intel Edison.
When found you have one or more unread emails, Edison will light up the Gmail icon to notify.
You can refer to more details in the Sparkfun tutorial.
Asking Facebook and Twitter for new notifications
For this, we will use Facebook Graph. Click here.
You will need to generate an Acess Token. Click on “Get Access Token”, then “Extended Permissions” and select “manage_notification”. Using this access token you can make request at URL: https://graph.facebook.com/me/notifications?acces...
This will return you some information in JSON format. The only field that we are interested in is “summary” at the end of the JSON. When you have a new unread notification, “summary” length will not be zero.
while True: <br> r = urllib2.urlopen('https://graph.facebook.com/me/notifications?access_token=your_access_token') html = r.read() data = json.loads(html); if len(data['summary']) == 0: write_led(0) else: write_led(1) time.sleep(3)
Download the attached file below and run it on!
Note: Save the Python files in /home/root/Chandelier/