Αυτό το ρολόι σε πραγματικό χρόνο που βασίζεται στο Arduino είναι ένα ψηφιακό ρολόι για προβολή σε πραγματικό χρόνο χρησιμοποιώντας ένα RTC IC DS1307 που λειτουργεί σε πρωτόκολλο I2C. Το ρολόι σε πραγματικό χρόνο σημαίνει ότι λειτουργεί ακόμη και μετά από διακοπή ρεύματος. Όταν επανασυνδεθεί η τροφοδοσία, εμφανίζει τον πραγματικό χρόνο ανεξάρτητα από το χρόνο και τη διάρκεια που ήταν σε κατάσταση απενεργοποίησης. Σε αυτό το έργο Arduino ξυπνητήρι έχουμε χρησιμοποιήσει μια μονάδα LCD 16x2 για την εμφάνιση της ώρας σε μορφή "ώρα, λεπτό, δευτερόλεπτα, ημερομηνία, μήνα και έτος". Προστίθεται επίσης μια επιλογή συναγερμού και μπορούμε να ρυθμίσουμε την ώρα αφύπνισης. Μόλις ο χρόνος συναγερμού εξοικονομήθηκε στο εσωτερικό EEPROM του arduino, παραμένει αποθηκευμένος ακόμη και μετά την επαναφορά ή τη διακοπή ρεύματος. Τα ρολόγια σε πραγματικό χρόνο χρησιμοποιούνται συνήθως στους υπολογιστές, τα σπίτια, τα γραφεία και την ηλεκτρονική μας συσκευή για να τα ενημερώνουμε σε πραγματικό χρόνο.
Το πρωτόκολλο I2C είναι μια μέθοδος σύνδεσης δύο ή περισσότερων συσκευών που χρησιμοποιούν δύο καλώδια σε ένα μόνο σύστημα, και έτσι αυτό το πρωτόκολλο ονομάζεται επίσης ως πρωτόκολλο δύο καλωδίων. Μπορεί να χρησιμοποιηθεί για την επικοινωνία 127 συσκευών σε μία μόνο συσκευή ή επεξεργαστή. Οι περισσότερες συσκευές I2C λειτουργούν με συχνότητα 100Khz.
Βήματα για την εγγραφή δεδομένων από το master to slave (λειτουργία λήψης σκλάβων)
- Στέλνει την κατάσταση START στο slave.
- Στέλνει διεύθυνση σκλάβου σε σκλάβο.
- Αποστολή bit εγγραφής (0) στο slave.
- Λάβαμε bit ACK από το slave
- Στέλνει διευθύνσεις λέξεων σε σκλάβους.
- Λάβαμε bit ACK από το slave
- Στέλνει δεδομένα σε σκλάβους.
- Λάβαμε bit ACK από το slave.
- Και τελευταία στέλνει την κατάσταση STOP στον σκλάβος.
Βήματα για ανάγνωση δεδομένων από slave σε master (λειτουργία μετάδοσης slave)
- Στέλνει την κατάσταση START στο slave.
- Στέλνει διεύθυνση σκλάβου σε σκλάβο.
- Στείλτε το bit ανάγνωσης (1) στο slave.
- Λάβαμε bit ACK από το slave
- Λάβαμε δεδομένα από σκλάβος
- Λάβαμε bit ACK από το slave.
- Στέλνει συνθήκη STOP σε σκλάβος.
Για να δημιουργήσουμε αυτό το ψηφιακό ρολόι βασισμένο σε RTC DS1307 IC , χρησιμοποιήσαμε εδώ το Arduino Pro Mini, αλλά μπορείτε επίσης να χρησιμοποιήσετε οποιοδήποτε άλλο μοντέλο Arduino όπως το Arduino Uno ή το Arduino Nano. Μαζί με την πλακέτα Arduino, DS1307 RTC IC, χρησιμοποιήσαμε τη μονάδα LCD 16x2 για να εμφανίσουμε την ώρα και την ημερομηνία, έναν κρυσταλλικό ταλαντωτή, έναν ρυθμιστή τάσης 7805, έναν βομβητή και λίγα τρανζίστορ και αντιστάσεις.
Διάγραμμα κυκλώματος και περιγραφή
Σε αυτό το κύκλωμα ψηφιακού ρολογιού που βασίζεται στο Arduino, έχουμε χρησιμοποιήσει τρία βασικά στοιχεία που είναι το IC DS1307, το Arduino Pro Mini Board και η μονάδα LCD 16x2.
Εδώ το arduino χρησιμοποιείται για χρόνο ανάγνωσης από το ds1307 και το εμφανίζει σε LCD 16x2. Το DS1307 στέλνει ώρα / ημερομηνία χρησιμοποιώντας 2 γραμμές στο arduino. Ένας βομβητής χρησιμοποιείται επίσης για ένδειξη συναγερμού, ο οποίος ηχεί όταν ενεργοποιείται ο συναγερμός. Ένα διάγραμμα μπλοκ εμφανίζεται παρακάτω για να κατανοήσει τη λειτουργία αυτού του Ρολόι σε πραγματικό χρόνο.
Όπως μπορείτε να δείτε στο διάγραμμα κυκλώματος, οι ακροδέκτες DS1307 SDA και SCL συνδέονται με καρφίτσες arduino SDA και SCL με αντίσταση έλξης που κρατά την προεπιλεγμένη τιμή ΥΨΗΛΑ στις γραμμές δεδομένων και ρολογιού. Ο ταλαντωτής κρυστάλλου 32.768KHz συνδέεται με τσιπ DS1307 για παραγωγή ακριβούς καθυστέρησης 1 δευτερολέπτου και μια μπαταρία 3 volt συνδέεται επίσης με τον πείρο 3 rd (BAT) του DS1307 που διατηρεί το χρόνο λειτουργίας μετά από διακοπή ρεύματος. Η οθόνη LCD 16x2 συνδέεται με το arduino σε λειτουργία 4-bit. Ο πείρος ελέγχου RS, RW και En συνδέονται απευθείας με τον πείρο arduino 2, GND και 3. Και ο πείρος δεδομένων D0-D7 συνδέεται με το 4, 5, 6, 7 του arduino. Ένας βομβητής συνδέεται με τον πείρο arduino 13 μέσω ενός τρανζίστορ NPN BC547 που έχει αντίσταση 1 k στη βάση του.
Για τη ρύθμιση του συναγερμού στους ακροδέκτες 12, 11 και 10 του arduino σε ενεργή χαμηλή λειτουργία, χρησιμοποιούνται τρία κουμπιά, συγκεκριμένα, INC και Next. Όταν πατάμε το σετ, ενεργοποιείται η λειτουργία συναγερμού και τώρα πρέπει να ρυθμίσουμε συναγερμό χρησιμοποιώντας το κουμπί INC και το κουμπί Επόμενο χρησιμοποιείται για μετακίνηση σε ψηφίο. Η πλήρης ρύθμιση του breadboard αυτού του ρολογιού πραγματικού χρόνου με συναγερμό εμφανίζεται στην παρακάτω εικόνα. Μπορείτε επίσης να ελέγξετε ένα λεπτομερές σεμινάριο για το ψηφιακό ξυπνητήρι με τον μικροελεγκτή AVR.
Περιγραφή προγράμματος
Για να προγραμματίσουμε αυτό το ρολόι σε πραγματικό χρόνο, χρησιμοποιήσαμε μερικές βιβλιοθήκες για εξαγωγή ώρας / ημερομηνίας από το DS1307 και για προβολή σε LCD, οι οποίες δίνονται παρακάτω:
Και η προετοιμασία RTC, LCD και έξοδος εισόδου πραγματοποιείται σε βρόχο ρύθμισης.
Τα υπόλοιπα πράγματα όπως ο χρόνος ανάγνωσης, η ρύθμιση του συναγερμού πραγματοποιείται στην ενότητα κενού βρόχου.