...

Βιβλιοθήκη Arduino για έλεγχο της ημερομηνίας και της θερμοκρασίας του ενσωματωμένου DS3231 μέσω I2C

Βιβλιοθήκη Arduino για έλεγχο της ημερομηνίας και της θερμοκρασίας του ενσωματωμένου DS3231 μέσω I2C

Βιβλιοθήκη Arduino για έλεγχο της ημερομηνίας και της θερμοκρασίας του ενσωματωμένου DS3231 μέσω I2C

ΕΝΗΜΕΡΩΣΗ: Επισκεφθείτε επίσης το νέο βιβλιοθήκη για διαχείριση ημερομηνίας και ώρας με τη μονάδα DS3231 RTC και το Arduino με βελτιώσεις όπως η εποχιακή ώρα.

Η λειτουργία του IC de ρολόγια πραγματικού χρόνου (RTC) πιο δημοφιλή που ελέγχονται με τη χρήση του λεωφορείο Ι2C Συνήθως μοιάζει πολύ. Εκτός από το Βιβλιοθήκη καλωδίων de Arduino απλοποιεί σημαντικά την επικοινωνία με συσκευές Σειριακή διεπαφή δύο καλωδίων (TWI), I2C, συγκεκριμένος.

Πίνακας Περιεχομένων

    Σε γενικές γραμμές, η διαδικασία αποτελείται από

    1. Ξεκινήστε τις επικοινωνίες ως slave ή master (ρυθμισμένες από προεπιλογή) με τη λειτουργία Wire.begin(διεύθυνση). Εάν παραληφθεί η "διεύθυνση", οι επικοινωνίες ξεκινούν με το μC ο δάσκαλος του λεωφορείο Ι2C.

    2. Ενεργοποιήστε την επικοινωνία I2C με τη συσκευή μέσω της διεύθυνσης μνήμης όπου βρίσκεται, χρησιμοποιώντας την εντολή Wire.beginTransmission(διεύθυνση).

    3. Γράψτε μια παραγγελία στο λεωφορείο Ι2C για να πείτε στη συσκευή τη λειτουργία που θέλετε να εκτελέσει, χρησιμοποιώντας Wire.write(εντολή), στην οποία «σειρά» είναι ο κωδικός λειτουργίας.

    4. Απενεργοποιήστε τις επικοινωνίες για να απελευθερώσετε το λεωφορείο Ι2C με λειτουργία Wire.endTransmission().

    5. Ζητήστε από τη συσκευή να στείλει μια συγκεκριμένη ποσότητα δεδομένων που αντιστοιχεί στη λειτουργία που έχει ζητηθεί (σε αυτήν την περίπτωση, την ημερομηνία και την ώρα) με τη λειτουργία Wire.requestFrom(διεύθυνση, ποσό).

    6. Περιμένετε μέχρι τα δεδομένα που ζητούνται με τη λειτουργία να είναι διαθέσιμα για ανάγνωση Wire.available(), το οποίο επιστρέφει τον αριθμό των δεδομένων που έχουν ήδη ληφθεί και μπορούν να διαβαστούν.

    7. Διαβάστε τα δεδομένα που αποστέλλονται από τη συσκευή (το Ρολόι πραγματικού χρόνου, σε αυτήν την περίπτωση) χρησιμοποιώντας τη συνάρτηση Wire.read() όσες φορές υποδεικνύονται τα byte Wire.available() που είναι διαθέσιμα.

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

    Σχετικά με το DS3231 (και συμβατά της ίδιας σειράς, όπως το DS3232) και την ερμηνεία των δεδομένων, σύμφωνα με τις προδιαγραφές του ενσωματωμένου, για παράδειγμα, οι τιμές των διαφορετικών ψηφίων που αντιπροσωπεύουν το χρόνο αντιπροσωπεύονται σε δυαδική κωδικοποιημένη δεκαδική (BCD) που θα είναι πιο βολικό να εκφραστεί ως δεκαδική τιμή (α byte) για χρήση σε Arduino

    Στην ίδια γραμμή, η θερμοκρασία εκφράζεται ως byte in συμπλήρωμα δύο για το ακέραιο μέρος και δύο bit για το βήμα, με ανάλυση τέταρτου της μοίρας, του δεκαδικού μέρους. Αυτές και άλλες πτυχές της αναπαράστασης δεδομένων στο ρολόι έχουν συζητηθεί εξαντλητικά στον κώδικα της βιβλιοθήκης παρακάτω. DS3231

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

    Το παρακάτω είναι παράδειγμα κώδικα για να δείξει πώς να χρησιμοποιήσετε τη βιβλιοθήκη. Όπως αναφέρθηκε παραπάνω, η θερμοκρασία διαβάζεται απλά με τη συνάρτηση read_temperature() του αντικειμένου κλάσης DS3231 αλλά, για να αγνοηθούν σφάλματα στην ανάγνωση, χρησιμοποιούνται δύο σταθερές που αποθηκεύουν, αντίστοιχα, τη μέγιστη και την ελάχιστη θερμοκρασία της συσκευής σύμφωνα με το φύλλο δεδομένων και οι οποίες διαβάζονται με τις αντίστοιχες συναρτήσεις.

    Η μέτρηση της θερμοκρασίας πραγματοποιείται σε δύο στάδια: πρώτον φορτώνεται η τιμή, έτσι ώστε διαφορετικές χρήσεις της ημερομηνίας ή της ώρας να είναι συνεπείς (δεν θα εμφανίζουν υψηλότερη τιμή σε δυσμενείς περιπτώσεις) και δεύτερον χρησιμοποιείται σύμφωνα με τη μορφή που απατείται. Το παράδειγμα προγράμματος (το οποίο δεν είναι πολύ πρακτικό, αν και εξηγεί όλες τις δυνατότητες) δείχνει όλες τις διαθέσιμες μορφές

    • Η λειτουργία date_time_value() που επιστρέφει έναν δείκτη σε έναν πίνακα δεξαμενή (bytes) που περιέχουν τις επτά αριθμητικές τιμές που αντιπροσωπεύουν την ημερομηνία και την ώρα σε ένα ρολόι DS3231 μετατρέπονται σε δεκαδικά (είναι μέσα BCD στη συσκευή)

    • Χρησιμοποιώντας τη λειτουργία weekday_number() Λαμβάνεται μια τιμή που αντιστοιχεί στον αριθμό της ημέρας της εβδομάδας που ξεκινά την Κυριακή. Για να εμφανιστεί ως κείμενο, χρησιμοποιείται ένας πίνακας και αφαιρείται ένας για να ξεκινήσει από το μηδέν δείκτη, Κυριακή.

    • Για να συμβουλευτείτε την ημερομηνία σε "τοπική" (ισπανική) μορφή, χρησιμοποιήστε τη συνάρτηση human_date(), το οποίο επιστρέφει έναν δείκτη σε μια συμβολοσειρά στην οποία η ημερομηνία αναπαρίσταται σε μορφή ΗΗ/ΜΜ/ΕΕΕΕ, όπου ΗΗ είναι η ημέρα που αντιπροσωπεύεται με 2 ψηφία, ΜΜ είναι ο μήνας με 2 ψηφία και ΕΕΕΕ είναι το έτος με 4 ψηφία.

    • Η λειτουργία human_hour() επιστρέφει την ώρα στη μορφή ωω:λλ:δδ, με ωω να είναι η ώρα (σε μορφή 24) που αντιπροσωπεύεται με 2 ψηφία, mm τα λεπτά με 2 ψηφία και ss τα δευτερόλεπτα με 2 ψηφία.

    • Για εύκολη χρήση της ημερομηνίας και της ώρας αρχεία καταγραφής η λειτουργία έχει προγραμματιστεί compact_date_time(), που αποδίδει την τιμή της ημερομηνίας και της ώρας με τη μορφή YYMMDDhhmmss όπου AA είναι το έτος που αντιπροσωπεύεται με τα 2 τελευταία ψηφία, MM είναι ο μήνας με 2 ψηφία, DD είναι η ημέρα με 2 ψηφία, hh είναι η ώρα (σε μορφή 24 ) με 2 ψηφία, mm τα λεπτά με 2 ψηφία και ss τα δευτερόλεπτα με 2 ψηφία. Αυτή η μορφή, παρόλο που είναι κείμενο, καταλαμβάνει λίγο χώρο και επιτρέπει πολύ απλή αλφαβητική σειρά.

    • Η λειτουργία date_time_MySQL() χρησιμεύει για την παρουσίαση της ημερομηνίας και της ώρας στη μορφή που χρησιμοποιεί ο διαχειριστής της βάσης δεδομένων MySQL (ή το νέο και πιο ελεύθερο MariaDB) ΕΕΕΕ-ΜΜ-ΗΗ ωω:λλ:δδ, όπου ΕΕΕΕ είναι το έτος που αντιπροσωπεύεται με 4 ψηφία, ΜΜ είναι ο μήνας με 2 ψηφία, ΗΗ είναι η ημέρα με 2 ψηφία, ωω είναι η ώρα (σε μορφή 24) με 2 ψηφία , mm είναι τα λεπτά με 2 ψηφία και δευτερόλεπτα με 2 ψηφία.

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

    Η έξοδος του παραπάνω παραδείγματος προγράμματος θα μπορούσε να είναι κάτι σαν αυτό που φαίνεται στην παρακάτω εικόνα: μια λίστα με 7 τιμές (δευτερόλεπτα, λεπτά, ώρα, ημέρα της εβδομάδας, ημέρα του μήνα, μήνας και έτος) την ημερομηνία και η ώρα που εκφράζεται με «ανθρώπινο» τρόπο (σύμφωνα με το ισπανικό στυλ) η ώρα ως ακέραιος αριθμός σε μορφή τετραψήφιου ρολογιού, η ημερομηνία και η ώρα σε μορφή βάσης δεδομένων MySQL, ημερομηνία και ώρα σε συμπαγή μορφή (για κορμούς) και την εσωτερική θερμοκρασία του DS3231.

    salida-consola-Arduino-librer%C3%ADa-reloj-tiempo-real-RTC-y-temperatura-DS3231-por-bus-I2C Librería de Arduino para consultar fecha y temperatura del integrado DS3231 por I2C

    Δημοσίευση σχολίου

    Μπορεί να έχετε χάσει