Sommario:
- Forniture
- Passaggio 1: stampa 3D
- Passaggio 2: il circuito
- Passaggio 3: preparazione del Raspberry Pi
- Passaggio 4: il codice
- Passaggio 5: mettere tutto insieme
- Passaggio 6: un anno dopo…
Video: Orologio per l'allenamento del sonno per bambini: 6 passi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Avevo bisogno di un orologio per aiutare i miei gemelli di 4 anni a imparare a dormire un po' di più (ne ho abbastanza di dovermi svegliare alle 5:30 del mattino il sabato), ma non sanno ancora leggere l'ora. Dopo aver sfogliato alcuni articoli su un sito di shopping molto popolare, ho pensato: "Quanto sarebbe difficile realizzarne uno solo?!"
Quindi ecco cosa pensavo di volere in questo progetto. Userebbe alcuni LED RGB (soprattutto perché ne ho una cinquantina da un altro progetto) per visualizzare tre colori diversi. Rosso significherebbe tornare a dormire, è troppo presto per svegliarsi. Giallo significherebbe che possono alzarsi e giocare tranquillamente nella loro stanza. Verde, ovviamente, significa che puoi alzarti. Volevo anche essere in grado di regolare l'ora, perché mi piacerebbe dormire più a lungo in alcuni giorni (fine settimana/vacanze vs giorni feriali e simili).
Forniture
Raspberry Pi Zero W
Due LED RGB
Sei resistori da 220 Ohm
File (.stl, python, html) trovati qui
Varie piccole viti, fili e piccole parti secondo necessità.
Passaggio 1: stampa 3D
A mia figlia piacciono molto gli unicorni, quindi per questo progetto ho remixato Unicorn Nightlight di Riven02, che è un remix di Unicorn Trophy di Apachcreation, che può essere trovato su Thingiverse.com e utilizzato con una licenza Creative Commons non commerciale. Ho modificato la base dell'unicorno per adattarla a un cavo di alimentazione per il lampone pi zero. Mi è capitato di avere del PLA rosso AMZ3D in giro, quindi la base e la testa dell'unicorno saranno rosse. Ho usato PLA trasparente/traslucido per il corno. I file.stl e le impostazioni che ho usato sono:
Unicorno.stl
- Altezza strato: 0,02
- Spessore della parete:.8
- Conteggio linea muro: 2
- Riempimento: 15%
- Modello di riempimento: griglia
UnicornBase.stl
- Altezza strato: 0,02
- Spessore della parete:.8
- Conteggio linea muro: 2
- Riempimento: 15%
- Modello di riempimento: griglia
Horn.stl
- Altezza strato: 0,02
- Spessore della parete: 0,8
- Conteggio linea muro: 3
- Riempimento: 0
Passaggio 2: il circuito
Il circuito è abbastanza facile. Ho scelto sei diversi pin GPIO per controllare l'accensione/spegnimento per i diversi colori dell'RGB. Quei pin e i corrispondenti colori LED sono:
- Pin 11 a RGB 1 ROSSO
- Pin 13 a RGB 1 VERDE
- Pin 15 a RGB 1 BLU
- Pin 16 a RGB 2 ROSSO
- Pin 18 a RGB 2 VERDE
- Pin 36 a RGB 2 BLU
- Pin 39 a terra
Ogni pin è collegato al resistore tramite un resistore limitatore di corrente da 220 ohm (con l'eccezione della massa ovviamente). Ho saldato il resistore in linea e l'ho coperto con un tubo termoretraibile.
Passaggio 3: preparazione del Raspberry Pi
Volevo essere in grado di impostare l'ora per l'orologio del trainer del sonno utilizzando un'interfaccia web. Quindi avevo bisogno di configurare un server Apache e PHP sul Raspberry Pi. La prima cosa che dovresti sempre fare quando installi un nuovo software su un Raspberry Pi è assicurarti che sia aggiornato digitando:
sudo apt-get update
Dopodiché, possiamo davvero metterci al lavoro. Lo faremo installando Apache2:
sudo apt-get install apache2 -y
questo dovrebbe installare il server web Apache. Puoi testarlo utilizzando un browser sul Raspberry pi e navigando su:
localhost/
o navigando dal browser di un altro computer all'indirizzo IP del tuo Raspberry Pi. Per trovare il tuo tipo di indirizzo IP:
nome host -I
In questo modo verrà visualizzata una pagina del server Web Apache predefinita. Questo può essere cambiato sostituendo index.html che si trova nella directory /var/www/html/. Può essere sostituito con il mio file index.html.
Successivamente configureremo il server Web Apache per essere in grado di eseguire file PHP. Inizia digitando:
sudo apt-get install php libapache2-mod-php -y
ora dovresti essere in grado di posizionare il file sleepset.php in /var/www/html con il file index.html.
Per accedere a questa pagina nella tua rete, dovrai configurare il tuo Raspberry Pi con un indirizzo IP statico (o puoi semplicemente provare a capire il nuovo indirizzo IP quando la tua rete lo rinnova di tanto in tanto). Dovrai modificare un paio di file affinché funzioni. Dovrai modificare il file /etc/dhcpcd.conf con quanto segue:
interfaccia wlan0
statico ip_address=192.168.1.static router=192.168.1.1 statico domain_name_servers=192.168.1.1
Sostituisci con le tue informazioni di rete. L'unica cosa che devi fare ora è riavviare.
sudo reboot
Il posizionamento dei file dal link di Google Drive dovrebbe essere il seguente:
- index.html e sleepset.php dovrebbero essere collocati nella directory /var/www/html
- sleepset.txt e sleeptrainer1_1.py dovrebbero essere collocati nella directory /home/pi/pythoncode (suggerimento: dovrai creare questa directory)
Dopo aver posizionato questi file nella directory corretta, il file rc.local deve essere modificato per eseguire il programma sleeptrainer1_1.py all'avvio. Avrai bisogno dell'accesso a livello di root per modificare il file rc.local, quindi digita:
sudo nano /etc/rc.local
Nell'editor, scorri verso il basso e appena prima della riga exit 0, aggiungi:
python /home/pi/pythoncode/sleeptrainer1_1.py &
Ci sono due cose da ricordare qui:
- Usa il percorso file assoluto in modo che LINUX non pensi che il file sleeptraner1_1.py si trovi nella stessa directory di rc.local.
- Non dimenticare la e commerciale (&) alla fine. ciò consentirà a LINUX di eseguire questo file in background e continuare l'avvio.
Ora salva il file digitando ctrl-x e poi y quando viene richiesto di salvare, quindi INVIO.
Quindi digita sudo reboot.
Dovrebbe essere menzionato da qualche parte qui che (almeno) dovresti cambiare la tua password Raspberry Pi usando il comando passwd. Se non l'hai ancora fatto, ora sarebbe un buon momento.
Passaggio 4: il codice
Quello che segue è il codice del file sleeptrainer1_1.py. Ho usato un oggetto datetime per confrontare i tempi con quelli letti nel file sleepset.txt. Il file di testo è semplicemente di due righe, la prima per l'ora, la seconda per i minuti. sleeptrainer1_1.py dorme per un minuto tra le iterazioni del ciclo per non bloccare il processore. La luce verde originariamente usciva troppo luminosa, quindi ho usato la modulazione dell'ampiezza dell'impulso per attenuarla quando usata con il rosso per rendere il giallo.
Codice Python:
importa RPi. GPIO come GPIO
da datetime importa datetime come dt importa ora GPIO.setmode(GPIO. BOARD) GPIO.setwarnings(False) rosso1 = 11 rosso2 = 16 verde1 = 13 verde2 = 18 blu1 = 15 blu2 = 36 GPIO.setup(rosso1, GPIO. OUT) GPIO.setup(rosso2, GPIO. OUT) GPIO.setup(verde1, GPIO. OUT) GPIO.setup(verde2, GPIO. OUT) GPIO.setup(blu1, GPIO. OUT) GPIO.setup(blu2, GPIO. OUT) p1 = GPIO. PWM(verde1, 100) p2 = GPIO. PWM(verde2, 100) def readset(): setfile = open("/home/pi/pythoncode/sleepset.txt", 'r') a = setfile. readline() b = setfile.readline() a = int(a) b = int(b) return a, b def ledlight(color): 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 (color == "green"): 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 (color == "yellow"): 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() hour, minute = settime if minuto == 0: if dt(dt.now().year, dt.now().month, dt.now().day, hour-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour-1, minute+30): ledlight("red") elif dt(dt.now().year, dt.now().mese, dt.now().day, hour-1, minute+30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute): ledlight("yellow") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("verde") else: ledlight("off") elif dt(dt.now().year, dt.now().month, dt.now().day, ho ur-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30): ledlight("red") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute): ledlight("yellow") elif dt(dt.now().year, dt.now().month, dt.now().giorno, ora, minuto) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("verde") else: ledlight("off") time.sleep(60)
Il file index.html è un modulo di base progettato in HTML. Prende il contenuto di due caselle di testo e li passa al file sleepset.php per la gestione dei moduli. Il file PHP sovrascrive semplicemente il file sleepset.txt con i dati aggiornati.
Passaggio 5: mettere tutto insieme
Terminata la codifica e stampate tutte le parti, è il momento del montaggio. Ho seguito questi passaggi per mettere tutto insieme:
- Praticare due piccoli fori delle dimensioni dei LED RGB nella parte inferiore del corno e posizionare i LED in questi fori.
- Metti il corno nel foro nella testa dell'unicorno e tiralo finché non è stretto. Usa la colla dall'interno per fissare il corno.
- Attacca il Raspberry Pi Zero W all'interno della testa dell'unicorno. (Usando la pistola per colla a caldo forse)
- Attacca la testa dell'unicorno alla base dell'unicorno.
- Collegare il cavo di alimentazione e collegare l'intero gruppo alla parete.
- Collega l'orologio.
A questo punto ho un orologio Sleep Trainer per bambini funzionante.
Passaggio 6: un anno dopo…
Un anno dopo:
Le mie ragazze dormono un po' di più. Ci siamo abituati a svegliarci con i bambini piccoli nella nostra stanza che dicevano: "Papà, la luce è verde". e questo è fantastico. Per farla breve, ci svegliamo solo alle 5:30 di sabato quando lo pianifichiamo più.
Cose che ho intenzione di migliorare in futuro:
- Forse aggiungendo alcuni sensori o altri oggetti come un microfono e altoparlanti.
- Forse modificare il codice in modo che funzioni con un altoparlante da utilizzare come sveglia poiché i miei figli inizieranno presto la scuola.
Consigliato:
Il primo orologio per bambini - Con timer luminoso: 16 passaggi (con immagini)
Il primo orologio del bambino - Con timer luminoso: questa guida ti mostra come creare "facce" di orologio intercambiabili - che possono contenere le foto di tuo figlio, foto di famiglia / animali domestici - o qualsiasi altra cosa - che pensavi sarebbe stato bello cambiare periodicamente. Fissare semplicemente il perspex trasparente sull'ar
C51 Orologio elettronico a 4 bit - Orologio in legno: 15 passi (con immagini)
C51 Orologio elettronico a 4 bit - Orologio in legno: ho avuto un po' di tempo libero questo fine settimana, quindi sono andato avanti e ho assemblato questo orologio digitale elettronico fai-da-te a 4 bit da AU $ 2,40 che ho acquistato da AliExpress qualche tempo fa
Orologio luminoso per bambini - Verde significa andare! Rosso, resta a LETTO!!!: 5 Passaggi (con Immagini)
Orologio luminoso per bambini - Verde significa andare! Rosso, resta a LETTO!!!: Stavamo impazzendo senza dormire a sufficienza!!! Il nostro bambino di 2 anni non riusciva a capire come "aspettare il 7" sull'orologio prima di uscire dalla sua stanza mattina dopo mattina. Si svegliava presto (intendo tipo le 5:27 - "ci sono le 7!!!"
Fascia per lettore del sonno: 24 passaggi (con immagini)
Fascia per lettore del sonno: ti sei mai chiesto come dormi la notte? Dispositivi come FitBit monitorano il sonno analizzando i tuoi movimenti durante la notte, ma non possono guardare cosa sta facendo il tuo cervello. Dopo un semestre di apprendimento sulla strumentazione medica, la nostra classe ha
Orologio cardiofrequenzimetro a zone di allenamento: 19 passaggi (con immagini)
Orologio cardiofrequenzimetro a zona di allenamento: il college è un periodo frenetico e caotico nella vita, ecco perché è molto importante mantenere basso il livello di stress. Un modo in cui ci piace farlo è allenarci, aiuta a mantenere la mente chiara e il corpo sano. Ecco perché abbiamo creato un portabl