BatSignal - Lights Up If You Have Missed Calls or Messages
by Arpan Mondal in Circuits > Microcontrollers
4798 Views, 104 Favorites, 0 Comments
BatSignal - Lights Up If You Have Missed Calls or Messages
Ever wanted a personal assistant who would take care of your calls and messages while you focus on your work? Unfortunately, this Instructable can't help you with that. But until you get one, you can build your very own BatSignal that will light up every time you get an SMS or if you have missed a call.
Now that I am slowly moving from college to an internship, I have noticed that I often miss calls and texts from my parents or close friends when I mute my phone and focus on work. At the same time, I was looking for a nice accent piece on my work-from-home setup to satisfy the DC fan inside me. So I decided to merge the two requirements and make the ultimate solution to missed calls and texts! The BatSignal!!
Basically, it is a mini IOT lamp that not just looks cool on a desk, but also lights up to notify you if you have any new SMS or missed calls. It doesn't project the batman logo on the clouds, at least as of now :( But on the flip side, it is fairly easy to make! So let's get making!!
Supplies
NodeMcu (any other esp8266 or esp32 module works too) Link to buy
5v Relay Link to buy
Jumper wires
BC547 transistor Link to buy
LED strip (Preferably warm white) Link to buy
9v power supply (or battery)
5v power supply (a smartphone charger will work too)
Designing the BatSignal
I made this 3D model on Fusion 360 to have an idea of how the lamp is going to look before actually building it. If you have a 3D printer I will suggest you 3D print this model (after making any changes required) instead of building it from scratch. In my opinion, the model looks much better than what I was able to make. I had to build it from materials I had lying around since I don't have a 3D printer.
I have included the f3d file for you to tweak and print.
Downloads
How I Made the Lamp
So this is how I made the lamp. You don't have to follow exactly the same procedure, feel free to add your own touch of creativity. If you have a 3D printer and want to print the model from the f360 file, you can skip this step.
First I took a plastic container and cut it to a smaller size. Then I covered it with black paper on all sides. For the base, I simply made a cone shape out of black card paper and made two cuts on the top, making sure they are at 90 degrees to each other. Now the previously cut container can easily be placed on the 90 degree cut. For the front, which is the main part, I cut a circular piece from a milky white plastic lid and stuck the batman symbol made from black card paper on it. Then I added a ring of black paper around the disc to prevent light leakage.
How It Works
Now we need a way to tell the NodeMcu in the lamp that there is a new SMS or a missed call. So here's the plan:
- An app on your phone acts as a TRIGGER.
- When there is a new message or a missed call, it triggers a VIRTUAL SWITCH
- The virtual switch runs online and sends a signal to your NodeMcu when it is triggered.
- The NodeMcu, on receiving the signal lights up the LED strip for 2 minutes and then turns it off.
The TRIGGER is an app called IFTTT which is free to install on IOS and Android.
The VIRTUAL SWITCH is an online service called Adafruit which is also free to use.
Setup Adafruit
Go to io.adafruit.com
Create an account and login. Now follow the steps as mentioned:
1. Click on Feeds from the top bar and select New feed. Give a name to your feed. I would suggest you to use the same name I have used, “Batsignal”. This will make life easier during programming. You can see I already have a feed called ISS_LED. This is from a previous project and you will not have that on your feeds list.
2. Click on Dashboards from the top bar and select New dashboard. Give the same name as your feed.
3. Click on the dashboard you created and select the gear icon on the right. Then select “Create a new block” and select the toggle switch.
4. Now select your feed name (Batsignal in this case) in the popup window. Then click on the next step. In the next window, don’t change anything. Just click “create block”
5 . Now your block is created. Click on “My key” on the top bar and note down your username and active key. This is unique to your project and make sure not to share it with anyone (Unless you want them to mess with your project that is)
Setup IFTTT
Download the IFTTT app (or you can just use the desktop site). Link to download
Now follow the steps:
1. Click on “create” (bottom) and then select "if this". Search "SMS" in the search bar and click on it. Click on "Any new SMS received"
2. Now click on "then that" and search for "adafruit" on the search bar. Click on “Send data to Adafruit IO”. Here select the feed name (Batsignal) and type ON in the “data to save” section.
To add a trigger for missed calls, follow the same steps as above by searching "call" after selecting "if this"
Good job! Now let's upload the code.
Get Coding!
Hey hey! Don't hit the back button yet, I was just kidding with the title. I know not everyone loves coding, so good news! You don't have to code, I have done it for you ;)
A few important notes though.
1. Replace …………SSID.......... with your WiFi (or mobile hotspot) name.
2. Replace…………PASSWORD………… with your WiFi (or mobile hotspot) password.
3. Replace …………Adafruit ID………… with your Adafruit username
4. Replace …………AIO key………… with the active key you had noted after creating the Adafruit toggle switch
Also, this is an optional step. In case you want to change the ON time of the LED strip, you can replace 120000 inside delay(120000); with the equivalent millisecond value.
Downloads
Circuit Connections
It's about to get slightly technical over here. But don't panic! It is not very complicated, I will try my best to keep it simple to understand.
If you know how to read circuit diagrams then its not a big deal for you. Just refer the circuit diagram in the last image and you should be good to skip to the next step. If you are planning to use the circuit in the fourth image because it looks simpler, you can give it a try. But I have noticed that the relay doesn't always work with the 3.3v from the NodeMcu. The last circuit should work flawlessly.
Now for the newbies.
1. First, look at the last diagram. Let's start with the transistor. Look at the transistor from the top and face the flat side of the transistor to the right.
2. Bend the top pin up, bend the bottom pin down and the middle pin to the left.
3. Now connect the left facing pin to D7 of the NodeMcu. Connect the bottom facing pin to GND and let the top facing pin stay not connected.
4. Now for the relay. Look at the image of the relay. There are 5 pins. I have labeled the two pins on the left as "IN". The pin between the two IN pins as "OUT1" and the NO pin on the right as "OUT2"
5. Connect any one of the "IN" pins to the top facing pin of the transistor (which was left unconnected earlier). Connect the other "IN" pin to Vin of the NodeMcu. Now connect "OUT1" to the negative terminal of a 9v battery or power adapter (12v will work too). Leave the "OUT2" pin unconnected.
6. Now for the LED strip. Connect the positive conductor of the LED strip to the positive terminal of the battery. Connect the negative conductor of the LED strip to the unconnected "OUT2" pin of the relay.
7. All done! To power the circuit, plug in a 5v power supply (a phone charger should work) to the micro-usb port of the NodeMcu. Oh and by the way, you can ignore the 5v battery in the circuit diagram. It just shows the power supply.
If you have followed along till here, congratulations! You have finished making the Batsignal. Great job!
Testing and Assembly
To test if your lamp works, plug in the 5v and 9v power supplies to your circuit. Then wait for a few seconds for the NodeMcu to connect to your wifi network. Make sure your phone (with IFTTT app) is connected to the internet and send an SMS to that phone from a different phone. As soon as you receive the SMS, the LED strip should light up. After about 2 minutes, it should turn off. If it works, great job! If not, here are a few things you can do to troubleshoot:
- Re-check your connections and make sure there are no loose connections.
- Check the applet you created on IFTTT. Open IFTTT and select "My applets" (bottom right). Click on your applet and click on "View activity log". If it says applet failed, you need to recheck your Adafruit and IFTTT setup.
- Check the code to make sure you have provided the right WiFi and Adafruit credentials. Also ensure that you didn't make any other changes to the code.
- Drop a comment on this Instructable stating the problem you are facing. I or others reading this Instructable might be able to help you out.
If it works, you can place all your electronics inside the lamp. I have placed the electronics outside the lamp in a separate housing because there was not enough space. The LED strip was stuck inside the lamp. And we have finished making the Batsignal!