Inhaltsverzeichnis:

Internetuhr: Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll anzeigen - Gunook
Internetuhr: Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll anzeigen - Gunook

Video: Internetuhr: Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll anzeigen - Gunook

Video: Internetuhr: Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll anzeigen - Gunook
Video: #25 NTP Zeit mit Zeitzone ESP8266 (Deluxe Codebeispiel) 2024, November
Anonim
Internetuhr: Anzeige von Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll
Internetuhr: Anzeige von Datum und Uhrzeit mit einem OLED mit ESP8266 NodeMCU mit NTP-Protokoll

Hallo Leute in diesem Instructables, wir werden eine Internetuhr bauen, die Zeit aus dem Internet bekommt, so dass dieses Projekt keine RTC zum Laufen benötigt, es wird nur eine funktionierende Internetverbindung benötigt

Und für dieses Projekt benötigen Sie einen esp8266, der über ein WLAN für den Internetzugang und ein Display zur Anzeige der Uhrzeit verfügt, und esp8266 ruft die Zeit über das NTP-Protokoll aus dem Internet ab im Web, die verwendet werden, um Computeruhren zu synchronisieren, und wir werden diese Server verwenden, um Zeit in unserem Projekt zu erhalten.

Schritt 1: Dinge, die Sie brauchen

Dinge, die du brauchst
Dinge, die du brauchst
Dinge, die du brauchst
Dinge, die du brauchst
Dinge, die du brauchst
Dinge, die du brauchst

Für dieses Projekt benötigen Sie folgende Dinge:

Esp8266/nodemcu

Oled ssd1306 0,96"

Überbrückungsdrähte

Steckbrett

USB-Kabel

Schritt 2: Verbindungen

Anschlüsse
Anschlüsse

Dieses 4-polige OLED-Display kommuniziert mit dem ESP8266-Modul über das I2C-Protokoll. Unten sind der Schaltplan und die Verbindungstabelle zum Verbinden von OLED-I2C-Pins mit NodeMCU zur Anzeige der Internetzeit.

Schritt 3: Bibliotheken herunterladen

Bibliotheken herunterladen
Bibliotheken herunterladen
Bibliotheken herunterladen
Bibliotheken herunterladen

Stellen Sie sicher, dass Sie die SD1306-Bibliotheken wie in der Abbildung gezeigt in Ihre Arduino-IDE heruntergeladen haben, und stellen Sie sicher, dass Sie auch die Adafruit GFX-Bibliothek haben, wenn nicht, installieren Sie diese beiden Bibliotheken.

Gehen Sie in Ihrer Arduino-IDE zum Bibliotheksmanager und suchen Sie nach NTP und laden Sie einfach die NTP-Clientbibliothek herunter, wie ich sie heruntergeladen habe. Weitere Hilfe finden Sie im Bild.

Schritt 4: Was ist NTP

Was ist NTP
Was ist NTP

NTP ist eines der ältesten Internetprotokolle (IP) für die Synchronisierung von Uhren zwischen Computernetzwerken. Es wurde 1981 von David L. Mills von der University of Delaware entwickelt. Dieses Protokoll kann verwendet werden, um viele Netzwerke innerhalb weniger Millisekunden auf die koordinierte Weltzeit (UTC) zu synchronisieren. UTC ist der primäre Zeitstandard, nach dem die Welt Uhr und Zeit regelt. UTC ändert sich nicht und variiert für verschiedene geografische Standorte. NTP verwendet UTC als Zeitreferenz und bietet eine genaue und synchronisierte Zeit über das Internet.

NTP arbeitet nach einem hierarchischen Client-Server-Modell. Das Top-Modell verfügt über Referenzuhren, die als „stratum0“bekannt sind, wie Atomuhren, Funkwellen, GPS, GSM, die die Zeit vom Satelliten empfangen. Die Server, die Zeit von Stratum0 erhalten, werden als „Stratum1“bezeichnet und Server, die Zeit von Stratum1 erhalten, werden als „Stratum2“bezeichnet und so weiter. Dies geht so weiter und die Genauigkeit der Zeit nimmt nach jeder Stufe ab. NTP wählt automatisch die beste aus mehreren verfügbaren Zeitquellen zum Synchronisieren aus, was es zu einem fehlertoleranten Protokoll macht. Hier in diesem Projekt erhalten wir Zeit vom NTP-Server mit ESP8266 NodeMCU und zeigen sie auf dem OLED-Display an. Dieselbe Art von Internetuhr wird mit ESP32 im vorherigen Tutorial erstellt.

Schritt 5: Kodierungsteil

Kodierungsteil
Kodierungsteil

Um Datum und Uhrzeit anzufordern, initialisieren Sie den Time-Client mit der Adresse des NTP-Servers. Wählen Sie für eine bessere Genauigkeit die Adresse von NTP-Servern, die sich in der Nähe Ihres geografischen Gebiets befinden. Hier verwenden wir „pool.ntp.org“, die Server aus der ganzen Welt bereitstellt. Wenn Sie Server aus Asien auswählen möchten, können Sie „asia.pool.ntp.org“verwenden. timeClient verwendet auch den UTC-Zeitversatz in Millisekunden Ihrer Zeitzone. Zum Beispiel beträgt der UTC-Offset für Indien +5:30, also konvertieren wir diesen Offset in Millisekunden, was 5*60*60+30*60 = 19800 entspricht.

Bereich. UTC-Zeitversatz (Stunden und Minuten). UTC-Zeitversatz (Sekunden)

INDIEN +5:30 1800

LONDON 0:00. 0

NEW YORK -5:00 -18000

Bitte kopieren Sie den folgenden Code und geben Sie Ihr WLAN und Ihr Passwort in den Code ein. Geben Sie den Zeitversatz in den Code ein und laden Sie ihn dann auf Ihre esp8266-Boards hoch.:

#include "NTPClient.h"#include "ESP8266WiFi.h" // bietet ESP8266-spezifische Wi-Fi-Routinen, die wir aufrufen, um eine Verbindung zum Netzwerk herzustellen #include "WiFiUdp.h" // verarbeitet das Senden und Empfangen von UDP-Paketen

#include "SPI.h" // SPI für die Verbindung von OLED mit NodeMCu

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED-Displaybreite in Pixel

#define SCREEN_HEIGHT 64 // Höhe des OLED-Displays in Pixel

#define OLED_RESET -1

Adafruit_SSD1306-Anzeige (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

constchar *ssid = "Ihre Wifissid";

const char *password = "IhrWLAN-Pass";

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", 1800, 60000);

String arr_days={"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};

Zeichenfolge Datum_Uhrzeit; // Sie können den Zeitserverpool und den Offset angeben (in Sekunden, // kann später mit setTimeOffset() geändert werden). Zusätzlich können Sie das // Aktualisierungsintervall angeben (in Millisekunden, kann mit setUpdateInterval() geändert werden).

Void-Setup ()

{

Serial.begin(115200);

WiFi.begin(ssid, Passwort);

while (WiFi.status() != WL_CONNECTED)

{

Verzögerung (500);

Seriendruck (".");

}

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("SSD1306-Zuordnung fehlgeschlagen"));

zum(;;); // Nicht fortfahren, Endlosschleife

}

display.clearDisplay();

display.setTextSize(2); // Zeichne Text im 2X-Maßstab

display.setTextColor (WEISS);

display.setCursor(5, 2);

display.println("WILLKOMMEN BEI");

display.println (" instructables ");

display.println("Projekt");

display.display();

Verzögerung (3000);

timeClient.begin();

}

Leere Schleife ()

{

timeClient.update();

display.clearDisplay();

Serial.println (timeClient.getFormattedTime());

display.setTextSize(2); // Zeichne Text im 2X-Maßstab

display.setTextColor (BLAU);

display.setCursor(0, 2);

int hh = timeClient.getHours();

int mm = timeClient.getMinutes();

int ss = timeClient.getSeconds();

wenn(hh>12)

{

hh=hh-12;

display.print(hh);

display.print(":");

display.print (mm);

display.print(":");

display.print(ss);

display.println(" PM");

}

anders

{

display.print(hh);

display.print(":");

display.print (mm);

display.print(":");

display.print(ss);

display.println(" AM");

}

int Tag = timeClient.getDay();

display.println("'"+arr_days[day]+"'");

date_time = timeClient.getFormattedDate();

int index_date = date_time.indexOf("T");

String date = date_time.substring(0, index_date);

Serial.println (Datum);

display.println (Datum);

display.display();

// Anfangstext anzeigen }

Schritt 6: Datum und Uhrzeit abrufen

Datum & Uhrzeit abrufen
Datum & Uhrzeit abrufen

Wenn Sie alles richtig angeschlossen und den Code auch richtig hochgeladen haben, können Sie sehen, wie Ihre NTP-Uhr auf dem Oled-Display läuft, während meine im Oled-Display läuft. Bitte beziehen Sie sich auf das Bild für die Ausgabe.

Empfohlen: