Πίνακας περιεχομένων:
- Βήμα 1: Πράγματα που χρειάζεστε
- Βήμα 2: Συνδέσεις
- Βήμα 3: Λήψη Βιβλιοθηκών
- Βήμα 4: Τι είναι το NTP
- Βήμα 5: Μέρος κωδικοποίησης
- Βήμα 6: Λήψη ημερομηνίας και ώρας
Βίντεο: Internet Clock: Εμφάνιση ημερομηνίας και ώρας με OLED χρησιμοποιώντας ESP8266 NodeMCU με πρωτόκολλο NTP: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Γεια σας παιδιά σε αυτά τα εκπαιδευτικά θα δημιουργήσουμε ένα ρολόι διαδικτύου το οποίο θα παίρνει χρόνο από το διαδίκτυο, οπότε αυτό το έργο δεν θα χρειαστεί κανένα RTC για να τρέξει, θα χρειαστεί μόνο μια λειτουργική σύνδεση στο Διαδίκτυο
Και για αυτό το έργο χρειάζεστε ένα esp8266 το οποίο θα έχει wifi για πρόσβαση στο διαδίκτυο και μια οθόνη για να εμφανίζει την ώρα σε αυτό και το esp8266 θα αντλεί χρόνο από το διαδίκτυο χρησιμοποιώντας πρωτόκολλο NTP, το ntp σημαίνει πρωτόκολλο χρόνου δικτύου, οπότε βασικά υπάρχουν διακομιστές ntp στο διαδίκτυο που χρησιμοποιούνται για συγχρονισμό ρολογιών υπολογιστών και θα χρησιμοποιήσουμε αυτούς τους διακομιστές για να έχουμε χρόνο στο έργο μας.
Βήμα 1: Πράγματα που χρειάζεστε
για αυτό το έργο θα χρειαστείτε τα ακόλουθα πράγματα:
Esp8266/nodemcu
Oled ssd1306 0,96"
Καλώδια βραχυκυκλωτήρων
Breadboard
Καλώδιο USB
Βήμα 2: Συνδέσεις
Αυτή η οθόνη 4 ακίδων OLED επικοινωνεί με τη μονάδα ESP8266 χρησιμοποιώντας το πρωτόκολλο I2C, παρακάτω είναι το διάγραμμα κυκλώματος και ο πίνακας συνδέσεων για τη σύνδεση των ακίδων OLED I2C με το NodeMCU για την εμφάνιση του χρόνου Internet.
Βήμα 3: Λήψη Βιβλιοθηκών
Βεβαιωθείτε ότι έχετε κατεβάσει τις βιβλιοθήκες SD1306 στο Arduino ide σας, όπως φαίνεται στην εικόνα και βεβαιωθείτε ότι έχετε και τη βιβλιοθήκη Adafruit GFX, αν όχι, τότε εγκαταστήστε αυτές τις δύο βιβλιοθήκες.
Στο Arduino IDE, μεταβείτε στον Διαχειριστή Βιβλιοθηκών και αναζητήστε το NTP και απλώς κατεβάστε τη βιβλιοθήκη του προγράμματος -πελάτη NTP όπως το κατέβασα, ανατρέξτε στην εικόνα για περαιτέρω βοήθεια.
Βήμα 4: Τι είναι το NTP
Το NTP είναι ένα από τα παλαιότερα πρωτόκολλα δικτύου (IP) για συγχρονισμό ρολογιών μεταξύ δικτύων υπολογιστών. Σχεδιάστηκε από τον David L. Mills του Πανεπιστημίου του Delaware το 1981. Αυτό το πρωτόκολλο μπορεί να χρησιμοποιηθεί για συγχρονισμό πολλών δικτύων με τον συντονισμένο καθολικό χρόνο (UTC) μέσα σε λίγα χιλιοστά του δευτερολέπτου. Το UTC είναι το κύριο πρότυπο ώρας με το οποίο ο κόσμος ρυθμίζει το ρολόι και την ώρα. Το UTC δεν αλλάζει και διαφέρει για διαφορετικές γεωγραφικές τοποθεσίες. Το NTP χρησιμοποιεί το UTC ως αναφορά ώρας και παρέχει ακριβή και συγχρονισμένο χρόνο στο Διαδίκτυο.
Το NTP λειτουργεί σε ένα ιεραρχικό μοντέλο πελάτη-διακομιστή. Το κορυφαίο μοντέλο διαθέτει ρολόγια αναφοράς γνωστά ως "stratum0" όπως ατομικά ρολόγια, ραδιοκύματα, GPS, GSM που λαμβάνει χρόνο από τον δορυφόρο. Οι διακομιστές που λαμβάνουν χρόνο από το στρώμα0 ονομάζονται "στρώμα1" και οι διακομιστές που λαμβάνουν χρόνο από το στρώμα 1 ονομάζονται "στρώμα2" και ούτω καθεξής. Αυτό συνεχίζεται και η ακρίβεια του χρόνου συνεχίζει να μειώνεται μετά από κάθε στάδιο. Το NTP επιλέγει αυτόματα την καλύτερη από πολλές διαθέσιμες πηγές χρόνου για συγχρονισμό, γεγονός που το καθιστά ανεκτό σε σφάλματα ικανό πρωτόκολλο. Έτσι εδώ σε αυτό το έργο, παίρνουμε χρόνο από τον διακομιστή NTP χρησιμοποιώντας το ESP8266 NodeMCU και το εμφανίζουμε σε οθόνη OLED. Αυτό το ίδιο είδος ρολογιού Internet δημιουργείται χρησιμοποιώντας το ESP32 στο προηγούμενο σεμινάριο.
Βήμα 5: Μέρος κωδικοποίησης
Για να ζητήσετε ημερομηνία και ώρα, προετοιμάστε τον πελάτη ώρας με τη διεύθυνση των διακομιστών NTP. Για καλύτερη ακρίβεια, επιλέξτε τη διεύθυνση των διακομιστών NTP που βρίσκονται κοντά στη γεωγραφική σας περιοχή. Εδώ χρησιμοποιούμε το "pool.ntp.org" το οποίο παρέχει διακομιστές από όλο τον κόσμο. Εάν επιθυμείτε να επιλέξετε διακομιστές από την Ασία, μπορείτε να χρησιμοποιήσετε το "asia.pool.ntp.org". Το timeClient μετατοπίζει επίσης το χρόνο UTC σε χιλιοστά του δευτερολέπτου της ζώνης ώρας σας. Για παράδειγμα, η μετατόπιση UTC για την Ινδία είναι +5: 30, οπότε μετατρέπουμε αυτήν την αντιστάθμιση σε χιλιοστά του δευτερολέπτου που είναι ίση με 5*60*60 +30*60 = 19800.
Περιοχή. Μετατόπιση ώρας UTC (ώρες και λεπτά). Μετατόπιση χρόνου UTC (δευτερόλεπτα)
ΙΝΔΙΑ +5: 30 19800
ΛΟΝΔΙΝΟ 0:00. 0
ΝΕΑ ΥΟΡΚΗ -5: 00 -18000
Αντιγράψτε τον ακόλουθο κώδικα και εισαγάγετε τον κωδικό πρόσβασης wifi και τον κωδικό πρόσβασής σας & Εισαγάγετε τη μετατόπιση ώρας στον κώδικα και, στη συνέχεια, ανεβάστε τον στους πίνακες esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // παρέχει ESP8266 συγκεκριμένες ρουτίνες Wi-Fi που καλούμε να συνδεθούν στο δίκτυο #συμπεριλάβετε "WiFiUdp.h" // χειρίζεται την αποστολή και λήψη πακέτων UDP
#include "SPI.h" // SPI για διασύνδεση OLED με NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED πλάτος οθόνης, σε pixel
#define SCREEN_HEIGHT 64 // heightψος οθόνης OLED, σε pixel
#define OLED_RESET -1
Οθόνη Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"};
Συμβολοσειρά date_time; // Μπορείτε να καθορίσετε την ομάδα διακομιστή ώρας και την αντιστάθμιση (σε δευτερόλεπτα, μπορεί να // αλλάξει αργότερα με το setTimeOffset ()). Επιπλέον, μπορείτε να καθορίσετε το διάστημα ενημέρωσης // (σε χιλιοστά του δευτερολέπτου, μπορεί να αλλάξει χρησιμοποιώντας το setUpdateInterval ()).
void setup ()
{
Serial.begin (115200);
WiFi.begin (ssid, κωδικός πρόσβασης);
ενώ (WiFi.status ()! = WL_CONNECTED)
{
καθυστέρηση (500)?
Serial.print (".");
}
εάν (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Η κατανομή SSD1306 απέτυχε"));
Για(;;); // Μην προχωράς, κάνε βρόχο για πάντα
}
display.clearDisplay ();
display.setTextSize (2); // Σχεδιάστε κείμενο σε κλίμακα 2Χ
display.setTextColor (ΛΕΥΚΟ);
display.setCursor (5, 2);
display.println ("ΚΑΛΩΣ ΗΡΘΑΤΕ");
display.println ("Εκπαιδευτικά");
display.println ("Έργο");
display.display ();
καθυστέρηση (3000)?
timeClient.begin ();
}
κενός βρόχος ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Σχεδιάστε κείμενο σε κλίμακα 2Χ
display.setTextColor (ΜΠΛΕ);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
αν (ωω> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
αλλού
{
display.print (hh);
display.print (":");
display.print (mm).
display.print (":");
display.print (ss);
display.println ("ΠΜ");
}
int day = 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 (ημερομηνία);
display.println (ημερομηνία);
display.display ();
// Εμφάνιση αρχικού κειμένου}
Βήμα 6: Λήψη ημερομηνίας και ώρας
αν έχετε συνδέσει τα πάντα σωστά και έχετε ανεβάσει σωστά τον κώδικα επίσης, τότε θα μπορείτε να βλέπετε το ρολόι ntp σας να λειτουργεί σε oled οθόνη όπως το δικό μου σε λειτουργία στην oled οθόνη. Ανατρέξτε στην εικόνα για έξοδο.
Συνιστάται:
ESP8266 OLED - Λήψη ώρας και ημερομηνίας από το Διαδίκτυο: 8 βήματα
ESP8266 OLED - Λάβετε ώρα και ημερομηνία από το Διαδίκτυο: Σε αυτό το σεμινάριο θα μάθουμε πώς να λαμβάνετε την ημερομηνία και την ώρα από τον διακομιστή NIST TIME χρησιμοποιώντας ESP8266 OLED και Visuino, Δείτε ένα βίντεο επίδειξης
Πώς να κάνετε καταγραφή ημερομηνίας και ώρας - Liono Maker: 5 Βήματα
Πώς να κάνετε καταγραφή ημερομηνίας και ώρας | Liono Maker: Εισαγωγή: -Σε αυτό το σεμινάριο θα μάθουμε πώς να κάνουμε καταγραφή ημερομηνίας και ώρας με το Arduino. Για το σκοπό αυτό χρησιμοποιώ το DS3231 & Μονάδες κάρτας Micro SD. Η κύρια μονάδα που χρησιμοποιείται για χρόνο & Η καταγραφή ημερομηνίας είναι DS3231. Το DS3231 είναι ένα RTC (πραγματικό τι
Λήψη ώρας και ημερομηνίας από το Διαδίκτυο - Φροντιστήριο: 9 Βήματα
Λήψη ώρας και ημερομηνίας από το Διαδίκτυο - Σεμινάριο: Σε αυτό το σεμινάριο θα μάθουμε πώς να λαμβάνετε την ημερομηνία και την ώρα από τον διακομιστή NIST TIME χρησιμοποιώντας το M5Stack StickC και το Visuino, Δείτε ένα βίντεο επίδειξης
Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox: 8 βήματα
Ημερομηνία, Timeρα & Θερμοκρασία Χρήση XinaBox: Cύξη OLED οθόνη που δείχνει την ημερομηνία, την ώρα και τη θερμοκρασία σε Κελσίου και Φαρενάιτ χρησιμοποιώντας Xinabox xChips με βάση ESP8266
Προώθηση ημερομηνίας και ώρας στην εφαρμογή Blynk χρησιμοποιώντας το Wemos D1 Mini Pro: 10 βήματα
Προώθηση ημερομηνίας και ώρας στην εφαρμογή Blynk χρησιμοποιώντας το Wemos D1 Mini Pro: Θα χρησιμοποιήσουμε το Wemos D1 Mini Pro για να πιέσουμε την ώρα & ημερομηνία στην εφαρμογή Blynk. Δεν θα χρειαστεί να συνδέσετε κανένα στοιχείο στο Wemos D1 Mini Pro για αυτήν τη δραστηριότητα