Sisukord:
- Samm: osade loend
- 2. samm: põletage Raspbian ja ühendage lauad
- Samm: vajaliku tarkvara installimine
- Samm: mõne koodi kirjutamine ja selle testimine
- Samm: nende skriptide lisamine Cronisse
- 6. toiming: kõlarifatri testimine
- Samm: väikese veebiserveri ja veebirakenduse seadistamine
- 8. samm: veebisaidi loomine
- 9. samm: pange kõik ümbrisesse
- Samm: see on kõik
- Samm 11: Lisand
Video: Valge müra öövalgus: 11 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
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
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
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
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
Ü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:
Puhh Karu ja sõprade öövalgus: 5 sammu (koos piltidega)
Puhh Karu ja sõprade öövalgusti: järgmine öövalgus loodi pinnale paigaldatud ATTiny85 abil. Sellel on kaks nuppu, üks selle sisse- ja väljalülitamiseks ning teine selle peatamiseks valitud valgustusjärjestuses. Paus ei ole tõeline paus, vaid katkestab lihtsalt ühenduse
Steampunked Dream Guardian öövalgus: 9 sammu (koos piltidega)
Steampunked Dream Guardian Night Light: Tere kõigile Minu lähedane sõber palus mul paar nädalat tagasi oma sõbrannale kihluskingituse (muidugi peale sõrmuse!) Teha. Mõlemad on nagu mina, vabatahtlikud tuletõrjujad ja armastavad Steampunk Objekte. Mu sõber mõtles st
Valge tamme näoga võimsad passiivkõlarid: 16 sammu (koos piltidega)
Valge tamme näoga võimsad passiivkõlarid: see on minu kolmas kõlariprojekt ja täiesti erinev eelmistest! Seekord valmistan oma heliruumi mõned suured, võimsad ja kena välimusega monitorid! Mul on Instagramis veel mõned projektid, palun vaadake neid! Minu otsingud
Valge küüliku Nixie kell: 7 sammu (koos piltidega)
Valge küüliku Nixie kell: Tere kõigile Nagu te minu eelnevatest postitustest näete, on mul lummatud Nixie torud, nende ajalugu, nende tööpõhimõte ja nende ainulaadne välimus ja valgus, mul oli õnne pääseda aN Epilogi laserlõikur selle projekti jaoks ja ei
EyeRobot - valge robotkepp: 10 sammu (koos piltidega)
EyeRobot - valge robotkepp: Kokkuvõte: iRobot Roomba Create'i abil olen prototüüpinud seadme nimega eyeRobot. See juhatab pimedad ja nägemispuudega kasutajad läbi segase ja asustatud keskkonna, kasutades Roomba baasi traditsioonilise lihtsuse saavutamiseks