Πίνακας περιεχομένων:
- Βήμα 1: Καταιγισμός ιδεών
- Βήμα 2: Σκίτσο και υλικά
- Βήμα 3: Δημιουργία εξωτερικού περιβλήματος
- Βήμα 4: Κοπή λέιζερ του εξωτερικού περιβλήματος
- Βήμα 5: Το βάζουμε μαζί
- Βήμα 6: Κωδικός
- Βήμα 7: Ηλεκτρονικά
- Βήμα 8: Τελικό
Βίντεο: Πρωί φίλε: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Μερικοί άνθρωποι έχουν πολύ φορτωμένο πρόγραμμα, γεγονός που καθιστά εύκολο να ξεχάσουμε ένα ή δύο πράγματα. Με αυτό το ξυπνητήρι μπορείτε να ορίσετε πολλαπλούς συναγερμούς για να σας κρατά στο χρονοδιάγραμμα. Το ρολόι λειτουργεί 24 ώρες και το μόνο που έχετε να κάνετε είναι να το προγραμματίσετε να σβήνει τις διαφορετικές ώρες της ημέρας που ταιριάζουν στο πρόγραμμά σας. Όταν το κάνετε αυτό, οι χρόνοι που έχετε ορίσει θα εμφανιστούν στην οθόνη LCD, ώστε να μπορείτε να ελέγξετε για να βεβαιωθείτε ότι έχουν δίκιο και να χρησιμεύσουν ως επιπλέον υπενθύμιση.
Βήμα 1: Καταιγισμός ιδεών
Όταν προσπαθούσαμε να λύσουμε το ζήτημα, χρησιμοποιήσαμε τη μέθοδο fishbone για να δημιουργήσουμε μια ιδέα και καταλήξαμε στο ξυπνητήρι μας.
Βήμα 2: Σκίτσο και υλικά
Κατά τη διάρκεια αυτού του βήματος προσπαθήσαμε να κάνουμε μια λίστα με όλα τα πράγματα που πιστεύαμε ότι θα χρειαστούμε για τα ηλεκτρονικά και το εξωτερικό περίβλημα. Στη συνέχεια καταλήξαμε σε ένα σκίτσο για το πώς θέλαμε να μοιάζει το ξυπνητήρι και πώς θα συναρμολογήσουμε το εξωτερικό του περίβλημα.
Βήμα 3: Δημιουργία εξωτερικού περιβλήματος
Για το πρώτο πρωτότυπο ήθελα απλώς να δω πώς οι αρθρώσεις των δακτύλων θα ταιριάζουν μεταξύ τους, έτσι χρησιμοποίησα ένα κουτί παπουτσιών και δεν χρησιμοποίησα ακριβείς μετρήσεις.
Βήμα 4: Κοπή λέιζερ του εξωτερικού περιβλήματος
Για το δεύτερο πρωτότυπο ήθελα να πάρω ακριβείς μετρήσεις και έπρεπε να δημιουργήσω ένα pdf για αποστολή στον κόφτη λέιζερ. Για να το κάνω αυτό χρησιμοποίησα έναν ιστότοπο εφαρμογής box maker, https://boxdesigner.connectionlab.org. Σε αυτόν τον ιστότοπο, στη συνέχεια, εισήγαγα τις τρισδιάστατες διαστάσεις του κουτιού, το πάχος του υλικού μας, τις μονάδες μέτρησης και τον τύπο αρχείου που ήθελα να δημιουργήσει. Οι διαστάσεις των κουτιών ήταν 7,5 x 3 x 5 x 5 ιντσών και χρησιμοποίησα 1/8 σε παχύ ακρυλικό υλικό. Οι μετρήσεις των εγκοπών των αρθρώσεων των δακτύλων διαμορφώθηκαν αυτόματα ώστε να είναι 0,46875 ίντσες. Επέλεξα την έκδοση pdf επειδή αυτός είναι ο τύπος αρχείου που διαβάζει ένας κόφτης λέιζερ και ήθελα να κάνω κάποιες αλλαγές στο adobe στο αρχείο. Άλλαξα τα χρώματα της γραμμής σε κόκκινο, έτσι ώστε ο κόφτης λέιζερ να ξέρει να τα κόβει αντί να χαράζει το σχήμα, και πρόσθεσα ένα ορθογώνιο κουτί με διαστάσεις 3,92 in με 1,56 in σε αυτό που επρόκειτο να είναι το μπροστινό κομμάτι του κουτί. Πρόσθεσα επίσης ένα ορθογώνιο κομμένο με διαστάσεις 1 ίντσες σε 0,5 ιντσών στο δεξί κομμάτι στο κάτω μέρος για να χρησιμεύσει ως άνοιγμα για το καλώδιο συνδεδεμένο στο ξυπνητήρι. Τελευταία πρόσθεσα τρία κυκλικά ανοίγματα στο πάνω μέρος για τους δύο βομβητές και το κουμπί. Τα ανοίγματα του βομβητή είχαν διάμετρο 0,5 in και το άνοιγμα του κουμπιού ήταν 0,375 in.
Βήμα 5: Το βάζουμε μαζί
Όταν κόπηκαν όλα τα κομμάτια, χρησιμοποίησα σύριγγα και ακρυλική κόλλα για να το σφραγίσω. Κράτησα τα κομμάτια μαζί και έσταξα την κόλλα ανάμεσα στις εγκοπές για να γίνουν οι πλευρές μαζί, αλλά η κορυφή δεν ήταν κολλημένη.
Βήμα 6: Κωδικός
Εισαγωγή:
Αυτό το έργο κωδικοποιήθηκε χρησιμοποιώντας τη γλώσσα c ++ στο λογισμικό Arduino IDE. Ο μικροελεγκτής που χρησιμοποιήθηκε ήταν το NodeMCU με το ESP8266. Για αυτό το έργο θα χρειαζόμασταν έναν τρόπο για να κρατήσουμε με ακρίβεια τον χρόνο, να ακούγεται ένας βομβητής, ένα σύστημα συναγερμού να προκαλεί τον ήχο του συναγερμού και μια οθόνη που θα εμφανίζει όλη την ώρα και τους χρόνους συναγερμού. Για τον πλήρη κώδικα, ανατρέξτε σε αυτόν τον σύνδεσμο
Εισαγωγή Βιβλιοθηκών
Πρώτα απ 'όλα, πρέπει να εισαγάγουμε τις απαραίτητες βιβλιοθήκες.
#include "RTClib.h"
#include "Wire.h" #include #include #include #include
Εκκίνηση Μεταβλητών
Στη συνέχεια, πρέπει να ξεκινήσουμε μεταβλητές για αργότερα, να εκχωρήσουμε τη διάταξη pin για τα κουμπιά βομβητή, να ρυθμίσουμε το RTC και να ορίσουμε τη διεύθυνση I2C της οθόνης LCD.
LiquidCrystal_I2C LCD (0x27, 20, 4);
const int buzzer1 = 12; const int buzzer2 = 0; const int κουμπί = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char αμίνες1 [3]; int ώρα 1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int ώρα2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int ώρα3 = 0; int min3 = 0; int συναγερμός = 0; int ByteReceived; char ReceivedChar? const byte numChars = 32; χαρακτήρα έλαβεChars [numChars];
Ρύθμιση
Στη συνέχεια, πρέπει να έχουμε μια συνάρτηση που ξεκινά όλες τις απαραίτητες διαδικασίες. Σε αυτή τη λειτουργία, πρέπει να ξεκινήσουμε την οθόνη LCD και να εκτυπώσουμε τους αρχικούς χρόνους, να κάνουμε μια μικρότερη λειτουργία που δίνει στον RTC πραγματικό χρόνο, εάν δεν έχει ήδη, και να ξεκινήσουμε τη σειριακή οθόνη.
void setup () {
#ifndef ESP8266 ενώ (! Σειρά); #endif if (! rtc.begin ()) {Serial.println ("Δεν βρέθηκε RTC"); ενώ (1)? } if (rtc.lostPower ()) {Serial.println ("Το RTC έχασε το ρεύμα, αφήνει να οριστεί η ώρα!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd. backlight (); // κάνει το Baklight ON. lcd.clear (); // Διαγράφει την οθόνη LCD lcd.print ("00:00"). // εμφάνιση στην οθόνη LCD μετά τη μεταφόρτωση κώδικα lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Time"); lcd.setCursor (10, 1); lcd.print ("Ξυπνητήρι 1"); lcd.setCursor (0, 3); lcd.print ("Ξυπνητήρι 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Ξυπνητήρι 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (κουμπί, ΕΙΣΟΔΟΣ); // Ορίστε μια καρφίτσα για το κουμπί σιωπής pinMode (buzzer1, OUTPUT). // ορίστε μια καρφίτσα για το pinMode εξόδου του βομβητή (buzzer2, OUTPUT); // ορίστε μια καρφίτσα για την έξοδο βομβητή Serial.begin (9600); Serial.println ("Χρόνος εισαγωγής συναγερμών σε μορφή HHMM χωρίς κενό μεταξύ συναγερμών"); ώρα έναρξης = millis ()/1000; }
Λήψη Δεδομένων
Τώρα, πρέπει να είμαστε σε θέση να λαμβάνουμε τους χρόνους συναγερμού. Για να γίνει αυτό, δημιουργήσαμε μια συνάρτηση για να λαμβάνουμε τα δεδομένα από τη σειριακή οθόνη και να τα αποθηκεύουμε σε έναν πίνακα.
void recvWithEndMarker () {
στατικό int ndx = 0; String timein = Serial.readString (); για (ndx = 0; timein [ndx]; ndx ++) {ReceChars [ndx] = timein [ndx]; } ReceChars [ndx] = '\ 0'; Serial.print (λάβει Chars); }
Ρύθμιση συναγερμών
Το επόμενο βήμα είναι η δυνατότητα ρύθμισης συναγερμών. Εδώ είναι ο κωδικός για το ξυπνητήρι 1. Για το ξυπνητήρι 2 και 3 η ίδια διαδικασία επαναλήφθηκε με λίγες αλλαγές αριθμών.
/* Συναγερμός 1*/
recvWithEndMarker (); int h, m; για (h = 0; h <2; h ++) {ahours1 [h] = έλαβεChars [h]; } για (m = 2; m <4; m ++) {αμίνες1 [m-2] = έλαβεChars [m]; } ahours1 [h] = '\ 0'; αμίνες1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); ώρα1 = άτοι (ώρες 1); min1 = atoi (amins1); Serial.print (ώρα 1); Serial.print (min1);
Buzzer/Button
Με αυτό, πρέπει να κάνουμε τον βομβητή να σβήσει όταν ο πραγματικός χρόνος και ο χρόνος συναγερμού είναι ίσοι. Επίσης σε αυτό το βήμα κάνουμε ένα κουμπί snooze like που σταματά το βομβητή ενώ το κρατάτε.
/ * Κουμπί σιωπής */
int σιωπή? int β? b = digitalRead (2); εάν (b == LOW) {σιωπή = 1; } else {σιωπή = 0; } / * Έναρξη συναγερμού * / εάν (ώρες == ώρα1 && λεπτά == min1) {συναγερμός = 1; } else if (ώρες == ώρα2 && λεπτά == min2) {συναγερμός = 1; } else if (ώρες == ώρα3 && λεπτά == min3) {συναγερμός = 1; } else {alarm = 0; σιωπή = 0; } if (ξυπνητήρι == 1 && σίγαση == 0) {τόνος (buzzer1, 4000, 1000); τόνος (buzzer2, 4000, 1000). καθυστέρηση (1000)? noTone (buzzer1); noTone (buzzer2); καθυστέρηση (1000)? }
Χρόνοι εκτύπωσης
Τέλος, πρέπει να εκτυπώσουμε τους χρόνους συναγερμού και τον πραγματικό χρόνο στην οθόνη LCD.
DateTime now = rtc.now ();
int ώρες = (τώρα. ώρα ()); int mins = (now.minute ()); / * Timeρα συναγερμού σε μορφή 00:00 */ lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (αμίνες2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Χρόνος εμφάνισης από RTC */ lcd.setCursor (0, 0); lcd.print (ώρες) lcd.print (":"); lcd.print (λεπτά);
Βήμα 7: Ηλεκτρονικά
Υπάρχουν πολλά κομμάτια στα ηλεκτρονικά αυτού του έργου, όπως φαίνεται στο τιμολόγιο των υλικών. Η Πρώτη εικόνα είναι ένα σχηματικό σχήμα των τελικών ηλεκτρονικών έργων. Η δεύτερη εικόνα είναι το τελευταίο μας ηλεκτρονικό σχέδιο. Η Τρίτη εικόνα είναι του έργου μας εν μέσω του δεύτερου πρωτοτύπου.
Για να ξεκινήσετε, συνδέστε το NodeMCU στο μακρινό άκρο του breadboard σας. Στη συνέχεια, θα χρειαστεί να συνδέσετε όλα τα άλλα ηλεκτρονικά σας στο NodeMCU και το breadboard. Ξεκινήστε συνδέοντας την οθόνη LCD με τις ακίδες D1 για SCL και D2 για SDA. Η οθόνη LCD θα επιτρέψει στον χρήστη να δει την τρέχουσα ώρα και τους καθορισμένους χρόνους συναγερμού. Τώρα βάλτε ένα καλώδιο να συνδέσει τους βομβητές σας στις ακίδες D3 και D6. Οι βομβητές θα επιτρέψουν στον συναγερμό να ειδοποιήσει τον χρήστη όταν συμπληρωθεί η καθορισμένη ώρα. Τώρα πρέπει να επισυνάψετε ένα κουμπί για να επιτρέψετε τη διακοπή του συναγερμού. Συνδέστε αυτό το κουμπί στην καρφίτσα D4. Τώρα θα συνδέσετε το ρολόι σας σε πραγματικό χρόνο στο breadboard. Συνδέστε το ρολόι σε πραγματικό χρόνο, ώστε να χρησιμοποιεί τις ίδιες ακίδες SDA και SCL που χρησιμοποιούνται για την οθόνη LCD.
Βήμα 8: Τελικό
Εάν έχετε ακολουθήσει τις πληροφορίες που δίνονται το έργο σας μπορεί να μοιάζει με την παραπάνω εικόνα. Σας ευχόμαστε καλή τύχη στις προσπάθειές σας να αναδημιουργήσετε αυτό το έργο και όταν ολοκληρώσετε το έργο σας, σας ενθαρρύνουμε να μοιραστείτε φωτογραφίες και παρατηρήσεις μαζί μας στα σχόλια. Ευχαριστώ και καλή επιτυχία συνάδελφοι Δημιουργοί.
Συνιστάται:
Πώς να φτιάξετε 4G LTE Double BiQuade Antenna Εύκολα Βήματα: 3 Βήματα
Πώς να κάνετε εύκολα 4G LTE διπλή κεραία BiQuade Antenna: Τις περισσότερες φορές αντιμετώπισα, δεν έχω καλή ισχύ σήματος στις καθημερινές μου εργασίες. Ετσι. Searchάχνω και δοκιμάζω διάφορους τύπους κεραίας αλλά δεν δουλεύω. Μετά από σπατάλη χρόνου βρήκα μια κεραία που ελπίζω να φτιάξω και να δοκιμάσω, γιατί δεν είναι η βασική αρχή
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: 5 βήματα
Σχεδιασμός παιχνιδιών στο Flick σε 5 βήματα: Το Flick είναι ένας πραγματικά απλός τρόπος δημιουργίας ενός παιχνιδιού, ειδικά κάτι σαν παζλ, οπτικό μυθιστόρημα ή παιχνίδι περιπέτειας
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino - Βήματα βήμα προς βήμα: 4 βήματα
Σύστημα ειδοποίησης αντίστροφης στάθμευσης αυτοκινήτου Arduino | Βήματα βήμα προς βήμα: Σε αυτό το έργο, θα σχεδιάσω ένα απλό κύκλωμα αισθητήρα στάθμευσης αντίστροφης στάθμευσης αυτοκινήτου Arduino χρησιμοποιώντας Arduino UNO και υπερηχητικό αισθητήρα HC-SR04. Αυτό το σύστημα ειδοποίησης αυτοκινήτου με βάση το Arduino μπορεί να χρησιμοποιηθεί για αυτόνομη πλοήγηση, κλίμακα ρομπότ και άλλα εύρη
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: 3 βήματα
Ανίχνευση προσώπου στο Raspberry Pi 4B σε 3 βήματα: Σε αυτό το Instructable πρόκειται να πραγματοποιήσουμε ανίχνευση προσώπου στο Raspberry Pi 4 με το Shunya O/S χρησιμοποιώντας τη βιβλιοθήκη Shunyaface. Το Shunyaface είναι μια βιβλιοθήκη αναγνώρισης/ανίχνευσης προσώπου. Το έργο στοχεύει στην επίτευξη της ταχύτερης ταχύτητας ανίχνευσης και αναγνώρισης με
Φίλε Μελέτης: 10 Βήματα
Study Buddy: Αυτό το διδάξιμο εξηγεί πώς να φτιάξετε έναν φίλο με φίλους Η λειτουργία αυτού του φίλου μελέτης είναι να βοηθήσει τους εφήβους μεταξύ 14 και 18 ετών να μάθουν πώς να σχεδιάζουν και να μελετούν. Ο στόχος είναι ότι το ρομπότ θα μπορούσε να μάθει με τους μαθητές. Το εξώφυλλο είναι βαμμένο σε