Introduction: Arduino Watch Sport

Picture of Arduino Watch Sport

I apologize if you find spelling errors or nonsensical text, my language is Spanish and has not been easy to translate, I will improve my English to continue composing instructables.


In today's technology, especially electronics have come a long way, to the point that today can make projects a few years ago were very complicated to implement, thanks to these technological advances are now able to design and implement our houses projects.

and through this article I come to show you my new project, which consists of a wristwatch, so I called Arduino Watch Sport.

Step 1: Vídeo !

Step 2: Materials !

Picture of Materials !

List:

  • Sheet from Aluminum
  • Battery 3.7V - 930mA
  • Arduino Mini Pro 5V - 16MHz
  • Converter RS232
  • Module Clock RTC DS3231
  • Wire from copper
  • Module from Temperature - Humedity
  • LCD Nokia 5110
  • Leather 20X20cm
  • Screws X4
  • Switch

Step 3: Arduino Pro Mini

Picture of Arduino Pro Mini

Overview

The Arduino Pro Mini is a microcontroller board based on the ATmega328 (datasheet). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, an on-board resonator, a reset button, and holes for mounting pin headers. A six pin header can be connected to an FTDI cable or Sparkfun breakout board to provide USB power and communication to the board.

The Arduino Pro Mini is intended for semi-permanent installation in objects or exhibitions. The board comes without pre-mounted headers, allowing the use of various types of connectors or direct soldering of wires. The pin layout is compatible with the Arduino Mini. There are two version of the Pro Mini.

One runs at 3.3V and 8 MHz, the other at 5V and 16 MHz.

Summary

Microcontroller...................ATmega328
Operating Voltage.............3.3V or 5V (depending on model)
Input Voltage.....................3.35 -12 V (3.3V model) or 5 - 12 V (5V model)
Digital I/O Pins..................14 (of which 6 provide PWM output)
Analog Input Pins..............6
DC Current per I/O............Pin 40 mA
Flash Memory....................32 kB (of which 0.5 kB used by bootloader)
SRAM ................................2 kB
EEPROM...........................1 kB
Clock Speed.......................8 MHz (3.3V model) or 16 MHz (5V model)

Input and Output
Each of the 14 digital pins on the Pro Mini can be used as an input or output, using pinMode(), digitalWrite(), anddigitalRead() functions. They operate at 3.3 or 5 volts (depending on the model). Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:

  • Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the TX-0 and RX-1 pins of the six pin header.
  • External Interrupts: 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.
  • PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function.
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication, which, although provided by the underlying hardware, is not currently included in the Arduino language.
  • LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off.

The Pro Mini has 8 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). Four of them are on the headers on the edge of the board; two (inputs 4 and 5) on holes in the interior of the board. The analog inputs measure from ground to VCC. Additionally, some pins have specialized functionality: I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library.There is another pin on the board: Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.

  • I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library.There is another pin on the board:
  • Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.

Step 4: Arduino Pro Mini + Serial Adapter RS232

Picture of Arduino Pro Mini + Serial Adapter RS232

In this guide I'll show you how to connect the Converter RS232 to the Arduino Mini Pro

We use the Converter RS232. So connecting it to an Arduino Mini Pro 3.3V Atmega328 can be confusing.

  1. Connect USB 3.3V to Arduino VCC. (red)
  2. Connect USB Ground to Arduino BLK. (black)
  3. Connect USB TXO to Arduino RXI. (yellow)
  4. Connect USB RXD to Arduino TXD. (blue)
  5. Connect DTR (Data terminal Ready, which is basically a RS-232 line) to Arduino GRN. (green)

Step 5: LCD Nokia 5110

Picture of LCD Nokia 5110

Overview

This is a quick tutorial for our 84x48 pixel monochrome LCD display. These displays are small, only
about 1.5" diameter, but very readable due and comes with a backlight. This display is made of 84x48 individual pixels, so you can use it for graphics, text or bitmaps. These displays are inexpensive, easy to use, require only a few digital I/O pins and are fairly low power as well.

To drive the display, you will need 3 to 5 digital output pins (depending on whether you want to manually control the chip select and reset lines). Another pin can be used to control (via on/off or PWM) the backlight. To make things easy for you, we've written a nice graphics library that can print text, pixels, rectangles, circles and lines! The library is written for the Arduino but can easily be ported to your favorite microcontroller

Power Requirements
The display uses the PCD8544 controller chip from Philips and were used in Nokia 3310 and 5110 cell phones. This chip is designed to run only at 3.3V and have 3v communication levels, so for 5V microcontrollers a logic level shifter is required (otherwise you could easily damage the display).

Connect:

SCK or CLK...........Pin 8 arduino
MOSI or DIN..........Pin 9 arduino
DC..........................Pin 10 arduino
RST........................Pin 11 arduino
CS or CE................Pin 12 arduino
VCC........................3.3V arduino
BL...........................5V Arduino
GND.......................Ground of arduino

LIBRARY:

It includes: Guide + Example + Library

Step 6: Module Clock RTC DS3231

Picture of Module Clock RTC DS3231

DS3231

The DS3231 module allow that we can keep records detailed the passage of time in our microcontroller.The proyect we can carry out this module ranging from sensor stations to alarms and data logging probes.

On many occasions we will need our projects to keep a strict count of the elapsed time. This is impossible to achieve with our Arduino because it is not qualified to do so. We need a circuit that is capable of maintaining the time counting even when the microcontroller is off.

Fortunately is the DS3231 module.

This module includes an integrated circuit, the DS3231, and a voltage regulator, 3.6V battery (of those found in computer motherboard), inter alia (is able to measure temperature).

It communicates with Arduino using the I2C protocol, so find the VCC, GND, SCL and SDA pins.

Once you have downloaded and installed the library we can proceed to use our module. As always, every time you go to use the I2C interface pin A4 and A5 should be reserved for connecting the SDA and SCL respectively.

Arduino connections must be made as follows.

Connect:

Pin DS3231...................PIN ARDUINO
SCL................................A5
SDA................................A4
VCC...............................3.3V
GND...............................GND
32K.................................DO NOT CONNECT
SQW...............................DO NOT CONNECT

LIBRARY:


Step 7: SENSOR DHT11

Picture of SENSOR DHT11

DHT11

These sensors are very basic and slow, but are great for hobbyists who want to do some basic data logging. The DHT sensors are made of two parts, a capacitive humidity sensor and a thermistor. There is also a very basic chip inside that does some analog to digital conversion and spits out a digital signal with the temperature and humidity. The digital signal is fairly easy to read using any microcontroller.

Characteristics:

  • Ultra low cost
  • 3 to 5V power and I/O
  • 2.5mA max current use during conversion (while requesting data)
  • Good for 20-80% humidity readings with 5% accuracy
  • Good for 0-50°C temperature readings ±2°C accuracy
  • No more than 1 Hz sampling rate (once every second)
  • Body size 15.5mm x 12mm x 5.5mm
  • 4 pins with 0.1" spacing

LIBRARY:

Step 8: We Connect the Battery !

Picture of We Connect the Battery !

Step 9: We Connect the LCD Nokia 5110 !

Picture of We Connect the LCD Nokia 5110 !

Step 10: We Connect the Sensor DHT11 !

Picture of We Connect the Sensor DHT11 !

Step 11: We Connect the Module Clock RTC DS3231 !

Picture of We Connect the Module Clock RTC DS3231 !

Step 12: Cutting Sheet From Aluminum!

Picture of Cutting Sheet From Aluminum!

Step 13: Protection of Circuit !

Picture of Protection of Circuit !

I have taken into account some comments made me whether aluminum is conductive or not, it's actually very conductive and always have been considered, only I had no problems in the case of my watch, but the comments are very successful and caution should I protect the circuit.

For this reason I take the time to isolate the aluminum box with cardboard, keep in mind that the copper wire is insulated with a coating, which makes the copper wire in its non-conducting surface.

Gracias por los comentarios!

Step 14: Fitting Parts !

Picture of Fitting Parts !

Step 15: Bracelet in Leather !

Picture of Bracelet in Leather !

Step 16: Together !

Picture of Together !

Step 17: END !

Picture of END !

Annex code used in this project, do not forget to download each of the libraries for the proper functioning of the same.

Thank you !

Comments

BruceM109 made it! (author)2017-08-12

Finally made it!

Rofer (author)2016-07-04

Alejandro , ya que dices que hablas mal inglés , podrías explicar esta maravilla en español que es nuestra lengua .

Alexis Ospitia (author)Rofer2016-07-06

¿Exactamente que paso del instructable necesita que te explique ? Es bastante arduo el trabajo de llevarlo a español.

duitsman made it! (author)2016-06-19

What kind of logic shift register did you use. And how do i connect it. I build this asome project without the shift register but the display is not readable. Please Help

Alexis Ospitia (author)duitsman2016-06-28

I do not understand your problem, you want to explain a little better.

I want to know pin to pin connection between Arduino Pro mini and Nokia LCD.

akankit114 (author)2016-04-15

What is the use of Rs232 in this watch???

I use to program the arduino mini,

How to connect Arduino Pro mini to Nokia LCD ? pls tell or show me the picture. Here the picture which you have uploaded is showing connection with Arduino uno.

I like this watch. Very good work.

SufiyanH (author)2015-12-24

Hi,

can You show, how You Did the Soldering With Ckt Diagram?

plz

alpmetin (author)2015-12-22

hi,

first of all, its a great projcet. I have a question: how did you connect the logic level shifter?

Jonathanrjpereira (author)2015-11-30

Awesome watch...... But how can I charge the battery?

Thank you ! In the second version of the watch will solve this problem.

didima (author)2015-11-15

Das ist ein tolles Projekt, obwohl ich es als Armbanduhr zu klobig finde. Der Code könnte wie folgt modifiziert werden, weil bei Zahlen kleiner 10 die Zahlen nur einstellig dargestellt werden. Normalerweise wird eine 0 bei einstelligen Zahlen vorangestellt.
Wer den modifizierten Code haben möchte, schreibe an dietmarma@web.de

ranwithjesus (author)2015-11-10

Great project! I voted for you by the way. I was wondering if you would be willing to sell one to me? I don't have any background in technology, and I don't really know how to program anything. ? No worries if not. I would be willing to pay for shipping too. Thanks!

Thank for your support and good reviews. with regard to sell this clock, not I'm selling because it has many aspect to improve, for this I am thinking Arduino Watch Sport 2.0, a second version of the watch and that very likely will be marketed.

Okay thanks! I'll keep an eye out ?.

tomas75a (author)2015-11-07

Very cool project! But what caught my eye was the obvious misspelled humidity :) and also the title, it's "sports watch" not watch sport :) Just saying. ANyway really cool project.

Alexis Ospitia (author)tomas75a2015-11-07

Apologies! I had not noticed a mistake in writing the code. Thanks

Edgar (author)2015-11-06

Neat. And now, you can 3D print a great casing for that, using a Play-doh Model, and Maker Marks: http://faz-voce-mesmo.blogspot.pt/2015/11/makers-marks-e-imanes-na-educacao-um.html

VS60 (author)2015-10-31

How did you protect your circuit and other soldered part from short circuit in this case ? Aliminum is conductive material and we have got jumper cable part in here :)

Also very cool project. Like it!

MandalorianMaker (author)VS602015-10-31

I dont believe that aluminum in conductive.

JonK7 (author)MandalorianMaker2015-11-03

you may have been thinking about that it is non-magnetic (?)

EricW5 (author)JonK72015-11-03

Aluminum is how ever affected by magnetic field forces. surprising to know.

JonK7 (author)EricW52015-11-06

Correct, your comment is most edifying! :) (pun intended)

Well... Yes and no, depending where you're getting your aluminum from, As a metal, Aluminum is VERY conductive per se. Now, the easiest way to get that kind of sheets of aluminum is to tear a can of beer open, and it's coated with plastic *inside* (aluminum would react with the contents, making it poisonous), so it's basically insulated, electrically speaking (magnetically too, actually). Therefore, you theoretically don't need more insulation if your aluminum is coming from a can.

About insulation inside a beer can - any sharp solder joints on the circuit boards would puncture that plastic coating. Anyway, the author has added step 13 to answer these comments!

Mr mandalorian, all electricity transmission throughout the world is done with aluminium wire. Aluminium wire is a lot conductive.

I guess you learn something new everyday, I retract former comments, lol.

Thanks for the comment, I've solved the problem by isolating the aluminum case, thereby protect the circuit, you can see the step 13 where I uploaded the correction.

I am not saying anything about your instructable. I am just telling that man that aluminium is conductive. And i liked your instructable also. I was searching something like this from a long time. Surely going to build this.

VS60 (author)MandalorianMaker2015-10-31

Aluminium is conductive. Both electrical and heat. I dont remember the rate exactly but it has like 2/3 conductivity of copper. it means aluminum or aliminum(whatever) is very conductive :)

is conductive

Alexis Ospitia (author)VS602015-10-31

Thanks for the comment, I've solved the problem by isolating the aluminum case, thereby protect the circuit, you can see the step 13 where I uploaded the correction.

VS60 (author)Alexis Ospitia2015-10-31

Pretty smart and simple way to protect your circuit :) Gracias too!

Victorv32 (author)2015-11-05

que buen trabajo, lo felicito!

didima (author)2015-11-05

Das Projekt finde ich richtig gut, nur finde ich es als Armbanduhr zu klobig. Das ist aber subjektiv. Was leider fehlt habe ich im WWW gefunden, nämlich das stellen der Uhr und das Datum.

Der Code dazu lautet:

//////////////////////////////////////////
// RTC data and time setter //
// //
// This sample program allows the user //
// to set the date and time of an RTC //
// using I2C. //
// //
// Codes by: //
// eGizmo Mechatronix Central //
// Taft, Manila, Philippines //
// http://www.egizmo.com //
// April 15, 2013 //
///////////////////////////////////////////

#include <Wire.h>
const int DS1307 = 0x68; // Address of DS1307 see data sheets
const char* days[] =
{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const char* months[] =
{"January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November", "December"};

// Initializes all values:
byte second = 0;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
byte year = 0;

void setup() {
Wire.begin();
Serial.begin(9600);
delay(2000); // This delay allows the MCU to read the current date and time.

Serial.print("Das Datun und Uhrzeit sind z.Z: ");
printTime();
Serial.println("Bitte um Newline endet die Einstellungen auf der unteren rechten Ecke des Serial Monitor aendern");
Serial.println("Moechten Sie das Datum und die Uhrzeit aendern? y/n");

while (!Serial.available()) delay(10);
if (Serial.read() == 'y' || Serial.read() == 'Y')

// This set of functions allows the user to change the date and time
{
Serial.read();
setTime();
Serial.print("Das derzeitige Datum und die Zeit sind: ");
printTime();
}


Serial.println("Thank you.");
}

// Continuous function for converting bytes to decimals and vice versa
void loop() {
}
byte decToBcd(byte val) {
return ((val/10*16) + (val%10));
}
byte bcdToDec(byte val) {
return ((val/16*10) + (val%16));
}


// This set of codes is allows input of data
void setTime() {
Serial.print("Please enter the current year, 00-99. - ");
year = 15;
Serial.println(year);
Serial.print("Please enter the current month, 1-12. - ");
month = 11;
Serial.println(months[month-1]);
Serial.print("Please enter the current day of the month, 1-31. - ");
monthday = 05;
Serial.println(monthday);
Serial.println("Please enter the current day of the week, 1-7.");
Serial.print("1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - ");
weekday = 5;
Serial.println(days[weekday-1]);
Serial.print("Bitte geben Sie die derzeitige Zeit im 24St. Format ein, 0-23. - ");
hour = 9;
Serial.println(hour);
Serial.print("Bitte geben Sie die Minuten ein, 0-59. - ");
minute = 53;
Serial.println(minute);
second = 00;
Serial.println("die Daten sind eingetragen.");

// The following codes transmits the data to the RTC
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekday));
Wire.write(decToBcd(monthday));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(byte(0));
Wire.endTransmission();
// Ends transmission of data
}


byte readByte() {
while (!Serial.available()) delay(10);
byte reading = 0;
byte incomingByte = Serial.read();
while (incomingByte != '\n') {
if (incomingByte >= '0' && incomingByte <= '9')
reading = reading * 10 + (incomingByte - '0');
else;
incomingByte = Serial.read();
}
Serial.flush();
return reading;
}


void printTime() {
char buffer[3];
const char* AMPM = 0;
readTime();
Serial.print(days[weekday-1]);
Serial.print(" ");
Serial.print(months[month-1]);
Serial.print(" ");
Serial.print(monthday);
Serial.print(", 20");
Serial.print(year);
Serial.print(" ");
if (hour > 12) {
hour -= 12;
AMPM = " PM";
}
else AMPM = " AM";
Serial.print(hour);
Serial.print(":");
sprintf(buffer, "%02d", minute);
Serial.print(buffer);
Serial.println(AMPM);
}


void readTime() {
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom(DS1307, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read());
weekday = bcdToDec(Wire.read());
monthday = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}

Der Code funktioniert bei mir, und sollte bei Ihnen auch funktionieren,

Gruss

dietmarma

stoobers (author)2015-11-04

Does the lcd screen stay on all the time?

Does the led backlight stay on all the time?

Under normal use, how long does this 3.7v battery last?

uwezi (author)2015-11-04

Nice!

But you should perhaps consider to get the leading zeros into your second display ;-)

darkpetter (author)2015-11-03

Se ve muy interesante como estoy iniciando me gustaria si eres tan amable de mostrarme el conexionado del rtc al arduino y del sensor al arduino..tengo una duda amigo este reloj llega a suspenderse la luz??? Y de ser asi cono puedo volver a activar la pantalla..saludos le dejo mi correo pdro_121@hotmail.com me gustaria recibir toda su informacion gracias

La conexión del RTC esta en el paso 6, la libreria RTC viene por defecto con la asignaciones de pines tal cual como esta en el grafico, Diseñè el reloj para que no suspenda la luz, pero se puede modificar para que se encienda cuando quieras, por ejemplo cuando presiones un boton, para esto debes conocer los pines de la LCD, si te fijas hay un pin llamado BL este es el encargado de alimentar los leds azules de la LCD, entonces si colocas un boton entre la alimentacion y ese pin controlas la luz de la LCD.

ingeniero me encanta su inventable!!!! pero como le comento se me hace dificil el conexionado ya qe veo que hay una resistencia por ahi,,por eso le pedia un diagrama esquematico para no equivocarme y conectar correctamente cada componente,,,es una idea genial..ojala me apoye en ese sentido,,le deje mi correo, saludos

raghavendrans (author)2015-11-04

good one bro....keep doing like this

WambaMJ (author)2015-11-03

Great project. But how do you power the pro mini with a 3.7 V battery? I tought it took 5 - 12V only.

Alexis Ospitia made it! (author)WambaMJ2015-11-03

According to the DATASHEET:

Antipaten (author)Alexis Ospitia2015-11-04

I would recommend a 3.3V, 8MHz version of the Pro Mini when running it on 3.7 volts. The reason is that although the Atmega 328 can run at 16 MHz, it can only do so reliably at voltages closer to 5V. Running at 16 MHz at 3.7V usually works fine but you're stretching the specs a bit which may reduce stability.

jojozozo (author)2015-11-04

Hi
Very nice project!
I read your . ino file there were no LCD but only one 5110 why used liquCrystal Lib. And function of LiquidCrystal lcd() ?

Alexis Ospitia (author)jojozozo2015-11-04

Actually I made the call to the library LiquidCrystal LCD () imnecesariamente, the library which controls the Nokia 5110 is: #include <LCD5110_Graph.h>

jerry.ericsson2 (author)2015-11-03

Back in the mid 1960's we had some two conductor aluminum wire laying around, I have no idea where the heck it came from but we also had an old shed behind the house. It was once a grainery on one end, and chicken coup on the other. Well I took the old aluminum wire and strung it from the house to the shed, and sort of wired it up, putting several "barn" plugs in the shed, then moved an old couch in and a bed in a second room. Made a hell of a party shack, and being a 16 year old, with a 16 year old neighbor girl, we made good use of it, day and night. I had an old black and white TV out there, and took my old electric train voltage converter out there, hooked it up to an old 12 volt headlight, and put that behind some cloth for adjustable soft light. Even back then I did it myself. The wire worked just fine for 110 volt, and lasted for years.

About This Instructable

102,206views

834favorites

Bio: Estudiante de Ingenier&iacute;a Electr&oacute;nica. Universidad de los Llanos !
More by Alexis Ospitia:DIY Arduino Watch Sport 2.0Airplane Glider V1.0Robot -  Recognition from voice
Add instructable to: