Sadržaj:
- Korak 1: Lista dijelova
- Korak 2: Zapalite Raspbian i spojite ploče
- Korak 3: Instaliranje potrebnog softvera
- Korak 4: Pisanje nekog koda i njegovo testiranje
- Korak 5: Dodavanje tih skripti u Cron
- Korak 6: Testiranje zvučnika Phat
- Korak 7: Postavljanje malog web poslužitelja i Webappa
- Korak 8: Izrada web stranice
- Korak 9: Sve spojite u futrolu
- Korak 10: To je to
- Korak 11: Dodatak
Video: Noćno svjetlo s bijelom bukom: 11 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Ovo je projekt koji sam napravio za svoje jednogodišnje dijete za Božić. Iskreno, to je bio zdrav razum za mene i moju ženu. To je mašina za bijelu buku koja može reproducirati više različitih zvukova odabranih putem web sučelja, a također uključuje svjetla koja mijenjaju boju ovisno o vremenu (crveno svjetlo znači biti u krevetu, žuto znači da se možete igrati u svojoj sobi, a zeleno znači da je u redu izaći). Budući da je moj sin premlad da bi mjerio vrijeme, noćno svjetlo u boji činilo se kao zaista dobra ideja.
To je zaista jednostavan projekt, a budući da sam već napisao kod, možda je 1 od 5 na ljestvici težine. Ako imate malu djecu koja vam smetaju prerano ujutro, poželjet ćete je napraviti.
Korak 1: Lista dijelova
1. Raspberry Pi Zero W
2. Neka vrsta futrole (koristila sam ovu sa Amazona)
3. Blinkt iz Pimoronija
4. Zvučnik Phat iz Pimoronija (Možete koristiti i neki drugi DAC sa jeftinim zvučnicima)
Morat ćete imati neke osnovne vještine lemljenja za sastavljanje zvučnika, postoji veza sa korak-po-korak uputama sa stranice proizvoda, tako da to ne možete zeznuti.
5. [OPCIONALNO] Mikro USB kabl za montiranje na ploču - od Adafruit -a
6. neke spojne žice ili kratkospojnike
To je to!
Korak 2: Zapalite Raspbian i spojite ploče
Za ovu verziju koristim Raspian Stretch lite. Pa narežite to na microSD s bilo kojim alatom koji vam odgovara, a zatim pokrenite pi. Ako vam je potrebna pomoć pri povezivanju pi bez glave za povezivanje na WiFi vaše kuće i omogućavanje ssh -a, na internetu postoji mnogo vodiča koji vam mogu pokazati kako to učiniti, ali to ćete morati učiniti do kraja ovoga raditi.
Korištenjem https://pinout.xyz možete povući obje ploče i dobiti njihove ispise na ovoj web stranici. Blinkt ploče zahtijevaju samo 4 veze, a zvučniku Phat potrebno je 9.
Kada završi, trebala bi izgledati kao fotografija. Sada moramo provjeriti radi li sve.
Korak 3: Instaliranje potrebnog softvera
Sada kada smo povezani, morat ćemo instalirati softver potreban za pokretanje Blinkt i Speaker Phat ploča. SSH u pi, i naći ćete se u kućnom direktoriju. Unesite sljedeće:
curl https://get.pimoroni.com/blinkt | bash
i onda kada to završi, ovo:
curl -sS https://get.pimoroni.com/speakerphat | bash
To će instalirati sve potrebno za obje Pimoronijeve ploče. Ako unesete naredbu ls, trebali biste vidjeti Pimoronijev direktorij. Pa sada napišimo neki kod i testirajmo Blinkt ploču.
Korak 4: Pisanje nekog koda i njegovo testiranje
Napravite direktorij pod nazivom "scripts" upisivanjem mkdir scripts i tamo ćemo zadržati sve što nam je potrebno za pokretanje. Dakle, cd skripte da biste ušli u tu mapu.
Ono što želimo su crvena prigušena svjetla za noćno vrijeme, žuta prigušena svjetla za tiho vrijeme igranja i nešto svjetlija zelena svjetla kada je u redu izaći. Za mene sam želio crvena svjetla od 19:30 do 6:15 ujutro, a u 6:15 ujutro bi požutjeli sat vremena, a zatim konačno zeleni u 7:15 ujutro. Također sam želio da se isključe u 8:30 ujutro kada niko vjerojatno neće biti u prostoriji.
Postoje dva načina za to. Prvi (način na koji sam ja to odlučio) je s četiri različite skripte, pokrenute od cron poslova. Drugi način da to učinite je jedna skripta koja uključuje vremensku funkciju koja se pokreće pri pokretanju. Zapravo sam napisao scenarij da to prvo uradim na taj način, ali djelovao je manje efikasno nego raditi na bazi crona, pa sam ga uključio. Ako želite metodu "one script", obavijestite me i mogu je objaviti u komentarima.
Dakle, počnimo s crvenim pismom. Upišite touch red.py, zatim nano red.py. Zatim unesite sljedeći kôd.
#!/usr/bin/env python
uvoz blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0) #postavlja piksele 3 i 4 u crveno blinkt.show ())
Učinite isto za yellow.py i green.py.
yellow.py:
#!/usr/bin/env python
import blinkt blinkt.set_clear_on_exit (False) 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) #postavlja piksele 2, 3, 4 i 5 u žuto blinkt.show ()
green.py:
#!/usr/bin/env python
import blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #postavlja sve piksele na zeleno blinkt.show ()
I na kraju, želimo da skripta očisti Blinkt kada nije potrebna (lightsout.py):
#!/usr/bin/env python
import blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #postavlja sve piksele na isključeno blinkt.show ()
To je to. Da biste testirali tip python red.py i provjerite da li dva srednja piksela svijetle crveno. Zatim upišite python lightsout.py da biste ga očistili. To je to! Zatim ćemo ih morati postaviti na cron karticu tako da rade kad želimo.
Korak 5: Dodavanje tih skripti u Cron
U SSH terminalu unesite crontab -e
pomaknite se do kraja datoteke i dodajte sljedeće retke:
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
To postavlja skripte za izvođenje u vrijeme opisano u prethodnom koraku, nastavite i prilagodite ih svojim potrebama.
To je to za noćno svetlo! Super lako. Pređimo sada na postavljanje dijela bijele buke ove verzije.
Korak 6: Testiranje zvučnika Phat
Najlakši način (po mom mišljenju) da isprobate Speaker Phat je instaliranjem sox -a i pokretanjem neke statičke datoteke iz komandne linije.
sudo apt-get install sox
Kada se to instalira, možemo isprobati neke primjere naredbi za reprodukciju. Ovaj bi trebao zvučati kao valovi.
play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapez amod 0,1 30
Kako opuštajuće! Ctrl+c će ga zaustaviti. Ali, šta je to? Postoji gomila LED dioda na prednjoj strani zvučnika Phat koja svijetli i ne možemo to ometati naša svjetla Blinkt. Pa isključimo ih.
Da bismo to učinili, morat ćemo izmijeniti /etc/asound.conf datoteku i ukloniti dodatak VU mjerača, tako da uopće neće ni pokušati pokrenuti LED diode. To sam učinio jednostavnim preimenovanjem. Upišite ovu naredbu mv /etc/asound.conf /etc/asound.conf.bak Ovo sam otkrio kroz malo Googlanja, pa bi moglo biti boljeg načina.
Sox radi, i to je sjajno, ali planirao sam koristiti neke MP3-e koji se mogu lopirati za dio bijele buke ove mašine, pa mi je trebao drugi player, po mogućnosti nešto zaista lagano. mpg123 je ono na čemu sam se odlučio. Instalirajte to sada pomoću sudo apt-get install mpg123
U redu, sada kada znamo da zvučnik Phat radi kako se očekuje, vrijeme je za izgradnju sučelja i odgovarajućih skripti.
Korak 7: Postavljanje malog web poslužitelja i Webappa
Flask je mikro web okvir napisan na Pythonu. Pruža svu funkcionalnost koja nam je potrebna za web poslužitelj (koji će djelovati kao aplikacija). Instalirajte ga sljedećom naredbom:
pip3 instalirajte bocu
To će potrajati, pa pričekajte. Kada završi, morat ćemo izgraditi mape koje ćemo morati povući kada se web stranica pokrene, a te mape imaju određena imena. Počnimo s mjestom za hostovanje web stranice. Od matičnog direktorija napravite novi direktorij zvan www s mkdir www. Sada cd www u taj direktorij. Ovdje su nam potrebna još dva direktorija, jedan koji se zove statički, a drugi se naziva predlošci.
Također nam je potrebno mjesto za stavljanje naših MP3 zapisa koji se mogu pretraživati. Za ovo sam napravio direktorij u kućnom direktoriju pod nazivom "zvukovi". Pronašao sam svoje MP3 -ove pretragom MP3 -a sa bijelom šumom koji se mogu otkriti na Google -u. Mnogo slobodnih mjesta za povlačenje. Koristio sam WinSCP za postavljanje datoteka.
Možda ćete ih htjeti testirati pomoću naredbe omxplayer ispod igrajući se sa --vol -### dijelom za biranje odgovarajućeg nivoa glasnoće za vašu sobu. Ponovo će Ctrl+C zaustaviti igrača.
Sada kada smo sve to postavili, dozvolite da napišemo neki python da ustane web server kada se pi pokrene. Vratite se u direktorij www i pokrenite novu datoteku pod nazivom webapp.py (nano webapp.py) i umetnite sljedeći kod
webbapp.py:
#!/usr/bin/python
iz flask import Flask, render_template, request, redirect import os app = Flask (_ name_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain'), methods = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect ('/') @app.route ('/waves', methods = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") return redirect ('/') @app.route ('/whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") return redirect (' /') @app.route ('/stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')
Kao što vidite, ovaj webapp će imati 5 stranica, jednu za indeks, 3 za 3 različita zvuka (val, kiša i bijela buka) i još 1 za zaustavljanje. Sve 4 stranice bez indeksa preusmjeravaju nazad na index ('/') nakon što izvrše naredbu poslanu omxplayeru, tako da trebamo stvoriti samo jedan index.html, i ništa drugo. Ovdje koristim killall kao stop funkciju, jer nisam mogao pronaći bolji način za slanje naredbe "stop" omxplayeru. Ako znate za bolji način da to učinite, volio bih to čuti!
Sada sastavimo index.html.
Korak 8: Izrada web stranice
Ovo su slike koje sam koristio za izradu, ali slobodno ih napravite sami. Sve ih je potrebno spremiti u statičku mapu koju smo ranije napravili. Datoteka index.html koju ćemo ovdje napraviti mora biti u mapi predlošci. To je prilično važno, inače ništa od toga neće uspjeti. Evo koda za moj index.html (opet, ovo je samo jednostavan html, pa ga izmijenite na bilo koji način koji vam odgovara).
Budući da mi Instructables ne dopuštaju da objavljujem neobrađeni HTML, evo veze do datoteke koja postoji na mom Dropboxu:
www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…
Ali u slučaju da to ikada umre, HTML datoteka je samo neki otmjeni CSS, i jednostavna 2x2 tablica s te 4 ikone kao gumbi s vrijednostima posta ovako:
form action = "/whitenoise" method = "post"
input src = "/static/whitenoise.png" value = "Bijela buka"
Trebalo bi biti prilično lako napraviti sebe.
Zadnji korak je provjeriti da li se webapp.py pokreće pri pokretanju. Ponovo sam to učinio dodavši ga u crontab. Zato još jednom upišite crontab -e i na kraj dodajte sljedeće:
@reboot python3 /home/pi/www/webapp.py
Zatim ponovno pokrenite pi, usmjerite preglednik na drugoj mašini (vašem telefonu) na IP pi (najbolje je ako ovo učinite statičnim) i provjerite radi li. Pritisnite gumbe i provjerite čujete li buku.
Na Android telefonu možete označiti web lokaciju na početni ekran, što sam i učinio s ovim kako bi izgledala i osjećala se kao aplikacija. Ako zaista želite da izgleda "profesionalno", pronađite ili stvorite odgovarajuću.ico datoteku i web stranici dajte vlastitu ikonu koja će se pojaviti na početnom ekranu vašeg telefona i više ličiti na aplikaciju. Mnogo vodiča na mreži o tome kako dodati ikonu (favicon) na web stranicu.
Korak 9: Sve spojite u futrolu
Sada kada je sve testirano i radi, vrijeme je da sve to stavite u futrolu.
Napravio sam nosivi nosač za Raspberry Pi Zero koristeći malo preostale plastike koju sam imao po kući. Zatim sam izbušio neke rupe za mikro USB priključak za montiranje na ploču i pomoću nekih draguljarskih datoteka izravnao rupu. Kabel za montažu na ploču je malo krut, pa ću u budućnosti možda kupiti adapter za pravi kut za mikro USB priključak na Pi -u.
Izrezao sam mali otvor na vrhu kućišta kako bi se zvučnik mogao reproducirati tako da izbuši dvije rupe i poveže ih s Dremelom. Zatim izbušite rupe na poklopcu za postavljanje zvučnika Phat. Koliko god vrijedilo, nakon što sam snimio ovu fotografiju vratio sam se i napravio još nekoliko rupa jer se buka zaista zaglavila u kućištu. Montirao sam Blinkt pomoću tog materijala za lepljenje postera jer na njemu nema rupa za pričvršćivanje, ali čini se da kit dobro drži, pa će tako i biti.
Korak 10: To je to
Uključite ga i gotovi ste. Evo moje trči nešto iza 20 sati. Zelena LED dioda na pi nije tako sjajna kao što izgleda na ovoj fotografiji.
Neka kasnija uređivanja koja sam napravio:
Dodao sam još 4 stranice u datoteke webapp.py i index.html. Ta 4 su "crvena", "žuta", "zelena" i "isključena". Prilično samo po sebi razumljivo. Želeo sam mogućnost da ga prebacim sa zelenog na žuto ako se supruga i ja osećamo dodatno umorno i ne želimo da nas gnjave.
@app.route ('/red', methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") return redirect ('/')
U osnovi to 4 puta, pokretanje 4 različite skripte, zatim još neki gumbi u indeksu koji pozivaju te stranice.
Drugu promjenu sam već primijetio, ali izbušio sam još nekoliko rupa i proširio postojeći otvor oko zvučnika jer buka nije dovoljno dobro izlazila iz kućišta.
Ako napravim dodatne izmjene, svakako ću se vratiti ovdje i navesti ih.
Korak 11: Dodatak
Nakon što sam ovo izgradio, shvatio sam da i moja supruga i ja često ostavljamo telefone dolje kada stavljamo dijete na spavanje ili drijemanje. Tako sam dodao fizičko dugme 36 na trenutak i uključio sljedeći kod (nazvao sam ga button.py) za pokretanje pri pokretanju u rc.local:
#!/usr/bin/env python
uvoz RPi. GPIO kao GPIO Vrijeme uvoza uvoz ili uvoz uvoznog potprocesa u GPIO.setmode (GPIO. BOARD) # Koristi dugme Fizička numerička oznaka kontakata dugme = 36 # Dugme je povezano sa fizičkim pinom 16 GPIO.setup (dugme, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Napravite dugme za unos, Aktivirajte otpor za povlačenje dok je True: ako je GPIO.input (dugme) == 0: # Sačekajte da taster pritisne returnprocess = False # Prvotno podešeno da zvuk bude isključen s = potproces. Popen (["ps", "ax"], stdout = podproces. PIPE) za x u s.stdout: if re.search ("mpg123", x): returnprocess = True ako 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")
Kao što vidite, takođe sam prešao na mpg123 sa omxplayera jer je mnogo lakši i jednostavniji za upotrebu.
U svakom slučaju, iz nekog razloga kada stavim ovu skriptu u rc.local, ona se zaista pokreće pri pokretanju bez ikakvih problema. Ali zvuk je zaista vrlo isprekidan. Kad pokrenem skriptu kao normalno, u kitu, nema takvih problema. Imam problema u rješavanju ovog problema, pa ako neko ima bilo kakvu ideju, neka mi se javi! Hvala.
Preporučuje se:
Noćno svjetlo Pooh Bear & Friends: 5 koraka (sa slikama)
Noćno svjetlo Pooh Bear & Friends: Sljedeće noćno svjetlo stvoreno je pomoću površinski montiranog ATTiny85. Ima dva dugmeta, jedno za uključivanje i isključivanje i jedno za pauziranje pri odabranoj sekvenci osvjetljenja. Pauza nije prava pauza, već jednostavno prekida vezu sa
Animirano svjetlo raspoloženja i noćno svjetlo: 6 koraka (sa slikama)
Animirano svjetlo raspoloženja i noćno svjetlo: Imajući fascinaciju koja graniči sa opsesijom svjetlošću, odlučio sam stvoriti izbor malih modularnih PCB -a koji se mogu koristiti za stvaranje RGB svjetlosnih prikaza bilo koje veličine. Nakon što sam napravio modularnu PCB ploču, došao sam na ideju da ih uredim u
Snažni pasivni zvučnici okrenuti prema bijelom hrastu: 16 koraka (sa slikama)
Snažni pasivni zvučnici s bijelim hrastom: Ovo je moj treći projekt zvučnika i potpuno drugačiji od prethodnih! Ovaj put ću napraviti neke velike, moćne i lijepe monitore koji će ući u moju audio sobu! Imam još neke projekte na Instagramu, provjerite ih! Moji ets
Noćno svjetlo koje osjeća svjetlo koje se može prebaciti: 8 koraka (sa slikama)
Noćno svjetlo sa osjetljivim svjetlom koje se može prebaciti: Ovo uputstvo pokazuje kako sam hakirao senzor noćnog svjetla tako da se može ručno isključiti. Pažljivo pročitajte, imajte na umu sve otvorene krugove i po potrebi isključite područje prije testiranja jedinice
Mjerenje i mapiranje zagađenja bukom vašim mobilnim telefonom: 4 koraka (sa slikama)
Izmjerite i mapirajte zagađenje bukom svojim mobilnim telefonom: Nicolas Maisonneuve (Sony CSL Paris) Matthias Stevens (Vrije Universiteit Brussel / Sony CSL Paris) Luc Steels (Vrije Universiteit Brussel / Sony CSL Paris) U ovom " uputstvu " naučit ćete kako možete koristiti svoj mobilni telefon opremljen GPS-om