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

Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox: 8 βήματα
Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox: 8 βήματα

Βίντεο: Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox: 8 βήματα

Βίντεο: Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox: 8 βήματα
Βίντεο: Excel: Συναρτήσεις ημερομηνίας και ώρας - μέρος 1ο 2024, Νοέμβριος
Anonim
Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox
Εμφάνιση ημερομηνίας, ώρας και θερμοκρασίας χρησιμοποιώντας το XinaBox

Δροσερή οθόνη OLED που δείχνει την ημερομηνία, την ώρα και τη θερμοκρασία σε Κελσίου και Φαρενάιτ χρησιμοποιώντας Xinabox xChips με βάση το ESP8266.

Βήμα 1: Πράγματα που χρησιμοποιούνται σε αυτό το έργο

Συστατικά υλικού

  • Προγραμματιστής XinaBox IP01 x 1 xChip USB βασισμένος στο FT232R From FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi Core βασισμένο στο ESP8266 Wi-Fi Module
  • XinaBox SW01 x 1 xChip Αισθητήρας θερμοκρασίας, υγρασίας και ατμοσφαιρικής πίεσης με βάση το BME280 της Bosch.
  • OLED οθόνη XinaBox OD01 x 1 xChip 128x64 Pixel
  • Τροφοδοσία XinaBox PU01 x 1 xChip USB (Τύπος Α)
  • Συνδετήρες XinaBox XC10 x 1 xChip Bus
  • Τροφοδοτικό USB 5V x 1

Εφαρμογές λογισμικού και διαδικτυακές υπηρεσίες

Arduino IDE

Βήμα 2: Ιστορία

Εισαγωγή

Δημιούργησα αυτό το έργο για να εμφανίσω την ημερομηνία, την ώρα και τη θερμοκρασία UCT χρησιμοποιώντας το XinaBox xChips που χρησιμοποιεί το πρωτόκολλο διαύλου I2C. Η ώρα ανακτήθηκε από έναν διακομιστή Google NTP. Η θερμοκρασία περιβάλλοντος μετρήθηκε χρησιμοποιώντας το SW01 xChip και εμφανίστηκε στην οθόνη OD01 xChip OLED σε Κελσίου και Φαρενάιτ. Η παρακάτω εικόνα δείχνει την οθόνη OLED.

Εικόνα
Εικόνα

OLED με ημερομηνία, ώρα και θερμοκρασία

Βήμα 3: Λήψη απαραίτητων αρχείων

Θα χρειαστείτε τις ακόλουθες βιβλιοθήκες και λογισμικό για αυτό το έργο.

  • Arduino IDE - Λογισμικό ανάπτυξης στο οποίο θα κωδικοποιήσετε
  • xSW01 - Βιβλιοθήκη αισθητήρων θερμοκρασίας
  • xCore - Βασική βιβλιοθήκη για XinaBox xChips
  • xOD01 - Βιβλιοθήκη οθόνης OLED.
  • Ζώνη ώρας - Βιβλιοθήκη για να επιλέξετε τη ζώνη ώρας σας
  • Timeρα - Για να χρησιμοποιήσετε συναρτήσεις χρόνου
  • NTPClient - Σας δίνει τη δυνατότητα να έχετε χρόνο από έναν διακομιστή
  • Θα χρειαστεί επίσης να κατεβάσετε τον πίνακα ESP8266 και να ακολουθήσετε τις οδηγίες που τον συνοδεύουν για να εγκαταστήσετε τον πίνακα

Μόλις το κατεβάσετε θα εγκαταστήσετε το IDE και τις βιβλιοθήκες. Είναι αρκετά απλό αν ακολουθήσετε τις οδηγίες.

Βήμα 4: Συναρμολόγηση

Το κύριο xChip που θα εκτελέσει και θα επεξεργαστεί το πρόγραμμα είναι το CW01. Βασίζεται στη μονάδα WiFi ESP8266 και χρησιμοποιεί το πρωτόκολλο διαύλου I2C. Για να προγραμματίσετε στο CW01, θα χρειαστείτε έναν προγραμματισμό xChip. Το IP01 μας επιτρέπει να προγραμματίσουμε το CW01 μέσω της θύρας USB στον υπολογιστή μας απλά κάνοντας κλικ μαζί στα δύο xChips χρησιμοποιώντας συνδέσμους διαύλου XC10 και τοποθετώντας το στη θύρα USB. Δεν απαιτείται καλωδίωση και συγκόλληση. Ένα πράγμα που πρέπει να λάβετε υπόψη είναι ο προσανατολισμός των ονομάτων αναγνώρισης xChip. Πρέπει να προσανατολιστούν όλοι προς την ίδια κατεύθυνση. Θα πρέπει τώρα να έχετε την ακόλουθη ρύθμιση.

Εικόνα
Εικόνα

Κάντε κλικ μαζί CW01 και IP01 και τοποθετήστε το στη θύρα USB του υπολογιστή σας

Εάν είστε εξοικειωμένοι με το xChips, μπορείτε να συνδέσετε κάθε xChip μαζί χρησιμοποιώντας συνδέσμους διαύλου XC10 που θέλετε να χρησιμοποιήσετε για το έργο σας και στη συνέχεια να το τοποθετήσετε στη θύρα USB. Θα χρησιμοποιήσουμε αισθητήρα θερμοκρασίας SW01 και οθόνη OLED OD01.

Εικόνα
Εικόνα

Μπορείτε να συνδέσετε όλα τα τσιπ σας μαζί και στη συνέχεια να τα τοποθετήσετε στη θύρα USB

Βήμα 5: Πρόγραμμα

Κατεβάστε ή αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο Arduino IDE. Εάν δεν κάνετε αλλαγές στον κώδικα, απλώς εισάγετε τα στοιχεία του WiFi στα αντίστοιχα πεδία τους, όπως φαίνεται παρακάτω. Εισαγάγετε επίσης έναν αξιόπιστο διακομιστή ώρας NTP. Έχω χρησιμοποιήσει διακομιστή ώρας Google για αυτό το έργο.

Εικόνα
Εικόνα

Λεπτομέρειες WiFi και διακομιστής χρόνου NTP

Τώρα μεταγλωττίστε και ανεβάστε. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή θύρα και πλακέτα COM στο μενού εργαλείων στο Arduino IDE. Μετά τη μεταφόρτωση, η ώρα, η ημερομηνία και η θερμοκρασία θα πρέπει να εμφανίζονται ως παρακάτω.

Εικόνα
Εικόνα

Μετά τη μεταφόρτωση θα πρέπει να δείτε τα παρακάτω

Βήμα 6: Κάντε το φορητό

Μπορείτε τώρα να αφαιρέσετε τη μονάδα από τη θύρα USB και να διαχωρίσετε κάθε xChip τραβώντας το απλά. Δεδομένου ότι ο προγραμματισμός έχει ολοκληρωθεί, το IP01 δεν απαιτείται πλέον. Μπορείτε τώρα να συνδέσετε το έργο σας με όποιον τρόπο επιθυμείτε, εφόσον τα ονόματα ταυτοποίησης είναι όλα προσανατολισμένα προς την ίδια κατεύθυνση. Για την τροφοδοσία της μονάδας μας θα χρησιμοποιήσουμε το PU01. Αυτό μας επιτρέπει να το τροφοδοτούμε από μια κανονική τράπεζα τροφοδοσίας ή από οποιοδήποτε τροφοδοτικό USB 5V. Έχω συνδέσει το δικό μου όπως φαίνεται παρακάτω.

Εικόνα
Εικόνα

Τελική συναρμολόγηση. Τα xChips μπορούν να συνδεθούν με όποιον τρόπο επιθυμείτε.

Βήμα 7: Συμπέρασμα

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

Βήμα 8: Κωδικός

Date_Time_Temp.ino Arduino Απλώς εισαγάγετε τα στοιχεία του WiFi στα αντίστοιχα πεδία και ανεβάστε τα στον πίνακα.

#include // περιλαμβάνει βασική βιβλιοθήκη για το XinaBox xCHIPS

#include // περιλαμβάνουν βιβλιοθήκη οθόνης OLED #include // περιλαμβάνουν βιβλιοθήκη αισθητήρων θερμοκρασίας #include // περιλαμβάνουν ESP8266WiFi λειτουργικότητα #include // περιλαμβάνουν βιβλιοθήκες χρόνου #include #include #include #include #include xSW01 SW01? // ορισμός ιδιοτήτων NTP #define ntpOffset 60 * 60 // σε δευτερόλεπτα #define ntpInterval 60 * 1000 // σε χιλιοστά του δευτερολέπτου // εισαγωγή ενός αξιόπιστου διακομιστή χρόνου ntp μεταξύ των διπλών εισαγωγικών // εδώ έχω χρησιμοποιήσει έναν διακομιστή χρόνου Google ntp # define ntpAddress "time1.google.com" // ρυθμίστε το πρόγραμμα -πελάτη NTP UDP WiFiUDP ntpUDP. NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // μεταβλητή θερμοκρασίας float tempC; // κελσίου float tempF; // fahrenheit // τα στοιχεία του wifi σας const char* wifi_ssid = "XinaBox"; // το wifi ssid const char* wifi_pass = "RapidIoT"; // τον κωδικό πρόσβασης wifi σας // μεταβλητή ημερομηνίας και ώρας Ημερομηνία συμβολοσειράς. Χρόνος κλήσης // μεταβλητές που περιέχουν ημέρες και μήνες const char * days = {"Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"}; const char * μήνες = {"Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov "," Δεκ "}; const char * ampm = {"AM", "PM"}; void setup () {tempC = tempF = 0; // αρχικοποίηση θερμοκρασίας στο μηδέν timeClient.begin (); // εκκίνηση του προγράμματος -πελάτη NTP UDP // εκκίνηση σειριακής επικοινωνίας Serial.begin (115200); // ξεκινήστε την επικοινωνία i2c και ορίστε τις ακίδες Wire.begin (2, 14). // έναρξη αισθητήρα θερμοκρασίας SW01.begin (); // εκκίνηση οθόνης OLED OLED.begin (); // εκκαθάριση οθόνης OLED OD01.clear (); // δημιουργήστε σύνδεση wifi wifi_connect (); καθυστέρηση (1000)? } void loop () {// τρέξτε εάν έχει δημιουργηθεί σύνδεση wifi εάν (WiFi.status () == WL_CONNECTED) {SW01.poll (); // ανάγνωση θερμοκρασίας tempC = SW01.getTempC (); // αποθηκεύστε τη θερμοκρασία στο celcius tempF = SW01.getTempF (); // αποθηκεύστε τη θερμοκρασία σε ημερομηνία Φαρενάιτ = ""; // διαγραφή μεταβλητής ημερομηνίας clktime = ""; // εκκαθάριση μεταβλητής ώρας // ενημέρωση του προγράμματος -πελάτη ntp και λήψη του unix utc timestamp timeClient.update (); unsigned long epochTime = timeClient.getEpochTime (); // μετατροπή της ληφθείσας σφραγίδας χρόνου σε time_t αντικείμενο time_t utc; utc = epochTime; // utc time TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Ζώνη ώρας UTC (utcRule, utcRule); // μορφοποίηση μεταβλητών ώρας ημερομηνία += ημέρες [καθημερινή εβδομάδα (utc) - 1]; ημερομηνία += ","; ημερομηνία += μήνες [μήνας (utc) - 1]; ημερομηνία += ""; ημερομηνία += ημέρα (utc); ημερομηνία += ","; ημερομηνία += έτος (utc); // μορφοποίηση του χρόνου σε μορφή 12 ωρών με AM/PM και χωρίς δευτερόλεπτα clktime += hourFormat12 (utc); clktime += ":"; εάν (λεπτό (utc)

Συνιστάται: