Sisällysluettelo:

Valkoinen melu yövalo: 11 vaihetta (kuvilla)
Valkoinen melu yövalo: 11 vaihetta (kuvilla)

Video: Valkoinen melu yövalo: 11 vaihetta (kuvilla)

Video: Valkoinen melu yövalo: 11 vaihetta (kuvilla)
Video: Älä naura haaste (vaikea) 2024, Marraskuu
Anonim
Valkoinen melu yövalo
Valkoinen melu yövalo
Valkoinen melu yövalo
Valkoinen melu yövalo

Tämä on projekti, jonka tein 1-vuotiaalle jouluksi. Rehellisesti sanottuna se oli järkevä lahja minulle ja vaimolleni. Se on valkoisen kohinan kone, joka voi toistaa useita eri ääniä, jotka on valittu verkkoliitännän kautta, ja sisältää myös valot, jotka muuttavat väriä ajan mukaan (punaiset valot tarkoittavat, että olet sängyssä, keltainen tarkoittaa, että voit soittaa huoneessasi, ja vihreä tarkoittaa, että se on ok tulla ulos). Koska poikani on liian nuori kertomaan aikaa, väripohjainen yövalo vaikutti todella hyvältä ajatukselta.

Se on todella helppo projekti, ja koska olen jo kirjoittanut koodin, se on ehkä yksi viidestä vaikeusasteikolla. Jos sinulla on pikkulapsia, jotka häiritsevät sinua liian aikaisin aamulla, sinun kannattaa tehdä sellainen.

Vaihe 1: Osaluettelo

Osaluettelo
Osaluettelo
Osaluettelo
Osaluettelo
Osaluettelo
Osaluettelo

1. Vadelma Pi Zero W

2. Jonkinlainen tapaus (käytin tätä Amazonista)

3. Blinkt Pimoronilta

4. Pimoronin kaiutin Phat (Voit käyttää myös muita DAC -laitteita halpoilla kaiuttimilla)

Sinulla on oltava tiettyjä juotostaitoja kaiutinphatin kokoamiseksi. Tuotesivulta on linkki vaiheittaisiin ohjeisiin, joten et voi pilata sitä.

5. [LISÄVARUSTE] Paneeliasennettava mikro -USB -kaapeli - Adafruit

6. joitakin liitäntäjohtoja tai hyppyjohtimia

Se siitä!

Vaihe 2: Polta Raspbian ja liitä levyt

Polta Raspbian ja liitä levyt
Polta Raspbian ja liitä levyt

Käytän Raspian Stretch liteä tähän rakennukseen. Joten polta se microSD -kortille millä tahansa työkalulla, joka toimii sinulle, ja sytytä sitten pi. Jos tarvitset apua päästäksesi päättömälle pi: lle, jotta voit muodostaa yhteyden kotisi wifi -verkkoon ja ottaa käyttöön ssh: n, verkossa on paljon opetusohjelmia, jotka voivat näyttää sinulle, miten se tehdään, mutta sinun on varmistettava, että olet tehnyt sen loput työskennellä.

Käyttämällä https://pinout.xyz voit nostaa molemmat levyt ylös ja saada niiden pinoutit tälle sivustolle. Blinkt -levyt edellyttävät vain 4 liitäntää ja kaiutin Phat 9.

Sen pitäisi näyttää valokuvalta, kun se on valmis. Nyt meidän on testattava, että kaikki toimii.

Vaihe 3: Tarvittavan ohjelmiston asentaminen

Nyt kun olemme muodostaneet yhteyden, meidän on asennettava Blinkt- ja Speaker Phat -levyjen suorittamiseen tarvittava ohjelmisto. SSH sisään pi, ja löydät itsesi kotihakemistosta. Kirjoita seuraava:

curl https://get.pimoroni.com/blinkt | lyödä

ja sitten kun tämä on valmis, tämä:

curl -sS https://get.pimoroni.com/speakerphat | lyödä

Tämä asentaa kaiken tarvittavan molemmille Pimoroni -levyille. Jos annat ls -komennon, sinun pitäisi nähdä Pimoroni -hakemisto. Joten nyt kirjoitetaan koodi ja testataan Blinkt -levyä.

Vaihe 4: Kirjoita jokin koodi ja testaa se

Luo hakemisto nimeltä "komentosarjat" kirjoittamalla mkdir -skriptit ja pidämme siellä kaiken tarvitsemamme. Joten cd -skriptejä päästäksesi kyseiseen kansioon.

Nyt haluamme punaisia himmeitä valoja yöaikaan, keltaisia himmeitä valoja hiljaiseen peliaikaan ja hieman kirkkaampia vihreitä valoja, kun on hyvä tulla ulos. Minulle halusin punaisia valoja klo 19.30–6.15, ja klo 6:15 ne muuttuivat keltaisiksi tunnin ajan ja lopulta vihreiksi klo 7:15. Halusin myös, että ne sammuvat klo 8.30, kun kukaan ei todennäköisesti ollut huoneessa.

Voit tehdä tämän kahdella tavalla. Ensimmäinen (tapa, jolla päätin tehdä sen) on neljällä eri skriptillä, jotka suoritetaan cron -töistä. Toinen tapa tehdä se on yksi komentosarja, joka sisältää aikatoiminnon, joka suoritetaan käynnistyksen yhteydessä. Kirjoitin itse käsikirjoituksen tekemään sen tällä tavalla ensin, mutta se vaikutti vähemmän tehokkaalta kuin sen tekeminen cronin perusteella, joten vaihdoin sen ylös. Jos haluat "yhden komentosarjan" menetelmän, kerro siitä minulle, niin voin lähettää sen kommentteihin.

Aloitetaan siis punaisella käsikirjoituksella. Kirjoita touch red.py ja sitten nano red.py. Kirjoita sitten seuraava koodi.

#!/usr/bin/env python

tuoda blinkt blinkt.set_clear_on_exit (Väärä) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0) #sets pikselit 3 ja 4 punaiseksi blinkt.show ()

Tee sama keltaiselle.py ja vihreälle.py.

keltainen.py:

#!/usr/bin/env python

tuoda blinkt blinkt.set_clear_on_exit (Väärä) 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 pikselit 2, 3, 4 ja 5 keltaiseksi blinkt.show ()

green.py:

#!/usr/bin/env python

Tuo blinkt blinkt.set_clear_on_exit (Väärä) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #asettaa kaikki pikselit vihreäksi blinkt.show ()

Lopuksi haluamme, että käsikirjoitus poistaa Blinktin, kun sitä ei tarvita (lightsout.py):

#!/usr/bin/env python

Tuo blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0,1) blinkt.set_all (0, 0, 0) #asettaa kaikki pikselit pois päältä blinkt.show ()

Se siitä. Voit testata tyypin python red.py ja nähdä, palaako kaksi keskimmäistä pikseliä punaisena. Kirjoita sitten python lightsout.py tyhjentääksesi sen. Se siitä! Seuraavaksi meidän on asetettava ne cron -välilehdelle, jotta ne toimivat silloin, kun haluamme.

Vaihe 5: Näiden komentosarjojen lisääminen Croniin

SSH -terminaalissa tyyppi crontab -e

vieritä tiedoston loppuun ja lisää seuraavat rivit:

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

Tämä asettaa komentosarjat toimimaan edellisen vaiheen kuvailemina aikoina. Siirry eteenpäin ja säädä niitä tarpeidesi mukaan.

Siinä se yövalolle! Super helppoa. Siirrytään nyt tämän rakenteen valkoisen kohinan määrittämiseen.

Vaihe 6: Kaiutinphatin testaus

Helpoin tapa (mielestäni) testata Speaker Phat on asentamalla sox ja suorittamalla staattista toimintaa komentoriviltä.

sudo apt-get install sox

Kun se on asennettu, voimme kokeilla joitakin toistokomentoja. Tämän pitäisi kuulostaa aalloilta.

play -n synth brownnoise synth pinknoise mix syntetisaattori 0 0 0 10 10 40 puolisuunnikkaan amodi 0,1 30

Kuinka rentouttavaa! Ctrl+c pysäyttää sen. Mutta, mikä se on? Kaiutin Phatin etupuolella syttyy joukko LED -valoja, emmekä voi häiritä Blinkt -valojamme. Joten sammutetaan ne.

Tätä varten meidän on muutettava /etc/asound.conf -tiedostoa ja poistettava VU -mittarin laajennus, joten se ei edes yritä ohjata LED -valoja. Tein tämän yksinkertaisesti nimeämällä sen uudelleen. Kirjoita tämä komento mv /etc/asound.conf /etc/asound.conf.bak Löysin tämän hieman googlaamalla, joten saattaa olla parempi tapa.

Sox toimii, ja se on hienoa, mutta suunnittelin käyttäväni joitain silmukoitavia MP3-tiedostoja tämän koneen valkoisen kohinan osassa, joten tarvitsin toisen soittimen, mieluiten jotain todella kevyttä. mpg123 on se, mihin päädyin. Asenna se nyt sudo apt-get install mpg123

Ok, nyt kun tiedämme, että kaiutin Phat toimii odotetusti, on aika rakentaa käyttöliittymä ja vastaavat komentosarjat.

Vaihe 7: Pienen verkkopalvelimen ja Web -sovelluksen asentaminen

Flask on Pythonilla kirjoitettu mikroverkkokehys. Se tarjoaa kaikki toiminnot, joita tarvitsemme verkkopalvelimelle (joka toimii sovelluksena). Asenna se seuraavalla komennolla:

pip3 asennuspullo

Se vie jonkin aikaa, joten odota. Kun se on valmis, meidän on rakennettava kansiot, joista meidän on poistettava verkkosivuston toimiessa, ja näillä kansioilla on erityiset nimet. Aloitetaan sivuston isännöintipaikasta. Luo kotihakemistosta uusi hakemisto nimeltä www mkdir www. Siirrä cd www tähän hakemistoon. Tässä tarvitaan vielä kaksi hakemistoa, joista toinen on staattinen ja toinen malleja.

Tarvitsemme myös paikan silmukoitavien MP3 -levyjen sijoittamiseen. Tein tätä varten kotihakemistoon hakemiston nimeltä "äänet". Löysin MP3 -tiedostoni etsimällä silmukoitavia valkoisia MP3 -tiedostoja Googlesta. Paljon vapaita paikkoja vetää. Käytin tiedostojen lataamiseen WinSCP: tä.

Haluat ehkä testata niitä alla olevalla omxplayer -komennolla ja pelata --vol -### -osan kanssa valitaksesi huoneesi oikean äänenvoimakkuuden. Jälleen Ctrl+C pysäyttää pelaajan.

Nyt kun meillä on kaikki ne paikallaan, kirjoitetaan python, joka nostaa verkkopalvelimen pystyyn, kun pi käynnistyy. Palaa www -hakemistoon ja aloita uusi tiedosto nimeltä webapp.py (nano webapp.py) ja lisää seuraava koodi

webbapp.py:

#!/usr/bin/python

pullon tuonnista Pullo, render_malli, pyyntö, uudelleenohjaus tuonti os app = Pullo (_ name_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain', Method = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/ääni/rain.mp3") return redirect ('/') @app.route ('/waves', Method = ['POST']) def aallot (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") return redirect ('/') @app.route ('/whitenoise', Method = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sound/whitenoise.mp3") return redirect (' /') @app.route ('/stop ', Method = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')

Kuten näette, tällä verkkosovelluksella on 5 sivua, yksi hakemistoon, 3 kolmelle eri äänelle (aalto, sade ja valkea) ja yksi pysäytettävä. Kaikki neljä muuta kuin indeksisivua ohjaavat takaisin hakemistoon ('/') sen jälkeen, kun ne ovat suorittaneet omxplayerille lähetetyn komennon, joten meidän on luotava vain yksi index.html eikä mitään muuta. Käytän täällä killallia pysäytystoimintona, koska en löytänyt parempaa tapaa lähettää "stop" -komento omxplayerille. Jos tiedät paremman tavan tehdä tämä, haluaisin kuulla sen!

Laitetaan nyt index.html.

Vaihe 8: Verkkosivuston luominen

Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen
Verkkosivuston rakentaminen

Näitä kuvia käytin rakennuksessani, mutta voit tehdä itse. Ne kaikki on tallennettava staattiseen kansioon, jonka teimme aiemmin. Tässä tekemämme index.html -tiedoston on oltava mallikansiossa. Se on aika tärkeää, muuten mikään ei toimi. Tässä on minun index.html -koodini (tämä on jälleen yksinkertainen html, joten muokkaa sitä millä tahansa tavalla).

Koska Instructables ei salli minun lähettää raaka -HTML: ää, tässä on linkki tiedostoon sellaisena kuin se on Dropboxissani:

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

Mutta jos se joskus kuolee, HTML -tiedosto on vain hieno CSS ja yksinkertainen 2x2 -taulukko, jossa on nämä neljä kuvaketta painikkeina, joiden postiarvot ovat seuraavat:

muoto action = "/whitenoise" method = "post"

input src = "/static/whitenoise.png" value = "Valkoinen kohina"

Sen pitäisi olla melko helppo tehdä itsellesi.

Viimeinen vaihe on varmistaa, että webapp.py toimii käynnistyksen yhteydessä, tein tämän lisäämällä sen crontabiin. Joten kirjoita vielä kerran crontab -e ja lisää seuraava loppuun:

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

Käynnistä sitten pi uudelleen, osoita toisen koneen (puhelimesi) selain pi: n IP -osoitteeseen (parasta, jos voit tehdä tämän staattisen) ja katso, toimiiko se. Napsauta painikkeita ja katso, tuleeko melua.

Android -puhelimella voit lisätä verkkosivuston kirjanmerkkeihin aloitusnäyttöön, minkä tein tällä saadakseni sen näyttämään sovellukselta. Jos haluat saada sen näyttämään "ammattilaiselta", etsi tai luo sopiva.ico -tiedosto ja anna verkkosivustolle oma kuvake, joka näkyy puhelimesi aloitusnäytössä ja näyttää paljon enemmän sovellukselta. Paljon opetusohjelmia verkossa kuvakkeen (favicon) lisäämisestä verkkosivustoon.

Vaihe 9: Jätä kaikki koteloon

Jätä kaikki koteloon
Jätä kaikki koteloon
Jätä kaikki koteloon
Jätä kaikki koteloon
Jätä kaikki koteloon
Jätä kaikki koteloon

Nyt kun kaikki on testattu ja toimii, on aika laittaa kaikki koteloon.

Rakensin Raspberry Pi Zerolle erillisen kiinnityksen käyttämällä talon ympärillä olevaa muovijäämää. Porasin sitten joitain reikiä paneelikiinnitykseen tarkoitettuun mikro -USB: hen ja käytin joitain jalokivikauppia -tiedostoja neliöstä. Paneelin kiinnityskaapeli on hieman jäykkä, joten voin ostaa tulevaisuudessa suorakulmaisen sovittimen Pi: n mikro -USB -porttiin.

Leikkasin kotelon yläosasta pienen aukon kaiuttimen toistamiseksi poraamalla kaksi reikää ja yhdistämällä ne Dremeliin. Poraa sitten kannen reiät kaiutinkannen kiinnittämiseksi. Tämän kuvan ottamisen jälkeen menin takaisin ja tein vielä muutamia reikiä, koska melu oli todella loukussa kotelon sisällä. Asensin Blinktin käyttämällä tätä julistekittiä, koska siinä ei ole kiinnitysreikiä, mutta kitti näyttää pitävän hyvin, joten se onnistuu.

Vaihe 10: Se on siinä

Se siitä!
Se siitä!

Liitä se ja olet valmis. Tässä omani juoksee vasta kahdeksan jälkeen. Pi: n vihreä LED ei ole niin kirkas kuin tämä kuva saa sen näyttämään.

Muutamia muokkauksia, joita tein myöhemmin:

Lisäsin 4 sivua webapp.py- ja index.html -tiedostoihin. Nämä neljä ovat "punainen", "keltainen", "vihreä" ja "pois päältä". Aika itsestään selvää. Halusin mahdollisuuden vaihtaa sen vihreästä takaisin keltaiseksi, jos vaimo ja minä olimme erityisen väsyneitä emmekä halunneet olla vaivautuneita.

@app.route ('/punainen', metodit = ['POST']) def red (): os.system ("python ~/scripts/red.py") return redirect ('/')

Pohjimmiltaan neljä kertaa, suorittamalla neljä eri komentosarjaa ja sitten joitain muita hakemistopainikkeita, jotka kutsuvat näitä sivuja.

Toinen muutos, jonka jo huomasin, mutta porasin lisää reikiä ja laajensin kaiuttimen ympärillä olevaa aukkoa, koska melu ei päässyt kotelosta riittävän hyvin.

Jos teen muita muutoksia, palaan varmasti tänne ja luettelen ne.

Vaihe 11: Lisäys

Tämän rakentamisen jälkeen tajusin, että vaimoni ja minä jättämme molemmat puhelimemme usein alakertaan, kun laitamme lapsen nukkumaan tai nukkumaan. Joten lisäsin hetkellisen painikkeen fyysiseen nastaan 36 ja sisällytin seuraavan koodin (kutsuin sitä button.py) käynnistettäväksi rc.local: ssa:

#!/usr/bin/env python

tuoda RPi. GPIO GPIO: ksi tuontiaika tuonti os tuonti aliprosessi tuonti uudelleen GPIO.setmode (GPIO. BOARD) # Käytä fyysisen numerointimallin painiketta = 36 # Painike on kytketty fyysiseen nastaan 16 GPIO.setup (painike, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Tee painikkeesta tulo, Aktivoi Pull UP Resistor kun tosi: jos GPIO.input (painike) == 0: # Odota painikkeen painallusta returnprocess = False # Alun perin asetettu ääni pois päältä s = aliprosessi. ["ps", "ax"], stdout = aliprosessi. PIPE) x: lle s.stdout: if re.search ("mpg123", x): returnprocess = True if returnprocess == False: os.system ("mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/scripts/red.py ") else: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

Kuten näette, vaihdoin myös omxplayerista mpg123: een, koska se on paljon kevyempi ja helppokäyttöisempi.

Kuitenkin jostain syystä, kun laitoin tämän komentosarjan rc.localiin, se todellakin käynnistyy ilman ongelmia. Mutta ääni on todella hämmentynyt. Kun suoritan komentosarjan normaalisti, kitissä, tällaisia ongelmia ei ole. Minulla on aikamoinen vianetsintä, joten jos jollain on ideoita, kerro minulle! Kiitos.

Suositeltava: