Πίνακας περιεχομένων:
- Βήμα 1: Απαιτούμενα εξαρτήματα
- Βήμα 2: Σύνδεση ρολογιού Arduino
- Βήμα 3: Κωδικός για ρολόι Arduino με RTC
Βίντεο: Ρολόι σε πραγματικό χρόνο με Arduino: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Σε αυτό το έργο, θα φτιάξουμε ένα ρολόι με τη βοήθεια της μονάδας Arduino και RTC. Όπως γνωρίζουμε, το Arduino δεν μπορεί να εμφανίσει τον πραγματικό χρόνο, οπότε θα χρησιμοποιήσουμε τη μονάδα RTC για να εμφανίσουμε τη σωστή ώρα στην οθόνη LCD. Διαβάστε προσεκτικά όλα τα βήματα, θα σας βοηθήσει πολύ να φτιάξετε το ρολόι.
Ο κωδικός DS3231 Arduino είναι σαν τον κωδικό DS1307 και λειτουργεί και με τα δύο τσιπ RTC.
Ο κώδικας Arduino από κάτω δεν χρησιμοποιεί καμία βιβλιοθήκη για το DS3231 RTC, η βιβλιοθήκη Wire είναι για την αντιστοιχία μεταξύ του Arduino και του DS3231 χρησιμοποιώντας τη σύμβαση I2C.
Ναι! Πολλοί μηχανικοί ηλεκτρονικών εξαρτώνται από αυτό για τα έργα τους βάσει χρόνου, αλλά το RTC δεν είναι απολύτως αξιόπιστο. Λειτουργεί με μπαταρία και πρέπει να αντικατασταθεί αργά ή γρήγορα. Ερχόμενος σε έργα IoT καταλαμβάνει πολύτιμες ακίδες SPI (Serial Peripheral Interface) και μπερδεύεται με καλώδια που μπερδεύονται. Λύση…. Εδώ έρχεται ο ήρωας μας NTP (πρωτόκολλο ώρας δικτύου). Το NTP είναι τόσο ακριβές αφού παίρνει χρόνο από το διαδίκτυο. Θα λειτουργήσουμε αυτό το πρωτόκολλο χρησιμοποιώντας μια λειτουργία πελάτη-διακομιστή. η διαδικασία είναι τόσο απλή που το Nodemcu λειτουργεί ως πελάτης και ζητά ένα πακέτο NTP από τον διακομιστή χρησιμοποιώντας UDP. Σε αντάλλαγμα, ο διακομιστής στέλνει ένα πακέτο στον πελάτη το οποίο αναλύει τα δεδομένα. Το NTP είναι το καθολικό πρωτόκολλο συγχρονισμού ώρας. Τώρα ας φωτίσουμε το εργαστήριο μας
Βήμα 1: Απαιτούμενα εξαρτήματα
- Πίνακας Arduino
- Πλακέτα DS3231 RTC
- Οθόνη LCD 16x2
- 2 x κουμπί
- 10K ohm μεταβλητή αντίσταση (ή ποτενσιόμετρο)
- Αντίσταση 330 ohm
- Μπαταρία κυψελών νομισμάτων 3V
- Breadboard
- Καλώδια βραχυκυκλωτήρων
RTC mocule DS3231
Ο χρόνος είναι μια ουσιαστική αίσθηση που απαιτείται σε αυτόν τον γρήγορο κόσμο των ανθρώπων. Σε έργο σε πραγματικό χρόνο
Χρησιμοποιούμε RTC (ρολόι πραγματικού χρόνου A. K. A)
Το RTC Real-time-clock (RTC) είναι ένα ολοκληρωμένο κύκλωμα (IC) που παρακολουθεί την τρέχουσα ώρα. Το RTC φροντίζει για τον χρόνο σε πραγματική λειτουργία. Το RTC βρίσκεται συνήθως σε μητρικές πλακέτες υπολογιστών και ενσωματωμένα συστήματα που απαιτούν έγκαιρη πρόσβαση.
Βήμα 2: Σύνδεση ρολογιού Arduino
- Συνδέστε τον πείρο SCL στη μονάδα RTC στο Arduino A5
- Συνδέστε την καρφίτσα SDA στη μονάδα RTC στο Arduino A4
- Συνδέστε το VCC TO 5v και το GND TO GND
- Συνδέστε ένα κουμπί στον πείρο 8
- Συνδέστε ένα άλλο κουμπί στον πείρο 9
- Συνδέστε το RS της LCD με το pin 2 του Arduino
- Συνδέστε το E της οθόνης LCD στην ακίδα 3 του Arduino
- Συνδέστε το D7 της οθόνης LCD με το pin 7 του Arduino
- Συνδέστε το D6 της οθόνης LCD στην ακίδα 6 του Arduino
- Συνδέστε το D5 της οθόνης LCD με το pin 5 του Arduino
- Συνδέστε το D4 της οθόνης LCD με το pin 4 του Arduino
- Συνδέστε το VSS & K στο GND
- Συνδέστε το VDD & A στο 5v
- Συνδέστε το vo στον πείρο εξόδου του ποτενσιόμετρου
Βήμα 3: Κωδικός για ρολόι Arduino με RTC
Το DS3231 λειτουργεί μόνο με μορφή BCD και για τη μετατροπή του BCD σε δεκαδικό και αντίστροφα χρησιμοποίησα τις 2 παρακάτω γραμμές (παράδειγμα για λεπτό): // Μετατροπή BCD σε δεκαδικό λεπτό = (λεπτό >> 4) * 10 + (λεπτό & 0x0F) ?
// Μετατροπή δεκαδικών σε BCDminute = ((λεπτό / 10) << 4) + (λεπτό % 10); void DS3231_display (): εμφανίζει το χρόνο και το ημερολόγιο, πριν από την εμφάνιση του χρόνου και τα δεδομένα του ημερολογίου μετατρέπονται από BCD σε δεκαδική μορφή. void blink_parameter ():
// Ρολόι και ημερολόγιο σε πραγματικό χρόνο με ρυθμισμένα κουμπιά χρησιμοποιώντας DS3231 και Arduino // περιλαμβάνουν κωδικό βιβλιοθήκης LCD #συμπεριλάβετε // περιλαμβάνουν κωδικό βιβλιοθήκης καλωδίων (απαιτείται για συσκευές πρωτοκόλλου I2C) #συμπεριλάβετε // συνδέσεις μονάδας LCD (RS, E, D4, D5, D6, D7) LiquidCrystal LCD (2, 3, 4, 5, 6, 7). void setup () {pinMode (8, INPUT_PULLUP); // το κουμπί 1 είναι συνδεδεμένο με τον ακροδέκτη 8 pinMode (9, INPUT_PULLUP). // το κουμπί2 είναι συνδεδεμένο στον ακροδέκτη 9 // ρυθμίστε τον αριθμό των στηλών και των σειρών LCD lcd.begin (16, 2). Wire.begin (); // Εγγραφή i2c bus} char Timeρα = "ΩΡΑ:::"; char Ημερολόγιο = "DATE: / / 20"; byte i, δεύτερο, λεπτό, ώρα, ημερομηνία, μήνας, έτος. void DS3231_display () {// Μετατρέψτε το BCD σε δεκαδικό δευτερόλεπτο = (δεύτερο >> 4) * 10 + (δεύτερο & 0x0F); λεπτό = (λεπτό >> 4) * 10 + (λεπτό & 0x0F); ώρα = (ώρα >> 4) * 10 + (ώρα & 0x0F); ημερομηνία = (ημερομηνία >> 4) * 10 + (ημερομηνία & 0x0F); μήνας = (μήνας >> 4) * 10 + (μήνας & 0x0F); έτος = (έτος >> 4) * 10 + (έτος & 0x0F); // Τέλος Χρόνος μετατροπής [12] = δευτερόλεπτο % 10 + 48; Χρόνος [11] = δεύτερο / 10 + 48; Χρόνος [9] = λεπτό % 10 + 48 · Χρόνος [8] = λεπτό / 10 + 48; Χρόνος [6] = ώρα % 10 + 48; Χρόνος [5] = ώρα / 10 + 48; Ημερολόγιο [14] = έτος % 10 + 48 · Ημερολόγιο [13] = έτος / 10 + 48; Ημερολόγιο [9] = μήνας % 10 + 48; Ημερολόγιο [8] = μήνας / 10 + 48; Ημερολόγιο [6] = ημερομηνία % 10 + 48; Ημερολόγιο [5] = ημερομηνία / 10 + 48; lcd.setCursor (0, 0); lcd.print (Timeρα); // Χρόνος εμφάνισης lcd.setCursor (0, 1); lcd.print (Ημερολόγιο); // Εμφάνιση ημερολογίου} void blink_parameter () {byte j = 0; ενώ (j 23) // Εάν ώρες> 23 ==> ώρες = 0 παράμετρος = 0? εάν (i == 1 && παράμετρος> 59) // Εάν λεπτά> 59 ==> λεπτά = 0 παράμετρος = 0, εάν (i == 2 && παράμετρος> 31) // Εάν ημερομηνία> 31 ==> ημερομηνία = 1 παράμετρος = 1, εάν (i == 3 && παράμετρος> 12) // Εάν μήνας> 12 ==> μήνας = 1 παράμετρος = 1, εάν (i == 4 && παράμετρος> 99) // Εάν έτος> 99 ==> έτος = 0 παράμετρος = 0; sprintf (κείμενο, "%02u", παράμετρος); lcd.setCursor (x, y); lcd.print (κείμενο); καθυστέρηση (200)? // Περιμένετε 200ms} lcd.setCursor (x, y); lcd.print (""); // Εμφάνιση δύο διαστημάτων blink_parameter (); sprintf (κείμενο, "%02u", παράμετρος); lcd.setCursor (x, y); lcd.print (κείμενο); blink_parameter (); εάν (! digitalRead (8)) {// Εάν πατηθεί το κουμπί (pin #8) i ++; // Αύξηση «i» για την επόμενη παράμετρο παράμετρος επιστροφής. // Επιστροφή τιμής παραμέτρου και έξοδος}}} κενός βρόχος () {if (! DigitalRead (8)) {// Εάν πατηθεί το κουμπί (pin #8) i = 0; ώρα = επεξεργασία (5, 0, ώρα); λεπτό = επεξεργασία (8, 0, λεπτό); ημερομηνία = επεξεργασία (5, 1, ημερομηνία); μήνας = επεξεργασία (8, 1, μήνας); έτος = επεξεργασία (13, 1, έτος); // Μετατροπή δεκαδικού σε BCD λεπτό = ((λεπτό / 10) << 4) + (λεπτό % 10); ώρα = ((ώρα / 10) << 4) + (ώρα % 10); ημερομηνία = ((ημερομηνία / 10) << 4) + (ημερομηνία % 10) · μήνας = ((μήνας / 10) << 4) + (μήνας % 10) · έτος = ((έτος / 10) << 4) + (έτος % 10) · // Τερματισμός μετατροπής // Γράψτε δεδομένα στο DS3231 RTC Wire.beginTransmission (0x68); // Έναρξη πρωτοκόλλου I2C με διεύθυνση DS3231 Wire.write (0); // Αποστολή διεύθυνσης μητρώου Wire.write (0); // Επαναφορά sesonds και εκκίνηση ταλαντωτή Wire.write (λεπτό); // Γράψτε λεπτό Wire.write (ώρα); // Γράψτε ώρα Wire.write (1); // Γράψτε την ημέρα (δεν χρησιμοποιείται) Wire.write (ημερομηνία); // Γράψτε ημερομηνία Wire.write (μήνας); // Γράψτε μήνα Wire.write (έτος); // Γράψτε έτος Wire.endTransmission (); // Διακόψτε τη μετάδοση και αφήστε την καθυστέρηση διαύλου I2C (200). // Περιμένετε 200ms} Wire.beginTransmission (0x68); // Έναρξη πρωτοκόλλου I2C με διεύθυνση DS3231 Wire.write (0); // Αποστολή διεύθυνσης μητρώου Wire.endTransmission (false); // I2C επανεκκίνηση Wire.requestFrom (0x68, 7); // Ζητήστε 7 byte από το DS3231 και αφήστε τον δίαυλο I2C στο τέλος της ανάγνωσης δεύτερου = Wire.read (); // Διαβάστε δευτερόλεπτα από τον καταχωρητή 0 λεπτό = Wire.read (); // Διαβάστε λεπτά από τον καταχωρητή 1 ώρα = Wire.read (); // Readρα ανάγνωσης από το μητρώο 2 Wire.read (); // Διαβάστε την ημέρα από το μητρώο 3 (δεν χρησιμοποιείται) ημερομηνία = Wire.read (); // Ημερομηνία ανάγνωσης από μητρώο 4 μήνες = Wire.read (); // Διαβάστε μήνα από το μητρώο 5 χρόνια = Wire.read (); // Διαβάστε το έτος από το μητρώο 6 DS3231_display (); // Χρόνος διαλογής & καθυστέρηση ημερολογίου (50). // Περιμένετε 50ms}
Συνιστάται:
Ρύθμιση του DS3231 RTC (Ρολόι σε πραγματικό χρόνο) με ακρίβεια, γρήγορη και αυτοματοποιημένη χρήση Java (+-1s): 3 βήματα
Ρύθμιση του DS3231 RTC (Ρολόι σε πραγματικό χρόνο) με ακρίβεια, γρήγορη και αυτοματοποιημένη χρήση Java (+-1s): Αυτό το εγχειρίδιο θα σας δείξει πώς να ρυθμίσετε την ώρα σε ένα ρολόι πραγματικού χρόνου DS3231 χρησιμοποιώντας ένα Arduino και μια μικρή εφαρμογή Java που χρησιμοποιεί η σειριακή σύνδεση του Arduino. Η βασική λογική αυτού του προγράμματος: 1. Το Arduino στέλνει σειριακό αίτημα
Ρολόι σε πραγματικό χρόνο Minitel: 5 βήματα
Minitel Real Time Clock: Δημιουργήθηκε το 1978 από τη France Telecom, το Minitel ήταν μια υπηρεσία ανάκτησης πληροφοριών και αποστολής μηνυμάτων. Θεωρείται το πιο επιτυχημένο δίκτυο πριν από τον παγκόσμιο ιστό. 30 χρόνια μετά, το 2008 το δίκτυο έκλεισε τελικά. (Υπάρχουν πολλές πληροφορίες για αυτό
Δημιουργία ρολογιού με M5stick C χρησιμοποιώντας Arduino IDE - RTC Ρολόι σε πραγματικό χρόνο με M5stack M5stick-C: 4 βήματα
Δημιουργία ρολογιού με M5stick C χρησιμοποιώντας Arduino IDE | RTC Ρολόι πραγματικού χρόνου με M5stack M5stick-C: Γεια σας παιδιά σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθουμε πώς να φτιάχνουμε ένα ρολόι με τον πίνακα ανάπτυξης m5stick-C του m5stack χρησιμοποιώντας το Arduino IDE. Έτσι το m5stick θα εμφανίσει ημερομηνία, ώρα & εβδομάδα του μήνα στην οθόνη
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT - Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: 4 βήματα
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT | Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: Επισκεφτείτε το κανάλι μου στο Youtube. Εισαγωγή:- Σε αυτήν την ανάρτηση πρόκειται να φτιάξω "Ρολόι πραγματικού χρόνου" χρησιμοποιώντας οθόνη αφής TFT 3,5 ιντσών, Arduino Mega Ενότητα 2560 και DS3231 RTC…. Πριν ξεκινήσετε… ελέγξτε το βίντεο από το κανάλι μου στο YouTube..Σημείωση:- Εάν χρησιμοποιείτε Arduin
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που χτυπά πυροσβεστήρα .: 3 βήματα (με εικόνες)
Δημιουργήστε ένα πραγματικό ρολόι που χτυπά το κουδούνι για τον υπολογιστή σας και ένα ρολόι που προκαλεί πυροσβεστήρα .: Ένα κουδούνι από ορείχαλκο, ένα μικρό ρελέ μερικά ακόμη πράγματα και ένα πραγματικό κουδούνι μπορούν να χτυπήσουν τις ώρες στην επιφάνεια εργασίας σας. Αν και αυτό το έργο τρέχει σε Windows και Mac Το OS X επίσης, αποφάσισα να εγκαταστήσω το Ubuntu Linux σε έναν υπολογιστή που βρήκα στα σκουπίδια και να δουλέψω σε αυτό: Δεν είχα ποτέ