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

Oled Ξυπνητήρι: 8 Βήματα (με εικόνες)
Oled Ξυπνητήρι: 8 Βήματα (με εικόνες)

Βίντεο: Oled Ξυπνητήρι: 8 Βήματα (με εικόνες)

Βίντεο: Oled Ξυπνητήρι: 8 Βήματα (με εικόνες)
Βίντεο: Τρανός τα σπάει σε παιδικό πάρτι 2024, Ιούλιος
Anonim
Oled Ξυπνητήρι
Oled Ξυπνητήρι

Υπάρχουν πολλά ρολόγια arduino/ESP32, αλλά χρησιμοποιούν αυτά τα ωραία και ευκρινή OLED;

Πειραματίζομαι με arduinos και ESP32 εδώ και λίγο καιρό, αλλά ποτέ δεν έφτασα σε ένα τελικό προϊόν. Έφτιαξα ξυπνητήρι με 4 μονόχρωμες OLED 1,3 ιντσών. Το ρολόι διαθέτει επίσης φωτιζόμενο κομοδίνο και θύρα φόρτισης USB (κανείς δεν έχει ανταλλακτικές πρίζες δίπλα στο κρεβάτι του). Οι OLED είναι επίσης ρυθμιζόμενες, αυτό προστέθηκε την τελευταία στιγμή αφού το έργο μου απειλήθηκε από τη φίλη μου. Σε περίπτωση που η ένταση δεν είναι –σε φίλες φωνή– αρκετά χαμηλή, μπορώ επίσης να παράσχω μια έκδοση του κώδικα όπου τροφοδοτούνται 3 οθόνες μεταξύ συγκεκριμένων ωρών. Ο στόχος ήταν να φτιάξουμε ένα εύκολο σέρβις ρολόι, με μια ματιά πέρα από το «πρωτότυπο». Καθώς έφτιαχνα το ρολόι μου συνάντησα κάποιες δυσκολίες που έπρεπε να λύσω, γι 'αυτό πιστεύω ότι αυτό το διδακτικό αξίζει να το μοιραστώ. Το ρολόι μπορεί να φτιαχτεί με μικρά εργαλεία, δεν μου αρέσουν τα σεμινάρια "και για το επόμενο βήμα χρησιμοποίησα τα 10.000 €/$ CNC mill" μου.

Μερικά πράγματα που θα εξηγηθούν σε αυτό το διδακτικό (μέσα σε δομή-επιλογή):

- Πώς να χρησιμοποιήσετε/να συνδέσετε μια οθόνη OLED I2C με arduino/ESP32

- Πώς να χρησιμοποιήσετε πολλά αντικείμενα I2C με ένα arduino/ESP32

- Πώς να δημιουργήσετε ένα μενού "με δυνατότητα κύλισης" χρησιμοποιώντας έναν περιστροφικό κωδικοποιητή (+ πώς να χρησιμοποιήσετε έναν κωδικοποιητή με ESP32/arduino)

- Πώς να σχεδιάσετε και να παραγγείλετε ένα προσαρμοσμένο PCB χρησιμοποιώντας fritzing.

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

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

Προμήθειες

Όταν ψωνίζω προμήθειες προσπαθώ πάντα να σταθμίζω για τη σημασία της ποιότητας/τεκμηρίωσης έναντι της τιμής. Τα προμήθειά μου είναι ένας συνδυασμός μαρκών Α και φθηνότερων κινεζικών ανταλλακτικών. Το Mouser είναι ένας μεγάλος προμηθευτής εάν η ποιότητα είναι σημαντική, παραγγέλνω από το Banggood/Aliexpress για τα φθηνότερα ανταλλακτικά.

- Ένας πίνακας ESP32, χρησιμοποίησα το Huzzah32 από το adafruit, αλλά υπάρχουν πολλές άλλες (φθηνότερες) επιλογές. Επέλεξα το Huzzah32 επειδή είναι πολύ καλά τεκμηριωμένο.

- 4 οθόνες 1.3 ιντσών I2C OLED (128x64, με το πρόγραμμα οδήγησης SH1106), οι 0,96 "είναι πιο συχνές, αλλά για αυτό το έργο προτιμώ τις 1,3"

- Πρόγραμμα οδήγησης Sparkfun femtobuck για οδήγηση της λυχνίας LED

- Ρολόι RTC, χρησιμοποίησα ένα με κελί λιθίου

- Arduino nano

-Θηλυκή θύρα USB 2.0 (χρησιμοποίησα: SS-52200-002 από το Stewart Connector)

- Γυναικεία υποδοχή DC (χρησιμοποίησα: L722A από το Switchcraft)

- Προσαρμογέας 12V 3A DC (GST36E12-P1J από το Mean Well)

- Προσαρμοσμένο PCB, προαιρετικό, αλλά αυτό καθιστά το έργο πολύ πιο συμπαγές και εύχρηστο εάν ένα εξάρτημα πεθάνει + περισσότερη αξιοπιστία επειδή λιγότερα καλώδια (jlcpcb.com)

- Βίδες και μπουλόνια Μ3

- Ορειχάλκινα ένθετα M3

- Μονάδα υποβάθμισης 12V έως 5V από την Pololu (DF24V22F5)

- 3 watt τροφοδοτείται με ψύκτρα

- Καλώδια βραχυκυκλωτήρων

- Buzzer

- I2C multiplexer (TCA9548A από adafruit)

- 2 περιστροφικοί κωδικοποιητές (έχω δοκιμάσει μερικούς, όχι όλους με τον κωδικό μου. Αυτός από το "DFrobot" λειτουργεί και το ίδιο με το στρογγυλό PCB από το "DIYmore". Ο κωδικός μου δεν φαίνεται να λειτουργεί για το κουμπί του τύπου KY-040. Το ξυπνητήρι μου χρησιμοποιεί αυτό από το DIYmore επειδή είναι πολύ εύκολο να τοποθετηθούν στον πίνακα (δεν χρειάζονται επιπλέον βίδες/τρύπες).

- Ποικιλία γυναικείων κεφαλίδων (προαιρετικά)

- Ξύλο για το πλαίσιο: 18mmx18mmx2400mm

- Χαρτί ανίχνευσης

Χρησιμοποίησα επίσης κάποια εργαλεία (κολλητήρι, τρίτο χέρι, πριόνι…), αλλά τίποτα πραγματικά εξωτικό.

Βήμα 1: Χρησιμοποιώντας ένα Oled

Χρησιμοποιώντας ένα Oled
Χρησιμοποιώντας ένα Oled
Χρησιμοποιώντας ένα Oled
Χρησιμοποιώντας ένα Oled
Χρησιμοποιώντας ένα Oled
Χρησιμοποιώντας ένα Oled

Για να χρησιμοποιήσετε τα OLED πρέπει να εγκαταστήσετε μια βιβλιοθήκη. Χρησιμοποιώ το U8G2lib από την Oli Kraus, είναι πολύ κατανοητό και έχει έναν οδηγό αναφοράς με σαφή παραδείγματα.

Για να συνδέσετε την πλακέτα σας (ESP ή arduino) πρέπει να βρείτε καρφίτσες SDA και SCL. Αυτές οι ακίδες είναι οι ακίδες επικοινωνίας I2C. Google για το "pinout" της συγκεκριμένης πλακέτας σας, αν δεν μπορείτε να τα βρείτε.

Έχω προσθέσει κάποιο παράδειγμα κώδικα. Ο κώδικας λειτουργεί τόσο για arduino όσο και για ESP32, αλλά το ESP32 είναι λιγότερο πιθανό να εξαντληθεί η μνήμη του. Όλες οι συσκευές που έχω δοκιμάσει μέχρι τώρα λειτουργούν τόσο με 3.3v (ESP32) όσο και με 5V.

Βήμα 2: Πολλαπλές OLED

Πολλαπλές OLED
Πολλαπλές OLED

Αυτό είναι όπου το έργο μου αρχίζει να διαφέρει από πολλά άλλα ξυπνητήρια. Τα περισσότερα arduinos/ESP έχουν μόνο μία ή δύο ακίδες I2C. Αυτό το είδος περιορίζει τη χρήση εξαρτημάτων I2C. Τι γίνεται αν έχω 4 αισθητήρες I2C και θέλω να εμφανίσω τις ενδείξεις τους σε οθόνη I2C; Εισαγάγετε τον πολυπλέκτη. Το muliplexer σάς επιτρέπει να απευθύνεστε σε 7 διαφορετικά μέρη I2C. Αυτό επιτρέπει στο ESP32 μου να χρησιμοποιεί ένα ρολόι I2C σε πραγματικό χρόνο και να εμφανίζει την ώρα χρησιμοποιώντας ξανά I2C στις 4 οθόνες (ή και περισσότερες, μην με αφήσετε να σας σταματήσω).

Έχω προσθέσει κάποιο παράδειγμα κώδικα για το ESP32, από εδώ και πέρα δεν είμαι σίγουρος ότι το arduino μπορεί να συμβαδίσει. Το παράδειγμα χρησιμοποιεί μόνο οθόνες, μπορεί να είναι άλλα πράγματα όπως αισθητήρες I2C κ.λπ. Η αρχή είναι πάντα η ίδια, καλείτε το σωστό κανάλι με το "tcaselect (#);" λειτουργία, τότε εκτελείτε οποιονδήποτε κώδικα είναι απαραίτητο για το αντικείμενο I2C.

Βήμα 3: Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή

Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή
Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή
Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή
Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή
Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή
Δημιουργία μενού με δυνατότητα κύλισης με περιστροφικό κωδικοποιητή

Πρώτα απ 'όλα, δοκιμάστε τους κωδικοποιητές σας. Έχω προσθέσει κάποιο κώδικα για να δοκιμάσετε τις μονάδες κωδικοποιητή σας. Όπως αναφέρεται στις προμήθειες: Έχω δοκιμάσει με επιτυχία μόνο τον κωδικό μου με τις περιστροφικές μονάδες κωδικοποιητή από το ρομπότ DF και τη μονάδα με το στρογγυλό PCB από το DIYmore. Δείτε τις παραπάνω εικόνες για τους σωστούς κωδικοποιητές.

Η βιβλιοθήκη που χρησιμοποίησα είναι αυτή:

Το PDF που έχω προσθέσει ελπίζω να βοηθήσει με τη δομή του μενού που έχω χρησιμοποιήσει για το ρολόι μου.

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

Βήμα 4: Τοποθέτηση του προηγούμενου κώδικα Togetther

Βάζοντας τον προηγούμενο κώδικα Togetther
Βάζοντας τον προηγούμενο κώδικα Togetther

Ο τίτλος συνοψίζει τι έκανα. Δοκίμασα μέρος για μέρος και μετά τα έβαλα όλα μαζί. Αλλά επειδή τίποτα δεν είναι ποτέ εύκολο, έπρεπε να αλλάξω κάποια πράγματα. Η σειριακή επικοινωνία είναι μια αργή διαδικασία. Αυτό εμποδίζει την σωστή ανάγνωση του κωδικοποιητή. Για να το ξεπεράσω πρόσθεσα διακοπές στις ακίδες του κωδικοποιητή. Ο κωδικός για την ανάγνωση του κωδικοποιητή καλείται αμέσως εάν πιέσετε ή γυρίσετε τον κωδικοποιητή.

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

Έχω αφήσει πολλές τέτοιες ιδέες γιατί ήθελα πάνω απ 'όλα μια αξιόπιστη ειρήνη. Αυτό που δεν κάνει τίποτα αυτόματα. Δουλεύω πολύ περίεργες ώρες σε μια θερινή περίοδο. Κάθε φορά που αλλάζει η ώρα είμαι νευρικός για να κοιμηθώ υπερβολικά. Θα αλλάξει αυτόματα το τηλέφωνό μου την ώρα; Θα το ρολόι μου; Λοιπόν, το ρολόι μου δεν θα το κάνει, αν δεν το αλλάξω εγώ. Αλλά ίσως θέλετε να βάλετε το ρολόι σας στην κουζίνα; Διαφορετικό σενάριο, προσθέστε δυνατότητες μέχρι να τελειώσει η μνήμη!

Βήμα 5: Προσαρμοσμένο PCB με Fritzing + Schematic

Προσαρμοσμένο PCB με Fritzing + Schematic
Προσαρμοσμένο PCB με Fritzing + Schematic
Προσαρμοσμένο PCB με Fritzing + Schematic
Προσαρμοσμένο PCB με Fritzing + Schematic
Προσαρμοσμένο PCB με Fritzing + Schematic
Προσαρμοσμένο PCB με Fritzing + Schematic

Σημείο προσοχής: Η Adafruit επισημαίνει ότι ενώ μπορείτε να τροφοδοτήσετε το huzzah32 μέσω της ακίδας USB, πρέπει να είστε προσεκτικοί ώστε να μην χρησιμοποιείτε ταυτόχρονα την είσοδο τροφοδοσίας micro USB. Το PCB μου τροφοδοτείται μέσω του step down buck, το οποίο στη συνέχεια τροφοδοτεί το huzzah μέσω της ακίδας USB. Αποσυνδέστε πάντα την εξωτερική τροφοδοσία/αφαιρέστε το huzzah από τον πίνακα κατά τη μεταφόρτωση.

Αποφάσισα να κολλήσω γυναικείες κεφαλίδες στο PCB επειδή διευκολύνει την ανταλλαγή ενός εξαρτήματος ή την προσθήκη για παράδειγμα ενός επιπλέον αισθητήρα I2C. Αυτό μου επιτρέπει επίσης να αφαιρέσω εύκολα το nano ή το ESP32 για να φορτώσω τα προγράμματα.

Έχω προσθέσει το αρχείο Frizting, μπορώ να πληκτρολογήσω ένα μυθιστόρημα εδώ, αλλά νομίζω ότι το παράδειγμα μιλάει καλύτερα. Ξεκίνησα με το σχηματικό σύνολο της εγκατάστασης. Ενώ ο Fritzing έχει πολλά μέρη στους κάδους του, δεν είναι όλα εκεί. Μερικές φορές μπορείτε να βρείτε το τμήμα Fritzing στο διαδίκτυο, μερικές φορές δεν μπορείτε. Τα μέρη που δεν μπορούσα να βρω, απλά τα αντικατέστησα με ένα γυναικείο τμήμα κεφαλίδας. Εάν κάνετε δεξί κλικ σε αυτό, μπορείτε να επεξεργαστείτε την κεφαλίδα στον αριθμό των καρφιτσών που θέλετε και να της εκχωρήσετε ένα pinout. Το έκανα με κάθε μέρος που δεν μπορούσα να βρω. Καθώς σχεδόν όλες οι μονάδες χρησιμοποιούν το ίδιο βήμα ύψους 0,1 ιντσών (2,54 mm), αυτό θα σας δώσει τη σωστή απόσταση για το τμήμα.

Στη συνέχεια, μεταβαίνετε στην προβολή PCB της εφαρμογής fritzing. Θα τοποθετηθεί ένα PCB, αν το κάνετε κλικ, μπορείτε να ορίσετε το μέγεθός του και να επιλέξετε ένα PCB ενός ή δύο επιπέδων. Το δικό μου χρησιμοποιεί 2 στρώματα. Το Fritzing θα προτείνει τις συνδέσεις που έχετε κάνει στη σχηματική προβολή. Το πρόγραμμα διαθέτει επιλογή autoroute, αλλά δεν το χρησιμοποιώ ποτέ. Μου αρέσει να οργανώνω χειροκίνητα τις συνδέσεις μου. Στην προβολή PCB, οι κίτρινες συνδέσεις βρίσκονται στο επάνω στρώμα και οι πορτοκαλί στο κάτω στρώμα. Και πάλι αν κάνετε κλικ στη σύνδεση μπορείτε να επιλέξετε τις ιδιότητές της.

Για να δημιουργήσετε το πραγματικό PCB, πρέπει να το εξαγάγετε ως αρχείο gerber. Πριν το κάνετε αυτό, κάτω από την καρτέλα "δρομολόγηση" μπορείτε να ελέγξετε τους κανόνες σχεδίασης. Εάν τα πάντα ελέγχονται, μπορείτε να κάνετε κλικ στο "εξαγωγή για PCB". Οι περισσότεροι κατασκευαστές θα ζητήσουν το αρχείο gerber, οπότε επιλέξτε εξαγωγή στο gerber.

Παρήγγειλα το PCB μου από το JLCPCB, μου αρέσει που σας παραθέτουν αμέσως μια τιμή. Υπάρχουν βέβαια πολλές άλλες επιλογές.

Σχετικά με το σχηματικό: υπάρχουν 2 τάσεις που χρησιμοποιούνται. Το LED και το femtobuck τροφοδοτούνται απευθείας από την τροφοδοσία 12V. Το υπόλοιπο τροφοδοτείται μέσω του step-down buck με 5 βολτ.

Βήμα 6: Σχεδιασμός + Lasercutter

Σχεδιασμός + Lasercutter
Σχεδιασμός + Lasercutter
Σχεδιασμός + Lasercutter
Σχεδιασμός + Lasercutter

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

Βρήκα μια διαδικτυακή υπηρεσία λέιζερ, snijlab.nl, διαθέσιμη για χομπίστες που βρίσκονται στο Ρότερνταμ (στέλνουν στο Βέλγιο, τις Κάτω Χώρες και τη Γερμανία). Στον ιστότοπό τους μπορείτε να ανεβάσετε τα σχέδιά σας και αναφέρουν αμέσως την τιμή σας. Χρησιμοποίησα το Autocad, το οποίο έχω στη δουλειά, αλλά το λογισμικό δεν έχει πραγματικά σημασία. Απλώς πρέπει να είναι διανυσματικό σχέδιο (Vectr, Illustrator, Inkscape…). Τα περισσότερα καταστήματα χρησιμοποιούν χρώματα για να καθορίσουν αν θέλετε να κόψετε ή να χαράξετε.

Μερικά πράγματα που πρέπει να θυμάστε:

- Μέγιστη. διαστάσεις του λέιζερ (σχεδίασα ένα πλαίσιο γύρω από τα μέρη μου)

- Ελάχ. απόσταση μεταξύ των κοπών

- Βεβαιωθείτε ότι δεν τραβάτε διπλές γραμμές, το λέιζερ θα κάνει ένα επιπλέον πέρασμα, κοστίζοντας σας περισσότερο.

- Όταν σχεδιάζετε σε PDF, βεβαιωθείτε ότι σχεδιάζετε 1: 1. Δεν θέλετε να μειώσετε ή να ταιριάξετε στο χαρτί.

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

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Έφτιαξα το ρολόι γύρω από ένα ξύλινο πλαίσιο, τα πάνελ διατηρούνται στη θέση τους με βίδες Μ3 και ένθετα στο πλαίσιο. Εάν κατασκευάσω ποτέ μια έκδοση 2, θα χρησιμοποιούσα προφίλ αλουμινίου "L" για να στερεώσω τα πάνελ. Wasταν πολύ δύσκολο να ανοίξουμε με ακρίβεια τις τρύπες για τα μπρούτζινα ένθετα. Μου πήρε πολύ χρόνο, για ένα αποδεκτό αποτέλεσμα. Αυτό θα σήμαινε φυσικά ότι το σχέδιο με λέιζερ πρέπει να αναθεωρηθεί. Νομίζω ότι με προφίλ αλουμινίου και απλά παξιμάδια και μπουλόνια θα έχετε καλύτερο αποτέλεσμα.

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

Βήμα 8: Μην σταματήσετε εδώ

Μην σταματάς εδώ
Μην σταματάς εδώ
Μην σταματάς εδώ
Μην σταματάς εδώ
Μην σταματάς εδώ
Μην σταματάς εδώ

Το έργο επικεντρώνεται γύρω από ένα ESP32, το χρησιμοποιώ ελάχιστα. Τα φώτα του υπνοδωματίου μου μπορούν προς το παρόν να ελέγχονται με τηλεχειρισμό χρησιμοποιώντας το blynk. Ο έλεγχος τους με το ρολόι είναι μόνο ένα μικρό βήμα παραπέρα. Perhapsσως θέλετε κάποιες επιπλέον οθόνες που σας δείχνουν τη θερμοκρασία στο σπίτι σας; Or κάποιοι τοπικοί αισθητήρες (υπάρχουν ακόμα εφεδρικές συνδέσεις I2C σε αυτόν τον πολυπλέκτη!). Maybeσως ρυθμίσετε την ώρα/το ξυπνητήρι μέσω μιας εφαρμογής και bluetooth;

Πες μου τι άλλαξες, τι θα άλλαζες, τι θα έπρεπε να αλλάξω…

Συνιστάται: