Skip to content

Arduino-based watch with Nokia 1280 LCD.

License

Notifications You must be signed in to change notification settings

drfailov/DRM_Watch_v2

Repository files navigation

About project DRM Watch v2

Arduino-based watch with Nokia 1280 LCD.
Main challenge of this project is packing as much as possible stuff inside Arduino Nano with its 32KB of memory and 2KB RAM.
Programming contributions made by Dr. Failov.

About project > Features

  • Low power consumption, while screen is always showing time;
  • Charging over USB, battery status indication;
  • Easy to get components needed to assemble;
  • For now firmware is stable enough to use device daily;
  • Case fits to default 20mm watch bands;
  • No need to disassemble device for firmwate update;
  • Device easily can be used as arduino playground: battery powered, equipped with 2 buttons, display, buzzer;
  • Water-resistance up to 0 meters :)
  • Multiple Watchfaces, can be changed from menu;
  • 2-button controlled graphic menu allow access to all functions;
  • Alarm, can be set from menu;
  • Monophonic melodies, can be used as alarm or played from menu;
  • Stopwatch, can be accessed from menu;
  • Time can be set from menu;
  • Silent mode can be set from menu. Disable all sounds except alarm;
  • Sound of pressing buttons can be set from menu;
  • If needed, you can reboot watch by long-pressing "Up" button on watchface;
  • Flip screen allows you to choose between left-hand and right-hand buttons position;
  • Random decision helper: Zrada-Peremoga;
  • Screen "About" shows credits and firmware version. Long-press will show you some debug information.

About project > Photos of device

I have assembled few watches and using it as my everyday watch for over a year. My device has battery about 80mAh capacity and works about 5 days for one charge. Other device with 250mAh battery lasts about 2 weeks for one charge. According to my tests, time error can't be noticed in 1 mounth perspective: RTC is very precise.

Here's some photos of watches with SLS case:

And some photos of watches with FDM case:

About project > Video overview

YouTube video with device overview:

DRM Watch v2 Overview

https://youtu.be/VYrUO039QUw

About project > Typical problems

Regarding watches: they have two typical problems.

  1. Water. There is essentially no protection against water, so you need to avoid getting water on them, and especially inside.
  2. Statics. Static can occur when plugged into a charger, or when putting on/taking off a sweater or other synthetic clothing. Therefore, the watch must either be removed for a while, or move slowly so that static in large quantities does not have time to form.

If static has already affected the clock, then:

  • usually the display suffers first, there are artifacts. For six months, I had this happen 5 times. In this case, the watch can be reset (hold down the top button until you see the loading animation).
  • A complete freeze of the controller may occur up to the impossibility of rebooting. Then you need to disassemble the watch and reconnect the battery, or wait for the battery to be FULLY discharged and then charge the fully discharged watch. In the meantime, time will slip. (In my six months of use, this was 1 time).
  • The controller may also be affected. (in theory, in practice I haven’t had this for half a year of use) In this case, it needs to be replaced with a new one (solder the microcircuit)

About project > Overview of Watchfaces

You can change set of watchfaces in firmware. More info about it in "Software" block.

Watchface "DRM Watch"

The first watchface in project, back from 2016. Inspired by iPod nano. Takes about 486 bytes of FLASH memory.

Watchface "DRM Lite"

"DRM Watch" without seconds.
Designed by Dr. Failov. Takes about 430 bytes of FLASH memory.

Watchface "Nomens"

Inspired by Siemens screensaver and Nokia home screen. Takes about 666 bytes of FLASH memory.

Watchface "Zubat"

Project logo on watchface.
Designed by Dr. Failov. Takes about 336 bytes of FLASH memory.

Watchface "Xelibri"

Inspired by Siemens Xelibri product line. Very memory-hungry watchface. Takes about 1528 bytes of FLASH memory.

Watchface "Matrix"

Inspired by Matrix film, like font on secret documents. Takes about 886 bytes of FLASH memory.

Watchface "Minimal"

Shows only time. Press DOWN button to show more info. Takes about 446 bytes of FLASH memory.

Watchface "Life"

Conway's Game of Life as background.
Designed by Dr. Failov. Takes about 684 bytes of FLASH memory.

Watchface "Calibri"

Simple but informative watchface with font "Calibri".
Designed by Dr. Failov. Takes about 1340 bytes of FLASH memory.

Watchface "Thermo"

The only information shown is temperature with font "Calibri". Very memory-hungry watchface.
Designed by Dr. Failov. Takes about 1466 bytes of FLASH memory.

About project > Overview of screens

Here's detailed overview of every screen and mode with recomendations how to use it. You also can add your own screens, more info about it in "Software" block.

Init screen

Initial mode. Its goal to init Serial, init display, init RTC, show startup animation, and go to watchface. Current firmware version is shown on this screen. If RTC can not be initialized, watchface will not open. No user input on this screen.

Watchface screen

Screen with watchface. Watchfaces is only screen with deep sleep, so device can run for a long time if in watchface mode.

First 30 seconds after user input watchface is updating without sleep. After 30 seconds: draws 1 frame in 8 seconds. When battery is low, 1 frame in 8s sleep is used for any watchface.

  • To enter main menu, press up button once.
  • To force reboot watch, hold up button for 3 seconds.
  • To enable backlight for 7 seconds, press down button once.
  • To keep backlight on and continue animation (if any), hold down button.

Main menu screen

Main menu to access all the features. Upper bar contains current temperature (read from RTC), battery status and icons. Bottom bar contains description of selected item. Text available in russian and english. See "Software" block for more. If inactive for 120 sec, will automatically go to watchface. Buttons are indicated on the side of the screen.

  • Press up button to confirm selected item.
  • Press down button to move cursor down.

Application list screen

List of useful applications. Text available in russian and english. See "Software" block for more. If inactive for 120 sec, will automatically go to watchface. Buttons are indicated on the side of the screen.

  • Press up button to confirm selected item.
  • Hold up button for 3 seconds to go back to watchface.
  • Press down button to move cursor down.

Stopwatch application

Stopwatch designed to measure the amount of time that elapses between its activation and deactivation. Stopwatch count time only while application is opened due to power consumption reasons. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off (time will reset).

Buttons are indicated on the side of the screen.

  • Press up button Start/Pause stopwatch.
  • Hold up button to Back to watchface. Stopwatch will reset.
  • Press down button to Reset stopwatch to zero value.

Alarm

You can select time and melody and alarm will play at that time. Alarm will start only if watchface is opened. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off (time will reset).

Menu items is:

  • Back to apps list.
  • Enable/Disable alarm.
  • Alarm hour.
  • Alarm Minute.
  • Alarm Melody.

Buttons are indicated on the side of the screen.

  • Press up button to confirm selected item or increment item.
  • Press down button to move cursor down.

Zrada

Genegates random conscusion: "Peremoga" or "Zrada". This is local Ukrainian meme. "Peremoga" is "win", "Zrada" is "treason". Mechanics the same as heads and tails. There is no user input, after message opens apps list.

Melodies list

Menu with list of melodies, which can be played. If inactive for 120 sec, will automatically go to watchface. Buttons are indicated on the side of the screen.

  • Press up button to confirm selected item.
  • Hold up button for 3 seconds to go back to watchface.
  • Press down button to move cursor down.
    When melody is playing:
  • Press up button to exit back to list.
  • Hold up button to loop melody. There is no auto-exit from melody playing if loop, so if you leave watch untouched in this mode, it will discharge and power off (time will reset).

Life

Game of life is a cellular automaton. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off(time will reset).

  • Press up button to fill screen with random pattern.
  • Hold up button to exit to watchface.

Meow

Watch will meow until you stop it. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off(time will reset).

  • Press up button to exit to watchface.

Settings screen

Main place where you can change parameters of wor DRM Watch. If inactive for 120 sec, will automatically go to watchface.

Menu items is:

  • Back to main menu.
  • Enable or disable silent mode. In silent mode watch will not play any sound except alarm.
  • Flip screen. You can select optimal screen orientation for wearing watch on left or right hand. Every screen and application will adapt to selected screen orientation.
  • Watchface selection. You can choose watchface from list of watchfaces you included in firmware. If watchface count set incorrectly, "-" option can appear in list. If no watchface is included in firmware, "Select WTF" text will appear on watchfaces screen.
  • Sound on keypress. There are different options for buttons sound: beep, click, tone, whistle, none. After changing value you can immediately hear new sound.
  • Set time and date.

Buttons are indicated on the side of the screen.

  • Press up button to confirm/change selected item.
  • Hold up button for 3 seconds to go back to watchface.
  • Press down button to move cursor down.

Time setting screen

Menu to set correct time manually. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off (time will reset). Time is storing in RTC while RTC is powered. If battery is discharged and watch power off, time will reset. To prevent resetting time you can attach backup power to RTC's Vbat according to its datasheet.

Menu items is:

  • Back to settings list.
  • Current hour.
  • Current minute.
  • Current day of month.
  • Current month.
  • Current year (20xx).
  • Save values: write data to RTC.

Buttons are indicated on the side of the screen.

  • Press up button to confirm/change selected item.
  • Press down button to move cursor down.

"About" screen

Information about developers and firmware version. If inactive for 120 sec, will automatically go to watchface.

Buttons:

  • Press up button to go to watchface.
  • Hold up button for 3 seconds to go to debug screen.

Debug screen

Technical status information about system. Also, technical information is indicated in Serial logs. There is no auto-exit from this menu, so if you leave watch untouched in this mode, it will discharge and power off (time will reset).

Information shown:

  • VLT: Current battery voltage detected by Arduino. Allows to check if voltage reading is correct and calibrate values if needed. Value interpreting is 4092 = 4.092v. Also this value indicated in battery indicator, but in form of bars.
  • RAM: Remaining free RAM in runtime. To prevent overfilling while implementing new functions. Value is in bytes. Also this value indicated in serial log when mode changes.
  • CHG: Status of connected charger. Helps debug charger detection. 1 means charger connected, 0 means no charger connected. Also this value indicated on battery indicator as lightning near icon.
  • aLD: Last day (of month) when alarm was run. Helps to debug alarm and process behavior on "empty" brand new Arduinos without any settings. Value is important because it is not indicated anywhere else.
  • WTF: Current value of selected watchface index. System has protection in case of incorreclty set watchface number, so only way to get know about data in memory is this value. Helps to process behavior on "empty" brand new Arduinos without any settings.

Buttons:

  • Press up or down button to go to watchface.

Hardware

If you want to assemble your own DRM Watch, this block is for you:) To assemble watch, you will need: circuit board, parts or modules to desolder, case. Also, some instruments, much time and some experience.

Hardware > Used parts

  • Arduino Nano (MEGA328P chip)
  • Nokia 1280 LCD (PCF8814 chip)
  • RTC module (DS3231M chip)
  • Li-Po charger module (TC4056A chip)

To get components I've desoldered modules. Why desoldering instead of buying components separately? Because I had a lot of situations when received defective chips out of the box. Buying modules can be more expencive, but more reliable.

Arduino Nano, CH340C and MEGA328P

MEGA328P used as main controller.
CH340C Is needed to allow programming with USB port.
Link: https://aliexpress.ru/item/4000903444456.html

Nokia 1280, PCF8814 LCD

Also, this display is used in: Nokia 1202, Nokia 1280, Nokia 1203. And also compatible with Nokia 1100 LCD, Nokia 1101 LCD, Nokia 1110 LCD, but it will not fit with board. Display is main output device.
Link: https://aliexpress.ru/item/32864378445.html

RTC module, DS3231M chip

DS3231M is needed to precisely calculate time.
Link: https://aliexpress.ru/item/4000004876793.html

Passive buzzer, 5.2mm x 5.2mm

Buzzer allows to play sound signals and melodies.
Link: https://aliexpress.ru/item/1005003227004618.html

Board

I've ordered boards on JLC PCB. Actual version of gerber files to make your order see at Circuit Board folder.
Here's what I got:

(It's older revision on photo)

Hardware > Schematics

Board gerber files

You can fing GERBER files for DRM Watch board in Circuit Board folder. Case is designed to fit 1mm thick board.

Board soldering plan, elements list

Description of elements on board:

Atmel 328P chip pinout

You can use this schematic as reference.

Used pins:

  • D0 - UART RX
  • D1 - UART TX
  • D2 - Button DOWN (Active HIGH)
  • D3 - Button UP (Active HIGH)
  • D5 - LCD RST
  • D6 - LCD CS
  • D7 - LCD MOSI
  • D8 - LCD SCK
  • D9 - not used
  • D10 - LCD Power
  • D11 - USB Voltage
  • D12 - Buzzer (Passive)
  • D13 - Debug LED
  • A1(D15) - LCD Backlight (Active HIGH)
  • A4 - RTC SDA
  • A5 - RTC SCL

Hardware > Case 3D Model

You can fing STL files for DRM Watch case in Case folder. There's 2 types of case available. You can edit both of my cases for you, use my Fusion 360 project: DRM Watch v85.f3d.

One is more fancy, but can't be printed on FDM printer, better is to order SLS printing. You can fing use files 2022-10-12 Back v38.stl and 2022-10-06 Front v35.stl.

Second is adapted to FDM printing. Now it's files Front Case FDM v85.stl and Back Case FDM v85.stl.

Video overview of this case you can see here: https://www.youtube.com/watch?v=uoMRFqTGYNg

Hardware > Assembly instruction

General way to assemble watch:

  • Order PCB using gerber files, Get all parts you needed, desolder modules;
  • At first, solder parts from Arduino and Lipo charger modules, Double-check all the connections, especially for shorts between chip pins, Let board cool down before testing;
  • Connect battery and check if no fire or heat from PCB, Connect charger and check current. Normal value is about 200mA (or about 1A if you did not replacd 1.2K resistance), Don't connect USB without battery - board will not work this way.
  • Connect board to USB. If modules works properly, PC will recognize CH340G as connected device;
  • If needed, install driver for CH340G: https://drive.google.com/file/d/1BqUo6f5WEd1vqdxt1UWzDh4OgjdQ7Mx1/view ;
  • If needed, install Arduino IDE: https://www.arduino.cc/en/software ;
  • Copy libraries to your Arduino IDE libraries folder;
  • Build project and try to flash firmware. If flashing successful, you can continue. Normal log for this state ;
  • Now you can solder RTC, buttons, buzzer, LCD. Photo ;
  • If successful, watch will turn on, play sound and show time;
  • If any of functions is not working, always keep in mind that any module can be defective out of the box, so you need to have spare ones to replace;
  • If all works, carefully wash flux all over the board.
  • Now you can assemble device to case and start using it :)

Here's some photos of assembly process:

Assembly video on YouTube:

DRM Watch v2 Assembly

https://youtu.be/IrAri0zF-KY

Hardware > Troubleshooting

No any activity after connecting battery

  • Battery protection is blocking power. Connect to USB or charger to start BMS.
  • Connect charger and check for current by USB Charger Doctor. Correct value is about 200-600mA.
  • Check if battery protection ICs soldered in correct orientation.
  • Check voltage on Arduino.
  • Replace battery protection ICs and its related components.

No device connected or Unrecognized device on PC when USB connected

  • Check if CH340 is soldered in correct orientation.
  • Check or replace resonator (if any).
  • Check USB wiring.
  • Check if USB contacts is dirty.
  • Wipe flux from USB port.
  • Check for shorts between chip pins.
  • Replace CH340 and its related components.

No response from board when trying to flash firmware.

  • Check if Atmel328 is soldered in correct orientation.
  • Check your Arduino. (if pin13 LED is blinking when power on, arduino is alive)
  • Check wiring from CH340 to Atmel328.
  • Check if resistance for UART line is not broken.
  • Check if capacitance for RESET pin is not broken or shorted.
  • Check for shorts between chip pins.
  • Wipe flux from board.
  • Replace CH340 and Atmel328 and its related components.

Arduino is not working, pin13 LED is not blinking

  • Check if Atmel328 is soldered in correct orientation.
  • Check if battery is connected. Device will not work without battery.
  • Check if Atmel328 is OK at all: if it was working on original Arduino board.
  • Check for shorts between chip pins.
  • Check or replace resonator (if any).
  • Wipe flux from board.
  • Replace Atmel328 and its related components.

RTC FAIL on startup

  • Check if RTC is soldered in correct orientation.
  • Check if resistance for i2c line is not shorted or broken.
  • Check if power is present on RTC chip.
  • Check for shorts between chip pins.
  • Wipe flux from board.
  • Replace RTC and its related components.

Select WTF After flash firmware

  • Check if watchfaces count set correctly
  • Check if watchfaces is included in firmware.
  • Add or uncomment watchfaces and flash again.

Software

Description of software components and how to build.

Software > Firmware versions

There are different versions of firmware with different purposes.

_DRMWatch2

Main version, full functionality, full memory usage.

_DRMWatch2_MinimalEdition

Functional version available for daily use, but totally reduced memory usage. You can use it for write your own applications for watch.

_DRMWatch2_FactoryTest

Just testing hardware, you can use it to build your own firmware from scratch.

Software > Used libraries

LCD1202

Used to run nokia display. Also may be compatible with this LCD controllers: pcf8814, ste2007, ST7565, HX1230. Library included in this repo. Just copy it to your libraries folder (C:\Users\USER\Documents\Arduino\libraries).
This library is modified, to allow display flip options and direct access to buffer. So use version of library that included in this repository. Source: http://arduino.ru/forum/proekty/khronograf-izmeritel-skorosti-puli-ot-prostogo-k-slozhnomu?page=5#comment-136147

Low-Power-master

Used to allow deep sleep between screen refreshing. Library included in this repo. Just copy it to your libraries folder (C:\Users\USER\Documents\Arduino\libraries).
Source: https://github.com/rocketscream/Low-Power

DS3231M-1.0.6

Used to communicate with RTC module. Library included in this repo. Just copy it to your libraries folder (C:\Users\USER\Documents\Arduino\libraries).
Source: https://www.arduino.cc/reference/en/libraries/ds3231m/

Software > How to build

Software > How to set language

There is 2 options to select language: Russian and English.
If you want use Russian language, uncomment #define LANG_RU string in Generic.cpp file.
If you want use English language, uncomment #define LANG_EN string in Generic.cpp file.
Only one string can be active at the time. If you select any language, you have to comment other one.

Software > How to set watchfaces list

You can include multiple watcfaces in firmware. As much as enough FLASH memory.
You can configure included wathfaces in file _DRMWatch2.ino.
Update number of included watchfaces, comment or uncomment needed watchfaces, check memory usage.
If no watchface is included in firmware, firmware will dehave unexpectedly.
Example:

Software > How to add your own watchface

Project has several watchfaces included, but you always can create your own watchface and use it. Here's instruction how to do it:

  • Create file like WatchFaceMy. Use other watchfaces as reference.
  • Create function like this: void WatchfaceThermo(byte hour, byte minute, byte second, byte day, byte month, int year, byte dayOfWeek, byte animate). Use other watchfaces as reference.
  • This Function draws watchface. You can draw everything you want calling functions from Display. It have to be a non-blocking function, othervise watch will not work properly. Last argument animate is true when system draws watchface last time. You can add displayUpdate(); to make drawing more fancy. Use other watchfaces as reference.
  • In file _DRMWatch2 in setup() function add your watchface to array. Use other watchfaces as reference.
  • Update watchfacesCount if needed.
  • Now update your watch firmware and you can select your new watchface and use it!

Software > How to add your own application

You can modify source and add own application. Program contains several screens (menus, applications). Every screen is a separate mode. Every mode contains of: modeSetup(), modeLoop(), modeFinish(). Modes can work independently. Modes divided into different files to ease. Function of main program loop() is routing modeLoop() to correct mode according to _mode value. Also setMode() function is triggering modeSetup() and modeFinish() for every mode. To change mode call: setMode(MODE_INIT);. When adding new mode:

  • Create new file with modeLoop(), modeSetup(), and modeFinish() for your mode.
  • Define constant for it in main file, like #define MODE_MENU_SET_BEEP_SOUND (byte)9.
  • Add to main loop() call for your modeLoop().
  • Call your modeSetup() from setMode() when entering your mode.
  • Call your modeFinish() from setMode() when leaving your mode.
  • Call setMode(YOUR_MODE); when you want to enter your new screen.
  • Don't forget to call goToWatchface() or setMode() to exit your mode if needed.
  • When your mode is active, only your mode's loop() will be called. So mode have all control over device. If your mode will be empty, so device will do nothing after activation your mode, and you can't even exit to menu or reboot if you don't implemented this.
  • If you stuck with your mode, the easiest way to reboot watch is connect it to USB and reflash.

Software > How to add your own melodies

Because of Arduino have VERY limited space, but I want to store long melodies, I made algorythm to compress music as much as possible.
As source I using Nokia-style composer music, named RTTTL.
I made software to convert RTTTL to binary codes, which can be played by synthesizer of DRM Watch firmware.
Melodies stored in form of one byte-one note. Array is contains tempo and notes.
First 2 bits of note is representing note duration (values 4, 8, 16, 32).
Last 6 bits represents note number counted from low note of first octave.
Software can be found in Windows RTTTL to binary converter\RTTTL Converter\bin\Release\net5.0-windows folder. To run app you need to install framework: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-5.0.408-windows-x64-installer

To add your melody to melody list:

  • Convert your RTTTL melody to binary array;
  • In file MelodyPlayer.ino add array and get...() function with your melody;
  • In file MelodyPlayer.ino in function getMelodyByIndex() add index for your melody;
  • In file MelodyPlayer.ino in array modeMenuMelodiesItems add name of your melody;
  • In file MelodyPlayer.cpp in function getMelodyCount() update melody count;
  • Update firmware on your watch;
  • Now your melody will appear in list and can be set as alarm.

Melody player: https://zserge.com/nokia-composer/ (link actual 2023-12) Melody repository: https://nokia.nigelcoldwell.co.uk/tunes.html (link actual 2022-11) Melody player (non RTTTL, just for fun): http://outputchannel.com/monophonic-ringtone-synthesizer/ (link actual 2023-12)

Video describing this process you can see here: https://www.youtube.com/watch?v=Ek3eQStupCs

Software > Default melodies codes

Badinerie RTTTL

Tempo = 125

8b2 16d3 16b2 8#f2 16b2 16#f2 8d2 16#f2 16d2 4b1 16#f1 16b1 16d2 16b1 16#c2 16b1 16#c2 16b1 16#a1 16#c2 16e2 16#c2 8d2 8b1 8b2 16d3 16b2 8#f2 16b2 16#f2 8d2 16#f2 16d2 4b1 8d2 8d2 8d2 8d2 8b2 8d2 32d2 32#c2 32d2 32#c2 8#c2 8#f2 8#f2 8#f2 8#f2 8d3 8#f2 32#f2 32f2 32#f2 32f2 8f2 16#c2 16#f2 16a2 16#f2 16#g2 16#f2 16#g2 16#f2 16f2 16#g2 16b2 16#g2 16a2 16#g2 16a2 16#g2 16#f2 16a2 16#f2 16f2 16#f2 16b2 16#f2 16f2 16#f2 16#c3 16#f2 16f2 16#f2 16d3 16#f2 16f2 16#f2 16d3 16#c3 16b2 16#c3 16a2 16#g2 16#f2 8a2 8#g2 4#f2

Nokia Tune RTTTL

Tempo = 112

16g3 16f3 8a2 8b2 16e3 16d3 8f2 8g2 16d3 16c3 8e2 8g2 4.c3

Mozart 40 RTTTL

Tempo = 240

8a2 16#g2 16- 8#g2 8- 8a2 16#g2 16- 8#g2 8- 8a2 16#g2 16- 4#g2 8.e3 4- 16- 8e3 16#d3 16- 8#c3 8- 8#c3 16b2 16- 8a2 8- 16.a2 32- 16#g2 16- 8#f2 8- 8#f2 4- 8- 16.#g2 32- 16.#f2 32- 8#f2 8- 8#g2 16#f2 16- 8#f2 8- 8#g2 16#f2 16- 4#f2 8#d3 4- 8- 8#d3 8#c3 8c3 8- 8c3 8a2 16.#g2 8- 32- 8#g2 8#f2 8e2 8- 8e2 4- 8- 8e3 16#d3 16- 4#d3 4#f3 4c3 4#d3 4#c3 4#g2 4- 16.e3 32- 16#d3 16- 4#d3 4#f3 4c3 4#d3 4#c3 4e3 8#d3 8#c3 8b2 8a2 1#g2 1g2 2#g2 4- 16#g1 16- 16#g1 16- 2#g1 4- 16#g1 16- 16#g1 16- 2#g1 4- 16#g1 16- 16#g1 16- 8#g1 8- 16#g1 16- 16#g1 16- 8#g1 8- 16#g1 16- 16#g1 16- 2#g1

Mario RTTTL

Tempo = 100

16e2, 16e2, 32-, 8e2, 16c2, 8e2, 8g2, 8-, 8g1, 8-, 8c2, 16-, 8g1, 16-, 8e1, 16-, 8a1, 8b1, 16#a1, 8a1, 16.g1, 16e2, 16g2, 8a2, 16f2, 8g2, 8e2, 16c2, 16d2, 8b1, 16-, 8c2, 16-, 8g1, 16-, 8e1, 16-, 8a1, 8b1, 16#a1, 8a1, 16.g1, 16e2, 16g2, 8a2, 16f2, 8g2, 8e2, 16c2, 16d2, 8b1, 8-, 16g2, 16#f2, 16f2

Toreador RTTTL

Tempo = 165

4c3 8.d3 16c3 4a2 4a2 8a2 16- 16g2 8.a2 16#a2 4a2 4- 4#a2 8.g2 16c3 4a2 4- 4f2 8.d2 16g2 4c2 4- 2g2 8g2 8d3 8c3 8#a2 16.a2 32- 8g2 8a2 8#a2 4a2 4- 4e2 4a2 4a2 8#g2 8b2 1e3 8- 32d3 16e3 32d3 8#c3 8d3 8g2 8a2 4#a2 8- 32a2 16#a2 32a2 8f2 8d3 4.c3 4- 32f2 16g2 32f2 8c2 8#a2 8a2 8- 8g2 8- 8f2 2-

Groovy Blue RTTTL

Tempo = 125

16f3 1- 16c3 16#d3 16c3 16#d3  16f3 1- 16c3 16#d3 16c3 16#d3 8f3 16f2 8- 16f2 8- 16f2 8- 16f2 8- 16f2 8- 16f2 8- 16c3 16#d3 16c3 16#d3 8f3 16f3 8- 16f3 8- 16f3 8- 16f3 8- 16f3 8- 16f3 8- 16c3 16#d3 16c3 16#d3 8f3 16f3 8#g3 16f3 8#a3 16f3 8- 16f3 8#g3 16f3 16#a3  16- 16f3 8- 16c3 16#d3 16c3 16#d3 8f3 16f3 8#g3 16f3 8#a3 16f3 8- 16f3 8#g3 16f3 16#a3 16- 16f3 8- 16c3 16#d3 16c3 16#d3 8f3 16f3 8#g3 16f3 8b3 16f3 8#a3 16f3 8a3 16f3 8#g3 16f3 8g3 4- 16c3 16#d3 16c3 16#d3 8f3

Entertainer RTTTL

Tempo = 140

8d2 8#d2 8e2 4c3 8e2 4c3 8e2 2c3 8c3 8d3 8#d3 8e3 8c3 8d3 4e3 8b2 4d3 2c3 4- 8d2 8#d2 8e2 4c3 8e2 4c3 8e2 2c3 8- 8a2 8g2 8#f2 8a2 8c3 4e3 8d3 8c3 8a2 2d3

Was wollen wir trinken RTTTL

Tempo = 115 Thanks to @gromozdow98 for writing song into code.

8a1 8a1 16g1 16#f1 4g1 4e1 8e1 8a1 8a1 8g1 8#f1 8a1 8a1 16g1 16f1 4g1 4e1 8#f1 8d1 4e1 8-

8a2 8a2 16g2 16#f2 4g2 4e2 8e2 8a2 8a2 8g2 8#f2 8a2 8a2 16g2 16f2 4g2 4e2 8#f2 8d2 4e2 8-

8e2 8g2 8a2 4b2 4b2 8c3 8a2 2b2 8-

8a2 8a2 16g2 16#f2 4g2 4e2 8e2 8a2 8a2 8g2 8#f2 8a2 8a2 16g2 16f2 4g2 4e2 8#f2 8d2 2e2

Project history

A long time ago...

Project history > 2016, First steps

Back in 2016 me and my friend was playing with arduino and Nokia 5110 LCD. Then idea of DRM Watch was born. Why "DRM"? It's first letters from my and my friend's nicknames:) We've assembled one DIY working prototype and stopped development.
Here's some prorotype photos of these days:

Project history > 2021, Development continued

Later, in 2021 for some reason project continued. LCD was changed to Nokia 1280 LCD, because it is easier to get and has more reliable connection. Here's some prototypes:

Project history > 2022, Closer to complete device

In 2022 I had device with 3d printed case and used it as my daily watch.

Project history > Funny fails

Not every step is successful, here's some videos with funny fails:

https://youtu.be/Ur8o4e1e8V8

https://youtu.be/18OF_WzMhGE