INHOUDSOPGAWE:

White Noise Night Light: 11 stappe (met foto's)
White Noise Night Light: 11 stappe (met foto's)

Video: White Noise Night Light: 11 stappe (met foto's)

Video: White Noise Night Light: 11 stappe (met foto's)
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, November
Anonim
Wit geraas naglig
Wit geraas naglig
Wit geraas naglig
Wit geraas naglig

Dit is 'n projek wat ek vir my 1-jarige vir Kersfees gemaak het. Maar eerlik, dit was 'n gesonde geskenk vir my en my vrou. Dit is 'n wit geluidsmasjien wat verskillende klanke kan speel wat deur 'n webkoppelvlak gekies is, en bevat ook ligte wat kleur verander op grond van die tyd (rooi ligte beteken dat jy in die bed is, geel beteken dat jy in jou kamer kan speel, en groen beteken dat dit goed is Om uit te kom). Aangesien my seun te jonk is om tyd te vertel, het 'n naglig op kleur 'n goeie idee gelyk.

Dit is 'n baie maklike projek, en aangesien ek die kode al geskryf het, is dit miskien 'n 1 uit 5 op die moeilikheidsgraad. As u kleuters het wat u te vroeg in die oggend pla, wil u een maak.

Stap 1: Onderdele lys

Onderdele lys
Onderdele lys
Onderdele lys
Onderdele lys
Onderdele lys
Onderdele lys

1. Framboos Pi Zero W

2. Een of ander geval (ek het hierdie van Amazon gebruik)

3. Blinkt van Pimoroni

4. Speaker Phat van Pimoroni (U kan ook 'n ander DAC met goedkoop luidsprekers gebruik)

U moet 'n paar basiese soldeervaardighede hê om die luidspreker saam te stel; daar is 'n skakel met stap-vir-stap instruksies vanaf die produkbladsy, sodat u dit nie kan verwoes nie.

5. [OPSIONEEL] Paneelmonteer mikro -USB -kabel - van Adafruit

6. 'n paar verbindingsdrade of springers

Dis dit!

Stap 2: Brand Raspbian en sluit die planke aan

Brand Raspbian en Hook Up the Boards
Brand Raspbian en Hook Up the Boards

Ek gebruik Raspian Stretch lite vir hierdie opbou. Brand dit dan op 'n microSD met die instrument wat vir u werk, en skakel dan die pi aan. As u hulp nodig het om 'n koplose pi te kry om aan te sluit op u huis se wifi en ssh in te skakel, is daar baie tutoriale aanlyn wat u kan wys hoe u dit moet doen, maar u moet seker maak dat u dit vir die res van hierdie tyd gedoen het om te werk.

Deur https://pinout.xyz te gebruik, kan u albei planke optrek en hul uitslae op hierdie webwerf kry. Die Blinkt -borde benodig slegs 4 verbindings, en die Speaker Phat benodig 9.

Dit moet soos die foto lyk wanneer dit klaar is. Nou moet ons toets dat alles werk.

Stap 3: Installeer die vereiste sagteware

Noudat ons verbind is, moet ons die sagteware installeer wat nodig is om die Blinkt- en Speaker Phat -borde uit te voer. SSH in by die pi, en u vind u in die tuisgids. Voer die volgende in:

krul https://get.pimoroni.com/blinkt | bash

en dan, sodra dit voltooi is:

curl -sS https://get.pimoroni.com/speakerphat | bash

Dit sal alles wat nodig is vir beide die Pimoroni -borde installeer. As u die ls -opdrag invoer, moet u 'n Pimoroni -gids sien. Laat ons dus 'n kode skryf en die Blinkt -bord toets.

Stap 4: Skryf 'n kode en toets dit

Maak 'n gids genaamd "scripts" deur mkdir -scripts in te tik, en ons hou alles wat ons nodig het om daar in te voer. Dus, cd -skrifte om by die gids te kom.

Wat ons nou wil hê, is rooi dowwe ligte in die nag, geel dowwe ligte vir rustige speeltyd en effens helderder groen ligte as dit goed is om uit te kom. Vir my wou ek rooi ligte hê van 19:30 tot 06:15, en om 6:15 sou hulle 'n uur lank geel word, en dan uiteindelik om 07:15 groen. Ek wou ook hê hulle moet om 08:30 afskakel as niemand in die kamer sou wees nie.

Daar is twee maniere om dit te doen. Die eerste (die manier waarop ek gekies het om dit te doen) is met vier verskillende skrifte, wat van cron -werk af loop. Die ander manier om dit te doen, is een script, wat 'n tydfunksie bevat wat by die aanvang uitgevoer word. Ek het eintlik die draaiboek geskryf om dit eers so te doen, maar dit lyk minder doeltreffend as om dit op basis van cron te doen, so ek het dit aangeskakel. Laat weet my as u die 'een -script' -metode wil hê, en ek kan dit in die kommentaar plaas.

Laat ons dus begin met die rooi skrif. Tik touch red.py, dan nano red.py. Voer dan die volgende kode in.

#!/usr/bin/env python

invoer blinkt blinkt.set_clear_on_exit (Onwaar) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0) #sets pixels 3 en 4 na rooi blinkt.show ()

Doen dieselfde vir geel.py en groen.py.

geel.py:

#!/usr/bin/env python

invoer blinkt blinkt.set_clear_on_exit (Onwaar) blinkt.set_brightness (0.2) blinkt.set_pixel (2, 128, 128, 0) blinkt.set_pixel (3, 128, 128, 0) blinkt.set_pixel (4, 128, 128, 0) blinkt.set_pixel (5, 128, 128, 0) #sets pixels 2, 3, 4 en 5 na geel blinkt.show ()

green.py:

#!/usr/bin/env python

invoer blinkt blinkt.set_clear_on_exit (Onwaar) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #sets alle pixels na groen blinkt.show ()

En ten slotte wil ons hê dat 'n script die Blinkt moet skoonmaak as dit nie nodig is nie (lightsout.py):

#!/usr/bin/env python

invoer blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #stel alle pixels in op blinkt.show ()

Dis dit. Tik python red.py om te toets of die twee middelste pixels rooi brand. Tik dan python lightsout.py om dit skoon te maak. Dis dit! Vervolgens moet ons die in die cron -oortjie stel sodat hulle kan hardloop wanneer ons wil.

Stap 5: Voeg die skrifte by Cron

Tik in die SSH -terminale crontab -e

blaai na die einde van die lêer en voeg die volgende reëls by:

15 6 * * * python /home/pi/scripts/yellow.py15 7 * * * python /home/pi/scripts/green.py 30 8 * * * python /home/pi/scripts/lightsout.py 30 19 * * * python /home/pi/scripts/red.py

Dit stel die skrifte in om te werk op die tye wat in die vorige stap beskryf is, en pas dit aan volgens u behoeftes.

Dit is dit vir die naglig! Super maklik. Kom ons gaan nou verder met die opstel van die White Noise -gedeelte van hierdie gebou.

Stap 6: Toets die luidspreker Phat

Die maklikste manier (na my mening) om die Speaker Phat uit te toets, is deur sox te installeer en staties uit die opdragreël te laat loop.

sudo apt-get install sox

Sodra dit geïnstalleer is, kan ons 'n paar voorbeeldopdragte probeer. Hierdie een moet soos golwe klink.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapezium amod 0.1 30

Hoe ontspannend! Ctrl+c sal dit stop. Maar, wat is dit? Daar is 'n klomp LED's op die voorkant van die luidspreker Phat, en ons kan nie dat dit ons Blinkt -ligte belemmer nie. Laat ons dit dus afskakel.

Om dit te kan doen, moet ons die /etc/asound.conf -lêer verander en die VU -meter -inprop verwyder, sodat dit nie eers probeer om die LED's in die eerste plek aan te dryf nie. Ek het dit gedoen deur dit eenvoudig te hernoem. Tik hierdie opdrag mv /etc/asound.conf /etc/asound.conf.bak.

Sox werk, en dit is wonderlik, maar ek was van plan om 'n paar lusbare MP3's te gebruik vir die wit geraas gedeelte van hierdie masjien, so ek het 'n ander speler nodig gehad, verkieslik iets baie lig. mpg123 is waarop ek besluit het. Installeer dit nou met sudo apt-get install mpg123

Oké, nou dat ons weet dat die Speaker Phat werk soos verwag, is dit tyd om die koppelvlak en ooreenstemmende skrifte te bou.

Stap 7: Die opstel van 'n klein webbediener en Webapp

Flask is 'n mikro -webraamwerk wat in Python geskryf is. Dit bied al die funksies wat ons nodig het vir die webbediener (wat as 'n app gaan dien). Installeer dit met die volgende opdrag:

pip3 installeer fles

Dit sal tyd neem, so wag. Sodra dit voltooi is, moet ons die vouers opbou waaruit ons moet trek wanneer die webwerf loop, en hierdie vouers het spesifieke name. Kom ons begin met 'n plek om die webwerf aan te bied. Maak in die tuisgids 'n nuwe gids genaamd www met mkdir www. Skryf nou www in die gids in. Hier het ons nog twee gidse nodig, een genaamd staties en 'n ander sjablone.

Ons het ook 'n plek nodig om ons lusbare MP3's te plaas. Ek het hiervoor 'n gids in die tuisgids gemaak met die naam "klanke". Ek het my MP3's gevind deur te soek na lusbare MP3's op wit. Baie gratis plekke om van af te trek. Ek het WinSCP gebruik om die lêers op te laai.

U wil dit dalk met die omxplayer -opdrag hieronder toets deur met die --vol -### -deel te speel om die regte volumevlak vir u kamer in te skakel. Weer 'n Ctrl+C stop die speler.

Noudat ons almal in plek is, kan ons 'n luislang skryf om die webbediener op te staan wanneer die pi begin. Gaan terug na die www -gids en begin 'n nuwe lêer genaamd webapp.py (nano webapp.py) en voeg die volgende kode in

webbapp.py:

#!/usr/bin/python

vanaf flesinvoerfles, render_template, versoek, herlei invoer os app = Flask (_ naam_) @app.route ('/') def index (): retoer render_template ('index.html') @app.route ('/rain', methodes = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect ('/') @app.route ('/waves', methodes = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") return redirect ('/') @app.route ('/whitenoise', methodes = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") retour redirect (' /') @app.route ('/stop ', methodes = [' POST ']) def stop (): os.system ("killall mpg123") terugstuur herleiding ('/') as _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')

Soos u kan sien, bevat hierdie webapp 5 bladsye, een vir die indeks, 3 vir 3 verskillende geluide (golf, reën en wit geluid) en nog 1 om te stop. Al 4 nie-indeksbladsye herlei terug na indeks ('/') nadat hulle die opdrag wat na omxplayer gestuur is, uitgevoer het, dus hoef ons net een index.html te skep, en niks anders nie. Ek gebruik killall hier as 'n stopfunksie, want ek kon nie 'n beter manier vind om 'n 'stop' opdrag na omxplayer te stuur nie. As u weet van 'n beter manier om dit te doen, hoor ek dit graag!

Laat ons nou die index.html saamstel.

Stap 8: Bou die webwerf

Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf
Die bou van die webwerf

Dit is die beelde wat ek vir my bouwerk gebruik het, maar maak dit gerus self. Hulle moet almal gestoor word in die statiese gids wat ons vroeër gemaak het. Die index.html -lêer wat ons hier gaan maak, moet in die templates -lêergids wees. Dit is redelik belangrik, anders werk niks daarvan nie. Hier is die kode vir my index.html (weereens, dit is net 'n eenvoudige html, so verander dit op watter manier ook al vir u werk).

Aangesien Instructables my nie toelaat om rou HTML te plaas nie, is hier 'n skakel na die lêer soos dit op my Dropbox bestaan:

www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…

Maar as dit ooit sterf, is die HTML -lêer net 'n wonderlike CSS, en 'n eenvoudige 2x2 -tafel met die 4 ikone as knoppies met poswaardes soos volg:

vorm aksie = "/whitenoise" metode = "pos"

invoer src = "/static/whitenoise.png" value = "Wit geraas"

Dit moet redelik maklik wees om vir jouself een te maak.

Die laaste stap is om seker te maak dat die webapp.py by die aanvang werk, ek het dit weer gedoen deur dit by die crontab te voeg. Tik dus weer crontab -e en voeg die volgende by die einde:

@herlaai python3 /home/pi/www/webapp.py

Herlaai dan die pi, wys 'n blaaier op 'n ander masjien (u telefoon) na die IP van die pi (die beste as u dit staties kan maak) en kyk of dit werk. Klik op die knoppies en kyk of u geraas kry.

Op 'n Android -telefoon kan u 'n webwerf op u tuisskerm boekmerk, wat ek hiermee gedoen het om dit soos 'n app te laat lyk en voel. As u dit regtig 'pro' wil laat lyk, soek of skep 'n geskikte.ico -lêer en gee die webwerf 'n eie ikoon wat op die tuisskerm van u telefoon verskyn en meer soos 'n app lyk. Baie tutoriale aanlyn oor hoe om 'n ikoon (favicon) by 'n webwerf te voeg.

Stap 9: Pak alles in 'n boks

Vul alles in 'n sak
Vul alles in 'n sak
Vul alles in 'n sak
Vul alles in 'n sak
Vul alles in 'n sak
Vul alles in 'n sak

Noudat alles getoets en werk, is dit tyd om dit alles in 'n saak te plaas.

Ek het 'n afstandhouer vir die Raspberry Pi Zero gebou met 'n bietjie plastiek wat ek by die huis gehad het. Ek boor toe 'n paar gate vir die mikro -USB op die paneel, en met 'n paar juweliersware lêers in die vierkant van die gat. Die paneelkabel is 'n bietjie styf, so ek sal moontlik in die toekoms 'n reghoekige adapter vir die mikro -USB -poort op die Pi koop.

Ek sny 'n klein opening aan die bokant van die omhulsel sodat die luidspreker kan deurspeel deur twee gate te boor en dit met 'n Dremel te verbind. Boor dan die gate in die deksel om die Speaker Phat te monteer. Vir wat dit werd is, het ek na die neem van hierdie foto teruggegaan en nog 'n paar gaatjies gemaak, want die geraas het regtig in die kas vasgekeer. Ek het die Blinkt gemonteer met die plakkaatstowwe, want die ding het geen monteergate nie, maar dit lyk asof die stopverf goed hou.

Stap 10: Dit is dit

Dis dit!
Dis dit!

Koppel dit aan en jy is klaar. Hier loop myne net na 20:00. Die groen LED op die pi self is nie so helder soos wat hierdie foto dit laat lyk nie.

'N Paar latere wysigings wat ek gemaak het:

Ek het nog 4 bladsye by die webapp.py- en index.html -lêers gevoeg. Die vier is "rooi", "geel", "groen" en "af". Redelik selfverduidelikend. Ek wou die moontlikheid hê om dit van groen terug na geel oor te skakel as ek en die vrou ekstra moeg was en nie gepla wou word nie.

@app.route ('/red', methodes = ['POST']) def red (): os.system ("python ~/scripts/red.py") terugstuur herleiding ('/')

Eintlik dit 4 keer, met die 4 verskillende skrifte, dan nog 'n paar knoppies in die indeks wat die bladsye noem.

Die ander verandering het ek al opgemerk, maar ek het nog 'n paar gate geboor en die bestaande opening rondom die luidspreker uitgebrei omdat die geraas nie goed genoeg uit die omhulsel kom nie.

As ek addisionele wysigings aanbring, sal ek seker weer hierheen kom en dit lys.

Stap 11: Bylae

Nadat ek dit gebou het, het ek besef dat ek en my vrou albei ons telefone gereeld agterlaat as ek die kind gaan lê of slaap. Dus het ek 'n kort drukknop by die fisiese pen 36 gevoeg en die volgende kode (ek het dit button.py genoem) ingesluit om by die aanvang in rc.local te begin:

#!/usr/bin/env python

invoer RPi. GPIO as GPIO invoer tyd invoer os invoer subproses invoer re GPIO.setmode (GPIO. BOARD) # Gebruik knoppie Fisiese pin nommeringskema = 36 # Knoppie is gekoppel aan fisiese pen 16 GPIO.setup (knoppie, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Maak knoppie 'n invoer, aktiveer Pull UP Resistor terwyl True: as GPIO.input (knoppie) == 0: # Wag tot knoppie druk op returnprocess = Onwaar # Aanvanklik is die geluid afgeskakel s = subproses. Open (["ps", "ax"], stdout = subprocess. PIPE) vir x in s.stdout: if re.search ("mpg123", x): returnprocess = True if returnprocess == Onwaar: os.system ("mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/scripts/red.py ") anders: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

Soos u kan sien, het ek ook oorgeskakel na mpg123 van omxplayer omdat dit baie ligter en eenvoudiger is om te gebruik.

Tog, as ek hierdie script in rc.local plaas, loop dit om die een of ander rede sonder probleme. Maar die klank is regtig baie onstuimig. As ek die script normaalweg in stopverf uitvoer, is daar geen probleme nie. Ek sukkel om dit op te los, so laat weet my as iemand 'n idee het! Dankie.

Aanbeveel: