ESP32 Ρολόι πραγματικού χρόνου (RTC) με χρήση DS1307 και οθόνης OLED

Esp32 Roloi Pragmatikou Chronou Rtc Me Chrese Ds1307 Kai Othones Oled



Το ESP32 συνοδεύεται από μια ενσωματωμένη μονάδα RTC, η οποία όμως λειτουργεί μόνο όταν υπάρχει ρεύμα. Εάν χαθεί ρεύμα, το ρολόι θα μηδενιστεί και δεν θα μπορεί να κρατήσει τη σωστή ώρα. Επομένως, εάν θέλετε να παρακολουθείτε τον χρόνο ή να ελέγχετε οποιαδήποτε συσκευή που βασίζεται στον χρόνο, δοκιμάστε τον αισθητήρα RTC DS1307. Ωστόσο, μπορεί να σκέφτεστε να συνδέσετε μια εφεδρική μπαταρία με την πλακέτα ESP32, αλλά αυτό δεν είναι το καλύτερο σενάριο που μπορείτε να κάνετε εάν έχετε έλλειψη ρεύματος. Η καλύτερη εναλλακτική είναι να χρησιμοποιήσετε τον αισθητήρα DS1307, καθώς συνοδεύεται από ενσωματωμένη μπαταρία που μπορεί να διαρκέσει τουλάχιστον ένα χρόνο.

Για να ξεκαθαρίσουμε τα πράγματα, το εσωτερικό ρολόι πραγματικού χρόνου (RTC) του ESP32 μπορεί να παρακολουθεί την ώρα ακόμα και όταν ο κύριος επεξεργαστής είναι απενεργοποιημένος ή σε βαθύ ύπνο. Μπορείτε να χρησιμοποιήσετε το ESP32 RTC για να παρακολουθείτε τον χρόνο χωρίς να χρησιμοποιείτε μεγάλη ισχύ ή να επηρεάζετε τον κύριο επεξεργαστή. Αλλά εξακολουθεί να απαιτεί ρεύμα για να τρέξει, όχι τόσο πολύ, αλλά απαιτείται μια ελάχιστη ποσότητα ενέργειας για να λειτουργήσει το εσωτερικό RTC.

Έτσι, με αυτό, μας μένει μόνο η λύση της χρήσης της εξωτερικής μονάδας RTC. Ας δούμε τα βήματα της διασύνδεσης της πλακέτας ESP32 με τη μονάδα DS1307 RTC.







Περιεχόμενα:

1. Τι είναι η μονάδα RTC DS1307

Το DS1307 είναι μια συσκευή χαμηλής κατανάλωσης που μπορεί να παρακολουθεί την ώρα και την ημερομηνία με ακρίβεια. Χρησιμοποιεί δεκαδική μορφή με δυαδική κωδικοποίηση (BCD). Μπορεί να σας πει την ώρα σε λεπτομερή μορφή όπως δευτερόλεπτα, λεπτά, ακόμη και ώρες και ημέρες. Μπορείτε επίσης να εκτυπώσετε την ημερομηνία σε πλήρη μορφή, όπως μήνα και έτος. Γνωρίζει επίσης πότε είναι δίσεκτο έτος, έως το 2100. Για να επικοινωνήσετε με το DS1307, μπορείτε να χρησιμοποιήσετε το πρωτόκολλο I2C.





Το DS1307 έχει ενσωματωμένη μπαταρία που μπορεί να το τροφοδοτήσει για περίπου ένα χρόνο χωρίς εξωτερική πηγή 5V. Χρησιμοποιώντας αυτήν την εφεδρική μπαταρία, μπορεί να διατηρήσει το χρόνο ακόμα και όταν η κύρια τροφοδοσία είναι απενεργοποιημένη. Διαθέτει επίσης 56 byte SRAM για την αποθήκευση ορισμένων δεδομένων. Το DS1307 είναι μια εύχρηστη συσκευή που έχει πολλές εφαρμογές όταν συνδυάζεται με μια πλακέτα Arduino ή ESP32. Για παράδειγμα, αυτά τα δεδομένα μπορεί να είναι χρήσιμα για την καταγραφή δεδομένων, τα συστήματα συναγερμού ή τον βιομηχανικό έλεγχο. Εάν χρειάζεστε αξιόπιστη χρονομέτρηση, το DS1307 είναι μια εξαιρετική επιλογή.





Προδιαγραφές μονάδας RTC DS1307

Η μονάδα RTC DS1307 αποτελείται από το RTC IC, ένα EEPROM, έναν ταλαντωτή κρυστάλλου και μια θήκη μπαταρίας για εφεδρικό.



Παρακάτω είναι οι λεπτομέρειες αυτών των τμημάτων:

DS1307 RTC IC : Το DS1307 RTC IC είναι ένα τσιπ 8 ακίδων που παρακολουθεί την ώρα και την ημερομηνία χρησιμοποιώντας το πρωτόκολλο I2C. Καταναλώνει πολύ λίγη ισχύ, λιγότερο από 500nA. Μπορεί να εμφανίζει την ώρα σε δευτερόλεπτα, λεπτά και ώρες και την ημερομηνία σε ημέρες, μήνες και χρόνια. Μπορεί επίσης να εναλλάσσεται μεταξύ μορφών 24 ωρών και 12 ωρών.

24C32 EEPROM IC : Το 24C32 EEPROM IC είναι ένα τσιπ 32 byte από την Atmel που αποθηκεύει τις ρυθμίσεις, την ώρα και την ημερομηνία. Χρησιμοποιεί επίσης το πρωτόκολλο I2C.

Κρύσταλλο 32,768 kHz : Ο κρυσταλλικός ταλαντωτής 32,768 kHz παρέχει τη συχνότητα ρολογιού για το DS1307 RTC IC.

Υποδοχή μπαταρίας : Η βάση της μπαταρίας χωράει μια μπαταρία CR2032. Πρόκειται για κυψέλη λιθίου σε σχήμα νομίσματος 3V. Παρέχει συνεχή τροφοδοσία στο DS1307 RTC IC.

Προμήθεια αισθητήρα DS18B20 : Η διάταξη αισθητήρα DS18B20 σάς επιτρέπει να συγκολλήσετε και να χρησιμοποιήσετε τον αισθητήρα θερμοκρασίας DS18B20. Δεν είναι προκολλημένο. Μπορείτε να κολλήσετε τη συσκευασία διαμπερούς οπής και να λάβετε τη θερμοκρασία από τον πείρο DS της μονάδας.

Η παρακάτω λίστα παρέχει μερικές γρήγορες προδιαγραφές του αισθητήρα DS1307 RTC:

  • Τάση λειτουργίας: 4,5–5,5 V, συνήθως 5 V
  • Τωρινή κατανάλωση : Λιγότερο από 1,5 mA
  • Ακρίβεια : 0–40 °C, εξαρτάται από τον κρύσταλλο
  • Μπαταρία : CR2032 (κέρμα 3 V)
  • Μνήμη : 56 byte μη πτητική μνήμη RAM
  • Διεπαφή : Σειριακή διεπαφή δύο καλωδίων (I2C).
  • Παραγωγή : ακίδα εξόδου 1 Hz
  • Προγραμματιζόμενη έξοδος τετραγωνικού κύματος : Καταναλώνει λιγότερο από 500 nA στη λειτουργία εφεδρικής μπαταρίας
  • Ανίχνευση διακοπής ρεύματος : Αυτόματη ανίχνευση διακοπής ρεύματος και κύκλωμα διακόπτη
  • Κύκλωμα αίσθησης ισχύος : Μπορεί να αλλάξει αυτόματα σε εφεδρική τροφοδοσία σε περίπτωση έλλειψης ρεύματος
  • Αποζημίωση δίσεκτου έτους : Ισχύει έως το έτος 2100

RTC DS1307 Pinout μονάδας

Η μονάδα έχει πολλές ακίδες με διαφορετικές λειτουργίες.

  • VCC είναι ο ακροδέκτης που χρειάζεται τάση DC μεταξύ 3,3V και 5,5V για να τροφοδοτήσει τη μονάδα.
  • GND είναι ο πείρος για χαμηλή τάση ή γείωση.
  • SDA και SCL είναι οι ακίδες που επικοινωνούν δεδομένα και σήματα ρολογιού μέσω του διαύλου I2C.
  • DS είναι η ακίδα που μετρά τη θερμοκρασία με τον αισθητήρα DS1307, εάν έχετε έναν στη μονάδα RTC.
  • SQ είναι η ακίδα που παράγει ένα σήμα τετραγωνικού κύματος με συχνότητα 1 Hz, 4 kHz, 8 kHz ή 32 kHz, ανάλογα με τον τρόπο που το προγραμματίζετε.
  • ΕΝΑΣ είναι η ακίδα που χρησιμοποιεί μια μπαταρία 3V για να διατηρεί την ώρα ακριβή όταν η κύρια τροφοδοσία είναι απενεργοποιημένη.

2. Πώς να συνδέσετε το RTC DS1307 και την οθόνη OLED με το ESP32

Για να διασυνδέσετε το ESP32 με το DS1307 και την οθόνη OLED, μπορείτε να χρησιμοποιήσετε τις ενσωματωμένες ακίδες I2C της πλακέτας ESP32. Τόσο η οθόνη DS1307 όσο και η οθόνη OLED είναι συσκευές που βασίζονται στο I2C. Στη συνέχεια, μπορεί να επικοινωνήσει χρησιμοποιώντας το πρωτόκολλο I2C master slave μέσω του διαύλου I2C.

Πριν προχωρήσουμε στη διασύνδεση του ESP32 με DS1307 και οθόνη OLED, πρέπει πρώτα να εγκαταστήσετε ορισμένες απαιτούμενες βιβλιοθήκες.

Εγκατάσταση των Απαιτούμενων Βιβλιοθηκών

Θα χρειαστείτε δύο βιβλιοθήκες, μία για τη μονάδα RTC και μία για την οθόνη OLED. Χρησιμοποιώντας OLED με μονάδα RTC, μπορείτε να δημιουργήσετε εκπληκτικές και διαδραστικές προεπισκοπήσεις ρολογιού. Εάν δεν έχετε σχέδιο εμφάνισης της ώρας στην οθόνη, τότε μπορείτε να παραλείψετε αυτήν την εγκατάσταση βιβλιοθήκης.

Ακολουθούν οι δύο βιβλιοθήκες που θα χρειαστείτε:

  • RTClib (από την Adafruit) είναι μια βιβλιοθήκη Arduino IDE για ρύθμιση και λήψη χρόνου από ένα RTC. Παρέχει επίσης κλάσεις για τον χειρισμό ημερομηνιών, ωρών και διάρκειων. Χρησιμοποιώντας αυτήν τη βιβλιοθήκη, μπορείτε να διασυνδέσετε και να προγραμματίσετε τις μονάδες ρολογιού πραγματικού χρόνου (RTC), όπως DS1307 και DS3231.
  • μικρό SD1306 (από την Adafruit) είναι μια βιβλιοθήκη για το Arduino, χρησιμοποιώντας την οποία μπορείτε να διασυνδέσετε και να προγραμματίσετε τις οθόνες OLED με το Arduino ή οποιαδήποτε άλλη πλακέτα μικροελεγκτή.

Για να πραγματοποιήσετε λήψη και εγκατάσταση και των δύο αυτών βιβλιοθηκών στο Arduino IDE, ανοίξτε πρώτα το Υπεύθυνος βιβλιοθήκης αναζητήστε τη βιβλιοθήκη RTClib και κάντε κλικ Εγκαθιστώ :

Θα έχετε την επιλογή να εγκαταστήσετε μόνο τη βιβλιοθήκη ή τις εξαρτήσεις της. Κάντε κλικ στο Εγκατάσταση όλων κουμπί για πλήρη εγκατάσταση της βιβλιοθήκης. Με αυτόν τον τρόπο δεν θα λάβετε κανένα σφάλμα εάν τροποποιήσετε τον κώδικα που εξαρτάται από τις εξαρτήσεις αυτής της βιβλιοθήκης.

Ομοίως, αναζητήστε τη βιβλιοθήκη SSD1306. Αυτή η βιβλιοθήκη είναι απαραίτητη για μια οθόνη OLED. Κάντε κλικ Εγκαθιστώ να προχωρήσει.

Αυτή τη φορά θα λάβετε επίσης το ίδιο μήνυμα επιβεβαίωσης. Κάνε κλικ στο Εγκατάσταση όλων επιλογή.

Τώρα και οι δύο βιβλιοθήκες για OLED και DS1307 είναι εγκατεστημένες και έτοιμες για χρήση. Αλλά πριν από αυτό, πρώτα μάθετε τη διεύθυνση I2C για την οθόνη OLED.

3. Εύρεση της διεύθυνσης I2C της οθόνης OLED

Η διεύθυνση I2C είναι ένα μοναδικό αναγνωριστικό για κάθε συσκευή στο δίαυλο I2C. Επιτρέπει στην κύρια συσκευή να επικοινωνεί με μια συγκεκριμένη εξαρτημένη συσκευή στέλνοντας δεδομένα στη διεύθυνσή της. Ο σκοπός της διεύθυνσης I2C είναι να αποφευχθούν συγκρούσεις και σύγχυση μεταξύ πολλών συσκευών στον ίδιο δίαυλο.

Για να λάβετε τη διεύθυνση μιας συσκευής I2C, μπορείτε να χρησιμοποιήσετε ένα απλό σκίτσο που σαρώνει το λεωφορείο και εκτυπώνει τις διευθύνσεις των συσκευών που βρίσκει. Εναλλακτικά, μπορείτε να ελέγξετε το φύλλο δεδομένων της συσκευής για να δείτε την προεπιλεγμένη ή διαμορφώσιμη διεύθυνσή της.

Εδώ, στην περίπτωσή μας, μετά την εκτέλεση του κωδικού σαρωτή I2C, εμφανίζεται η ακόλουθη διεύθυνση I2C της οθόνης OLED στο τερματικό Arduino IDE.

Τις περισσότερες φορές, υπάρχει μεγάλη πιθανότητα να πάθεις και εσύ το ίδιο 0x3C διεύθυνση για την οθόνη OLED σας.

4. Διασύνδεση της μονάδας OLED και RTC DS1307 με ESP32

1. Συνδέστε τους ακροδέκτες SDA και SCL τόσο της μονάδας DS1307 όσο και της Οθόνη OLED στις ακίδες I2C του ESP32. Συνήθως, αυτά είναι τα GPIO 21 και GPIO 22 , αλλά μπορείτε να αντιστοιχίσετε οποιεσδήποτε άλλες καρφίτσες επίσης στον κωδικό εάν χρειάζεται.

2. Συνδέστε το VCC και το GND του DS1307 και την οθόνη OLED στις ακίδες 3,3V και GND του ESP32.

3. Τοποθετήστε μια μπαταρία σε σχήμα νομίσματος CR2032 στη μονάδα DS1307 για να παρέχει εφεδρική ισχύ για το ρολόι πραγματικού χρόνου.

4. Ανεβάστε το παράδειγμα κώδικα από αυτό το σεμινάριο στην πλακέτα ESP32. Τροποποιήστε τον κώδικα για προσαρμοσμένες εξόδους.

Μετά τη μεταφόρτωση, ένα ρολόι θα ξεκινήσει από την καθορισμένη ώρα και θα εμφανίσει την ώρα στην οθόνη OLED.

5. Διάγραμμα κυκλώματος

Το διάγραμμα κυκλώματος του ESP32 με DS1307 είναι απλό, με μόλις τέσσερα καλώδια που πρέπει να συνδεθούν. Μπορείτε να συντομεύσετε τα καλώδια I2C SDA και SCL και των δύο αισθητήρων OLED και DS1307. Ομοίως, για την ενεργοποίηση και των δύο αυτών αισθητήρων, μπορεί να χρησιμοποιηθεί η ακίδα 3V3 και GND της πλακέτας ESP32. Μπορείτε επίσης να τροφοδοτήσετε από ξεχωριστή πηγή εάν χρειάζεται.

Σημείωση : Είναι ασφαλές να τροφοδοτήσετε το RTC DS1307 από έναν ακροδέκτη 3,3 V του ESP32 εάν δεν ξεπεραστεί το τρέχον όριο του ESP32. Αλλά αν θέλετε να βρίσκεστε σε ασφαλή τοποθεσία, μπορείτε είτε να χρησιμοποιήσετε μια ξεχωριστή πηγή τροφοδοσίας για τη μονάδα RTC ή να δοκιμάσετε τον αισθητήρα χαμηλής κατανάλωσης DS3231 του οποίου το εύρος λειτουργίας κυμαίνεται μεταξύ 3,3 και 5,5 VDC.

Η παρακάτω εικόνα δείχνει τη σύνδεση του ESP32 με τον αισθητήρα RTC DS1307.

Ομοίως, εάν θέλετε να συνδέσετε την οθόνη OLED για να εμφανίσετε την ώρα, μπορείτε να χρησιμοποιήσετε τις ίδιες ακίδες I2C και τις ακίδες τροφοδοσίας της πλακέτας ESP32.

6. Κωδ

Χρησιμοποιώντας τον παρακάτω κωδικό, θα ορίσουμε την τρέχουσα ημερομηνία και ώρα στο RTC. Αφού ρυθμίσετε την ώρα, ο κωδικός θα εμφανίσει την ώρα στο τερματικό Arduino IDE. Πριν ανεβάσετε τον κωδικό, πρέπει να τον ενημερώσετε με την τρέχουσα ημερομηνία και ώρα σας.

#include 'RTClib.h'
RTC_DS1307 DS1307_RTC;
char Week_days [ 7 ] [ 12 ] = { 'Κυριακή' , 'Δευτέρα' , 'Τρίτη' , 'Τετάρτη' , 'Πέμπτη' , 'Παρασκευή' , 'Σάββατο' } ;
ρύθμιση κενού ( ) {
Serial.begin ( 115200 ) ;
#ifndef ESP8266
ενώ ( ! Κατα συρροη ) ;
#τέλος εαν
αν ( ! DS1307_RTC.begin ( ) ) {
Serial.println ( 'Δεν ήταν δυνατή η εύρεση του RTC' ) ;
ενώ ( 1 ) ;
}
DS1307_RTC.adjust ( Ημερομηνία ώρα ( φά ( __ΗΜΕΡΟΜΗΝΙΑ__ ) , Φ ( __ΧΡΟΝΟΣ__ ) ) ) ;
}
κενό βρόχο ( ) {
Ημερομηνία Ώρα τώρα = DS1307_RTC.now ( ) ;
Σειρά.εκτύπωση ( τώρα.έτος ( ) , ΔΕΚ ) ;
Σειρά.εκτύπωση ( '/' ) ;
Σειρά.εκτύπωση ( τώρα.μήνα ( ) , ΔΕΚ ) ;
Σειρά.εκτύπωση ( '/' ) ;
Σειρά.εκτύπωση ( τώρα.ημέρα ( ) , ΔΕΚ ) ;
Σειρά.εκτύπωση ( '(' ) ;
Σειρά.εκτύπωση ( Εργάσιμες [ τώρα.dayOfThe Week ( ) ] ) ;
Σειρά.εκτύπωση ( ')' ) ;
Σειρά.εκτύπωση ( τώρα.ώρα ( ) , ΔΕΚ ) ;
Σειρά.εκτύπωση ( ':' ) ;
Σειρά.εκτύπωση ( τώρα.λεπτό ( ) , ΔΕΚ ) ;
Σειρά.εκτύπωση ( ':' ) ;
Σειρά.εκτύπωση ( τώρα.δεύτερο ( ) , ΔΕΚ ) ;
Serial.println ( ) ;
καθυστέρηση ( 1000 ) ;
}

Αυτός ο κώδικας χρησιμοποιεί το Βιβλιοθήκη RTClib για διασύνδεση με μια μονάδα ρολογιού πραγματικού χρόνου DS1307 που παρακολουθεί την ημερομηνία και την ώρα.

ο εγκατάσταση η λειτουργία ξεκίνησε με την προετοιμασία του ρυθμού baud. Μετά από αυτό, μέσα σε αυτήν την ενότητα, ορίσαμε τη λειτουργία συγχρονισμού της ημερομηνίας και της ώρας του υπολογιστή με τον αισθητήρα DS1307. Αυτό θα μεταφορτώσει τον χρόνο μεταγλώττισης του κώδικα στον αισθητήρα RTC.

Μπορείτε να χρησιμοποιήσετε το βρόχος λειτουργία για λήψη της ημερομηνίας και της ώρας από το RTC. Στη συνέχεια, μπορείτε να το εμφανίσετε στη σειριακή οθόνη ως εξής: έτος/μήνας/ημέρα (ημέρα της εβδομάδας) ώρα:λεπτό:δευτερόλεπτο. Θυμηθείτε να προσθέσετε μια καθυστέρηση ενός δευτερολέπτου μετά από κάθε βρόχο, ώστε ο κώδικας να μην εκτελείται πολύ γρήγορα.

Εμφάνιση της τρέχουσας ώρας στην οθόνη OLED

Για να εμφανιστεί η ίδια ώρα στην οθόνη OLED, πρέπει να προσθέσουμε ένα επιπλέον τμήμα κωδικού για την οθόνη OLED. Απλώς ανεβάστε τον κωδικό που δίνεται. Αυτός ο κωδικός θα εμφανίσει την τρέχουσα ώρα στην οθόνη OLED σας.

Θυμηθείτε, εδώ χρησιμοποιούμε τη μονάδα οθόνης 0,96 ιντσών 128×64 I2C SSD OLED Display Module. Εάν χρησιμοποιείτε οποιοδήποτε άλλο μέγεθος, τροποποιήστε τον κωδικό ανάλογα. Επίσης, ελέγξτε τη διεύθυνση I2C και τροποποιήστε την στον συγκεκριμένο κωδικό. Στην περίπτωσή μας, έχουμε μια διεύθυνση I2C 0x3C για την οθόνη OLED.

#include
#include
#include
#include 'RTClib.h'
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Οθόνη Adafruit_SSD1306 ( SCREEN_WIDTH, SCREEN_HEIGHT, & Σύρμα, - 1 ) ;
RTC_DS1307 RTC;
μέρες χαρακτήρων [ 7 ] [ 12 ] = { 'Κυριακή' , 'Δευτέρα' , 'Τρίτη' , 'Τετάρτη' , 'Πέμπτη' , 'Παρασκευή' , 'Σάββατο' } ;
ρύθμιση κενού ( ) {
Serial.begin ( 115200 ) ;
αν ( ! RTC.ξεκινήστε ( ) ) {
Serial.println ( 'Δεν ήταν δυνατή η εύρεση του RTC' ) ;
ενώ ( 1 ) ;
}
RTC.adjust ( Ημερομηνία ώρα ( φά ( __ΗΜΕΡΟΜΗΝΙΑ__ ) , Φ ( __ΧΡΟΝΟΣ__ ) ) ) ;
αν ( ! εμφάνιση.αρχίζουν ( SSD1306_SWITCHCAPVCC, 0x3C ) ) {
Serial.println ( φά ( 'Η κατανομή SSD1306 απέτυχε' ) ) ;
Για ( ;; ) ;
}
καθυστέρηση ( 1000 ) ;
οθόνη.clearDisplay ( ) ;
display.setTextSize ( 2 ) ;
display.setTextColor ( ΑΣΠΡΟ ) ;
display.setCursor ( 30 , είκοσι ) ;
display.println ( 'Linux' ) ;
εμφάνιση.εμφάνιση ( ) ;
καθυστέρηση ( 3000 ) ;
οθόνη.clearDisplay ( ) ;
}
κενό βρόχο ( ) {
DateTime now = RTC.now ( ) ;
οθόνη.clearDisplay ( ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , 0 ) ;
εμφάνιση.εκτύπωση ( τώρα.ημέρα ( ) ) ;
εμφάνιση.εκτύπωση ( '/' ) ;
εμφάνιση.εκτύπωση ( τώρα.μήνα ( ) ) ;
εμφάνιση.εκτύπωση ( '/' ) ;
εμφάνιση.εκτύπωση ( τώρα.έτος ( ) ) ;
display.println ( ημέρες [ τώρα.dayOfThe Week ( ) ] ) ;
display.println ( '' ) ;
display.setCursor ( 0 , 40 ) ;
αν ( τώρα.ώρα ( ) < 10 )
εμφάνιση.εκτύπωση ( '0' ) ;
εμφάνιση.εκτύπωση ( τώρα.ώρα ( ) ) ;
εμφάνιση.εκτύπωση ( ':' ) ;
αν ( τώρα.λεπτό ( ) < 10 )
εμφάνιση.εκτύπωση ( '0' ) ;
εμφάνιση.εκτύπωση ( τώρα.λεπτό ( ) ) ;
εμφάνιση.εκτύπωση ( ':' ) ;
αν ( τώρα.δεύτερο ( ) < 10 )
εμφάνιση.εκτύπωση ( '0' ) ;
display.println ( τώρα.δεύτερο ( ) ) ;
εμφάνιση.εμφάνιση ( ) ;
}

Ο κώδικας ξεκίνησε με τις βιβλιοθήκες που εγκαταστήσαμε για το RTC και την οθόνη. Μετά από αυτό, ορίζει το μέγεθος της οθόνης και τη διεύθυνση εμφάνισης. Αρχικοποιεί τον πίνακα με ονόματα καθημερινών.

ο εγκατάσταση μέρος ξεκινά με σειριακή επικοινωνία. Ελέγχει εάν το RTC και η οθόνη λειτουργούν ή όχι. Μετά από αυτό, έχουμε ορίσει ένα κείμενο συμβολοσειράς 'Linuxhit' που θα εμφανίζεται για 3 δευτερόλεπτα. Αυτό είναι μόνο ένα μήνυμα ανοίγματος ή εκκίνησης, μπορείτε επίσης να τροποποιήσετε αυτό το μήνυμα με το προσαρμοσμένο σας κείμενο.

ο βρόχος Η λειτουργία λαμβάνει την ημερομηνία και την ώρα της μονάδας DS1307. Μετά από αυτό, καθαρίζει την οθόνη και εκτυπώνει την ημερομηνία και την ώρα με μορφοποιημένο τρόπο. Ο κώδικας προσθέτει επίσης αρχικά μηδενικά στις ώρες, τα λεπτά και τα δευτερόλεπτα, σε περίπτωση που οι τιμές τους είναι μικρότερες από 10.

7. Υλικό

Αφού ανεβάσετε τον κωδικό στην πλακέτα ESP32, θα δείτε την ακόλουθη έξοδο στην οθόνη OLED. Για υλικό, χρησιμοποιήσαμε την οθόνη OLED και μια μονάδα I2C RTC DS1307. Χρησιμοποιείται πλακέτα ESP32 με 30 ακίδες. Μπορείτε επίσης να πειραματιστείτε με οποιαδήποτε άλλη πλακέτα ESP32, αλλά φροντίστε να συνδέσετε σωστά τις ακίδες I2C.

συμπέρασμα

Το RTC DS1307 διαθέτει SRAM 56 byte με υποστήριξη εφεδρικής μπαταρίας. Είναι μια συσκευή 8 ακίδων που χρησιμοποιεί πρωτόκολλο επικοινωνίας I2C. Για να διασυνδέσετε τη μονάδα DS1307 RTC με το ESP32, μπορείτε να χρησιμοποιήσετε τις ακίδες I2C (GPIO 22 (SCL) και GPIO 21 (SDA)) της πλακέτας ESP32. Μπορείτε να εκτυπώσετε την ώρα σε μια κονσόλα Arduino IDE ή να χρησιμοποιήσετε οποιαδήποτε οθόνη όπως OLED ή I2C LCD για να εμφανίσετε την ώρα. Η μονάδα DS1307 RTC είναι μια χρήσιμη συσκευή για την παρακολούθηση της ώρας και της ημερομηνίας σε διάφορες εφαρμογές. Ορισμένες κύριες εφαρμογές περιλαμβάνουν καταγραφικά δεδομένων, ψηφιακά ρολόγια και smartwatches.