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

Ρολόι εκπαίδευσης παιδικού ύπνου: 6 βήματα (με εικόνες)
Ρολόι εκπαίδευσης παιδικού ύπνου: 6 βήματα (με εικόνες)

Βίντεο: Ρολόι εκπαίδευσης παιδικού ύπνου: 6 βήματα (με εικόνες)

Βίντεο: Ρολόι εκπαίδευσης παιδικού ύπνου: 6 βήματα (με εικόνες)
Βίντεο: Κοψτο κι λιγο 2024, Ιούλιος
Anonim
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου
Ρολόι προπόνησης παιδικού ύπνου

Χρειαζόμουν ένα ρολόι για να βοηθήσω τα δίδυμα 4 ετών μου να μάθουν να κοιμούνται λίγο περισσότερο (μου έχει φτάσει να ξυπνάω στις 5:30 το πρωί τα Σάββατα), αλλά δεν μπορούν να διαβάσουν ακόμα την ώρα. Αφού περιήγησα σε μερικά αντικείμενα σε έναν πολύ δημοφιλή ιστότοπο αγορών, σκέφτηκα: "Πόσο δύσκολο θα ήταν να φτιάξεις μόνο ένα;!"

Ιδού λοιπόν τι κατάλαβα ότι ήθελα σε αυτό το έργο. Θα χρησιμοποιούσε μερικά LED RGB (κυρίως επειδή έχω περίπου πενήντα από αυτά από άλλο έργο) για να εμφανίσει τρία διαφορετικά χρώματα. Το κόκκινο θα σήμαινε να ξανακοιμηθείς, είναι πολύ νωρίς για να ξυπνήσεις. Το κίτρινο θα σήμαινε ότι μπορούν να σηκωθούν και να παίξουν ήσυχα στο δωμάτιό τους. Πράσινο, φυσικά σημαίνει ότι μπορείτε να σηκωθείτε. Wantedθελα επίσης να μπορώ να προσαρμόσω την ώρα, επειδή θα ήθελα να κοιμάμαι περισσότερο σε κάποιες μέρες (Σαββατοκύριακα/Διακοπές vs Καθημερινές και άλλα τέτοια).

Προμήθειες

Raspberry Pi Zero W

Δύο LED RGB

Έξι αντιστάσεις 220 Ohm

Τα αρχεία (.stl, python, html) βρίσκονται εδώ

Διάφορες μικρές βίδες, σύρματα και μικρά μέρη όπως απαιτείται.

Βήμα 1: Τρισδιάστατη εκτύπωση

Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση

Η κόρη μου είναι πολύ σαν τους μονόκερους, οπότε για αυτό το έργο έκανα remix στο Unicorn Nightlight του Riven02, το οποίο είναι ένα remix του Unicorn Trophy της Apachcreation, το οποίο μπορείτε να βρείτε στο Thingiverse.com και να χρησιμοποιηθεί υπό μη εμπορική άδεια Creative Commons. Τροποποίησα τη βάση μονόκερου για να χωρέσει ένα καλώδιο τροφοδοσίας για το βατόμουρο πι μηδέν. Έτυχε να έχω κάποιο AMZ3D Red PLA γύρω, οπότε η βάση και το κεφάλι του μονόκερου θα είναι κόκκινα. Χρησιμοποίησα καθαρό/ημιδιαφανές PLA για το κέρατο. Τα αρχεία.stl και οι ρυθμίσεις που χρησιμοποίησα είναι:

Unicorn.stl

  • Ightψος Στρώματος: 0,02
  • Πάχος Τοίχου:.8
  • Αριθμός γραμμής τοίχου: 2
  • Συμπλήρωση: 15%
  • Μοτίβο πλήρωσης: Πλέγμα

UnicornBase.stl

  • Ightψος Στρώματος: 0,02
  • Πάχος Τοίχου:.8
  • Αριθμός γραμμής τοίχου: 2
  • Συμπλήρωση: 15%
  • Μοτίβο πλήρωσης: Πλέγμα

Horn.stl

  • Ightψος Στρώματος: 0,02
  • Πάχος Τοίχου: 0,8
  • Αριθμός γραμμής τοίχου: 3
  • Συμπλήρωση: 0

Βήμα 2: Το κύκλωμα

Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα

Το κύκλωμα είναι αρκετά εύκολο. Επέλεξα έξι διαφορετικές καρφίτσες GPIO για τον έλεγχο της ενεργοποίησης/απενεργοποίησης για τα διαφορετικά χρώματα του RGB. Αυτές οι ακίδες και τα αντίστοιχα χρώματα LED είναι:

  • Καρφιτσώστε 11 στο RGB 1 RED
  • Καρφιτσώστε 13 στο RGB 1 ΠΡΑΣΙΝΟ
  • Καρφιτσώστε 15 στο RGB 1 ΜΠΛΕ
  • Καρφιτσώστε 16 στο RGB 2 RED
  • Καρφιτσώστε 18 στο RGB 2 ΠΡΑΣΙΝΟ
  • Καρφιτσώστε 36 στο RGB 2 BLUE
  • Καρφιτσώστε 39 στη γείωση

Κάθε πείρος συνδέεται με την αντίσταση μέσω μιας αντίστασης περιορισμού ρεύματος 220 ohm (με εξαίρεση το έδαφος φυσικά.) Συγκόλλησα την αντίσταση στη σειρά και την κάλυψα με σωλήνες θερμοσυρρίκνωσης.

Βήμα 3: Προετοιμασία Raspberry Pi

Wantedθελα να μπορώ να ορίζω ώρες για το ρολόι ύπνου με χρήση μιας διεπαφής ιστού. Έτσι χρειάστηκε να δημιουργήσω έναν Apache και έναν διακομιστή PHP στο Raspberry Pi. Το πρώτο πράγμα που πρέπει πάντα να κάνετε κατά την εγκατάσταση νέου λογισμικού σε ένα Raspberry Pi είναι να βεβαιωθείτε ότι είναι ενημερωμένο πληκτρολογώντας:

sudo apt-get ενημέρωση

Μετά από αυτό, μπορούμε πραγματικά να ασχοληθούμε. Θα το κάνουμε εγκαθιστώντας το Apache2:

sudo apt -get install apache2 -y

Αυτό θα πρέπει να εγκαταστήσει τον διακομιστή ιστού Apache. Μπορείτε να το δοκιμάσετε χρησιμοποιώντας ένα πρόγραμμα περιήγησης στο Raspberry pi και μεταβαίνοντας στο:

localhost/

ή με πλοήγηση από το πρόγραμμα περιήγησης άλλου υπολογιστή στη διεύθυνση IP του Raspberry Pi. Για να βρείτε τον τύπο της διεύθυνσης IP:

όνομα κεντρικού υπολογιστή -I

Εάν κάνετε αυτά, θα οδηγήσετε σε μια προεπιλεγμένη σελίδα διακομιστή Web Apache. Αυτό μπορεί να αλλάξει αντικαθιστώντας το index.html που βρίσκεται στον κατάλογο/var/www/html/. Μπορεί να αντικατασταθεί με το δικό μου αρχείο index.html.

Στη συνέχεια, θα ρυθμίσουμε τον διακομιστή Ιστού Apache για να μπορεί να εκτελεί αρχεία PHP. Ξεκινήστε πληκτρολογώντας:

sudo apt-get install php libapache2-mod-php -y

θα πρέπει τώρα να μπορείτε να τοποθετήσετε το αρχείο sleepset.php στο αρχείο/var/www/html με το αρχείο index.html.

Για να μεταβείτε σε αυτήν τη σελίδα στο δικό σας δίκτυο, θα πρέπει να ρυθμίσετε το Raspberry Pi σας με μια στατική διεύθυνση IP (ή μπορείτε απλά να προσπαθήσετε να καταλάβετε τη νέα διεύθυνση IP όταν το δίκτυό σας την ανανεώνει κατά καιρούς). Θα χρειαστεί να επεξεργαστείτε μερικά αρχεία για να λειτουργήσει αυτό. Θα χρειαστεί να επεξεργαστείτε το αρχείο /etc/dhcpcd.conf με τα ακόλουθα:

διεπαφή wlan0

στατικός ip_address = 192.168.1.στατικοί δρομολογητές = 192.168.1.1 στατικοί_τονομα_διακομιστές_τομέα = 192.168.1.1

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

sudo επανεκκίνηση

Η τοποθέτηση των αρχείων από τη σύνδεση του Google Drive πρέπει να έχει ως εξής:

  • index.html και sleepset.php πρέπει να τοποθετηθούν στον κατάλογο/var/www/html
  • Το sleepset.txt και το sleeptrainer1_1.py πρέπει να τοποθετηθούν στον κατάλογο/home/pi/pythoncode (υπόδειξη: θα πρέπει να δημιουργήσετε αυτόν τον κατάλογο)

Αφού τοποθετήσετε αυτά τα αρχεία στον σωστό κατάλογο, το αρχείο rc.local πρέπει να τροποποιηθεί για να εκτελέσετε το πρόγραμμα sleeptrainer1_1.py κατά την εκκίνηση. Θα χρειαστείτε πρόσβαση σε επίπεδο ρίζας για να τροποποιήσετε το αρχείο rc.local, οπότε πληκτρολογήστε:

sudo nano /etc/rc.local

Στο πρόγραμμα επεξεργασίας, μετακινηθείτε προς τα κάτω και λίγο πριν από τη γραμμή εξόδου 0, προσθέστε:

python /home/pi/pythoncode/sleeptrainer1_1.py &

Υπάρχουν δύο πράγματα που πρέπει να θυμάστε εδώ:

  1. Χρησιμοποιήστε την απόλυτη διαδρομή αρχείου έτσι ώστε το LINUX να μην πιστεύει ότι το αρχείο sleeptraner1_1.py βρίσκεται στον ίδιο κατάλογο με το rc.local.
  2. Μην ξεχάσετε το ampersand (&) στο τέλος. Αυτό θα επιτρέψει στο LINUX να εκτελέσει αυτό το αρχείο στο παρασκήνιο και να συνεχίσει την εκκίνηση.

Τώρα, αποθηκεύστε το αρχείο πληκτρολογώντας ctrl-x και στη συνέχεια y όταν σας ζητηθεί να αποθηκεύσετε και, στη συνέχεια, ENTER.

Στη συνέχεια, πληκτρολογήστε sudo reboot.

Πρέπει να αναφερθεί κάπου εδώ ότι (τουλάχιστον) θα πρέπει να αλλάξετε τον κωδικό πρόσβασης Raspberry Pi χρησιμοποιώντας την εντολή passwd. Αν δεν το έχετε κάνει ακόμα, τώρα θα ήταν μια καλή στιγμή.

Βήμα 4: Ο κώδικας

Ακολουθεί ο κώδικας από το αρχείο sleeptrainer1_1.py. Χρησιμοποίησα ένα αντικείμενο datetime για να συγκρίνω τους χρόνους με αυτούς που διαβάζονται στο αρχείο sleepset.txt. Το αρχείο κειμένου είναι απλώς δύο γραμμές, η πρώτη για ώρα, η δεύτερη για λεπτό. Το sleeptrainer1_1.py κοιμάται για ένα λεπτό μεταξύ επαναλήψεων βρόχου για να μην δέσει τον επεξεργαστή. Το πράσινο φως αρχικά έβγαινε πολύ φωτεινό, οπότε χρησιμοποίησα διαμόρφωση πλάτους παλμού για να το μειώσω όταν χρησιμοποιήθηκε με κόκκινο για να γίνει κίτρινο.

Κωδικός Python:

εισαγωγή RPi. GPIO ως GPIO

από datetime εισαγωγή datetime ως dt ώρα εισαγωγής GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) GPIO.setup (red2, GPIO. OUT) GPIO.setup (green1, GPIO. OUT) GPIO.setup (green2, GPIO. OUT) GPIO.setup (blue1, GPIO. OUT) GPIO.setup (blue2, GPIO. OUT) p1 = GPIO. PWM (green1, 100) p2 = GPIO. PWM (green2, 100) def readset (): setfile = open ("/home/pi/pythoncode/sleepset.txt", 'r') a = setfile readline () b = setfile.readline () a = int (a) b = int (b) επιστροφή a, b def led led (χρώμα): if (color == "red"): GPIO.output (red1, GPIO HIGH) GPIO.output (red2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "blue"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO HIGH) elif (χρώμα == "πράσινο"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (χρώμα == "κίτρινο"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () while True: settime = readset () ώρα, λεπτό = settime αν λεπτό == 0: εάν dt (dt.now (). έτος, dt.now (). μήνα, dt.now (). ημέρα, ώρα-2) <dt.now () <dt (dt.now ()). ημέρα, ώρα, λεπτό): ledlight ("κίτρινο") elif dt (dt.now (). έτος, dt.now (). μήνας, dt.now (). ημέρα, ώρα, λεπτό) <dt.now () <dt (dt.now (). έτος, dt.now (). μήνας, dt.now (). ημέρα, ώρα+1, λεπτό): ledlight ("πράσινο") αλλιώς: ledlight ("off") elif dt (dt.now (). έτος, dt.now (). μήνα, dt.now (). ημέρα, ho ur-2) <dt.now () <dt (dt.now (). έτος, dt.now (). μήνας, dt.now (). ημέρα, ώρα, λεπτό-30): ledlight ("κόκκινο") elif dt (dt.now (). έτος, dt.now (). μήνα, dt.now (). ημέρα, ώρα, λεπτό-30) <dt.now () <dt (dt.now () έτος, dt.now (). μήνας, dt.now (). ημέρα, ώρα, λεπτό): ledlight ("κίτρινο") elif dt (dt.now (). έτος, dt.now (). μήνα, dt.now (). ημέρα, ώρα, λεπτό) <dt.now () <dt (dt.now (). έτος, dt.now (). μήνας, dt.now (). ημέρα, ώρα+1, λεπτό): ledlight ("green") else: ledlight ("off") time.sleep (60)

Το αρχείο index.html είναι μια βασική μορφή που έχει σχεδιαστεί σε HTML. Παίρνει τα περιεχόμενα δύο πλαισίων κειμένου και τα περνά στο αρχείο sleepset.php για το χειρισμό φόρμας. Το αρχείο PHP αντικαθιστά απλώς το αρχείο sleepset.txt με ενημερωμένα δεδομένα.

Βήμα 5: Το βάζουμε όλα μαζί

Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί
Το βάζουμε όλα μαζί

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

  1. Ανοίξτε δύο μικρές τρύπες μεγέθους RGB LED στο κάτω μέρος του κέρατος και τοποθετήστε τα LEDS σε αυτές τις οπές.
  2. Τοποθετήστε το κέρατο στην τρύπα στο κεφάλι του μονόκερου και τραβήξτε το μέχρι να σφίξει. Χρησιμοποιήστε κόλλα από μέσα για να στερεώσετε το κέρατο.
  3. Συνδέστε το Raspberry Pi Zero W στο εσωτερικό της κεφαλής του μονόκερου. (Usingσως χρησιμοποιώντας πιστόλι θερμής κόλλας)
  4. Συνδέστε το κεφάλι του μονόκερου στη βάση του μονόκερου.
  5. Συνδέστε το καλώδιο τροφοδοσίας και συνδέστε ολόκληρο το συγκρότημα στον τοίχο.
  6. Συνδέστε το ρολόι.

Σε αυτό το σημείο έχω ένα λειτουργικό ρολόι παιδικού ύπνου.

Βήμα 6: Ένα χρόνο αργότερα…

Ενα χρόνο μετά …
Ενα χρόνο μετά …

Ενα χρόνο μετά:

Τα κορίτσια μου κοιμούνται λίγο περισσότερο. Έχουμε συνηθίσει να ξυπνάμε μικρά παιδιά στο δωμάτιό μας λέγοντας: «Μπαμπά, το φως είναι πράσινο». και αυτό είναι υπέροχο. Με λίγα λόγια, ξυπνάμε μόνο στις 5:30 π.μ. το Σάββατο όταν το σχεδιάζουμε πια.

Πράγματα που σκοπεύω να βελτιώσω στο μέλλον:

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

Συνιστάται: