Sommario:

Orologio per l'allenamento del sonno per bambini: 6 passi (con immagini)
Orologio per l'allenamento del sonno per bambini: 6 passi (con immagini)

Video: Orologio per l'allenamento del sonno per bambini: 6 passi (con immagini)

Video: Orologio per l'allenamento del sonno per bambini: 6 passi (con immagini)
Video: Orologio smartwatch bambini: I 6 migliori orologi smartwatch per bambini 2024, Settembre
Anonim
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini
Orologio per l'allenamento del sonno per bambini

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

Stampa 3D
Stampa 3D
Stampa 3D
Stampa 3D
Stampa 3D
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
Il circuito
Il circuito
Il circuito
Il circuito
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:

  1. 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.
  2. 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

Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme

Terminata la codifica e stampate tutte le parti, è il momento del montaggio. Ho seguito questi passaggi per mettere tutto insieme:

  1. Praticare due piccoli fori delle dimensioni dei LED RGB nella parte inferiore del corno e posizionare i LED in questi fori.
  2. Metti il corno nel foro nella testa dell'unicorno e tiralo finché non è stretto. Usa la colla dall'interno per fissare il corno.
  3. Attacca il Raspberry Pi Zero W all'interno della testa dell'unicorno. (Usando la pistola per colla a caldo forse)
  4. Attacca la testa dell'unicorno alla base dell'unicorno.
  5. Collegare il cavo di alimentazione e collegare l'intero gruppo alla parete.
  6. Collega l'orologio.

A questo punto ho un orologio Sleep Trainer per bambini funzionante.

Passaggio 6: un anno dopo…

Un anno dopo …
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: