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

Αληθινό δυαδικό ρολόι με συγχρονισμό NTP: 4 βήματα
Αληθινό δυαδικό ρολόι με συγχρονισμό NTP: 4 βήματα

Βίντεο: Αληθινό δυαδικό ρολόι με συγχρονισμό NTP: 4 βήματα

Βίντεο: Αληθινό δυαδικό ρολόι με συγχρονισμό NTP: 4 βήματα
Βίντεο: LDmicro 14: I2C LCD & DS3231 Real-Time Clock (Microcontroller PLC Ladder Programming with LDmicro) 2024, Ιούλιος
Anonim
Αληθινό δυαδικό ρολόι με συγχρονισμό NTP
Αληθινό δυαδικό ρολόι με συγχρονισμό NTP
Αληθινό δυαδικό ρολόι με συγχρονισμό NTP
Αληθινό δυαδικό ρολόι με συγχρονισμό NTP

Ένα πραγματικό δυαδικό ρολόι εμφανίζει την ώρα της ημέρας ως άθροισμα δυαδικών κλασμάτων μιας ολόκληρης ημέρας, σε αντίθεση με ένα παραδοσιακό "δυαδικό ρολόι" που εμφανίζει τον χρόνο ως δυαδικά ψηφία κωδικοποιημένα δυαδικά που αντιστοιχούν στις ώρες/λεπτά/δευτερόλεπτα. Τα παραδοσιακά "δυαδικά ρολόγια" χρησιμοποιούν πραγματικά δυαδικά κωδικοποιημένα-δεκαδικά-κωδικοποιημένα-sexagesimal. Τι χάλι! Τα αληθινά δυαδικά ρολόγια απλοποιούν τα πράγματα πάρα πολύ.

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

Σχεδιάζοντας το πραγματικό μου δυαδικό ρολόι, χρησιμοποίησα δώδεκα ψηφία ανάλυσης, οπότε η ημέρα χωρίζεται σε 2^12 = 4096 μέρη (κάθε προσαύξηση είναι περίπου 20 δευτερόλεπτα). Αντί να διατηρούνται όλα τα ψηφία σε μια γραμμή, τα 12 ψηφία χωρίστηκαν σε 3 σειρές των 4 ψηφίων. Παρόλο που τα πραγματικά δυαδικά ψηφία είναι αμετάβλητα, αυτό επιτρέπει στο ρολόι να διαβάζεται ως 3 εξάγωνο ψηφιακό κωδικοποιημένο δυαδικό ψηφίο, η πρώτη γραμμή που δείχνει τα 16α της ημέρας (1.5 ώρες), η δεύτερη γραμμή τα 256 έτη της ημέρας (~ 5 λεπτά) και η τρίτη γραμμή που δείχνει 4096ths της ημέρας (~ 20 δευτερόλεπτα).

Το ρολόι συγχρονίζεται με το NTP (Network Time Protocol) χρησιμοποιώντας ένα ESP8266. Το ESP8266 έχει διαμορφωθεί έτσι ώστε, κατά την εκκίνηση, το πάτημα ενός κουμπιού στο ρολόι να το στείλει σε λειτουργία ρυθμίσεων. Στη λειτουργία ρυθμίσεων, το ρολόι θα δημιουργήσει ένα δίκτυο WiFi που εξυπηρετεί μια ιστοσελίδα που μπορεί να χρησιμοποιηθεί για να εισαγάγετε τις δικές σας ρυθμίσεις wifi, διακομιστή NTP και ζώνη ώρας. Αυτές οι πληροφορίες αποθηκεύονται στο EEPROM του ESP8266 και διαβάζονται όταν το ρολόι ξεκινά σε λειτουργία ρολογιού, έτσι ώστε να μπορεί να συνδεθεί στο διαδίκτυο και να ανακτήσει τον χρόνο.

Προμήθειες:

  • NodeMCU ESP8266
  • Λωρίδα LED WS2812B
  • Κουμπί ώθησης
  • Αντίσταση 470 Ohm
  • Αντίσταση 10K Ohm
  • Πυκνωτής 470 uF
  • Ξυλάκια λακκούβας
  • Μάρμαρα
  • Ξύλο (ή άλλο φύλλο υλικού) για τη θήκη

Βήμα 1: Κύκλωμα

Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα

Για να έχετε μια οθόνη, αυτό το έργο χρησιμοποιεί μια λωρίδα led RGB τοποθετημένη σε 3 σειρές. Έκοψα 3 λωρίδες από 8 led από τη λωρίδα των λυχνιών WS2812B και τις κόλλησα μαζί. (Είναι εύθραυστα και η συγκόλληση των μικρών μαξιλαριών μπορεί να είναι δύσκολη. Τύλιξα τα κολλημένα άκρα σε ηλεκτρική ταινία για να τα μονώσω από κάθε κάμψη.) Παρόλο που χρειάστηκα μόνο 4 λαβές ανά σειρά, έκοψα λωρίδες 8 έτσι ώστε να θα μπορούσε να έχει μεγαλύτερη απόσταση μεταξύ των φώτων χρησιμοποιώντας μόνο κάθε άλλο led. Αυτές οι λωρίδες κολλήθηκαν στη συνέχεια σε μια επίπεδη βάση κατασκευασμένη από ξυλάκια παγωτού. Μεταξύ κάθε σειράς, ένα διπλό στρώμα από ξυλάκια popsicle παρέχει το προφίλ έτσι ώστε η μπροστινή όψη να μπορεί να κολλήσει στο εσωτερικό της θήκης του ρολογιού (βλέπε φωτογραφία).

Η λωρίδα led τροφοδοτείται από το VU και το GND του NodeMCU. Το VU τροφοδοτείται (σχεδόν) απευθείας από το USB, οπότε παρέχει 5V στα LED WS2812B, παρόλο που το ESP8266 λειτουργεί στα 3.3V. Τοποθέτησα έναν πυκνωτή 470 uF σε όλη την ισχύ για τη λωρίδα WS2812B για προστασία των led. Τα δεδομένα για τη λωρίδα led συνδέονται με τον ακροδέκτη D3 του NodeMCU μέσω της αντίστασης 470 Ohm. Ανατρέξτε σε αυτό το εγχειρίδιο για περισσότερες πληροφορίες σχετικά με τον τρόπο ελέγχου των οδηγήσεων WS2812B με το ESP8266. Το κύκλωμα συγκολλήθηκε σε πρωτο-πλακέτα με μερικές κεφαλίδες από άντρα σε γυναίκα για το NodeMCU.

Ένα κουμπί ώθησης ήταν επίσης προσαρτημένο στο D6 του NodeMCU. Αυτό το κουμπί μπορεί να πατηθεί ενώ το ρολόι ξεκινά για να το στείλετε σε λειτουργία ρυθμίσεων (στην οποία μπορούν να τροποποιηθούν οι ρυθμίσεις wifi, ο διακομιστής NTP και οι προτιμήσεις ζώνης ώρας). Στο ένα άκρο το κουμπί σύνδεσης συνδέεται με το D6 και επίσης με το GND μέσω αντίστασης 10K Ohm και στο άλλο άκρο συνδέεται με την τροφοδοσία. Όταν το κουμπί είναι πατημένο, το D6 διαβάζεται χαμηλά. όταν πιέζεται, το D6 διαβάζει ψηλά.

Βήμα 2: Λογισμικό

Λογισμικό
Λογισμικό

Το λογισμικό για το ESP8266 γράφτηκε χρησιμοποιώντας τον κώδικα Arduino. Οι λυχνίες LED χειρίζονται χρησιμοποιώντας τη βιβλιοθήκη FastLED και ο συγχρονισμός NTP γίνεται από τη βιβλιοθήκη NTPClient. Ο χρόνος συγχρονίζεται με NTP κάθε ώρα.

Στην αρχή της λειτουργίας ρύθμισης, το πρόγραμμα ελέγχει αν πατηθεί το κουμπί που είναι συνδεδεμένο στο D6. Εάν είναι, το ESP8266 δημιουργεί ένα δίκτυο wifi (το SSID και ο κωδικός πρόσβασης μπορούν να αλλάξουν στον κώδικα, το προεπιλεγμένο SSID είναι "TrueBinary" και ο κωδικός πρόσβασης είναι "thepoweroftwo"). Συνδεθείτε σε αυτό το δίκτυο από οποιαδήποτε συσκευή και μεταβείτε στο 192.168.1.1. Το ESP8266 θα εμφανίσει μια ιστοσελίδα με φόρμες όπου μπορείτε να εισαγάγετε το SSID wifi και τον κωδικό πρόσβασής σας, τον προτιμώμενο διακομιστή NTP και τη ζώνη ώρας που αντισταθμίζονται από το UTC. Αφού υποβληθούν αυτές οι φόρμες στο ESP8266, θα αποθηκεύσει τις πληροφορίες στον εσωτερικό χώρο αποθήκευσης EEPROM.

Εάν δεν πατηθεί το κουμπί, το ρολόι ξεκινά κανονικά, διαβάζει τις ρυθμίσεις από το EEPROM, συνδέεται στο wifi για να χρησιμοποιήσει το NTP και αρχίζει να εμφανίζει την ώρα.

ΣΗΜΕΙΩΣΗ: η συνάρτηση setDisplay (int index) παίρνει τον ψηφιακό αριθμό από 0-11 όπου 0 είναι το πρώτο ψηφίο (η μισή ημέρα) και 11 είναι το τελευταίο (1/4096 της ημέρας) και ανάβει το αντίστοιχο LED χρησιμοποιώντας το " array "array. Αυτή η λειτουργία πρέπει να συμπληρωθεί σύμφωνα με τον τρόπο διαμόρφωσης της οθόνης. Το παράδειγμα που σχολιάζω αντιστοιχεί στο πώς κόλλησα τις σειρές με ζιγκ-ζαγκ και όχι από άκρο σε άκρο και παρέλειψα κάθε άλλο LED.

Βήμα 3: Στέγαση

Στέγαση
Στέγαση
Στέγαση
Στέγαση
Στέγαση
Στέγαση

Για να στεγάσω το ρολόι, χρησιμοποίησα μια γωνία βαμμένου ξύλου που τυχαίνει να έχω. Σε μια εξωτερική όψη, άνοιξα 12 οπές σε ένα πλέγμα που αντιστοιχεί στις θέσεις των LED. Έπειτα κόλλησα τις λυχνίες LED στο εσωτερικό της γωνίας κολλώντας τις υπερυψωμένες όψεις των μπαστουνιών του παγωτού μεταξύ των σειρών στο ξύλο (όπως φαίνεται). Για να διαδώσω το φως από τα LED, κόλλησα γυάλινα μάρμαρα πάνω από τις τρύπες. Το πέτυχα βυθίζοντας το κάτω μισό κάθε μαρμάρου σε εποξειδική ρητίνη και στη συνέχεια τοποθετώντας το στις τρύπες. Το NodeMCU και ο πρωτο-πίνακας βιδώθηκαν στην άλλη εσωτερική όψη της γωνίας. Οι πλευρές καλύπτονταν χρησιμοποιώντας μικρά τρίγωνα ξύλου, προσαρτημένα με κόλλα ξύλου. Μία από τις πλευρές έχει μια τρύπα για τη θύρα micro USB του NodeMCU και μια κοπή στη γωνία για το κουμπί ώθησης.

Βήμα 4: Τέλος

Εγινε!
Εγινε!
Εγινε!
Εγινε!

Το πραγματικό μας δυαδικό ρολόι τελείωσε! Για να το ρυθμίσετε, κρατήστε πατημένο το κουμπί ενώ το συνδέετε για να το θέσετε σε λειτουργία ρυθμίσεων και, στη συνέχεια, εισαγάγετε τα διαπιστευτήρια WiFi στην ιστοσελίδα του. Μόλις ρυθμιστεί, το ρολόι μπορεί να συνδεθεί οπουδήποτε και θα συνδεθεί αυτόματα στο διαδίκτυο και θα αρχίσει να εμφανίζει την ώρα σε δυαδική μορφή.

Χρειάζεται ένα μέρος εξάσκησης για να διαβάσετε χρόνο σε πραγματική δυαδική μορφή, αλλά είναι μια διασκεδαστική άσκηση και μετά από λίγο γίνεται ένας γρήγορος τρόπος για να πάρετε το χρόνο μόνο με μια ματιά!

Συνιστάται: