Taula de continguts:
- Subministraments
- Pas 1: impressió 3D
- Pas 2: el circuit
- Pas 3: Preparació de Raspberry Pi
- Pas 4: el codi
- Pas 5: ajuntar-ho tot
- Pas 6: un any després …
Vídeo: Rellotge d'entrenament del son infantil: 6 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Necessitava un rellotge per ajudar els meus bessons de 4 anys a aprendre a dormir una mica més (ja en tinc prou amb haver de despertar-me a les 5:30 del matí dels dissabtes), però encara no saben llegir l'hora. Després de navegar per uns quants articles en un lloc de compres molt popular, vaig pensar: "Què tan difícil seria fer-ne un ?!"
Així que això és el que em pensava que volia en aquest projecte. Faria servir alguns LED RGB (sobretot perquè en tinc una cinquantena d’un altre projecte) per mostrar tres colors diferents. El vermell significaria tornar a dormir, és massa aviat per despertar-se. El groc significaria que es poden aixecar i jugar tranquil·lament a la seva habitació. Verd, per descomptat, vol dir que us podeu aixecar. També volia poder ajustar l'hora, perquè m'agradaria dormir més temps alguns dies (caps de setmana / festius vs dies feiners, etc.).
Subministraments
Raspberry Pi Zero W
Dos LED RGB
Sis resistències de 220 Ohm
Aquí es troben fitxers (.stl, python, html)
Diversos petits cargols, cables i petites peces segons sigui necessari.
Pas 1: impressió 3D
A la meva filla li agraden molt els unicorns, així que per aquest projecte he remesclat Unicorn Nightlight de Riven02, que és un remescla del Trofeu Unicorn d’Apachcreation, que es pot trobar a Thingiverse.com i que s’utilitza sota una llicència no comercial de Creative Commons. Vaig modificar la base de l’unicorn perquè s’adaptés a un cable d’alimentació per al raspberry pi zero. Em va passar una mica de PLA vermell AMZ3D, de manera que la base i el cap de l’unicorn seran vermells. Vaig utilitzar PLA transparent / translúcid per a la banya. Els fitxers i la configuració.stl que he utilitzat són:
Unicorn.stl
- Alçada de la capa: 0,02
- Gruix de la paret:.8
- Recompte de línies de paret: 2
- Emplenament: 15%
- Patró de farciment: quadrícula
UnicornBase.stl
- Alçada de la capa: 0,02
- Gruix de la paret:.8
- Recompte de línies de paret: 2
- Emplenament: 15%
- Patró de farciment: quadrícula
Horn.stl
- Alçada de la capa: 0,02
- Gruix de la paret: 0,8
- Recompte de línies de paret: 3
- Omplir: 0
Pas 2: el circuit
El circuit és bastant fàcil. Vaig triar sis pins GPIO diferents per controlar l’encesa / apagada dels diferents colors del RGB. Aquests pins i els colors LED corresponents són:
- Pin 11 a RGB 1 VERMELL
- Pin 13 a RGB 1 VERD
- Pin 15 a RGB 1 BLAU
- Pin 16 a RGB 2 VERMELL
- Pin 18 a RGB 2 VERD
- Pin 36 a RGB 2 BLAU
- Pin 39 a terra
Cada passador està connectat a la resistència mitjançant una resistència de limitació de corrent de 220 ohms (amb l'excepció del sòl, per descomptat).
Pas 3: Preparació de Raspberry Pi
Volia poder establir els horaris del rellotge de l’entrenador del son mitjançant una interfície web. Per tant, necessitava configurar un servidor Apache i PHP al Raspberry Pi. El primer que heu de fer sempre quan instal·leu programari nou en un Raspberry Pi és assegurar-vos que estigui actualitzat escrivint:
sudo apt-get update
Després d’això, ens podem posar en pràctica. Ho farem instal·lant Apache2:
sudo apt-get install apache2 -y
això hauria d'instal·lar el servidor web Apache. Podeu provar-ho mitjançant un navegador a Raspberry pi i aneu a:
localhost /
o navegant des del navegador d'un altre ordinador fins a l'adreça IP del vostre Raspberry Pi. Per trobar la vostra adreça IP, feu el següent:
nom d'amfitrió -I
Si feu això, es portarà a una pàgina predeterminada del servidor web Apache. Això es pot canviar substituint index.html situat al directori / var / www / html /. Es pot substituir pel meu propi fitxer index.html.
A continuació, configurarem el servidor web Apache per poder executar fitxers PHP. Comenceu escrivint:
sudo apt-get install php libapache2-mod-php -y
ara hauríeu de poder col·locar el fitxer sleepset.php al fitxer / var / www / html amb el fitxer index.html.
Per anar a aquesta pàgina a la vostra pròpia xarxa, haureu de configurar el vostre Raspberry Pi amb una adreça IP estàtica (o simplement podeu intentar esbrinar la nova adreça IP quan la vostra xarxa la renovi de tant en tant). Haureu d’editar un parell de fitxers perquè això funcioni. Haureu d’editar el fitxer /etc/dhcpcd.conf amb el següent:
interfície wlan0
static ip_address = 192.168.1.static routers = 192.168.1.1 static domain_name_servers = 192.168.1.1
Substituïu la informació de la vostra xarxa. L’únic que haureu de fer ara és reiniciar.
sudo reiniciar
La ubicació dels fitxers de l'enllaç de la unitat de Google ha de ser la següent:
- index.html i sleepset.php s’han de col·locar al directori / var / www / html
- sleepset.txt i sleeptrainer1_1.py s’han de col·locar al directori / home / pi / pythoncode (suggeriment: haureu de crear aquest directori)
Després de col·locar aquests fitxers al directori correcte, cal modificar el fitxer rc.local per executar el programa sleeptrainer1_1.py a l'inici. Necessitareu accés a l’arrel per modificar el fitxer rc.local, així que escriviu:
sudo nano /etc/rc.local
A l'editor, desplaceu-vos cap avall i, just abans de la línia de sortida 0, afegiu:
python /home/pi/pythoncode/sleeptrainer1_1.py &
Aquí hi ha dues coses que cal recordar:
- Utilitzeu la ruta de fitxers absoluta perquè LINUX no pensi que el fitxer sleeptraner1_1.py es troba al mateix directori que rc.local.
- No us oblideu del signe i (&) al final. això permetrà a LINUX executar aquest fitxer en segon pla i continuar arrencant.
Ara, deseu el fitxer escrivint ctrl-x i, a continuació, y quan se us demani que deseu i després ENTRAR.
A continuació, escriviu sudo reboot.
Cal esmentar en algun lloc d’aquí que (com a mínim) us heu de canviar la contrasenya de Raspberry Pi mitjançant l’ordre passwd. Si encara no ho heu fet, ara seria un bon moment.
Pas 4: el codi
A continuació es mostra el codi del fitxer sleeptrainer1_1.py. He utilitzat un objecte datetime per comparar les hores amb les llegides al fitxer sleepset.txt. El fitxer de text és simplement dues línies, la primera per hora, la segona per minut. sleeptrainer1_1.py dorm durant un minut entre les iteracions de bucle per no lligar el processador. La llum verda originalment sortia massa brillant, de manera que vaig utilitzar la modulació de l'amplada de pols per disminuir-la quan es feia servir amb vermell per fer groc.
Codi Python:
importar RPi. GPIO com a GPIO
a partir de la data i hora d'importació de la data com a hora d'importació dt GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (fals) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) GPIO.setup (vermell2, GPIO. OUT) GPIO.setup (verd1, GPIO. OUT) GPIO.setup (verd2, GPIO. OUT) GPIO.setup (blau1, GPIO. OUT) GPIO.setup (blau2, 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) return a, b def ledlight (color): if (color == "vermell"): GPIO.output (red1, GPIO. ALT) GPIO.output (vermell2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blau1, GPIO. LOW) GPIO.output (blau2, GPIO. LOW) elif (color == "blau")): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO. ALT) elif (color == "verd"): 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 == "groc"): 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 () mentre True: settime = readset () hora, minut = setime si minut == 0: si dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora-2) <dt.now () <dt (dt.now ()).any, dt.now (). mes, dt.now (). dia, hora-1, minut + 30): ledlight ("vermell") elif dt (dt.now (). any, dt.now ().month, dt.now (). dia, hora-1, minut + 30) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now ().dia, hora, minut): ledlight ("groc") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora + 1, minut): ledlight ("verd") més: ledlight ("apagat") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, ho ur-2) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut-30): ledlight ("vermell") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut-30) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut): ledlight ("groc") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora + 1, minut): ledlight ("verd") else: ledlight ("apagat") time.sleep (60)
El fitxer index.html és un formulari bàsic dissenyat en HTML. Agafa el contingut de dos quadres de text i els passa al fitxer sleepset.php per a la gestió del formulari. El fitxer PHP simplement sobreescriu el fitxer sleepset.txt amb dades actualitzades.
Pas 5: ajuntar-ho tot
Amb la codificació acabada i totes les parts impreses, és el moment del muntatge. Vaig seguir aquests passos per reunir-ho tot:
- Practicar dos petits forats de mida RGB LED a la part inferior de la banya i col·locar els LEDs en aquests forats.
- Col·loqueu la banya al forat del cap de l’unicorn i estireu-la fins que quedi ben ajustada. Feu servir cola per dins per assegurar la banya.
- Connecteu el Raspberry Pi Zero W a l'interior del cap d'unicorn. (Potser usant pistola de cola calenta)
- Connecteu el cap de l’unicorn a la base de l’unicorn.
- Connecteu el cable d'alimentació i fixeu el conjunt sencer a la paret.
- Connecteu el rellotge.
En aquest punt tinc un rellotge d’ensinistrador del son per a nens en funcionament.
Pas 6: un any després …
Un any després:
Les meves noies dormen una mica més. Ens hem acostumat a despertar amb nens petits a la nostra habitació dient: "Papà, el llum és verd". i això és fantàstic. En resum, només ens despertem a les 5:30 del matí un dissabte quan ja ho planifiquem.
Coses que penso millorar en el futur:
- Potser afegiu alguns sensors o altres elements com un micròfon i uns altaveus.
- Potser editeu el codi per treballar amb un altaveu per utilitzar-lo com a despertador, ja que els meus fills començaran l'escola aviat.
Recomanat:
Caixa de música MP3 infantil: 6 passos (amb imatges)
Kids MP3 Music Box: Quan buscava nous projectes de bricolatge sobre arduino, vaig trobar algunes bones idees sobre reproductors MP3 basats en RFID per a nens. I hi ha una gran caixa de joguines professional al mercat: aquests nois manen. Van fer un gran negoci amb la seva idea intel·ligent. Comprova
Entrenament de reacció del porter del futbol per Arduino: 5 passos
Entrenament de reacció del porter de futbol per Arduino: Descripció del meu projecte Arduino: Reflect Trainer: prova la teva agilitat i capacitat de resposta cap a l'esquerra i la dreta. davant i darrere; simula la reacció del porter del futbol. Poseu cinc taulers de diferents colors a terra; hi ha una pissarra a
Rellotge de monitorització de la zona del ritme cardíac d’entrenament: 19 passos (amb imatges)
Vigilància de la monitorització de la zona del ritme cardíac d’entrenament: la universitat és una època agitada i caòtica a la vida, per això és molt important mantenir el nivell d’estrès baix. Una de les maneres que ens agrada fer-ho és fer exercici, ajudant a mantenir la ment clara i el cos sentint-se sa. Per això vam crear un portàtil
Ulleres d’entrenament d’oclusió alternes d’alta tensió [ATtiny13]: 5 passos (amb imatges)
Ulleres d’entrenament d’oclusió d’alt voltatge alternatiu [ATtiny13]: en la meva primera instrucció, he descrit com construir un dispositiu que hauria de ser molt útil per a algú que vulgui tractar l’ambliopia (ull mandrós). El disseny era molt simplista i tenia alguns inconvenients (requeria l’ús de dues bateries i líquid
Cuina infantil que diu BEEP: 7 passos (amb imatges)
Cuina infantil que diu BEEP: La meva filla de dos anys va tenir una petita petició pel seu tercer aniversari. Volia una cuina petita que digués Beep. "Vols un què?" va ser la meva resposta. "Una cuina que diu pit, igual que la cuina de les mares!", Va dir … Per tant, aquesta va ser la inspiració (jo