In 1998, Swatch introduced a radical concept: Internet Time, a universal time system for the web that divided the day into 1,000 “.beats” instead of hours, minutes, and seconds. The Swiss watchmaker even launched a line of futuristic wristwatches that displayed the time in .beats.

But was this a Swatch idea?

It turns out that a few months before Swatch announcement, a person very familiar with beats announced the same idea and even created a website,, to show the Internet Hour. That person was Charly Alberti, the drummer of the Argentine rock band Soda Stereo. He later claimed that he lost millions of dollars and learned a valuable lesson: “Don’t send business proposals by fax.”

Twenty-five years later, faxes are obsolete and Internet Time never caught on, but Soda Stereo's music is still alive Video / Spotify and this tribute project with a round display by Seeed Studio shows the time as it might have been.

How to calculate beatsFirst of all. How is regular time converted to 1000 beats?

With a simple formula:

Beats=(3600*UTC1 + 60*minute + seconds)/86.4

Beats=(3600*UTC1 + 60*minute + seconds)/86.4

Let’s try with an example. Consider that UTC+1 time is 3.30.00

(3600x3 + 60x30 + 00)/86.4 = ( 10800 + 1800)/86.4 = 145 beats

(3600x3 + 60x30 + 00)/86.4 = ( 10800 + 1800)/86.4 = 145 beats 

UTC+1 time could be obtained from


Xiao nrf52840 

Xiao TFT Round Display

3d printed parts (you can also use soldering helping hands as a stand)


Solder header pins to the nrf52840 and snap to the round display. There is nothing else to solder or connect this time :)

Showing text in the Round Display

Text is displayed using graphics and fonts library for 32 bit processors TFT eSPI library

#include <TFT_eSPI.h>

#include "NotoSansBold36.h"

TFT_eSPI tft = TFT_eSPI();


tft.drawString("Internet Time by Charly Alberti", xPosition, yPosition);

Showing images in the Xiao Round Display

Even when Xiao TFT Round display is able to display colors I’ve decided to use black and white images for a specific aesthetic.

I have created round images with Dall-e, saved as PNG, converted PNG to array with (select treat as binary option)

Then I have displayed the PNG with PNGdec library

rc = png.openFLASH((uint8_t *)charly, sizeof(charly), pngDraw);

if (rc == PNG_SUCCESS) {

rc = png.decode(NULL, 0);




void pngDraw(PNGDRAW *pDraw) {

uint16_t lineBuffer[MAX_IMAGE_WIDTH];

png.getLineAsRGB565(pDraw, lineBuffer, PNG_RGB565_BIG_ENDIAN, 0xffffffff);

tft.pushImage(0, 0 + pDraw->y, pDraw->iWidth, 1, lineBuffer);


Arduino IDE Setup

I like hardware from Seeed Studio but from the software point of view, there are always complicated steps to follow. In this case, several libraries, file editing, etc I have simplified the procedure a little bit

Open Arduino IDE. Navigate to File > Preferences, and fill "Additional Boards Manager URLs" with the url below:

Navigate to Tools > Board > Boards Manager..., type the keyword "seeed nrf52" in the search box, select the latest version of the board you want, and install it. You can install both.

Now add the following libraries using Sketch, Include Library:

TFT_eSPI by Bodmer

I2C BM8563 RTC by tanaka



Copy lv_conf.h from GitHub and paste into libraries root

Copy User_Setup_Select.h from Github to libraries/TFT_e-SPI-master/

Real Time Clock

One interesting feature of the Round Display is the Real Time Clock. Before code upload, UTC+1 time should be edited. Then Real Time Clock is updated and it could also be maintained when...

Read more »