Instructables

Make your own smart watch

Featured
Picture of Make your own smart watch

Most IT companies participate in the race to grab people’s wrist. A smart watch becomes the most significant item in a wearable device category. You can easily find this mood in this link, there are tons of smart watches.

But here is a simple way to evaluate smart watch’s future on your own. Make it! With Arduino micro-processor and Android, I made a simple smart watch and named it “Retro Watch“. You can do this too!

Retro Watch is an open source project to let you make a smart watch based on Arduino and Android. This text explains about modules, blueprints, how to install and use the Arduino and the Android source codes step by step.

 
Remove these adsRemove these ads by Signing Up

Step 1: Overall Structure

Picture of Overall Structure

RetroWatch is a simple system that is used a hardware platform called Arduino, which is intended for artists, designers, and hobbyst, and an Android app. The overall structure is in the picture above.

Imagine a very small computer that you can wear on your wrist. Arduino board is a micro-processor and a storage, and there’s only one input method : a button. Bluetooth is to communicate with other devices, and the battery would be necessary for power. I’ll install an Android app for collecting or editing various RSS and system information and for notification on the Android device.

bonbonamyesterday

great work. I have read this atleast a hundred times.

can I use an e-paper display which needs a 5V supply? non-technical , so not sure. thanks!

GodsTale (author)  bonbonamyesterday

E-paper looks better choice than OLED. Because I have no chance to test it, I don't have any information about that. To use such a display, you must modify display codes. Is there no e-paper which supports 3.3v? I think 3.3v display would make things easier.

Thanks for the reply.

The display I have has:
- Epson S1D13541 EPD controller/source driver and an IXYS MXEI2240 gate driver bonded on to the display substrate (COP)
- FPC with 30-pin connector interface

Shall I buy the same set of components you have shown for 3.3v and connect it to display.
It has a Power management IC so it should support 3.3V. Just read the documents again.
bneo99yesterday

How do you charge the battery? Is there a way to add a charger and something like a battery monitor (how many percent of capacity is there etc.) I think I want to design a pcb and get the parts soldered on together so it will be thinner and also more durable.....

GodsTale (author)  bneo99yesterday

There is no recharging circuit, so I use external recharger. This may be the next challenge.

Itai_g1012 days ago

how many gauge does your wire have?

Itai_g1012 days ago

Hi I have made the clock, but after I connect the battery to the watch,the watch shows adafruit logo and then retrowatch logo and then it's stuck on the retro watch logo(Although I can send notification to the watch but then its stuck on the ).

Any help would be welcomed.

thanks

GodsTale (author)  Itai_g1012 days ago

It can be stuck by button input. If you don't use button, disable below code.

//if(digitalRead(buttonPin) == LOW) isClicked = LOW;

And enable it again when you wired button.

Yep that worked,thank you!

abdus18 days ago

Hi

I am trying to compile the code but getting this errors.

C:\Program Files (x86)\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp: In member function 'void Adafruit_SSD1306::begin(uint8_t, uint8_t)':

C:\Program Files (x86)\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:178: error: 'SPI' was not declared in this scope

C:\Program Files (x86)\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:182: error: 'SPI_CLOCK_DIV2' was not declared in this scope

C:\Program Files (x86)\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp: In member function 'void Adafruit_SSD1306::fastSPIwrite(uint8_t)':

C:\Program Files (x86)\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:492: error: 'SPI' was not declared in this scope

Any thougts???

Best regards.

GodsTale (author)  abdus18 days ago

This is not a good solution but... add below line at the top.

#include <SPI.h>

what would be the better solution? would it be more difficult?
GodsTale (author)  yoshie199712 days ago

Well... I don't know better way to solve it. Anyway, RetroWatch arduino sketch doesn't use SPI interface. It's just for solve build error.

yoshie199719 days ago
I think I'll just buy a new one.
www.ebay.at/itm/201043444068
JuKiSu1 month ago
Hello,
Now I got everything for the watch, after uploading, the watch does nothing, but I can connect via Bluetooth, the display shows nothing

Please help me..
Thx
yun tian JuKiSu1 month ago

I have the same problem that the watch display nothing. I use the OLED is 128*64 IIC. Is something wrong with that?

thanks

What driver chip does your oled dsplay have?

SH1106 (Sino Wealth).

Did you ever get this to work? i can not figure out what code to switch out

The watch still displays nothing, even though i use the OLED with SSD1306 Driverchip. I used the other code to check the display, it is ok.

GodsTale (author)  yun tian20 days ago

Edit below line and share the result plz.

display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // replace 0x3D with yours

so i have tried the example using the driver from https://github.com/stanleyhuangyc/MultiLCD/tree/ma...

and it works. from what i can glean from that code, the I2C address for the SH1106 is 0x78 but when i try switching 0x3D with that, i get the same result, it just shows a random pixelation.

GodsTale (author)  robhawker19 days ago

I'm sorry it's not 0x78. It's [0x78 >> 1]. Use [0x78 >> 1] or [0x3C]. You can see this code at below library file.

MultiLCD / MicroLCD / SH1106.cpp : line 5.

no luck, it just shows a blank screen if i use 0x3C or 0x78 >> 1.

i am looking at all the code to see if i can replace it to use the MicroLCD library, but it looks like i will have to change A LOT of code.

The watch still displays nothing, even though i use the OLED with SSD1306 Driverchip. I used the other code to check the display, it is ok.

Then you'll need another library. The library that is provided is only for SSD1306 Driverchip. You'll have to change the Arduino code and the driver code. For the Driver code: Arduino-Forum.

In the RetroWatch-Arduino code you'll have to change all the text deticated to the Adafruit Library.

i used this (http://ebay.eu/1kQrUYX) display, i think, it have a SSD1306 chip, why does it not work???

i tested the demo sketch from the adafruit libary, the 128x64 i2c, and i measured it with an Oscilloscope, it gave out an signal, but it also does not show anything

GodsTale (author)  JuKiSu20 days ago

I see the sample code at the link. Sample code uses I2C address: 0x78. Modify below source with this address and share the result plz.

display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // replace 0x3D with 0x78

JuKiSu GodsTale19 days ago

it also shows anything, do i have to put sda and scl at another port like in the example libary from the ebay link?

GodsTale (author)  JuKiSu19 days ago

Yes please but I cannot sure that your OLED is compatible with Adafruit library.

i did this and it just gives me a pixelated screen.. looks like this one

https://camo.githubusercontent.com/e7848fc1d7f283c...

Doesn't work ether. :(

But thank you for your help. :)

Maybe your screen was DOA. Do you have any other Arduinos to test it?

no, I haven't, but yesterday, I tried it with the other libary, which was on the eBay page (down) and the display shown something :D, but now, the problem is that the other libary uses other commands, and I'm not good at programming so can anyone help me, the libary with the commands is at the eBay link above, the commands of the sketch must be changed from the adafruit to the other libary, and I don't know which I have to change, please help me

Thanks so much

much

GodsTale (author)  JuKiSu21 days ago

Try below example.

[Arduino IDE > File > Example > Adafruit example]

If you cannot see anything on screen, check I2C address at below line.

display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64)

GodsTale (author)  JuKiSu1 month ago

Did uploading succeed? Or you got the error code like below?

avrdude: stk500_getsync(): not in sync: resp=0×00

If so, find solution at below link. (You have to press reset button while uploading)

https://forum.sparkfun.com/viewtopic.php?f=32&t=27...

And check your pin connection to display and power supply.

JuKiSu GodsTale1 month ago
The upload is ok, other programs that don't use the display work well, and all connections are right, sda - a4 and scl - a5,
:( it shows nothing, even when I use the example program from the libary
yoshie199721 days ago

i get many errors when compiling the code:

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp: In constructor 'RobotControl::RobotControl()':

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'LCD_CS' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'DC_LCD' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'RST_LCD' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp: In member function 'void RobotControl::begin()':

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXA' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXB' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXC' was not declared in this scope

C:\Users\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXD' was not declared in this scope

C:\Users\\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:19: error: 'MUX_IN' was not declared in this scope

C:\Users\\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:22: error: 'BUZZ' was not declared in this scope

C:\Users\\Documents\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:25: error: 'Serial1' was not declared in this scope

GodsTale (author)  yoshie199721 days ago

Backup and delete Robot_xxx library in Arduino/libraries directory. Adafruit library conflicts with Robot_xxx library.

Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!