Πίνακας περιεχομένων:
- Βήμα 1: Επίδειξη
- Βήμα 2: Συναρμολόγηση
- Βήμα 3: Συναρμολόγηση - Πίνακας
- Βήμα 4: Βιβλιοθήκη Adafruit GFX
- Βήμα 5: Βιβλιοθήκη Adafruit ST7735
- Βήμα 6: Βιβλιοθήκη NTPClient
- Βήμα 7: ESP32_NTP.ino
- Βήμα 8: Αρχεία
Βίντεο: Μην σπαταλάτε το χρόνο σας: Χρησιμοποιήστε NTP!: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Κάνε τον χρόνο σου να μετράει! Αυτό είναι ένα θέμα που συζητείται συχνά μεταξύ των συνδρομητών μου και για ποιο λόγο; Λόγω του απλού και απαραίτητου γεγονότος ότι όταν φτιάχνετε έναν καταγραφικό δεδομένων και για οτιδήποτε περιλαμβάνει αυτοματοποίηση, χρειάζεστε τον σωστό χρόνο! Και υπάρχουν διάφοροι τρόποι μέτρησης του χρόνου: ρολόι με μπαταρία, RTC (Ρολόι πραγματικού χρόνου), μεταξύ άλλων. Αλλά αυτό που θέλω να σας δείξω σήμερα (το οποίο ενημερώνει την ημερομηνία, την εβδομάδα και την ώρα) είναι το NTP (Network Time Protocol), το οποίο είναι online. Σε αυτό το βίντεο, θα ανακτήσουμε τις πληροφορίες ημερομηνίας και ώρας στο διαδίκτυο και θα εμφανίσουμε τις πληροφορίες στην οθόνη.
Βήμα 1: Επίδειξη
Βήμα 2: Συναρμολόγηση
Βήμα 3: Συναρμολόγηση - Πίνακας
Βήμα 4: Βιβλιοθήκη Adafruit GFX
Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…
Εγκαταστήστε τη βιβλιοθήκη Adafruit GFX
Βήμα 5: Βιβλιοθήκη Adafruit ST7735
Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…
Εγκαταστήστε το Adafruit ST7735
Βήμα 6: Βιβλιοθήκη NTPClient
Μεταβείτε στη διεύθυνση https://github.com/taranais/NTPClient και κάντε λήψη της τροποποιημένης με taranais βιβλιοθήκης NTPClient.
Αποσυμπιέστε και τοποθετήστε το φάκελο στις βιβλιοθήκες C: / Users / Documents / Arduino
Βήμα 7: ESP32_NTP.ino
Περιλαμβάνει και ορίζει
#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Pinos do display #define DISPLAY_DC 12 // A0 #define DISPLAY_CS 13 // CS #define DISPLAY_MOSI 14 // SDA #define DISPLAY_CLK 27 // SCK #define DISPLAY_RST 0 // Fuso Horário, no caso horário de verão de Brasília int timeZone = -2; // Struct com os dados do dia e hora struct Ημερομηνία {int dayOfWeek; int ημέρα? int μήνα? int έτος? int ώρες? int λεπτά? int δευτερόλεπτα? }; // Υποδοχή UDP που χρησιμοποιεί μια υπηρεσία για την ανάκτηση του αρχείου σας μέσω WiFiUDP udp; // Objeto responsável for recuperar dados sobre horário NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL do servwer NTP timeZone*3600, // Deslocamento do horário em relacão ao GMT 0 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);
Ρύθμιση
void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executiveada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULam parametre, N2l, // 2, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}
SetupNTP
void setupNTP () {// Inicializa ή client NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Αναμονή για την πρώτη ενημέρωση"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); καθυστέρηση (500)? } Serial.println (); Serial.println ("Πρώτη ενημέρωση ολοκληρώθηκε"); }
WifiConnectionTask
// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Delay de 100 ticks vTaskDelay (100); }}
ConnectWiFi
void connectWiFi () {Serial.println ("Σύνδεση"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); καθυστέρηση (500)? } Serial.println (); Serial.print ("Συνδέθηκε με"); Serial.println (WiFi. SSID ()); }
SetupDisplay
void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca o cursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}
Βρόχος
void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Reseta o cursor display.setCursor (0, 0); // Exibe os dados no display display.printf (" %s / n / n %s / n / n %02d/ %02d/ %d / n / n %02d: %02d: %02d", WiFi. SSID ().c_str (), dayOfWeekNames [date.dayOfWeek], date.day, date.month, date.year, date.hours, date.minutes, date.seconds)? καθυστέρηση (100)? }
GetDate
Ημερομηνία getDate () {// Recupera os dados de data and horário usando or client or NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Ημερομηνία; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // Dia da semana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); ημερομηνία επιστροφής; }
Βήμα 8: Αρχεία
Κατεβάστε τα αρχεία
ΕΓΩ ΔΕΝ
Συνιστάται:
Arduino Soil Moisture Monitoring Stick - Ποτέ μην ξεχνάτε να ποτίζετε τα φυτά σας: 4 βήματα (με εικόνες)
Arduino Soil Moisture Monitoring Stick - Ποτέ μην ξεχνάτε να ποτίζετε τα φυτά σας: Ξεχνάτε συχνά να ποτίζετε τα φυτά εσωτερικού χώρου; Or μήπως τους δίνετε υπερβολική προσοχή και τα ποτίζετε; Εάν το κάνετε, τότε θα πρέπει να φτιάξετε τον εαυτό σας ένα ραβδί παρακολούθησης της υγρασίας του εδάφους με μπαταρία. Αυτή η οθόνη χρησιμοποιεί χωρητική υγρασία εδάφους
Δημιουργήστε τη δική σας οθόνη MQTT EInk για χρόνο, ειδήσεις και περιβαλλοντικά δεδομένα: 7 βήματα
Φτιάξτε τη δική σας οθόνη MQTT EInk για χρόνο, ειδήσεις και περιβαλλοντικά δεδομένα: Το «THE» είναι μια μίνι οθόνη πληροφοριών MQTT για χρόνο, ειδήσεις και περιβαλλοντικές πληροφορίες. Χρησιμοποιώντας μια οθόνη eInk 4,2 ιντσών, η ιδέα της είναι απλή-να εμφανίζει πληροφορίες σε περιστροφική βάση, ενημερώνοντας κάθε δύο λεπτά. Τα δεδομένα μπορούν να είναι οποιαδήποτε ροή - f
Μην αγοράζετε μονάδα GSM, χρησιμοποιήστε το παλιό σας τηλέφωνο !: 6 βήματα
Μην αγοράζετε μια μονάδα GSM, χρησιμοποιήστε το παλιό σας τηλέφωνο!: Έτσι πρόσφατα έκανα πολλά ασύρματα έργα, κυρίως βασισμένα σε μια μονάδα Bluetooth, αλλά από τότε ήθελα να προχωρήσω και να ξεκινήσω να κάνω τα έργα μου SMS ή Ελεγχόμενη τηλεφωνική κλήση που είναι σχεδόν εξίσου εύκολη με τη βοήθεια μιας μονάδας GSM
Ποτέ μην εισάγετε την καρφίτσα σας για τον τηλεφωνητή σας: 3 βήματα
Ποτέ μην εισάγετε την καρφίτσα σας για τον τηλεφωνητή σας: Έχετε κουραστεί να χρειάζεται να εισάγετε το φωνητικό ταχυδρομείο σας κάθε φορά που ελέγχετε το φωνητικό ταχυδρομείο σας. Λοιπόν είμαι έτσι βρήκα ένα κόλπο για αυτό
Χρησιμοποιήστε τη σύνδεση δεδομένων του iPhone σας στον υπολογιστή σας: 6 βήματα
Χρησιμοποιήστε τη σύνδεση δεδομένων του iPhone σας στον υπολογιστή σας: ΣΗΜΕΙΩΣΗ: Από τα iOS 3 και 4, υπάρχουν άλλοι τρόποι σύνδεσης, ακόμη και νόμιμοι μέσω AT & T (αν και αυτό κοστίζει επιπλέον). Ωστόσο, αυτή η μέθοδος εξακολουθεί να λειτουργεί, και πάντα (ανεξάρτητα από τις ενημερώσεις iOS) αρκεί να μπορείτε να κάνετε SSH στο iPhone σας. Έχετε