Turinys:

Balto triukšmo naktinė lemputė: 11 žingsnių (su nuotraukomis)
Balto triukšmo naktinė lemputė: 11 žingsnių (su nuotraukomis)

Video: Balto triukšmo naktinė lemputė: 11 žingsnių (su nuotraukomis)

Video: Balto triukšmo naktinė lemputė: 11 žingsnių (su nuotraukomis)
Video: 20 SCARY GHOST Videos That'll Chill You To The Bone 2024, Lapkritis
Anonim
Balto triukšmo naktinė lemputė
Balto triukšmo naktinė lemputė
Balto triukšmo naktinė lemputė
Balto triukšmo naktinė lemputė

Tai projektas, kurį Kalėdų proga sukūriau savo vienerių metų vaikui. Sąžiningai, tai buvo sveiko proto dovana man ir mano žmonai. Tai baltojo triukšmo mašina, galinti atkurti kelis skirtingus garsus, pasirinktus naudojant žiniatinklio sąsają, taip pat turi lemputes, kurios keičia spalvą pagal laiką (raudonos lemputės reiškia būti lovoje, geltona reiškia, kad galite žaisti savo kambaryje, o žalia - viskas gerai išeiti). Kadangi mano sūnus yra per mažas, kad galėtų pasakyti laiką, spalvota naktinė lemputė atrodė tikrai gera idėja.

Tai tikrai lengvas projektas, ir kadangi aš jau parašiau kodą, tai gali būti 1 iš 5 pagal sunkumų skalę. Jei turite mažų vaikų, kurie jus vargina per anksti ryte, norėsite tai padaryti.

1 žingsnis: dalių sąrašas

Dalių sąrašas
Dalių sąrašas
Dalių sąrašas
Dalių sąrašas
Dalių sąrašas
Dalių sąrašas

1. Raspberry Pi Zero W

2. Kažkoks atvejis (aš naudoju šį iš „Amazon“)

3. Blinkt iš Pimoroni

4. „Pimoroni“garsiakalbis Phat (taip pat galite naudoti kitą DAC su pigiais garsiakalbiais)

Norėdami surinkti garsiakalbio „phat“, turėsite turėti tam tikrų pagrindinių litavimo įgūdžių, yra nuoroda su žingsnis po žingsnio instrukcijomis iš produkto puslapio, todėl negalite jo sugadinti.

5. [PASIRENKAMA] Prie skydo tvirtinamas mikro USB kabelis - iš „Adafruit“

6. kai kurie jungiamieji laidai ar trumpikliai

Viskas!

2 žingsnis: sudeginkite „Raspbian“ir prijunkite plokštes

Sudeginkite Raspbian ir prijunkite lentas
Sudeginkite Raspbian ir prijunkite lentas

Šiam kūriniui naudoju „Raspian Stretch lite“. Taigi įrašykite jį į „microSD“naudodami bet kurį jums tinkantį įrankį, tada įjunkite „pi“. Jei jums reikia pagalbos, kad prisijungtumėte prie namų belaidžio tinklo ir įgalintumėte „ssh“be galvos, pilyje yra daug vadovėlių, kurie gali parodyti, kaip tai padaryti, tačiau turėsite įsitikinti, kad tai padarėte visą likusį laiką dirbti.

Naudodami https://pinout.xyz galite ištraukti abi lentas ir gauti jų kontaktus šioje svetainėje. „Blinkt“plokštėms reikia tik 4 jungčių, o „Speaker Phat“- 9.

Baigęs jis turėtų atrodyti kaip nuotrauka. Dabar turime patikrinti, ar viskas veikia.

3 veiksmas: reikiamos programinės įrangos diegimas

Dabar, kai esame prisijungę, turėsime įdiegti programinę įrangą, reikalingą „Blinkt“ir „Speaker Phat“plokštėms paleisti. Įveskite SSH į pi, ir atsidursite namų kataloge. Įveskite:

garbanoti https://get.pimoroni.com/blinkt | mušti

o kai tai bus baigta, tai:

curl -sS https://get.pimoroni.com/speakerphat | mušti

Tai įdiegs viską, ko reikia abiem „Pimoroni“plokštėms. Jei įvesite komandą ls, turėtumėte pamatyti Pimoroni katalogą. Taigi dabar parašykime kodą ir išbandykime „Blinkt“plokštę.

4 žingsnis: parašykite tam tikrą kodą ir išbandykite

Sukurkite katalogą, pavadintą „scenarijai“, įvesdami „mkdir“scenarijus ir ten išsaugosime viską, ko reikia, kad galėtume paleisti. Taigi CD scenarijus, kad patektumėte į tą aplanką.

Dabar norime raudonos silpnos šviesos nakties metu, geltonos silpnos šviesos ramiam žaidimo laikui ir šiek tiek ryškesnės žalios šviesos, kai gerai išeiti. Man norėjosi raudonų žibintų nuo 19:30 iki 6:15, o 6:15 valandą jie geltonavo valandą, o galiausiai žali 7:15. Aš taip pat norėjau, kad jie išsijungtų 8.30 val., Kai greičiausiai niekas nebūtų kambaryje.

Yra du būdai tai padaryti. Pirmasis (taip aš pasirinkau tai padaryti) yra su keturiais skirtingais scenarijais, paleisti iš „cron“darbų. Kitas būdas tai padaryti yra vienas scenarijus, apimantis laiko funkciją, kuri paleidžiama paleidžiant. Aš iš tikrųjų parašiau scenarijų, kad tai padarytų pirmiausia, bet tai atrodė mažiau veiksminga nei tai padaryti remiantis „cron“, todėl pakeičiau. Jei norite „vieno scenarijaus“metodo, praneškite man ir aš galiu jį paskelbti komentaruose.

Taigi, pradėkime nuo raudonojo scenarijaus. Įveskite touch red.py, tada nano red.py. Tada įveskite šį kodą.

#!/usr/bin/env python

importuoti blinkt blinkt.set_clear_on_exit (klaidinga) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0) #sets pixels 3 and 4 to red blinkt.show ()

Tą patį padarykite su geltonu.py ir žaliu.py.

geltona.py:

#!/usr/bin/env python

importuoti blinkt blinkt.set_clear_on_exit (klaidinga) 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 2, 3, 4 ir 5 pikselių iki geltonos spalvos blinkt.show ()

green.py:

#!/usr/bin/env python

importuoti blinkt blinkt.set_clear_on_exit (klaidinga) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #nustato visus taškus į žalią blinkt.show ()

Galiausiai norime, kad scenarijus išvalytų „Blinkt“, kai to nereikia (lightsout.py):

#!/usr/bin/env python

importuoti blinkt blinkt.set_clear_on_exit (tiesa) blinkt.set_brightness (0,1) blinkt.set_all (0, 0, 0) #nustato visus taškus išjungti blinkt.show ()

Viskas. Norėdami išbandyti tipą python red.py ir pažiūrėkite, ar du viduriniai pikseliai šviečia raudonai. Tada įveskite python lightsout.py, kad jį išvalytumėte. Viskas! Toliau turėsime juos nustatyti skirtuke „cron“, kad jie veiktų tada, kai norime.

5 veiksmas: pridėkite tuos scenarijus prie „Cron“

SSH terminale įveskite crontab -e

slinkite iki failo pabaigos ir pridėkite šias eilutes:

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

Tai nustato scenarijus, kad jie būtų vykdomi ankstesniame žingsnyje aprašytu laiku, eikite į priekį ir pakoreguokite juos pagal savo poreikius.

Štai ir naktinei šviesai! Super lengva. Dabar pereikime prie šios konstrukcijos „White Noise“dalies nustatymo.

6 veiksmas: garsiakalbio „Phat“bandymas

Lengviausias būdas (mano nuomone) išbandyti „Speaker Phat“yra įdiegti „sox“ir paleisti tam tikrą statiką iš komandinės eilutės.

sudo apt-get install sox

Kai tai bus įdiegta, galime išbandyti keletą pavyzdinių atkūrimo komandų. Tai turėtų skambėti kaip bangos.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapecijos amodas 0,1 30

Kaip atpalaiduoja! Ctrl+c sustabdys. Bet, kas tai? „Speaker Phat“apšviečia daugybę šviesos diodų, ir mes negalime trukdyti mūsų „Blinkt“žibintams. Taigi išjunkime juos.

Norėdami tai padaryti, turėsime modifikuoti failą /etc/asound.conf ir pašalinti VU skaitiklio papildinį, kad jis net nebandytų įjungti šviesos diodų. Aš tai padariau tiesiog pervadindamas. Įveskite šią komandą mv /etc/asound.conf /etc/asound.conf.bak Radau tai šiek tiek „Google“, todėl gali būti geresnis būdas.

„Sox“veikia, ir tai puiku, bet aš planavau naudoti kai kuriuos kilpinius MP3 failus šios mašinos baltojo triukšmo daliai, todėl man reikėjo kito grotuvo, pageidautina kažko tikrai lengvo. mpg123 yra tai, ką aš nusprendžiau. Įdiekite tai dabar naudodami sudo apt-get install mpg123

Gerai, dabar, kai žinome, kad garsiakalbis „Phat“veikia kaip tikėtasi, laikas sukurti sąsają ir atitinkamus scenarijus.

7 veiksmas: nustatykite mažą tinklalapio serverį ir žiniatinklio programą

Kolba yra mikro žiniatinklio sistema, parašyta „Python“. Tai suteikia visas funkcijas, kurių mums reikia žiniatinklio serveriui (kuris veiks kaip programa). Įdiekite ją naudodami šią komandą:

pip3 diegimo kolba

Tai užtruks šiek tiek laiko, todėl palaukite. Kai tai bus baigta, turėsime sukurti aplankus, iš kurių turėsime ištraukti svetainę, ir šie aplankai turi konkrečius pavadinimus. Pradėkime nuo svetainės talpinimo vietos. Iš namų katalogo sukurkite naują katalogą pavadinimu www su mkdir www. Dabar cd www į tą katalogą. Čia mums reikia dar dviejų katalogų, kurių vienas vadinamas statiniu, o kitas - šablonais.

Mums taip pat reikia vietos, kur įdėti kilpinius MP3. Namų kataloge sukūriau katalogą pavadinimu „garsai“. Radau savo MP3 failus „Google“ieškodamas kilpinių baltos spalvos MP3. Daug laisvų vietų, iš kurių galima ištraukti. Failams įkelti naudoju „WinSCP“.

Galbūt norėsite juos išbandyti naudodami žemiau esančią komandą „omxplayer“, žaisdami su --vol -### dalimi, kad pasirinktumėte savo kambariui tinkamą garso lygį. Vėlgi, „Ctrl“+C sustabdys žaidėją.

Dabar, kai turime visus tuos, parašykime „python“, kad atsistotų žiniatinklio serveris, kai „pi“pradės veikti. Grįžkite į www katalogą ir paleiskite naują failą, vadinamą webapp.py (nano webapp.py), ir įveskite šį kodą

webbapp.py:

#!/usr/bin/python

iš kolbos importavimo Kolba, render_template, užklausa, peradresavimas importas os app = Kolba (_ name_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain', metodai = ['POST']) def lietus (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect ('/') @app.route ('/bangas', metodai = ['POST']) def bangos (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") grąžina peradresavimą ('/') @app.route ('/whitenoise', metodai = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") return redirect (' /') @app.route ('/stop ', metodai = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')

Kaip matote, šioje žiniatinklio programoje bus 5 puslapiai, vienas skirtas indeksui, 3 - 3 skirtingiems garsams (bangos, lietus ir baltas garsas) ir dar 1 - sustabdymui. Visi 4 ne indekso puslapiai, įvykdę komandą, išsiųstą „omxplayer“, nukreipia atgal į indeksą („/“), todėl mums reikia sukurti tik vieną index.html ir nieko kito. Čia naudoju „killall“kaip sustabdymo funkciją, nes neradau geresnio būdo siųsti „stop“komandą „omxplayer“. Jei žinote geresnį būdą tai padaryti, aš norėčiau tai išgirsti!

Dabar sudėkime index.html.

8 žingsnis: sukurkite svetainę

Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas

Tai yra vaizdai, kuriuos naudoju kurdamas, bet drąsiai sukurkite savo. Visi jie turi būti išsaugoti statiniame aplanke, kurį sukūrėme anksčiau. Failas index.html, kurį ketiname sukurti, turi būti šablonų aplanke. Tai gana svarbu, kitaip niekas neveiks. Čia yra mano index.html kodas (vėlgi, tai tik paprastas html, todėl pakeiskite jį bet kokiu jums tinkamu būdu).

Kadangi „Instructables“neleidžia man skelbti neapdoroto HTML, čia yra nuoroda į failą, esantį mano „Dropbox“:

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

Bet jei tai kada nors miršta, HTML failas yra tik išgalvotas CSS ir paprasta 2x2 lentelė su tomis 4 piktogramomis kaip mygtukai su įrašų reikšmėmis:

form action = "/whitenoise" metodas = "post"

input src = "/static/whitenoise.png" value = "Baltas triukšmas"

Turėtų būti gana lengva pasigaminti tokį.

Paskutinis žingsnis yra įsitikinti, kad paleidžiant veikia „webapp.py“, dar kartą tai padariau pridėdamas jį prie „crontab“. Taigi dar kartą įveskite crontab -e ir pabaigoje pridėkite:

@iš naujo paleiskite python3 /home/pi/www/webapp.py

Tada iš naujo paleiskite „pi“, nukreipkite naršyklę kitame kompiuteryje (savo telefone) į „pi“IP (geriausia, jei galite tai padaryti statiškai) ir pažiūrėkite, ar jis veikė. Spustelėkite mygtukus ir pažiūrėkite, ar netriukšmaujate.

„Android“telefone galite pažymėti svetainę prie pagrindinio ekrano, ką aš padariau, kad ji atrodytų ir jaustųsi kaip programa. Jei norite, kad tai atrodytų „profesionaliai“, suraskite arba sukurkite tinkamą.ico failą ir suteikite svetainei savo piktogramą, kuri bus rodoma telefono pagrindiniame ekrane ir atrodys daug labiau kaip programa. Daug pamokų internete, kaip pridėti piktogramą (favicon) prie svetainės.

9 veiksmas: įterpkite viską į dėklą

Įdėkite viską į dėklą
Įdėkite viską į dėklą
Įdėkite viską į dėklą
Įdėkite viską į dėklą
Įdėkite viską į dėklą
Įdėkite viską į dėklą

Dabar, kai viskas buvo išbandyta ir veikia, laikas viską įkišti į dėklą.

Aš pastatiau „Raspberry Pi Zero“laikiklį, naudodamas likusį plastiką, kurį turėjau aplink namą. Tada aš išgręžiau keletą skylių, skirtų skydo laikikliui „micro USB“, ir naudodamas kai kuriuos juvelyrų failus pašalinau skylę. Plokštės tvirtinimo kabelis yra šiek tiek standus, todėl galbūt ateityje nusipirksiu stačiojo kampo adapterį „Pi“mikro USB prievadui.

Korpuso viršuje išpjoviau nedidelę angą, kad garsiakalbis galėtų žaisti, išgręždamas dvi skyles ir sujungdamas jas su „Dremel“. Tada gręžkite skyles dangtelyje, kad pritvirtintumėte garsiakalbio dangtelį. Ką verta, nufotografavau šią nuotrauką ir padariau dar keletą skylių, nes triukšmas tikrai buvo įstrigęs dėklo viduje. Aš sumontavau „Blinkt“naudodami tą plakato glaistymo medžiagą, nes daiktas neturi jokių tvirtinimo skylių, tačiau atrodo, kad glaistas gerai laikosi, todėl tai padarys.

10 žingsnis: viskas

Viskas!
Viskas!

Prijunkite ir baigsite. Štai mano veikia tik po 20 val. Žalias šviesos diodas ant paties pi nėra toks ryškus, kaip atrodo šioje nuotraukoje.

Keletas mano atliktų pakeitimų:

Prie failų webapp.py ir index.html pridėjau dar 4 puslapius. Tie 4 yra „raudoni“, „geltoni“, „žali“ir „išjungti“. Gana savaime suprantamas. Norėjau, kad tai būtų galima iš žalios spalvos pakeisti į geltoną, jei mes su žmona jaučiame papildomą nuovargį ir nenorime, kad tai trukdytų.

@app.route ('/raudona', metodai = ['POST']) def red (): os.system ("python ~/scripts/red.py") grąžina peradresavimą ('/')

Iš esmės tai keturis kartus, paleidus 4 skirtingus scenarijus, tada dar keletą rodyklės mygtukų, kurie šaukia tuos puslapius.

Kitas pakeitimas, kurį jau pastebėjau, bet aš išgręžiau dar keletą skylių ir išplėtiau esamą angą aplink garsiakalbį, nes triukšmas nepakankamai gerai pašalino gaubtą.

Jei darysiu kokių nors papildomų pakeitimų, būtinai grįšiu čia ir juos išvardinsiu.

11 žingsnis: papildymas

Sukūręs tai supratau, kad abu su žmona dažnai paliekame telefonus apačioje, kai paguldome vaiką miegoti ar miegoti. Taigi prie fizinio kaiščio 36 pridėjau momentinį mygtuką ir įtraukiau šį kodą (aš jį pavadinau button.py), kad paleistumėte paleisdamas „rc.local“:

#!/usr/bin/env python

importuoti RPi. GPIO kaip GPIO importo laikas importuoti os importuoti papildomą procesą importuoti iš naujo GPIO.setmode (GPIO. BOARD) # Naudoti fizinės kaiščių numeravimo schemos mygtuką = 36 # Mygtukas prijungtas prie 16 fizinio kaiščio GPIO.setup (mygtukas, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Įveskite mygtuką, suaktyvinkite „Pull UP“rezistorių, kol yra tiesa: jei GPIO.input (mygtukas) == 0: # Palaukite, kol mygtukas bus paspaustas returnprocess = False # Iš pradžių nustatyta, kad garsas išjungtas s = subprocess. Popen (["ps", "ax"], stdout = subprocess. PIPE) x in 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")

Kaip matote, aš taip pat perėjau į „mpg123“iš „omxplayer“, nes jis yra daug lengvesnis ir paprastesnis naudoti.

Tačiau kažkodėl, kai įdėjau šį scenarijų į rc.local, jis iš tikrųjų veikia paleidžiant be jokių problemų. Bet garsas išties labai neramus. Kai scenarijų paleidžiu kaip įprasta, glaistai, tokių problemų nėra. Aš turiu laiko, kai reikia išspręsti šią problemą, todėl jei kas nors turi idėjų, praneškite man! Dėkoju.

Rekomenduojamas: