DIY ηλεκτρονικό ημερολόγιο με ρολόι. Πώς να φτιάξετε το δικό σας ψηφιακό ρολόι σε στυλ ρετρό

Γεια σας geektimes! Το πρώτο μέρος του άρθρου εξέτασε τις αρχές της απόκτησης ακριβούς χρόνου σε ένα σπιτικό ρολόι. Ας προχωρήσουμε περαιτέρω και ας εξετάσουμε πώς και σε τι είναι καλύτερο να εμφανιστεί αυτή τη φορά.

1. Συσκευές εξόδου

Έτσι, έχουμε μια συγκεκριμένη πλατφόρμα (Arduino, Raspberry, ελεγκτής PIC/AVR/STM, κ.λπ.) και το καθήκον είναι να συνδέσουμε κάποιο είδος ένδειξης σε αυτήν. Υπάρχουν πολλές επιλογές που θα εξετάσουμε.

Εμφάνιση τμήματος

Όλα είναι απλά εδώ. Η ένδειξη τμήματος αποτελείται από συνηθισμένα LED, τα οποία συνδέονται απλώς με τον μικροελεγκτή μέσω αντιστάσεων σβέσης.

Προσοχή στην κίνηση!

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

Υπάρχουν 1001 άρθρα σχετικά με το πώς να συνδέσετε ένα LED σε έναν μικροελεγκτή, η Google μπορεί να βοηθήσει. Οι δυσκολίες ξεκινούν όταν θέλουμε να φτιάξουμε ένα μεγάλο ρολόι - εξάλλου, το να κοιτάμε έναν μικρό δείκτη δεν είναι ιδιαίτερα βολικό. Τότε χρειαζόμαστε τους ακόλουθους δείκτες (φωτογραφία από eBay):

Τροφοδοτούνται από 12 V και απλά δεν θα λειτουργούν απευθείας από τον μικροελεγκτή. Εδώ έρχεται να μας βοηθήσει το μικροκύκλωμα. CD4511, μόνο για αυτόν τον σκοπό. Όχι μόνο μετατρέπει δεδομένα από μια γραμμή 4-bit στους επιθυμητούς αριθμούς, αλλά περιέχει επίσης έναν ενσωματωμένο διακόπτη τρανζίστορ για την παροχή τάσης στον δείκτη. Έτσι, στο κύκλωμα θα χρειαστεί να έχουμε μια τάση «τροφοδοσίας» 9-12 V και έναν ξεχωριστό μετατροπέα υποβάθμισης (για παράδειγμα L7805) για να τροφοδοτεί τη «λογική» του κυκλώματος.

Δείκτες μήτρας

Ουσιαστικά πρόκειται για τα ίδια LED, μόνο με τη μορφή μήτρας 8x8. Φωτογραφία από το eBay:

Πωλούνται στο eBay με τη μορφή μεμονωμένων μονάδων ή έτοιμων μπλοκ, για παράδειγμα 4 τεμαχίων. Η διαχείρισή τους είναι πολύ απλή - ένα μικροκύκλωμα έχει ήδη συγκολληθεί στις μονάδες MAX7219, διασφαλίζοντας τη λειτουργία και τη σύνδεσή τους με τον μικροελεγκτή χρησιμοποιώντας μόνο 5 καλώδια. Υπάρχουν πολλές βιβλιοθήκες για το Arduino, ο καθένας μπορεί να δει τον κώδικα.
Πλεονεκτήματα: χαμηλή τιμή, καλές γωνίες θέασης και φωτεινότητα.
Μειονεκτήματα: χαμηλή ανάλυση. Αλλά για την εργασία συμπερασμάτων, ο χρόνος είναι αρκετά αρκετός.

Ενδείξεις LCD

Οι ενδείξεις LCD μπορεί να είναι γραφικές ή κείμενο.

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

Η εργασία με μια ένδειξη LCD από κώδικα δεν είναι δύσκολη, αλλά υπάρχει ένα συγκεκριμένο μειονέκτημα - ο δείκτης απαιτεί πολλές γραμμές ελέγχου (από 7 έως 12) από τον μικροελεγκτή, κάτι που είναι άβολο. Ως εκ τούτου, οι Κινέζοι σκέφτηκαν να συνδυάσουν μια ένδειξη LCD με έναν ελεγκτή i2c, η οποία κατέληξε να είναι πολύ βολική - μόνο 4 καλώδια αρκούν για σύνδεση (φωτογραφία από eBay).


Οι ενδείξεις LCD είναι αρκετά φθηνές (αν τις αγοράσετε στο eBay), μεγάλες, εύκολες στη σύνδεση και μπορούν να εμφανίσουν μια ποικιλία πληροφοριών. Το μόνο αρνητικό είναι ότι οι γωνίες θέασης δεν είναι πολύ μεγάλες.

Ενδείξεις OLED

Αποτελούν βελτιωμένη συνέχεια της προηγούμενης έκδοσης. Κυμαίνονται από μικρά και φθηνά με διαγώνιο 1,1", έως μεγάλα και ακριβά. Φωτογραφία από το eBay.

Στην πραγματικότητα, είναι καλοί σε όλα εκτός από την τιμή. Όσον αφορά τους μικρούς δείκτες, μεγέθους 0,9-1,1", τότε (εκτός από την εκμάθηση πώς να εργάζεστε με το i2c) είναι δύσκολο να βρείτε κάποια πρακτική χρήση για αυτούς.

Ενδείξεις εκκένωσης αερίου (IN-14, IN-18)

Αυτοί οι δείκτες είναι πλέον πολύ δημοφιλείς, προφανώς λόγω του «θερμού ήχου σωλήνα φωτός» και της πρωτοτυπίας του σχεδιασμού.


(φωτογραφία από nocrotec.com)

Το διάγραμμα σύνδεσής τους είναι κάπως πιο περίπλοκο, γιατί Αυτοί οι δείκτες χρησιμοποιούν τάση 170 V για ανάφλεξη. Σε μικροκύκλωμα μπορεί να κατασκευαστεί μετατροπέας από 12V=>180V MAX771. Ένα σοβιετικό μικροκύκλωμα χρησιμοποιείται για την παροχή τάσης στους δείκτες K155ID1, που δημιουργήθηκε ειδικά για αυτό το σκοπό. Τιμή έκδοσης σε αυτοπαραγωγή: περίπου 500 ρούβλια για κάθε δείκτη και 100 ρούβλια για το K155ID1, όλα τα άλλα μέρη, όπως έγραψαν στα παλιά περιοδικά, "δεν είναι σε έλλειψη". Η κύρια δυσκολία εδώ είναι ότι τόσο το IN-xx όσο και το K155ID1 είναι εδώ και καιρό εκτός παραγωγής και μπορείτε να τα αγοράσετε μόνο σε αγορές ραδιοφώνου ή σε μερικά εξειδικευμένα καταστήματα.

2. Επιλογή πλατφόρμας

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

Arduino

Η πιο εύκολη επιλογή για αρχάριους. Η τελική πλακέτα είναι φθηνή (περίπου 10 $ στο eBay με δωρεάν αποστολή) και έχει όλες τις απαραίτητες υποδοχές για προγραμματισμό. Φωτογραφία από το eBay:

Υπάρχει ένας τεράστιος αριθμός διαφορετικών βιβλιοθηκών για το Arduino (για παράδειγμα, για τις ίδιες οθόνες LCD, μονάδες σε πραγματικό χρόνο), το Arduino είναι συμβατό με διάφορες πρόσθετες μονάδες.
Το κύριο μειονέκτημα: η δυσκολία εντοπισμού σφαλμάτων (μόνο μέσω της κονσόλας σειριακής θύρας) και ένας αρκετά αδύναμος επεξεργαστής για τα σύγχρονα πρότυπα (2KB RAM και 16MHz).
Το κύριο πλεονέκτημα: μπορείτε να κάνετε πολλά πράγματα, πρακτικά χωρίς να ταλαιπωρηθείτε με τη συγκόλληση, την αγορά ενός προγραμματιστή και των πλακών καλωδίωσης, απλά πρέπει να συνδέσετε τις μονάδες μεταξύ τους.

Επεξεργαστές STM 32 bit

Για όσους θέλουν κάτι πιο δυνατό, υπάρχουν έτοιμες πλακέτες με επεξεργαστές STM, για παράδειγμα μια πλακέτα με STM32F103RBT6 και μια οθόνη TFT. Φωτογραφία από το eBay:

Εδώ έχουμε ήδη πλήρη εντοπισμό σφαλμάτων σε ένα πλήρες IDE (από όλα τα διαφορετικά, μου άρεσε περισσότερο το Coocox IDE), ωστόσο, θα χρειαστούμε έναν ξεχωριστό προγραμματιστή-debugger ST-LINK με υποδοχή JTAG (το θέμα η τιμή είναι 20-40 $ στο eBay). Εναλλακτικά, μπορείτε να αγοράσετε την πλακέτα ανάπτυξης STM32F4Discovery, στην οποία είναι ήδη ενσωματωμένος αυτός ο προγραμματιστής και μπορεί να χρησιμοποιηθεί ξεχωριστά.

Raspberry PI

Και τέλος, για όσους θέλουν πλήρη ενσωμάτωση με τον σύγχρονο κόσμο, υπάρχουν υπολογιστές μονής πλακέτας με Linux, πιθανότατα ήδη γνωστοί σε όλους - Raspberry PI. Φωτογραφία από το eBay:

Αυτός είναι ένας πλήρης υπολογιστής με Linux, ένα gigabyte μνήμης RAM και επεξεργαστή 4 πυρήνων. Ένα πάνελ 40 ακίδων βρίσκεται στην άκρη της πλακέτας, επιτρέποντάς σας να συνδέσετε διάφορα περιφερειακά (οι καρφίτσες είναι διαθέσιμες από κώδικα, για παράδειγμα στην Python, για να μην αναφέρουμε το C/C++), υπάρχει επίσης ένα τυπικό USB με τη μορφή 4 υποδοχές (μπορείτε να συνδέσετε WiFi). Υπάρχει επίσης τυπικό HDMI.
Η ισχύς της πλακέτας είναι αρκετή, για παράδειγμα, όχι μόνο για την εμφάνιση της ώρας, αλλά και για την εκτέλεση ενός διακομιστή HTTP για τη ρύθμιση παραμέτρων μέσω μιας διεπαφής ιστού, τη φόρτωση μιας πρόγνωσης καιρού μέσω του Διαδικτύου κ.λπ. Σε γενικές γραμμές, υπάρχει πολύς χώρος για φανταχτερό.

Υπάρχει μόνο μία δυσκολία με το Raspberry (και τους επεξεργαστές STM32) - οι ακίδες του χρησιμοποιούν λογική 3-V και οι περισσότερες εξωτερικές συσκευές (για παράδειγμα οθόνες LCD) λειτουργούν με τον «παλιομοδίτικο» τρόπο από 5V. Φυσικά, μπορείτε να το συνδέσετε με αυτόν τον τρόπο, και καταρχήν θα λειτουργήσει, αλλά αυτή δεν είναι η σωστή μέθοδος και είναι κρίμα να καταστρέψετε μια πλακέτα $50. Ο σωστός τρόπος- χρησιμοποιήστε έναν "μετατροπέα λογικού επιπέδου", ο οποίος κοστίζει μόνο 1-2 $ στο eBay.
Φωτογραφία από το eBay:

Τώρα αρκεί να συνδέσουμε τη συσκευή μας μέσω μιας τέτοιας μονάδας και όλες οι παράμετροι θα είναι συνεπείς.

ESP8266

Η μέθοδος είναι μάλλον εξωτική, αλλά αρκετά υποσχόμενη λόγω της συμπαγούς και χαμηλού κόστους της λύσης. Για πολύ λίγα χρήματα (περίπου 4-5 $ στο eBay) μπορείτε να αγοράσετε μια μονάδα ESP8266 που περιέχει επεξεργαστή και WiFi στο σκάφος.
Φωτογραφία από το eBay:

Αρχικά, τέτοιες μονάδες προορίζονταν ως γέφυρα WiFi για ανταλλαγή μέσω σειριακής θύρας, αλλά οι λάτρεις έχουν γράψει πολλά εναλλακτικά υλικολογισμικά που τους επιτρέπουν να δουλεύουν με αισθητήρες, συσκευές i2c, PWM κ.λπ. Υποθετικά, είναι πολύ πιθανό να λάβουν χρόνο από Διακομιστής NTP και έξοδος μέσω i2c στην οθόνη. Για όσους θέλουν να συνδέσουν πολλά διαφορετικά περιφερειακά, υπάρχουν ειδικές πλακέτες NodeMCU με μεγάλο αριθμό ακίδων, η τιμή είναι περίπου 500 ρούβλια (φυσικά στο eBay):

Το μόνο αρνητικό είναι ότι το ESP8266 έχει πολύ λίγη μνήμη RAM (ανάλογα με το υλικολογισμικό, από 1 έως 32 KB), αλλά αυτό κάνει την εργασία ακόμα πιο ενδιαφέρουσα. Οι μονάδες ESP8266 χρησιμοποιούν λογική 3V, επομένως ο παραπάνω μετατροπέας στάθμης θα είναι επίσης χρήσιμος εδώ.

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

Αντί για συμπέρασμα

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

Το ρολόι εμφανίζει την ακριβή ώρα που λαμβάνεται από το Διαδίκτυο και ο καιρός ενημερώνεται από το Yandex, όλα αυτά είναι γραμμένα σε Python και λειτουργούν αρκετά καλά εδώ και αρκετούς μήνες. Ταυτόχρονα, στο ρολόι εκτελείται ένας διακομιστής FTP, ο οποίος επιτρέπει (σε ​​συνδυασμό με την προώθηση θύρας στο δρομολογητή) να ενημερώνει το υλικολογισμικό του όχι μόνο από το σπίτι, αλλά και από οποιοδήποτε μέρος υπάρχει Διαδίκτυο. Ως μπόνους, οι πόροι του Raspberry, καταρχήν, αρκούν για τη σύνδεση κάμερας ή/και μικροφώνου με δυνατότητα απομακρυσμένης παρακολούθησης του διαμερίσματος ή ελέγχου διαφόρων μονάδων/ρελέ/αισθητήρων. Μπορείτε να προσθέσετε κάθε λογής «καλούδια», όπως ένδειξη LED της εισερχόμενης αλληλογραφίας και ούτω καθεξής.

ΥΓ: Γιατί eBay;
Όπως μπορείτε να δείτε, δόθηκαν τιμές ή φωτογραφίες από το eBay για όλες τις συσκευές. Γιατί αυτό; Δυστυχώς, τα καταστήματά μας συχνά ζουν με την αρχή «αγόρασε για 1 $, πωλήθηκε για 3 $ και ζουν με αυτό το 2 τοις εκατό». Ως απλό παράδειγμα, το Arduino Uno R3 κοστίζει (τη στιγμή που γράφονται αυτές οι γραμμές) 3600 ρούβλια στην Αγία Πετρούπολη και 350 ρούβλια στο eBay με δωρεάν αποστολή από την Κίνα. Η διαφορά είναι πραγματικά μια τάξη μεγέθους, χωρίς καμία λογοτεχνική υπερβολή. Ναι, θα πρέπει να περιμένετε ένα μήνα για να παραλάβετε το δέμα από το ταχυδρομείο, αλλά νομίζω ότι μια τέτοια διαφορά στην τιμή αξίζει τον κόπο. Ωστόσο, αν κάποιος το χρειάζεται αυτή τη στιγμή και επειγόντως, τότε μάλλον υπάρχει επιλογή στα τοπικά καταστήματα, εδώ ο καθένας αποφασίζει μόνος του.

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

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

Διάγραμμα ρολογιού:

Δυστυχώς, υπάρχει ένα σφάλμα στο διάγραμμα:
— οι ακροδέκτες MK πρέπει να συνδεθούν στις βάσεις του τρανζίστορ:
РВ0 έως Т4, РВ1 έως Т3, РВ2 έως Т2, РВ3 έως Т1
ή αλλάξτε τη σύνδεση των συλλεκτών τρανζίστορ στα ψηφία ένδειξης:
T1 έως DP1….. T4 έως DP4

Μέρη που χρησιμοποιούνται στο κύκλωμα ρολογιού:

♦ Μικροελεγκτής ATTiny26:

♦ ρολόι πραγματικού χρόνου DS1307:

♦ Ένδειξη LED επτά τμημάτων 4 ψηφίων – FYQ-5641UB-21 με κοινή κάθοδο (υπερφωτεινή, μπλε):

♦ quartz 32,768 kHz, με χωρητικότητα εισόδου 12,5 pF (μπορεί να ληφθεί από τη μητρική πλακέτα του υπολογιστή), η ακρίβεια του ρολογιού εξαρτάται από αυτόν τον χαλαζία:

♦ όλα τα τρανζίστορ είναι δομές NPN, μπορείτε να χρησιμοποιήσετε οποιοδήποτε (KT3102, KT315 και τα ξένα ανάλογά τους), χρησιμοποίησα BC547S
♦ Σταθεροποιητής τάσης μικροκυκλώματος τύπου 7805
♦ όλες οι αντιστάσεις ισχύος 0,125 watt
♦ πολικοί πυκνωτές για τάση λειτουργίας όχι μικρότερη από την τάση τροφοδοσίας
♦ εφεδρικό τροφοδοτικό DS1307 – κυψέλη λιθίου 3 volt CR2032

Για να τροφοδοτήσετε το ρολόι, μπορείτε να χρησιμοποιήσετε οποιονδήποτε περιττό φορτιστή κινητού τηλεφώνου (σε αυτή την περίπτωση, εάν η τάση εξόδου Φορτιστήςεντός 5 βολτ ± 0,5 βολτ, μέρος του κυκλώματος είναι σταθεροποιητής τάσης σε μικροκύκλωμα τύπου 7805, μπορεί να αποκλειστεί)
Η τρέχουσα κατανάλωση της συσκευής είναι 30 mA.
Δεν χρειάζεται να εγκαταστήσετε την εφεδρική μπαταρία για το ρολόι DS1307, αλλά στη συνέχεια, εάν διακοπεί η παροχή ρεύματος, η τρέχουσα ώρα θα πρέπει να ρυθμιστεί ξανά.
Η πλακέτα τυπωμένου κυκλώματος της συσκευής δεν δίνεται το σχέδιο συναρμολογήθηκε σε θήκη από ελαττωματικό μηχανικό ρολόι. Το LED (με συχνότητα αναβοσβήνει 1 Hz, από τον ακροδέκτη SQW DS1307) χρησιμεύει για τον διαχωρισμό των ωρών και των λεπτών στην ένδειξη.

Οι ρυθμίσεις του μικροελεγκτή είναι εργοστασιακές: συχνότητα ρολογιού - 1 MHz, τα bit FUSE δεν χρειάζεται να αγγίζονται.

Αλγόριθμος λειτουργίας ρολογιού(στο Εργαλείο δημιουργίας αλγορίθμων):

1. Ρύθμιση του δείκτη στοίβας
2. Ρύθμιση χρονοδιακόπτη T0:
— συχνότητα SK/8
- διακοπές υπερχείλισης (σε αυτήν την προκαθορισμένη συχνότητα, η διακοπή καλείται κάθε 2 χιλιοστά του δευτερολέπτου)
3. Αρχικοποίηση θυρών (οι ακροδέκτες PA0-6 και PB0-3 έχουν διαμορφωθεί ως έξοδος, PA7 και PB6 ως είσοδος)
4. Αρχικοποίηση του διαύλου I2C (ακίδες PB4 και PB5)
5. Έλεγχος του 7ου bit (CH) του μηδενικού καταχωρητή DS1307
6. Ενεργοποίηση καθολικής διακοπής
7. Εισαγωγή βρόχου και έλεγχος εάν έχει πατηθεί κάποιο κουμπί

Όταν ενεργοποιείται για πρώτη φορά ή ενεργοποιείται ξανά εάν δεν υπάρχει εφεδρική τροφοδοσία στο DS307, η τρέχουσα ώρα επαναφέρεται στην αρχική ρύθμιση. Σε αυτήν την περίπτωση: κουμπί S1 – για ρύθμιση της ώρας, κουμπί S2 – μετάβαση στο επόμενο ψηφίο. Η ρύθμιση του χρόνου - οι ώρες και τα λεπτά γράφονται στο DS1307 (τα δευτερόλεπτα ορίζονται στο μηδέν) και ο ακροδέκτης SQW/OUT (7ος ακροδέκτης) έχει ρυθμιστεί να δημιουργεί παλμούς τετραγωνικών κυμάτων με συχνότητα 1 Hz.
Όταν πατάτε το κουμπί S2 (S4 - στο πρόγραμμα), μια καθολική διακοπή απενεργοποιείται, το πρόγραμμα μεταβαίνει στην υπορουτίνα διόρθωσης χρόνου. Σε αυτήν την περίπτωση, χρησιμοποιώντας τα κουμπιά S1 και S2, ρυθμίζονται δεκάδες και μονάδες λεπτών και στη συνέχεια, από 0 δευτερόλεπτα, πατώντας το κουμπί S2 καταγράφεται ο ενημερωμένος χρόνος στο DS1307, επιλύεται η καθολική διακοπή και επιστρέφει στο κύριο πρόγραμμα.

Το ρολόι έδειξε καλή ακρίβεια, η απώλεια χρόνου ανά μήνα ήταν 3 δευτερόλεπτα.
Για να βελτιωθεί η ακρίβεια, συνιστάται η σύνδεση χαλαζία στο DS1307, όπως υποδεικνύεται στο φύλλο δεδομένων:

Το πρόγραμμα είναι γραμμένο στο περιβάλλον Algorithm Builder.
Χρησιμοποιώντας το πρόγραμμα ρολογιού ως παράδειγμα, μπορείτε να εξοικειωθείτε με τον αλγόριθμο για την επικοινωνία μεταξύ του μικροελεγκτή και άλλων συσκευών μέσω του διαύλου I2C (κάθε γραμμή σχολιάζεται λεπτομερώς στον αλγόριθμο).

φωτογραφία συναρμολογημένη συσκευήκαι μια πλακέτα τυπωμένου κυκλώματος σε μορφή .lay από τον αναγνώστη του ιστότοπου Anatoly Pilguk, για την οποία τον ευχαριστούμε πολύ!

Η συσκευή χρησιμοποιεί: Τρανζίστορ - SMD BC847 και αντιστάσεις CHIP

Συνημμένα στο άρθρο:

(42,9 KiB, 3.233 επισκέψεις)

(6,3 KiB, 4.183 επισκέψεις)

(3,1 KiB, 2.662 επισκέψεις)

(312,1 KiB, 5.932 επισκέψεις)


Η δεύτερη έκδοση του προγράμματος ρολογιού στο AB (για όσους δεν μπορούν να κατεβάσουν το πάνω)

(11,4 KiB, 1.947 επισκέψεις)

Σε αυτό οδηγίες βήμα προς βήμαΘα σας πω πώς να το κάνετε Ρολόι τοίχουμε τα ίδια σου τα χέρια.

Χαρακτηριστικά ρολογιού:

  • Μεγάλοι αριθμοί (κάθε αριθμός είναι περίπου ίσος με το μέγεθος ενός φύλλου Α4).
  • Λεπτά τοιχώματα (μπορούν να μπουν σε κορνίζα).
  • Αυτόματη ρύθμιση ανάλογα με τη φωτεινότητα του φωτισμού στο δωμάτιο.
  • Αποκλειστικό κουμπί θερινής ώρας.

Βήμα 1: Απαιτούμενα υλικά


Τι χρησιμοποίησα για ένα ψηφιακό ρολόι τοίχου με μεγάλους αριθμούς.

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ:

  • Arduino nano V3.0 (δυστυχώς, καθώς δεν μπορώ να αντέξω οικονομικά το αρχικό Arduino, χρησιμοποίησα έναν κινέζικο κλώνο) - 150 ρούβλια.
  • Ψηφιακή μονάδα για τη μέτρηση της έντασης φωτός Φωτοαντίσταση για Arduino - 60 ρούβλια.
  • Μονάδα μνήμης DS3231 AT24C32 IIC για ακριβή χρόνο για Arduino - 60 ρούβλια.
  • Μετατροπέας DC-DC LM2596, Ισχύς εξόδου 1,23V-30V - 50 ρούβλια.
  • 4 μέτρα λωρίδα LED WS2811 30 δίοδοι/m - 700 ρούβλια. (ένα WS2811 ελέγχει 3 τσιπ LED)

Συνολικό κόστος ηλεκτρονικών: 900 ρούβλια.

Άλλα υλικά:

  • Σωλήνας θερμικής συρρίκνωσης - 400 ρούβλια (33 μέτρα σε απόθεμα)
  • 20 τεμ. Πλακέτα τυπωμένου κυκλώματος 5 x 7 cm - 200 ρούβλια.
  • 3 τεμ. Μικροδιακόπτης - 60 ρούβλια.
  • Συγκόλληση - 50 ρούβλια
  • Ροή - 50 ρούβλια.
  • Καλώδιο UTP (Unshielded Twisted Pair).
  • Γραμματοσειρά LCD (http://www.dafont.com/lcd-lcd-mono.font) - δωρεάν.
  • Το χαρτόνι είναι δωρεάν στο σούπερ μάρκετ.
  • Πάνελ πολυστυρενίου - 100 ρούβλια.

Καθώς και διάφορα εργαλεία.

Βήμα 2: Προετοιμασία - Μοτίβα αριθμών


  1. Κατεβάστε και εγκαταστήστε τη γραμματοσειρά του ρολογιού
  2. Ανοίξτε το Word ή άλλο πρόγραμμα και δημιουργήστε ένα πρότυπο όπως αυτό στην πρώτη φωτογραφία.
  • Μέγεθος γραμματοσειράς ~ 800,
  • Γραμματοσειρά άσπρομε μαύρο περίγραμμα,
  • Γκρι ρίγες όπου θα βρίσκονται οι λωρίδες LED

Εκτυπώστε το πρότυπο και κόψτε τις ρίγες με ένα βοηθητικό μαχαίρι (όπως στη δεύτερη φωτογραφία)

Βήμα 3: Προετοιμασία - κοπή χαρτονιού και λωρίδας LED

Χρησιμοποιώντας το ψηφιακό πρότυπο, κόψτε το χαρτόνι στο μέγεθος (θυμηθείτε να αφήσετε χώρο για τις τελείες μεταξύ των ωρών και των λεπτών)

Εάν οι λωρίδες LED σας διαθέτουν σύνδεσμο σε κάθε άκρο (όπως το δικό μου), αποσυνδέστε το βύσμα και κόψτε τις σε 3 κομμάτια.

Βήμα 4: Συνδέστε τη λωρίδα LED


Χρησιμοποιώντας το πρότυπο, κολλήστε Λωρίδα LEDσε χαρτόνι.

Αυτό δεν είναι απαραίτητο, αλλά χρησιμοποίησα ένα μολύβι για να σημειώσω πού πρέπει να τοποθετηθούν οι λωρίδες LED.

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

Βήμα 5: Συγκολλήστε τη λωρίδα LED


Τώρα ξεκινά η μακρά διαδικασία συγκόλλησης.

Συγκολλήστε τη λωρίδα LED για να σχηματίσετε μια συνεχή λωρίδα. Προσοχή στη σειρά με την οποία συγκολλούνται οι λωρίδες στη φωτογραφία. Για τις τελείες, χρησιμοποίησα ένα κομμάτι ταινία και το κόλλησα στη μέση.

Χρώματα που επέλεξα:

  • Μπλε για τη γη
  • Πράσινο για δεδομένα
  • Κόκκινο για +12V

Βήμα 6: Εγκατάσταση του Arduino στο PCB


Προσπάθησα να κάνω σκίτσο στο Fritzing αλλά δεν βρήκα όλες τις λεπτομέρειες :)

Έτσι, η πρώτη φωτογραφία δείχνει το διάγραμμα καλωδίωσης και η δεύτερη φωτογραφία δείχνει πώς φαίνεται για μένα.

Βήμα 7: Έλεγχος LED


Πριν ανεβάσετε τον κώδικα (με τον οποίο δεν έχω καμία σχέση), φροντίστε να εγκαταστήσετε τη βιβλιοθήκη FastLED.

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

Αρχεία

Βήμα 8: Προγραμματίστε το Ρολόι

Μετά από αρκετό καιρό κατάφερα να φτιάξω ένα ρολόι που μου ταιριάζει απόλυτα. Ωστόσο, όλοι θα βρουν κάτι που μπορεί να βελτιωθεί.

Ο κώδικας είναι καλά σχολιασμένος, επομένως δεν θα πρέπει να υπάρχουν προβλήματα με αυτόν.

Όλα τα μηνύματα εντοπισμού σφαλμάτων σχολιάζονται επίσης.

Για να αλλάξετε το χρώμα που χρησιμοποιείται, πρέπει να αλλάξετε τη μεταβλητή στη γραμμή 22 (int ledColor = 0x0000FF; // Χρώμα που χρησιμοποιείται (σε ​​hex)). Μπορείτε να βρείτε μια λίστα χρωμάτων στο κάτω μέρος αυτής της σελίδας

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

Επέλεξα αυτό το σχέδιο γιατί είναι εύκολο φτιάξε το δικό σου ρολόι

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

10 MHz χαλαζίας – 1 τεμ., μικροελεγκτής ATtiny 2313, αντιστάσεις 100 Ohm – 8 τεμ., 3 τεμ. 10 kOhm, 2 πυκνωτές των 22 pF, 4 τρανζίστορ, 2 κουμπιά, ένδειξη LED 4-bit KEM-5641-ASR (RL-F5610SBAW/D15). Έκανα την εγκατάσταση σε PCB μονής όψης.

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

Σε αυτό το σχήμα, ο δείκτης ελέγχεται σύμφωνα με την αρχή της δυναμικής ένδειξης, σύμφωνα με την οποία τα τμήματα του δείκτη ελέγχονται από σήματα από τις αντίστοιχες εξόδους του MK. Ο ρυθμός επανάληψης αυτών των σημάτων είναι μεγαλύτερος από 25 Hz και εξαιτίας αυτού, η λάμψη των αριθμών του δείκτη φαίνεται συνεχής.

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

Επειδή έχω τροφοδοτικό 5V, απέκλεισα τη δίοδο zener από το κύκλωμα.

Για την κατασκευή της πλακέτας, το κύκλωμα εφαρμόστηκε χρησιμοποιώντας σίδερο. Δηλαδή, το τυπωμένο κύκλωμα εκτυπώθηκε σε εκτυπωτή inkjet χρησιμοποιώντας γυαλιστερό χαρτί, μπορεί να ληφθεί από σύγχρονα γυαλιστερά περιοδικά. Στη συνέχεια κόπηκε ο κειτόλιθος του απαιτούμενου μεγέθους. Το μέγεθός μου αποδείχθηκε ότι είναι 36 * 26 mm. Ένα τόσο μικρό μέγεθος οφείλεται στο γεγονός ότι όλα τα εξαρτήματα επιλέγονται σε πακέτο SMD.

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

Ενώ συνεχιζόταν η διαδικασία διαγραφής, για να μην κολλήσω το μυαλό μου και γράψω υλικολογισμικό για το ρολόι, μπήκα στο Διαδίκτυο και βρήκα ένα αυτό το διάγραμμαυλικολογισμικό Μπορείτε επίσης να βρείτε πώς να αναβοσβήσετε το MK στο Διαδίκτυο. Χρησιμοποίησα έναν προγραμματιστή που αναβοσβήνει μόνο ATMEGA MKs.

Και τέλος, η πλακέτα μας είναι έτοιμη και μπορούμε να αρχίσουμε να κολλάμε τα ρολόγια μας. Για τη συγκόλληση χρειάζεστε ένα κολλητήρι 25 W με λεπτό άκρο για να μην καεί το MK και άλλα μέρη. Πραγματοποιούμε τη συγκόλληση προσεκτικά και κατά προτίμηση συγκολλάμε όλα τα πόδια του MK την πρώτη φορά, αλλά μόνο ξεχωριστά. Για όσους δεν το γνωρίζουν, ξέρουν ότι τα εξαρτήματα που κατασκευάζονται σε συσκευασία SMD έχουν κασσίτερο στους ακροδέκτες τους για γρήγορη συγκόλληση.

Και έτσι φαίνεται η σανίδα με τα συγκολλημένα μέρη.

Προτείνω για επανάληψη το κύκλωμα ενός απλού ηλεκτρονικού ρολογιού με ξυπνητήρι, κατασκευασμένο στον τύπο PIC16F628A. Ένα μεγάλο πλεονέκτημα αυτού του ρολογιού είναι η ένδειξη LED τύπου ALS για την εμφάνιση της ώρας. Προσωπικά, έχω κουραστεί πολύ από όλα τα είδη LCD και θέλω να μπορώ να βλέπω την ώρα από οπουδήποτε στο δωμάτιο, ακόμη και στο σκοτάδι, και όχι μόνο απευθείας με καλό φωτισμό. Το κύκλωμα περιέχει ελάχιστα εξαρτήματα και έχει εξαιρετική επαναληψιμότητα. Το ρολόι δοκιμάστηκε για ένα μήνα, γεγονός που έδειξε την αξιοπιστία και τις επιδόσεις του. Νομίζω ότι όλα τα σχήματα στο Διαδίκτυο, αυτό είναι το πιο εύκολο στη συναρμολόγηση και εκτέλεση.

Σχηματικό διάγραμμα ενός ηλεκτρονικού ρολογιού με ένα ξυπνητήρι σε έναν μικροελεγκτή:


Όπως φαίνεται από το διάγραμμα ρολογιού, είναι το μόνο μικροκύκλωμα που χρησιμοποιείται σε αυτή τη συσκευή. Ένας συντονιστής χαλαζία 4 MHz χρησιμοποιείται για τη ρύθμιση της συχνότητας ρολογιού. Για την εμφάνιση της ώρας, χρησιμοποιούνται κόκκινες ενδείξεις με κοινή άνοδο, κάθε δείκτης αποτελείται από δύο ψηφία με δεκαδικά σημεία. Στην περίπτωση χρήσης πιεζοπομπού, ο πυκνωτής C1 - 100 μF μπορεί να παραλειφθεί.

Μπορείτε να χρησιμοποιήσετε οποιουσδήποτε δείκτες με κοινή άνοδο, αρκεί κάθε ψηφίο να έχει τη δική του άνοδο. Για να διασφαλίσετε ότι το ηλεκτρονικό ρολόι είναι καθαρά ορατό στο σκοτάδι και από μεγάλη απόσταση, προσπαθήστε να επιλέξετε ένα μεγαλύτερο ALS.


Η ένδειξη του ρολογιού είναι δυναμική. Σε μια δεδομένη στιγμή, εμφανίζεται μόνο ένα ψηφίο, το οποίο σας επιτρέπει να μειώσετε σημαντικά την τρέχουσα κατανάλωση. Οι άνοδοι κάθε ψηφίου ελέγχονται από έναν μικροελεγκτή PIC16F628A. Τα τμήματα και των τεσσάρων ψηφίων συνδέονται μεταξύ τους και, μέσω των αντιστάσεων περιορισμού ρεύματος R1 ... R8, συνδέονται στους ακροδέκτες της θύρας MK. Δεδομένου ότι η ένδειξη ανάβει πολύ γρήγορα, το τρεμόπαιγμα των αριθμών γίνεται απαρατήρητο.


Τα στιγμιαία κουμπιά χρησιμοποιούνται για να ρυθμίσετε τα λεπτά, τις ώρες και το ξυπνητήρι. Ο ακροδέκτης 10 χρησιμοποιείται ως έξοδος για το σήμα συναγερμού και ένας καταρράκτης τρανζίστορ VT1,2 χρησιμοποιείται ως ενισχυτής. Ο εκπομπός ήχου είναι ένα πιεζοηλεκτρικό στοιχείο τύπου ZP. Για να βελτιώσετε την ένταση, μπορείτε να την αντικαταστήσετε με ένα μικρό ηχείο.


Το ρολόι τροφοδοτείται από σταθεροποιημένη πηγή 5V. Μπορεί επίσης να τροφοδοτηθεί από μπαταρίες. Το ρολόι έχει 9 λειτουργίες προβολής. Η εναλλαγή μεταξύ των λειτουργιών πραγματοποιείται χρησιμοποιώντας τα κουμπιά «+» και «-». Προτού εμφανιστούν οι ίδιες οι μετρήσεις, στις ενδείξεις εμφανίζεται μια σύντομη υπόδειξη σχετικά με το όνομα της λειτουργίας. Η διάρκεια της εμφάνισης υπόδειξης είναι ένα δευτερόλεπτο.


Χρησιμοποιώντας το κουμπί "Διόρθωση", το ξυπνητήρι μεταβαίνει στη λειτουργία ρυθμίσεων. Σε αυτήν την περίπτωση, εμφανίζεται μια βραχυπρόθεσμη προτροπή για μισό δευτερόλεπτο, μετά την οποία η προσαρμοσμένη τιμή αρχίζει να αναβοσβήνει. Η διόρθωση των μετρήσεων πραγματοποιείται χρησιμοποιώντας τα κουμπιά "+" και "-". Όταν πατάτε το κουμπί για μεγάλο χρονικό διάστημα, η λειτουργία αυτόματης επανάληψης ενεργοποιείται στην καθορισμένη συχνότητα. Όλες οι τιμές, εκτός από τις ώρες, τα λεπτά και τα δευτερόλεπτα, εγγράφονται στο EEPROM και αποκαθίστανται μετά τον κύκλο ισχύος.


Εάν δεν πατηθεί κανένα κουμπί μέσα σε λίγα δευτερόλεπτα, το ηλεκτρονικό ρολόι μεταβαίνει στη λειτουργία εμφάνισης ώρας. Πατώντας το κουμπί "On/Off" το ξυπνητήρι ενεργοποιείται ή απενεργοποιείται, αυτή η ενέργεια επιβεβαιώνεται από έναν σύντομο ήχο. Όταν το ξυπνητήρι είναι ενεργοποιημένο, ανάβει η κουκκίδα στο ψηφίο χαμηλής τάξης της ένδειξης. Σκεφτόμουν πού να βάλω το ρολόι στην κουζίνα και αποφάσισα να το τοποθετήσω απευθείας σόμπα υγραερίου:) Υλικό στάλθηκε από in_sane.


Συζητήστε το άρθρο ΗΛΕΚΤΡΟΝΙΚΟ ΞΥΠΝΗΤΗΡΙΟ



Διαβάστε επίσης: