Articles Blog

Make Your Own Smartwatch From An Old Cell Phone (Part 2)

Make Your Own Smartwatch From An Old Cell Phone (Part 2)

Hello, ugly duckling. Like a butterfly
rising from the ashes, I’m on a mission to transform you into a smartwatch. And
my similes are apparently as terrible as french fries on the chalkboard? So in part one, we took you out of your
shell, ripped off your face, and transplanted onto a different brain. It’s actually more PG than it sounds. And
now that we have a working screen, it’s time to make it act more like a
SmartWatch. Here’s the breakdown of what we need to do: 1) It needs to connect to a
smartphone via bluetooth 2) We also want it to tell time and 3) date as well as
4) light up and vibrating motor whenever it receives a call or text notification. Those are the basic functions and I may
add more as we go. I’ve gone ahead and swapped out my large
Arduino with an Arduino Mini that’s more size appropriate. The LCD connections and the
code should still work the same. I did end up moving the LCD’s LED pin to
Arduino pin 8 so that I could control it separately. The critical piece to “watch-ifying” this puzzle is bluetooth. It’s how it will communicate with your
smartphone. I’ve opted to use this HC-06 bluetooth module. Now there are smaller ones available but
you have to excel at surface mount soldering to get them connected. While I
excel in all the things, service mount soldering is what I excel at least. Now
on to the motor. Normally the wire up a motor to an
Arduino, you need a resistor, a diode, and a transistor. And if you’re a stickler
for wiring standards, you’re free to follow that method. But since this is a
very tiny motor with very little power and I have very little space for it, I’m wearing it directly to pin 3. I
apologize if that makes some of you cringe :-/ Lastly, i have a momentary button that
will be used to turn on the backlight. Now let’s beef up the Arduino code. Here’s
our code from last time, which essentially shows a splash screen. Let’s
add few more variables and…whoa…what type of variables are these? Alright, so if you want to display images
on your LCD, then go ahead and grab some images and make sure they’re black and
white. Open them up in a photo editor and
resize them to something smaller than 65 pixels tall by 96 pixels wide and then
save it as a bitmap file. Then you can open it up in this
neat little program called “LCD Assistant” and export it as code to use in your
Arduino program. I stored mine as a variable along with
the height and width of the images. Now under the setup section, we can initiate
the serial comms, assign pin values, and prep the screen. This section lights up the backlight and
sends a text and image splash screen, waits 5 seconds, and then clears
everything. In the loop section it gets a little bit more complicated, but here’s a
quick run-through. First you can delete all this. Then we’ll
look through the serial input checking to see if anything has been sent through
bluetooth. What we’re hoping to send from the
Android smartphone is a string that looks like this. And each of these variables represents
an element that will be displayed on the screen. So what we can do is read through this
string until the first separator appears, and then store that section as a
variable. And do so for each of the other elements until we reach the new line
character. Now what we can do is check to see if
those variables contain anything and if they do, we can perform actions. For
example, if the time hasn’t changed then nothing has been sent and we can display
an error. Otherwise, if it equals something like
this we can display that to the LCD screen. Same thing with the date. If the phone
variable changes, we can display the phone icon along with the phone number
that was sent. We can also set an LCD backlight timer
and buzz the motor. Then once the call stops, the variable will return to normal
and we can reset everything. Essentially it’s the same code for the
text messages, except I buzzed the motor differently so you can tell the
difference between a call and a text. This is our code for the button that
triggers the backlight. And this checks to see if the backlight variable has
been triggered and sends it through a timer that tells it how long to stay on
this code. It definitely isn’t polished and perfect, but I’ve made it available on
Github so you can use it for inspiration and change it however you like. You can now upload this code to your Arduino, and you should see a splash screen. But then the screen is just going to go blank. This is because it’s not receiving
any data. For that we need to make a quick Android app. This is App Inventor. I use it
for quickly maching up Android apps. For this SmartWatch app, I’m using a list
picker for connecting to bluetooth. A button for disconnecting it. And a couple
of labels to show the connection status. It’s just very basic. They’re organized
using a horizontal layout component, and then i added a clock timer, a texting and
phone call component, and a bluetooth server component. These are the basic components that i
used, but you can organize and add however many components you want. Jumping over to the programming side, I
have a full write-up of each element over on the project page. So for now I’m just going to summarize
how they all work. When the phone initializes, it checks to see a bluetooth
is connected and sets the status accordingly. Before picking from the list picker, fill
it with bluetooth names and addresses and then after picking something from
the list picker, connect to the selection that was made and update the status text.
Then when the disconnect button is clicked, terminate the connection and
change the status text. Next create the string variable to send
to the Arduino and then create three more variables to store the phone info.
One for if it’s ringing, which is true or false. One for who’s calling, and one that’s an
iteration counter. When a phone call is started, check to see if it’s incoming
and if so store the info in these variables. Similarly, create three more variables
for the text message, four if you want to store the message content itself. And
whenever text messages received you can pass it’s info on to these variables. Now this is the block that does all the
work. It loops through once a second and checks for new data, appends the current
time to our string variable, appends the date, checks for an incoming call and if
true then it appends that data and sends it in a loop for 10 seconds after which
it exits the loop and resets the variable. And then it does the same thing
for the incoming texts. It then sends that string of information to the
Arduino and resets the string. To test it out, you can download the
APK or use the companion app to run it on your phone. If this is too complicated, I’ve uploaded
mine to the Google Play App Store if you want to just download it. With your
Arduino on, make sure the smart phone is paired with Arduino’s Bluetooth and
then launch your app and connect to it. If everything was done correctly, you should
see the time and date on the screen. Pressing the button should initiate the
backlight and then if someone sends you a call or text, it should light up and
show the number on the screen and vibrate the motor. If you want, there are a lot more things
that you can do from here. App inventor has a new pedometer feature
that allows you to send step data to your watch. And on Arduino side, you can
add an accelerometer so the watch itself can count your steps. You can also add a
real time clock module to keep time without having to be tethered to your
phone. And there’s even a heart rate monitor that you could add. But I’m just
going to keep it simple for now. Next time, we’ll shrink it all down find
a way to power it and cram it all into a wrist sized case. If you want to see more of
my SmartWatch series, I’ve created a playlist where you can stay up to date
with the videos when they become available. What ideas would you like me to cover
next? Submit vote for your favorites at Click here to watch more videos like
this, and if you get any value out of my show would like to give some value back,
please feel free to like, subscribe, comment, follow me on social media, or
donate at All right, that’s it for this tutorial for
more go to

100 thoughts on “Make Your Own Smartwatch From An Old Cell Phone (Part 2)”

  1. There you go,everyone with color screens! I modified the code to work with a screen of mine(ILI9486).
    Hosted with <3 by PasteBin

  2. The connection diagram on the project page must be wrong. The wire from pin 11 on the arduino and one of the blue wires does not lead anywhere. I have been trying to get this to work for a couple of hours now and sadly nothing happens.

  3. Okay. Listen up. I don't have it but I saw it and am gonna buy it: dz09. 12 dollar smart watch. Does it suck balls? No, supringsly not.

  4. hello..
    please can you do a rc drift car build from scratch..
    and links to buy the parts you used?🙏🙏

  5. Dear Tinkernut! I really appreciate your tutorial, and i want to make it too, but i can"t buy an Arduino Mini. Is a Micro okay? If it's not can you send me a good one? Thank You, Peti.

  6. great videos and well presented. particularly this one. what wd it take to light up a LCD scavenged out of a TV with a non-moving / static image using an arduino or low cost "driver" (not sure if that's the word).

  7. the app needs to be always on screan so if you exit or lunch another app it will crach the app needs to lunch a service that will do all the work !!

  8. Can i use an old cell phone with an .jar app to connect via bluetooth with the smartphone to create an smartwatch?Is there any tool like App inventor to create old .jar apps?

  9. I'll have to examine the code that does the bitmap conversion. I'm sure I can write a more compressed variant that isn't code heavy or memory intensive. (Hint: BitMasking)

  10. i tried making this watch but there is no response in the watch its not notifying me any call or text messages
    all is see is Tinkernut logo after few second a blank screen or sometime some notification icon i am using hc-05 in slave mode with nokia 5110 display in arduino mega and there is no response in serial monitor too 🙁

  11. i installed the apk on my samsung note4, android 6.01, and it not show the contact 's name, just number, any idea how to fix it 🙁 , thank you so much 😀

  12. I am making the same project with an oled screen. Does the app work with that too? Please reply as soon as possible. Its urgent +tinkernut

  13. I copy your app but transalete it to espanish(but the blocks of code are in english), and Connecticut to arduino, but when i call or send a text, the arduino doesnt reconised it, What can be the problem????

  14. This project is nice but is good to buy nothing and lower the cost bro what chemicals that can turn old pcb to bind so it can turn round? and it is good to put cover made by jelly case materials I hope someone tech me to do this dream.

  15. if you know that kind of programming then it is EASY TO GET A JOB AND BY YOU SALARY PURCHASE A SMART WATCH DAMMNNNNN EASY

  16. 🐝🐝🐝🐝🐝🐝
    🌼 Hi, honey! 🌼

  17. 🌟🌟🌟🌟💬 Kiss! 🌟

  18. Why did you need resistors to reduce the current, when you are working with a 3.3v arduino pro mini? If you wire the LCD up directly to the board, it should work fine, right?

  19. Hi inventor i have diffrent screen how to get the pin details can give website or some think which help me

Leave a Reply

Your email address will not be published. Required fields are marked *