Διαφήμιση

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

Εάν κάνατε ένα ρολόι ξυπνητήρι είναι λίγο πολύ για σας, ελέγξτε έξω αυτά τα iPhone και Εφαρμογές Android Χρησιμοποιήστε αυτές τις εφαρμογές για να σας βοηθήσουμε να κοιμηθείτε καλύτερα [Android & iOS]Μετά από μια γεμάτη μέρα, το καλύτερο που μπορείτε να κάνετε είναι να πάρετε μια ευεργετική ποσότητα ύπνου. Υπάρχουν πάντα νέες μελέτες που αποδεικνύουν πόσο σημαντικός είναι ο ύπνος σε ένα άτομο, βελτιώνοντας ... Διαβάστε περισσότερα που ανιχνεύουν όταν το καλύτερο να σας ξυπνήσει από τις κινήσεις του σώματος Μπορεί μια εφαρμογή πραγματικά να σας βοηθήσει να κοιμηθείτε καλύτερα;Πάντα ήμουν λίγο πειραματιστής ύπνου, έχοντας για μεγάλο μέρος της ζωής μου κρατούσε ένα σχολαστικό ημερολόγιο ονείρων και μελετούσε όσο μπορούσα για να κοιμηθώ στη διαδικασία. Υπάρχουν ...

instagram viewer
Διαβάστε περισσότερα , εξασφαλίζοντας ότι δεν έχετε απομακρυνθεί από αυτό το φοβερό όνειρο, αλλά αντίθετα, ξυπνήστε νιώθοντας φωτεινά και ανανεωμένα - πραγματικά δουλεύουν.

Έντυπο Έργου

Το κύριο μέρος του έργου θα είναι περίπου 5 μέτρα φως LED ταινία που γύρω από το κρεβάτι. Θα τα τροφοδοτήσουμε με εξωτερική τροφοδοσία 12 volt, αλλάζοντας με τρανζίστορ MOSFET N. Η ρύθμιση για αυτό το μέρος θα είναι ίδια με την δυναμικό σύστημα φωτισμού Δημιουργήστε το δικό σας δυναμικό φωτισμό περιβάλλοντος για ένα κέντρο πολυμέσωνΑν παρακολουθήσετε πολλές ταινίες στον υπολογιστή σας ή στο κέντρο πολυμέσων, είμαι βέβαιος ότι έχετε αντιμετωπίσει το δίλημμα φωτισμού. απενεργοποιείτε εντελώς όλα τα φώτα; Τους κρατάτε σε πλήρη έκρηξη; Ή... Διαβάστε περισσότερα Έχω χτίσει πριν.

Ο χρονισμός θα είναι ένα ζήτημα - δεδομένου ότι αυτό είναι ένα πρωτότυπο, θα ρυθμίσω το Arduino να μετράει από κάθε φορά που επαναφέρεται. Θεωρητικά, θα πρέπει να χάσουμε μόνο ένα δευτερόλεπτο ή δύο κάθε ημέρα, αλλά στην ιδανική περίπτωση θα συμπεριλάβαμε ένα τσιπ "ρολογιού πραγματικού χρόνου" για να το κάνουμε αυτό πιο αξιόπιστα. Ο συναγερμός ανατολής θα ξεκινήσει 30 λεπτά πριν από το χρόνο αφύπνισης και θα αυξήσει αργά το επίπεδο εξόδου έως ότου φτάσει στο 100% αυτό θα πρέπει να είναι αρκετό για να μας ξυπνήσει, αν και είναι καλή ιδέα να συνεχίσετε να χρησιμοποιείτε το τακτικό ξυπνητήρι σας μέχρι να συνηθίσει το σώμα σας το.

Θα ενσωματώσω επίσης ένα νυχτερινό φως σε αυτό το έργο, το οποίο ανιχνεύει την κίνηση και ενεργοποιεί ένα διακριτικό χαμηλό επίπεδο φως κάτω από το κρεβάτι με 3 λεπτά έξω, χωριστά από τα φώτα των οδηγήσεων καθώς αυτά θα προκαλούσαν τόσο τη γυναίκα μου όσο και εγώ να ξυπνήσω πάνω. Ο φωτισμός κάτω από το κρεβάτι θα είναι μια εμπορική μονάδα ηλεκτρικού ρεύματος, οπότε θα κλέψω ένα ρελέ μέσα σε μια πρίζα για να το ενεργοποιήσω και να σβήσω. Εάν δεν αισθάνεστε άνετα να εργάζεστε με τροφοδοσία 110-240v AC υπό οποιεσδήποτε συνθήκες (και αυτό είναι γενικά ένας καλός κανόνας που πρέπει να έχετε), στη συνέχεια καλώδιο ένα ασύρματο πομπό 433 MHz με υποδοχές μεταγωγής, όπως περιγράφεται στο Raspberry Pi Arduino έργο αυτοματισμού σπίτι Οδηγός αυτοματισμού στο σπίτι με Raspberry Pi και ArduinoΗ αγορά αυτοματισμού στο σπίτι είναι πλημμυρισμένη με ακριβά καταναλωτικά συστήματα, ασύμβατα μεταξύ τους και δαπανηρά για εγκατάσταση. Εάν έχετε ένα Raspberry Pi και ένα Arduino, μπορείτε βασικά να επιτύχετε το ίδιο πράγμα σε ... Διαβάστε περισσότερα .

Κατάλογος μερών και Σχηματική

  • Arduino
  • Σετ λυχνιών LED RGB LED
  • Τροφοδοσία 12 volt
  • 3 x τρανζίστορ MOSFET N (χρησιμοποιώ τον τύπο STP16NF06FP)
  • Ρελέ και υποδοχή ρεύματος ή ασύρματες ελεγχόμενες υποδοχές και κατάλληλο πομπό
  • Η επιλογή σας για το νυχτερινό φως (κανονικό δίκτυο τροφοδοτείται με βύσμα είναι μια χαρά)
  • Αισθητήρα κίνησης PIR (HC-SR501) ή σόναρ SC-04 (όχι τόσο αποτελεσματικός)
  • Αισθητήρας φωτός
  • Κωδικός έργου - αλλά διαβάζετε για να βεβαιωθείτε ότι καταλαβαίνετε πώς να προσαρμόσετε τα πάντα.

Εδώ είναι το πλήρες σχήμα.

ανατολή-συναγερμός-κύκλωμα

Καλωδίωση ενός ρελέ

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

Για την τροφοδοσία ρεύματος, το ρελέ σας θα πρέπει να έχει ονομαστική τάση - 110V ή 240V AC ανάλογα με το πού ζείτε - και περισσότερο από το συνολικό ρεύμα που θα αλλάζετε. Αυτό που έχω χρησιμοποιήσει από αυτό το πακέτο αισθητήρων (αποκήρυξη: αυτό είναι το κατάστημά μου) είναι 250VAC / 10Α, έτσι θα πρέπει να είμαστε ασφαλείς. Τα ρελέ έχουν α com θύρα, συνήθως στο κέντρο, η οποία θα πρέπει να συνδεθεί στο ζωντανό καλώδιο που μπαίνει στο βύσμα. στη συνέχεια, συνδέστε τον τερματικό ζεύξης στην υποδοχή ΟΧΙ (κανονικά ανοιχτό). Δεν πρέπει να σας πω να μην κάνετε αυτό το λάθος είναι συνδεδεμένο σε μια πρίζα, ή πρόκειται να πεθάνετε. Αν φοβάστε να βρεθείτε σε ρεύμα, χρησιμοποιήστε ασύρματες πρίζες.

καλωδίωση ρελέ

Τα γείωση και τα ουδέτερα καλώδια πρέπει να κατευθύνονται κατευθείαν στην πρίζα και να μην αγγίζουν το ρελέ. Ενδέχεται να μην έχετε μια γείωση στις ΗΠΑ. Είναι δική σας ευθύνη να γνωρίζετε τη χρωματική κωδικοποίηση καλωδίων στην περιοχή σας - αν δεν μπορούσατε να σύρετε μια κανονική πρίζα στο σπίτι σας ή να επανασυνδέσετε ένα βύσμα, μην προσπαθήσετε να ενσωματώσετε ένα ρελέ σε ένα!

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

Λήψη σωστής χρονικής στιγμής

Οι λειτουργίες χρονισμού και ρολογιού είναι δύσκολες χωρίς πρόσβαση σε σύνδεση δικτύου ή αποκλειστικά Ρολόι πραγματικού χρόνου (αυτές περιλαμβάνουν τις δικές τους μπαταρίες για να κρατήσουν το ρολόι να πηγαίνει ακόμη και όταν το κύριο Arduino δεν έχει ισχύ). Για να διατηρήσω το κόστος χαμηλό, θα εξαπατήσω. Θα κάνω σκληρό κώδικα για μια ώρα έναρξης για το Arduino να αρχίσει η αντίστροφη μέτρηση. οι χρονισμοί θα είναι επομένως σχετικοί με αυτήν την ώρα έναρξης. Κάθε 24 ώρες, το ρολόι θα επαναρυθμιστεί. Ο κώδικας λειτουργίας ρολογιού παρακάτω διασφαλίζει τις συνολικές μεταβλητές currentMillis και currentMinutes είναι σωστά κάθε μέρα. Το Arduino δεν πρέπει να χάσει περισσότερο από μερικά δευτερόλεπτα κάθε 45 ημέρες. Ωστόσο, αυτό το σκληρό κωδικοποιημένο στυλ χρονισμού είναι αρκετά περιορισμένο, επειδή μια διακοπή ρεύματος ή τυχαία επαναφορά θα σπάσει τα πάντα, οπότε είναι σίγουρα ένας τομέας που θα μπορούσε να βελτιωθεί. Εάν ο συγχρονισμός χρονοτριβεί, απλώς επαναφέρετε το Arduino στην καθορισμένη ώρα έναρξης.

Ο κώδικας θα πρέπει να είναι κατανοητός.

κενό ρολόι () {if (millis ()> = previousMillis + 86400000) {// μια ολόκληρη μέρα έχει περάσει, επαναφέρετε το ρολόι. προηγούμενηMillis + = 86400000; } τρέχουσαMillis = millis () - previousMillis; // αυτό διατηρεί την τρέχουσαMillis την ίδια την τρέχουσα τιμήMinutes = (τρέχουσεςMillis / 1000) / 60 κάθε ημέρα. }

Λειτουργία φωτισμού νυκτός

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

Ο αισθητήρας PIR μπορεί να είναι λίγο περίεργος αν δεν έχετε χρησιμοποιήσει ποτέ πριν, αν και η καλωδίωση δεν είναι δύσκολη - θα βρείτε VCC, GND, και ΕΞΩ σαφώς επισημασμένο στην πλάτη. Υπάρχουν δύο μεταβλητές αντιστάσεις και εσένα. αυτό που ονομάζεται RX καθορίζει το εύρος (μέχρι περίπου 7m), και ένα άλλο επισημασμένο TX καθορίζει την καθυστέρηση. Η καθυστέρηση είναι 5 δευτερόλεπτα στη χαμηλότερη ρύθμιση (πλήρως αριστερόστροφα) και σημαίνει ότι οποιαδήποτε στιγμιαία κίνηση θα ενεργοποιήσει τουλάχιστον 5 δευτερόλεπτα από την κατάσταση "on" από τον αισθητήρα. Ωστόσο, καθορίζει επίσης την καθυστέρηση μεταξύ των ενεργών καταστάσεων - έτσι εάν περάσουν 5 δευτερόλεπτα και δεν υπάρχει κίνηση ανιχνευθεί, ο αισθητήρας θα στείλει ένα χαμηλό σήμα για τουλάχιστον 5 δευτερόλεπτα ακόμα κι αν υπάρχει κίνηση κατά τη διάρκεια αυτού περίοδος. Εάν έχετε καθυστέρηση που έχει ρυθμιστεί πραγματικά σε περίπου 30 δευτερόλεπτα, μπορεί να φαίνεται σαν να έχει σπάσει ο αισθητήρας.

pir αισθητήρα

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

κενό νυχτερινό φως () {// Να λειτουργεί μόνο μεταξύ των ωρών επαναφοράς -> ανατολή. εάν (τρέχουσαMinutes 

Sunrise συναγερμός

Για απλότητα, θα χρησιμοποιήσω την τιμή χρώματος RGB 255.255,0 για μια βαθιά κίτρινη ανατολή - με αυτόν τον τρόπο η αύξηση και στα δύο κανάλια χρώματος θα είναι η ίδια. Αν διαπιστώσετε ότι σας ξυπνά πολύ νωρίς, σκεφτείτε να αρχίσετε με ένα βαθύ κόκκινο και να ξεθωριάζει προς το κίτρινο ή το λευκό. Η ράμπα που έχω χρησιμοποιήσει σε απλώς γραμμική - μπορεί να θέλετε να ερευνήσετε χρησιμοποιώντας μια πιο φυσική καμπύλη για τιμές φωτεινότητας.

Η λειτουργία είναι απλή - υπολογίζει πόσο θα πρέπει να αυξάνεται το φως ανά δευτερόλεπτο, όπως είναι σε πλήρη φωτεινότητα μετά από 30 λεπτά. τότε πολλαπλασιάζει αυτό, όσο και αν είναι πολλά δευτερόλεπτα, αυτή τη στιγμή βρίσκεται στην ανατολή του ηλίου. Εάν είναι ήδη σε πλήρη φωτεινότητα, παραμένει για άλλα 10 λεπτά για να βεβαιωθείτε ότι είστε επάνω (και αν δεν είστε ακόμα πάνω, θα πρέπει πιθανώς να έχετε ένα εφεδρικό συναγερμό στη θέση του).

void sunrisealarm () {// κάθε δευτερόλεπτο κατά τη διάρκεια της περιόδου 30 minite θα πρέπει να αυξήσει την τιμή χρώματος με: float increment = (float) 255 / (30 * 60); // κόκκινο 255, πράσινο 255 μας δίνει πλήρης κίτρινη φωτεινότητα αν (τρέχουσες τιμές> = λεπτάUntilSunrise) {// ξεκινά η ανατολή! float currentVal = (float) ((currentMillis / 1000) - (λεπτάUntilSunrise * 60)) * αύξηση; Serial.print ("Τρέχουσα τιμή για ανατολή:"); Serial.println (currentVal); // κατά τη διάρκεια της ράμπας προς τα πάνω, γράψτε την τρέχουσα τιμή των λεπτών X αύξηση φωτεινότητας εάν (currentVal <255) {analogWrite (RED, currentVal); analogWrite (ΠΡΑΣΙΝΟ, τρέχουσαVal); } else if (currentMinutes - minutesUntilSunrise <40) {// όταν είμαστε σε πλήρη φωτεινότητα, κρατήστε τα φώτα αναμμένα για 10 λεπτά περισσότερο analogWrite (ΚΟΚΚΙΝΟ, 255); analogWrite (ΠΡΑΣΙΝΟ, 255); } αλλιώς {// μετά από αυτό, θα τους nuking πίσω στην off κατάσταση analogWrite (RED, 0)? analogWrite (ΠΡΑΣΙΝΟ, 0); } } }

Παγίδες και μελλοντικές αναβαθμίσεις

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

ανατολή-συναγερμός

Κατά την πραγματοποίηση αυτού του έργου, αντιμετώπισα πολλά θέματα αντιμετώπισης μεγάλων αριθμών, οπότε αν σκοπεύετε να τροποποιήσετε τον κώδικα, λάβετε αυτό υπόψη. Στη γλώσσα C, το η πληκτρολόγηση των μεταβλητών σας είναι πολύ σημαντική - ένας αριθμός δεν είναι πάντα ένας αριθμός. Για παράδειγμα, χωρίς υπογραφή οι μεταβλητές θα πρέπει να χρησιμοποιούνται για την αποθήκευση υπερβολικά μεγάλων αριθμών όπως αντιμετωπίζουμε όταν μιλάμε για χιλιοστά του δευτερολέπτου, αλλά ακόμη και ένας αριθμός μικρότερων από 60.000 δεν μπορεί να αποθηκευτεί ως κανονικός ακέραιος αριθμός (ένα unsigned int θα ήταν αποδεκτό για έως και 68.000). Το θέμα είναι, διαβάστε τους τύπους των μεταβλητών σας όταν χρησιμοποιείτε μεγάλους αριθμούς και εάν βρίσκετε περίεργα σφάλματα, πιθανώς επειδή μια από τις μεταβλητές σας δεν έχει αρκετά κομμάτια!

Βρήκα επίσης ένα πρόβλημα με πολύ χαμηλές διαρροές τάσης φωτεινότητας - που οδηγούν στο μικρότερο ποσοστό εκπομπής φωτός ακόμη και όταν ψηφιακή γραφή (RED, 0) το σήμα εκπέμπεται - δεν νομίζω ότι είναι πρόβλημα υλικού με τις λωρίδες, καθώς λειτουργούν καλά με τους επίσημους ελεγκτές. Αν κάποιος μπορεί να λύσει αυτό το πρόβλημα, όπως φαίνεται παρακάτω, θα ήμουν πολύ ευγνώμων. Έχω δοκιμάσει τραβήξτε κάτω αντιστάσεις, και τον περιορισμό της τάσης εξόδου από τις καρφίτσες Arduino. Μπορεί να χρειαστεί να προσθέσω ένα απλό κύκλωμα εναλλαγής ισχύος για να τροφοδοτεί μόνο τη λωρίδα LED όταν χρειάζεται πραγματικά. ή θα μπορούσε να είναι ελαττωματικά MOSFETs.

διαρροή φωτός

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

Δοκιμάσατε αυτό, κάνατε βελτιώσεις ή πήρατε άλλες ιδέες; Επιτρέψτε μου να μάθω στα σχόλια!

Ο James έχει πτυχίο στην Τεχνητή Νοημοσύνη και είναι πιστοποιημένος με CompTIA A + και Network +. Είναι ο κύριος προγραμματιστής της MakeUseOf, και ξοδεύει τον ελεύθερο χρόνο του παίζοντας VR paintball και boardgames. Κατασκευάζει υπολογιστές από τότε που ήταν παιδί.