So baust du dir deine eigene Internet-Uhr

LCD mit Datum und Uhrzeit

So baust du dir mit Hilfe eines Raspberry Pis oder eines ESP32 eine Network Time Protocol basierte Internet-Uhr und gibst die Zeit auf einem Display aus.

Wir zeigen dir, wie du eine solche energiesparende Digitaluhr mithilfe deines ESP32 oder deines Raspberry Pi ganz einfach programmierst. Sowohl beim ESP32 als auch beim Pi greifen wir auf das Protokoll NTP (Network Time Protocol) zurück.

Das Protokoll ermöglicht die Synchronisierung von Computern und anderen IT-Componenten über ein IP-Netz wie das Internet. Das Network Time Protocol wurde bereits 1985 an der Universität von Dalaware entwickelt.

Dieses Material benötigst du für dein Projekt

Zusätzlich, falls du das Projekt mit dem Raspberry Pi durchführen möchtest:

WARENKORB

Alle für dieses Projekt notwendigen Artikel landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Alle Teile für deine Internet-Uhr mit dem ESP32.

Alle Teile für deine Internet-Uhr mit dem Raspberry Pi.

Schritt für Schritt: So baust du dir deine Internet Clock – mit dem ESP32

ESP32 Pins                                           LCD Pins

Vin (für bessere Helligkeit)        →         VCC

GND                                          →         GND

D21                                           →         SDA

D22                                         →        SCL

So sieht die Schaltung deiner Internet-Uhr mit dem ESP32 aus.

Um TimeLib.h und LiquidCrystal_I2C.h zu installieren, musst du die Bibliotheken erst über die hinterlegten URLs downloaden. Wenn du das getan hast, navigierst du in Arduino IDE zu „Sketch“, klickst auf „Bibliothek einbinden“ und zuletzt auf „ZIP-Bibliothek hinzufügen“.


#include <WiFi.h>

#include <WiFiUdp.h>

#include <NTPClient.h>                    // Include NTPClient library
 
#include <TimeLib.h>                      // Include Arduino time library

#include <LiquidCrystal_I2C.h>            // Include LiquidCrystal_I2C library

 

LiquidCrystal_I2C lcd(0x27, 16, 2);       // 0x27 address, 16 columns and 2 rows

 

const char *ssid     = "******";          //Internet ssid

const char *password = "******";          //Internet password 

WiFiUDP ntpUDP;

// 'time.nist.gov' is used (default server) with +1 hour offset (3600 seconds) 60 seconds (60000 milliseconds) update interval

NTPClient timeClient(ntpUDP, "time.nist.gov", 3600, 60000);

char Time[ ] = "TIME:00:00:00";

char Date[ ] = "DATE:00/00/2000";

byte last_second, second_, minute_, hour_, day_, month_;

int year_;

 

void setup() {

  Serial.begin(115200);

  lcd.begin(21, 22);                 //SDA = GPIO21, SCL = GPIO22

  lcd.backlight();                   // Turn backlight ON

  lcd.setCursor(0, 0);

  lcd.print(Time);

  lcd.setCursor(0, 1);

  lcd.print(Date);

  WiFi.begin(ssid, password);

  Serial.print("Connecting.");

  while ( WiFi.status() != WL_CONNECTED ) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("connected");

  timeClient.begin();

}

 

void loop() {

  timeClient.update();

  unsigned long unix_epoch = timeClient.getEpochTime();    // Get Unix epoch time from the NTP server

 

  second_ = second(unix_epoch);

  if (last_second != second_) {

 

    minute_ = minute(unix_epoch);

    hour_   = hour(unix_epoch);

    day_    = day(unix_epoch);

    month_  = month(unix_epoch);

    year_   = year(unix_epoch);

 

    Time[12] = second_ % 10 + 48;

    Time[11] = second_ / 10 + 48;

    Time[9]  = minute_ % 10 + 48;

    Time[8]  = minute_ / 10 + 48;

    Time[6]  = hour_   % 10 + 48;

    Time[5]  = hour_   / 10 + 48;

 

    Date[5]  = day_   / 10 + 48;

    Date[6]  = day_   % 10 + 48;

    Date[8]  = month_  / 10 + 48;

    Date[9]  = month_  % 10 + 48;

    Date[13] = (year_   / 10) % 10 + 48;

    Date[14] = year_   % 10 % 10 + 48;

 

    // Send time and date to serial monitor

    Serial.println(Time);

    Serial.println(Date);

 

    // Display time and date on the 16x2 LCD

    lcd.setCursor(0, 0);

    lcd.print(Time);

    lcd.setCursor(0, 1);

    lcd.print(Date);

    last_second = second_;

  }

  delay(200);

}

Deine ESP32 Uhr passt auch in ein kleines Gehäuse.

Schritt für Schritt: So baust du dir deine Internet-Uhr – mit dem Raspberry Pi

Natürlich kannst du nicht nur einen ESP32 Microcontroller nutzen um deine Internet-Uhr zu bauen, sondern auch einen Raspberry Pi. Wie du hierbei vorgehst zeigen wir dir in diesem Abschnitt.

Das fertige Projekt.

Raspberry Pi Pins                     LCM 1602 IIC Pins

5v                                →        VCC

GND                             →        GND

SDA                              →        SDA

SCL                              →        SCL

So sieht die Schaltung deiner Raspberry Pi Internet-Uhr aus.

Vorgehensweise für WIndows:

Du nutzt als Betriebssystem Windows? In diesem Fall benötigst du das Tool PuTTY. Du musst dieses nicht einmal installieren, sondern lediglich downloaden. Wähle nach dem Herunterladen die exe-Datei aus und gib als Host „raspberrypi“ ein. Klicke anschließend auf „Open“. Du wirst nun dazu aufgefordert, einen Login-Namen und ein Passwort einzugeben. Als Standard sind der Benutzername „pi“ und das Passwort „raspberry“ voreingestellt. Am besten änderst du direkt das Passwort, um Gewissheit zu haben, dass keine unerwünschte Person auf den Desktop zugreifen kann. Um das Passwort zu ändern, lässt du einfach im Terminal den Befehl „sudo passwd“ ausführen. Bestätige das Passwort, nachdem du es geändert hast.

Vorgehensweise für Linux & Mac:

Sofern du Linux oder Mac als Betriebssystem nutzt, brauchst du keine weitere Software, um den SSH-Zugriff einzurichten. Wenn du eine Verbindung herstellen möchtest, musst du allerdings die Raspberry Pi IP und den Hostnamen kennen. Abgesehen davon genügt für das Prozedere dein Raspberry Pi Terminal. Hier erfährst du im Detail, wie du vorzugehen hast, um eine SSH-Verbindung herzustellen.

sudo apt-get update
sudo apt-get install -y i2c-tools && sudo apt-get install -y python-smbus
sudo timedatectl set-timezone Europe/Berlin
sudo apt-get install vim
mkdir Projekt
sudo i2cdetect -y 1
vim lcddriver.py
python code.py
So sieht deine fertige Uhr mit dem Raspberry Pi aus.
Bau doch noch ein schickes Gehäuse!

Wir wünschen dir viel Spaß mit deiner Internet-Uhr

Wir hoffen du hattest Spaß beim Bau dieses IoT-Projekts. Wenn du das Tutorial befolgt hast, dann hast du jetzt eine coole Internet-Uhr zuhause. Alle notwendigen Teile zum Bau dieses Projekts findest du noch einmal hier!

Wir hoffen dich auch in Zukunft für viele tolle Projekte begeistern zu können. Wenn du Fragen zu diesem Projekt hast, so kannst du diese gerne in den Kommentaren stellen.

Euer BerryBase-Team

Die mobile Version verlassen