Sisukord:

Valge müra öövalgus: 11 sammu (koos piltidega)
Valge müra öövalgus: 11 sammu (koos piltidega)

Video: Valge müra öövalgus: 11 sammu (koos piltidega)

Video: Valge müra öövalgus: 11 sammu (koos piltidega)
Video: Punastav Kaja Kallas valetab nii, et isegi saatejuht pidi märkuseid tegema 2024, Juuli
Anonim
Valge müra öövalgusti
Valge müra öövalgusti
Valge müra öövalgusti
Valge müra öövalgusti

See on projekt, mille tegin oma üheaastasele lapsele jõuludeks. Ausalt öeldes oli see mulle ja mu naisele mõistlik kingitus. See on valge müraga masin, mis suudab esitada mitmeid erinevaid helisid, mis on valitud veebiliidese kaudu, ning sisaldab ka tulesid, mis muudavad värvi vastavalt ajale (punased tuled tähendavad, et olete voodis, kollane tähendab, et saate oma toas mängida, ja roheline tähendab, et kõik on korras välja tulema). Kuna mu poeg on aja määramiseks liiga noor, tundus värvipõhine öölamp tõesti hea mõte.

See on tõesti lihtne projekt ja kuna ma olen juba koodi kirjutanud, on see raskusastmel võib -olla üks viiest. Kui teil on väikelapsed, kes teid liiga vara hommikul häirivad, siis soovite seda teha.

Samm: osade loend

Osade nimekiri
Osade nimekiri
Osade nimekiri
Osade nimekiri
Osade nimekiri
Osade nimekiri

1. Vaarika Pi Zero W

2. Mingi juhtum (ma kasutasin seda Amazonist)

3. Blinkt Pimoronilt

4. Pimoroni kõlar Phat (Võite kasutada ka mõnda muud odavate kõlaritega DAC -i)

Kõlarite phati kokkupanemiseks peab teil olema jootmise põhioskusi, tootelehelt leiate lingi samm-sammult juhistega, nii et te ei saa seda keerata.

5. [VALIKULINE] Paneelile kinnitatav mikro -USB -kaabel - firmalt Adafruit

6. mõned ühendusjuhtmed või džemprid

See on kõik!

2. samm: põletage Raspbian ja ühendage lauad

Põletage Raspbian ja ühendage lauad
Põletage Raspbian ja ühendage lauad

Selle ehituse jaoks kasutan Raspian Stretch lite'i. Nii et kirjutage see microSD -le mis tahes tööriistaga, mis teile sobib, ja seejärel käivitage pi. Kui vajate abi oma peavaba pi ühendamiseks oma kodu wifi -ga ühenduse loomiseks ja ssh -i lubamiseks, on veebis palju õpetusi, mis näitavad teile, kuidas seda teha, kuid peate ülejäänud aja jooksul veenduma, et olete seda teinud töötama.

Kasutades aadressi https://pinout.xyz, saate mõlemad tahvlid üles tõmmata ja nende saidi saidid kätte saada. Blinkti tahvlid vajavad ainult 4 ühendust ja Speaker Phat vajab 9 ühendust.

Lõpetamisel peaks see välja nägema nagu foto. Nüüd peame testima, kas kõik töötab.

Samm: vajaliku tarkvara installimine

Nüüd, kui oleme ühendatud, peame installima Blinkti ja Speaker Phati tahvlite käitamiseks vajaliku tarkvara. SSH pi sisse ja leiate end kodukataloogist. Sisestage järgmised:

curl https://get.pimoroni.com/blinkt | lööma

ja kui see on valmis, siis see:

curl -sS https://get.pimoroni.com/speakerphat | lööma

See paigaldab kõik vajaliku mõlema Pimoroni plaadi jaoks. Kui sisestate käsu ls, peaksite nägema kataloogi Pimoroni. Nüüd kirjutame natuke koodi ja katsetame Blinkti tahvlit.

Samm: mõne koodi kirjutamine ja selle testimine

Looge kataloog nimega "skriptid", tippides sisse mkdir skriptid ja me hoiame kõik, mida vajame, et seal töötada. Nii et cd -skriptid, et end sellesse kausta siseneda.

Nüüd tahame öösel punaseid hämaraid tulesid, vaikset mänguaega kollaseid tulesid ja veidi heledamaid rohelisi tulesid, kui on hea välja tulla. Minu jaoks tahtsin punaseid tulesid kella 19.30–6.15 ning kell 6:15 muutuvad need tunniks kollaseks ja siis kell 7:15 lõpuks roheliseks. Tahtsin ka, et nad lülituksid välja kell 8.30, kui kedagi toas tõenäoliselt polnud.

Selleks on kaks võimalust. Esimene (viis, kuidas ma seda valisin) on nelja erineva skriptiga, mis käivitatakse cron -töödelt. Teine viis seda teha on üks skript, mis sisaldab ajafunktsiooni, mis käivitatakse käivitamisel. Ma tegelikult kirjutasin stsenaariumi kõigepealt nii, et see oleks nii, kuid see tundus vähem tõhus kui cronil põhinev, nii et lülitasin selle üles. Kui soovite "ühe skripti" meetodit, andke mulle sellest teada ja ma saan selle kommentaaridesse postitada.

Niisiis, alustame punase skriptiga. Tippige touch red.py, seejärel nano red.py. Seejärel sisestage järgmine kood.

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (vale) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0) #sets pikslid 3 ja 4 kuni punase blinkt.show ()

Tehke sama ka kollase.py ja rohelise.py puhul.

kollane.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (vale) 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 pikslid 2, 3, 4 ja 5 kuni kollane blinkt.show ()

green.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (vale) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #määrab kõik pikslid roheliseks blinkt.show ()

Ja lõpuks tahame, et skript tühjendaks Blinkti, kui seda pole vaja (lightsout.py):

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (tõsi) blinkt.set_brightness (0,1) blinkt.set_all (0, 0, 0) #lülitab kõik pikslid välja blinkt.show ()

See on kõik. Tüübi python red.py testimiseks vaadake, kas kaks keskmist pikslit põlevad punaselt. Seejärel tippige selle kustutamiseks python lightsout.py. See on kõik! Järgmisena peame need seadistama vahekaardile cron, et need töötaksid siis, kui me tahame.

Samm: nende skriptide lisamine Cronisse

SSH terminalis sisestage tüüp crontab -e

kerige faili lõpuni ja lisage järgmised read:

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

See paneb skriptid töötama eelmises etapis kirjeldatud ajal, jätkake ja kohandage neid vastavalt oma vajadustele.

See on öövalguse jaoks! Super lihtne. Nüüd liigume selle ehitise valge müra osa seadistamise juurde.

6. toiming: kõlarifatri testimine

Lihtsaim viis (minu arvates) Speaker Phat'i testimiseks on sox -i installimine ja käsurealt mõne staatika käivitamine.

sudo apt-get install sox

Kui see on installitud, võime proovida mõningaid näidiskäsklusi. See peaks kõlama nagu lained.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapets amood 0,1 30

Kui lõõgastav! Ctrl+c peatab selle. Aga, mis see on? Kõlari Phat näol on hõõguv hunnik LED -e ja see ei saa meie Blinkti tulesid häirida. Nii et lülitame need välja.

Selleks peame muutma faili /etc/asound.conf ja eemaldama sõidukiüksuse mõõturi pistikprogrammi, nii et see ei ürita isegi LED -e juhtida. Ma tegin seda lihtsalt ümber nimetades. Sisestage see käsk mv /etc/asound.conf /etc/asound.conf.bak Leidsin selle natuke guugeldades, seega võib olla parem viis.

Sox töötab ja see on suurepärane, kuid ma kavatsesin selle masina valge müra jaoks kasutada mõningaid silmuspõhiseid MP3-sid, seega vajasin teistsugust mängijat, eelistatavalt midagi väga kerget. mpg123 on see, millele ma leppisin. Installige see kohe sudo apt-get install mpg123 abil

Ok, nüüd, kui me teame, et Speaker Phat töötab ootuspäraselt, on aeg liidese ja vastavate skriptide loomiseks.

Samm: väikese veebiserveri ja veebirakenduse seadistamine

Flask on Pythonis kirjutatud mikroveebiraamistik. See pakub kõiki funktsioone, mida vajame veebiserverile (mis hakkab toimima rakendusena). Installige see järgmise käsuga:

pip3 paigalduskolb

See võtab natuke aega, nii et oodake. Kui see on lõpule jõudnud, peame üles ehitama kaustad, millest peame veebisaidi käitamisel välja võtma, ja neil kaustadel on konkreetsed nimed. Alustame veebisaidi majutamise kohaga. Tehke kodukataloogist uus kataloog nimega www koos mkdir www. Nüüd cd www sellesse kataloogi. Siin on vaja veel kahte kataloogi, millest ühte nimetatakse staatiliseks ja teist mallideks.

Meil on vaja ka kohta, kuhu panna oma silmusalased MP3 -d. Tegin selleks kodukataloogi kataloogi nimega "helid". Leidsin oma MP3 -d, otsides Google'ist silmuseid, valgeid MP3 -sid. Palju vabu kohti, kust tõmmata. Failide üleslaadimiseks kasutasin WinSCP -d.

Võimalik, et soovite neid testida alloleva käsuga omxplayer, mängides osaga --vol -###, et valida oma toa jaoks õige helitugevus. Jällegi peatab Ctrl+C mängija.

Nüüd, kui meil on kõik need paigas, kirjutame mõne pythoni, et veebiserver püsti tõusta, kui pi käivitub. Minge tagasi kataloogi www ja käivitage uus fail nimega webapp.py (nano webapp.py) ja sisestage järgmine kood

webbapp.py:

#!/usr/bin/python

kolvi impordist Kolb, render_template, taotlus, ümbersuunamine import os app = Kolb (_ 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/sounds/rain.mp3") return redirect ('/') @app.route ('/waves', metodes = ['POST']) def lained (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") tagastab ümbersuunamise ('/') @app.route ('/whitenoise', metoodika = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") return ümbersuunamine (' /') @app.route ('/stop ', metoodika = [' POST ']) def stop (): os.system ("killall mpg123") tagastab ümbersuunamise ('/'), kui _name_ ==' _main_ ': app.run (silumine = tõsi, host = '0.0.0.0')

Nagu näete, on sellel veebirakendusel 5 lehte, üks indeksi jaoks, 3 kolme erineva heli jaoks (laine, vihm ja valge) ja veel üks peatamiseks. Kõik neli indeksivälist lehte suunavad tagasi indeksisse ('/') pärast seda, kui nad on täitnud omxplayerile saadetud käsu, seega peame looma ainult ühe indeksi.html ja mitte midagi muud. Ma kasutan siin killalli peatamisfunktsioonina, sest ma ei suutnud leida paremat viisi "stop" käsu saatmiseks omxplayerile. Kui teate mõnda paremat viisi, kuidas seda teha, tahaksin seda kuulda!

Nüüd paneme kokku indeksi.html.

8. samm: veebisaidi loomine

Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine

Need on pildid, mida ma oma ehituse jaoks kasutasin, kuid tehke julgelt oma. Kõik need tuleb salvestada staatilisse kausta, mille me varem tegime. Fail index.html, mille me siin teeme, peab olema mallide kaustas. See on üsna oluline, vastasel juhul ei tööta ükski neist. Siin on minu index.html kood (jällegi on see lihtsalt html, nii et muutke seda mis tahes viisil, mis teile sobib).

Kuna Instructables ei luba mul toorest HTML -i postitada, on siin link minu Dropboxi failile:

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

Kuid kui see kunagi sureb, on HTML -fail vaid mõni uhke CSS ja lihtne 2x2 -tabel, millel on need 4 ikooni nuppudena, millel on postitusväärtused:

vorm action = "/whitenoise" method = "post"

input src = "/static/whitenoise.png" value = "Valge müra"

Selle valmistamine peaks olema üsna lihtne.

Viimane samm on veenduda, et webapp.py töötab käivitamisel, jällegi tegin seda, lisades selle crontabi. Nii et tippige uuesti crontab -e ja lisage lõppu järgmine:

@taaskäivitage python3 /home/pi/www/webapp.py

Seejärel taaskäivitage pi, suunake teise masina (teie telefoni) brauser pi aadressile (parim, kui saate selle staatiliseks muuta) ja vaadake, kas see töötas. Klõpsake nuppe ja vaadake, kas saate müra.

Android -telefonis saate veebisaidi oma avakuvale järjehoidjatesse lisada, mida ma tegin, et see näeks välja ja tunduks nagu rakendus. Kui soovite, et see näeks tõeliselt "profina" välja, otsige või looge sobiv.ico -fail ja andke veebisaidile oma ikoon, mis kuvatakse teie telefoni avakuval ja näeb välja palju rohkem nagu rakendus. Internetis palju õpetusi, kuidas veebisaidile ikooni (favicon) lisada.

9. samm: pange kõik ümbrisesse

Pane kõik ümbrisesse
Pane kõik ümbrisesse
Pane kõik ümbrisesse
Pane kõik ümbrisesse
Pane kõik ümbrisesse
Pane kõik ümbrisesse

Nüüd, kui kõik on testitud ja töötab, on aeg see kõik ümbrisesse toppida.

Ehitasin Raspberry Pi Zero jaoks eraldiseisva kinnituse, kasutades maja ümber olnud plastikust jäänuseid. Seejärel puurisin mõned augud paneelikinnituse mikro -USB -le ja mõne juveliirifaili abil auku välja. Paneeli kinnituskaabel on natuke jäik, nii et võin kunagi tulevikus osta Pi mikro -USB -pordi jaoks täisnurga adapteri.

Lõikasin korpuse ülaossa väikese ava, et kõlar saaks läbi mängida, puurides kaks auku ja ühendades need Dremeliga. Seejärel puurige kaane aukud kõlaripatti kinnitamiseks. Mis see väärt on, läksin pärast selle foto tegemist tagasi ja tegin veel mõned augud, sest müra jäi korpuse sisse tõesti kinni. Paigaldasin Blinkti, kasutades seda plakatikittematerjali, sest asjal ei ole kinnitusavasid, kuid pahtel tundub hästi hoidev, nii et läheb.

Samm: see on kõik

See on kõik!
See on kõik!

Ühendage see ja olete valmis. Siin minu oma jookseb veidi pärast kella kaheksat õhtul. Pii roheline LED pole nii hele, kui see foto paistab.

Mõned hiljem tehtud muudatused:

Lisasin failidele webapp.py ja index.html veel 4 lehte. Need neli on "punane", "kollane", "roheline" ja "väljas". Üsna iseenesestmõistetav. Ma tahtsin võimalust muuta see rohelisest kollaseks, kui me naisega tundsime end eriti väsinuna ja ei tahtnud end häirida.

@app.route ('/punane', meetodid = ['POST']) def red (): os.system ("python ~/scripts/red.py") tagastab ümbersuunamise ('/')

Põhimõtteliselt, et 4 korda, käivitades 4 erinevat skripti, seejärel veel mõned nupud indeksis, mis neid lehti kutsuvad.

Teine muudatus, mida ma juba märkasin, puurisin veel mõned augud ja laiendasin kõlari ümber olemasolevat ava, sest müra ei pääsenud korpusest piisavalt hästi välja.

Kui teen täiendavaid muudatusi, tulen kindlasti siia tagasi ja loetlen need.

Samm 11: Lisand

Pärast selle ehitamist mõistsin, et jätsime mõlemad koos abikaasaga sageli oma telefonid alumisele korrusele, kui paneme lapse voodisse või uinakule. Nii lisasin füüsilisele tihvtile 36 hetkelise nupu ja lisasin rc.local käivitamisel järgmise koodi (nimetasin seda nupuks.py):

#!/usr/bin/env python

RPi. GPIO importimine GPIO -na importimise aeg importimine os import alamprotsess importimine uuesti GPIO.setmode (GPIO. BOARD) # Kasuta füüsilise tihvti nummerdamise skeemi nuppu = 36 # Nupp on ühendatud füüsilise tihvtiga 16 GPIO.setup (nupp, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Muutke nupp sisendiks, aktiveerige Tõmbe takisti, kui see on tõene: kui GPIO.input (nupp) == 0: # Oodake nupuvajutust returnprocess = False # Algselt seadistatud heli väljalülitamiseks s = alamprotsess. Ava (["ps", "kirves"], stdout = alamprotsess. PIPE) x jaoks 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")

Nagu näete, läksin ka omxplayerist üle mpg123 -le, kuna see on palju kergem ja lihtsam kasutada.

Siiski, mingil põhjusel, kui panen selle skripti rc.local -i, töötab see tõepoolest käivitamisel ilma probleemideta. Kuid heli on tõesti segane. Kui käivitan skripti tavapäraselt, pahtliga, pole selliseid probleeme. Mul on selle probleemi lahendamisel aega, nii et kui kellelgi on ideid, palun andke mulle sellest teada! Tänan.

Soovitan: