Turinys:
- 1 žingsnis: dalių sąrašas
- 2 žingsnis: sudeginkite „Raspbian“ir prijunkite plokštes
- 3 veiksmas: reikiamos programinės įrangos diegimas
- 4 žingsnis: parašykite tam tikrą kodą ir išbandykite
- 5 veiksmas: pridėkite tuos scenarijus prie „Cron“
- 6 veiksmas: garsiakalbio „Phat“bandymas
- 7 veiksmas: nustatykite mažą tinklalapio serverį ir žiniatinklio programą
- 8 žingsnis: sukurkite svetainę
- 9 veiksmas: įterpkite viską į dėklą
- 10 žingsnis: viskas
- 11 žingsnis: papildymas
Video: Balto triukšmo naktinė lemputė: 11 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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
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
Š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ę
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ą
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
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:
„Pasidaryk pats“automatinė judesio jutiklio LED naktinė lemputė: 6 žingsniai (su nuotraukomis)
„Pasidaryk pats“automatinė judesio jutimo LED naktinė lemputė: Sveiki, vaikinai, kviečiame į dar vieną pamokomą dalyką, kuris visada padės jums kasdieniame gyvenime ir suteiks jums patogumo, kad jūsų gyvenimas būtų lengvas. Kartais tai gali būti gelbėtojas senatvės žmonėms, kuriems tenka stengtis atsikelti iš lovos
LED „Arduino“naktinė lemputė: 10 žingsnių
LED „Arduino“naktinė lemputė: Apie mano projektą: Tai mano LED „Arduino“naktinė lemputė. Tai yra mano projektas, aš sukūriau naktinę lemputę, naudodamas „Arduino“, ir pridedu popieriaus, kad jis atrodytų gražiai. Seku šviesos diodų kūrimo nuorodą: https://www.instructables.com/id/How-to-Blink-LED- Naudojant „Arduino“
„Arduino“įkrovimo įspėjimo naktinė lemputė: 11 žingsnių
„Arduino“įkrovimo įspėjimo naktinė lemputė: klasė ir pavadinimas: 9A „Vivian Ting“Įvadas: Įkrovos įspėjamoji lemputė yra dviejų skirtingų įrenginių derinys, sujungiantis įkrovimo įspėjamąjį įtaisą ir naktinį žibintą. Kadangi daugelį žmonių, kuriuos pažinojau savo aplinkoje, nerimauja p
Ledų naktinė lemputė: 5 žingsniai (su nuotraukomis)
Ledų naktinė lemputė: „Ledų naktinė lemputė“yra nešiojama lemputė, kuri įsižiebia ją pasiėmus, ir išsprendžia problemą, kai reikia surasti šviesos jungiklį arba įjungti pernelyg ryškią naktinio stalo lemputę. Išėmus ledų kūgį iš jo
Vaikų RGB LED žvaigždžių naktinė lemputė: 9 žingsniai (su nuotraukomis)
Vaikų RGB LED žvaigždžių naktinis apšvietimas: Man patinka kurti projektus savo vaikams, taip pat mėgstu kurti projektus naudojant RGB šviesos diodus, todėl sugalvojau savo vaikų kambariuose šviesą aptikti RGB žvaigždės formos naktinį žibintą. Naktinis žibintas gali aptikti, ar yra tamsoje, ir įjungti RGB šviesos diodus