Satura rādītājs:

Balta trokšņa nakts gaisma: 11 soļi (ar attēliem)
Balta trokšņa nakts gaisma: 11 soļi (ar attēliem)

Video: Balta trokšņa nakts gaisma: 11 soļi (ar attēliem)

Video: Balta trokšņa nakts gaisma: 11 soļi (ar attēliem)
Video: NANDO pied. Edavārdi - Fizikas skolotājs (Official video) 2024, Jūlijs
Anonim
Balta trokšņa nakts gaisma
Balta trokšņa nakts gaisma
Balta trokšņa nakts gaisma
Balta trokšņa nakts gaisma

Šis ir projekts, ko Ziemassvētkos uztaisīju savam 1 gadīgajam bērnam. Godīgi sakot, tā bija veselīga dāvana man un manai sievai. Tā ir balto trokšņu mašīna, kas var atskaņot vairākas dažādas skaņas, kas atlasītas, izmantojot tīmekļa saskarni, kā arī ietver gaismas, kas maina krāsu atkarībā no laika (sarkanās gaismas nozīmē būt gultā, dzeltenas - var spēlēt savā istabā, bet zaļā - viss ir kārtībā) iznākt). Tā kā mans dēls ir pārāk jauns, lai noteiktu laiku, nakts gaisma uz krāsām šķita patiešām laba ideja.

Tas ir patiešām vienkāršs projekts, un, tā kā es jau esmu uzrakstījis kodu, tas varbūt ir 1 no 5 grūtības skalā. Ja jums ir mazi bērni, kas jums traucē pārāk agri no rīta, jūs vēlaties to izveidot.

1. darbība: detaļu saraksts

Detaļu saraksts
Detaļu saraksts
Detaļu saraksts
Detaļu saraksts
Detaļu saraksts
Detaļu saraksts

1. Raspberry Pi Zero W

2. Kaut kāds gadījums (es izmantoju šo no Amazon)

3. Blinkt no Pimoroni

4. Speaker Phat no Pimoroni (Jūs varētu izmantot arī kādu citu DAC ar lētiem skaļruņiem)

Lai saliktu skaļruņu phat, jums būs nepieciešamas dažas pamata lodēšanas prasmes, ir saite ar soli pa solim sniegtajiem norādījumiem no produkta lapas, tāpēc jūs nevarat to uzskrūvēt.

5. [PAPILDUS] Mikro USB kabelis ar paneļa stiprinājumu - no Adafruit

6. daži savienojošie vadi vai džemperi

Tieši tā!

2. darbība: sadedziniet Raspbian un pievienojiet dēļus

Sadedziniet Raspbianu un pievienojiet dēļus
Sadedziniet Raspbianu un pievienojiet dēļus

Šai būvei izmantoju Raspian Stretch lite. Tāpēc ierakstiet to microSD ar jebkuru rīku, kas jums noder, un pēc tam aktivizējiet pi. Ja jums nepieciešama palīdzība, lai izveidotu bezgalvas pi, lai izveidotu savienojumu ar jūsu mājas wifi un iespējotu ssh, tiešsaistē ir daudz pamācību, kas var parādīt, kā to izdarīt, taču jums būs jāpārliecinās, ka esat to darījis visu pārējo strādāt.

Izmantojot vietni https://pinout.xyz, jūs varat izvilkt abus dēļus un iegūt to pinouts šajā vietnē. Blinkt dēļiem ir nepieciešami tikai 4 savienojumi, un skaļrunim Phat ir nepieciešami 9 savienojumi.

Kad tas ir pabeigts, tam vajadzētu izskatīties kā fotoattēlā. Tagad mums jāpārbauda, vai viss darbojas.

3. darbība. Nepieciešamās programmatūras instalēšana

Tagad, kad esam izveidojuši savienojumu, mums būs jāinstalē programmatūra, kas nepieciešama Blinkt un Speaker Phat dēļu palaišanai. SSH ievadiet pi, un jūs atradīsit sevi mājas direktorijā. Ievadiet sekojošo:

čokurošanās https://get.pimoroni.com/blinkt | bash

un tad, kad tas ir pabeigts, šis:

čokurošanās -sS https://get.pimoroni.com/speakerphat | bash

Tādējādi tiks instalēts viss nepieciešamais abiem Pimoroni dēļiem. Ja ievadāt komandu ls, jums vajadzētu redzēt direktoriju Pimoroni. Tāpēc tagad uzrakstīsim kādu kodu un pārbaudīsim Blinkt tāfeli.

4. solis: uzrakstiet kādu kodu un pārbaudiet to

Izveidojiet direktoriju ar nosaukumu "skripti", ierakstot mkdir skriptus, un mēs tur saglabāsim visu, kas nepieciešams, lai palaistu. Tātad cd skripti, lai nokļūtu šajā mapē.

Tagad mēs vēlamies sarkanas blāvas gaismas nakts laikā, dzeltenas vājas gaismas klusam atskaņošanas laikam un nedaudz spilgtākas zaļas gaismas, kad ir labi iziet. Man gribējās sarkanas gaismas no pulksten 19:30 līdz 6:15, un pulksten 6:15 tās uz stundu dzeltēja, bet pēc tam pulksten 7:15 beidzot zaļas. Es arī gribēju, lai viņi izslēdzas pulksten 8:30, kad telpā, visticamāk, neviena nebija.

Ir divi veidi, kā to izdarīt. Pirmais (veids, kā es izvēlējos to darīt) ir ar četriem dažādiem skriptiem, kas tiek palaisti no cron jobiem. Otrs veids, kā to izdarīt, ir viens skripts, kas ietver laika funkciju, kas tiek palaista startēšanas laikā. Es patiesībā uzrakstīju skriptu, lai to izdarītu vispirms, taču tas šķita mazāk efektīvs nekā to darīt, pamatojoties uz cron, tāpēc es to pārslēdzu. Ja vēlaties izmantot "viena skripta" metodi, informējiet mani, un es varu to ievietot komentāros.

Tātad, sāksim ar sarkano skriptu. Ierakstiet touch red.py, pēc tam nano red.py. Pēc tam ievadiet šādu kodu.

#!/usr/bin/env python

importēt 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) #sets pixels 3 and 4 to red blinkt.show ()

Dariet to pašu attiecībā uz dzelteno.py un zaļo.py.

yellow.py:

#!/usr/bin/env python

importēt 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) #sets 2, 3, 4 un 5 pikseļi līdz dzeltenam blinkt.show ()

green.py:

#!/usr/bin/env python

importēt blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #iestata visus pikseļus uz zaļu blinkt.show ()

Visbeidzot, mēs vēlamies, lai skripts notīrītu Blinkt, kad tas nav vajadzīgs (lightsout.py):

#!/usr/bin/env python

importēt blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0,1) blinkt.set_all (0, 0, 0) #visiem pikseļiem tiek izslēgts blinkt.show ()

Tieši tā. Lai pārbaudītu tipu python red.py un pārbaudītu, vai divi vidējie pikseļi iedegas sarkanā krāsā. Pēc tam ierakstiet python lightsout.py, lai to notīrītu. Tieši tā! Tālāk mums tie būs jāiestata cilnē cron, lai tie darbotos, kad mēs to vēlamies.

5. darbība. Šo skriptu pievienošana Cron

SSH terminālī ierakstiet crontab -e

ritiniet līdz faila beigām un pievienojiet šādas rindas:

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

Tādējādi skripti tiek palaisti iepriekšējā solī aprakstītajā laikā, turpiniet un pielāgojiet tos savām vajadzībām.

Tas ir naktsgaismā! Super viegli. Tagad pāriesim pie šīs būves baltā trokšņa daļas iestatīšanas.

6. darbība: skaļruņu savienojuma pārbaude

Vienkāršākais veids (manuprāt), lai pārbaudītu skaļruņu Phat, ir instalēt sox un palaist kādu statisku no komandrindas.

sudo apt-get install sox

Kad tas ir instalēts, mēs varam izmēģināt dažas atskaņošanas komandu paraugus. Tam vajadzētu izklausīties kā viļņiem.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapeces amod 0,1 30

Cik relaksējoši! Ctrl+c to apturēs. Bet, kas tas ir? Visā skaļruņa Phat sejā iedegas gaismas diodes, un mēs nevaram traucēt mūsu Blinkt gaismām. Tātad, izslēdzam tos.

Lai to izdarītu, mums ir jāmaina /etc/asound.conf fails un jānoņem VU skaitītāja spraudnis, tāpēc tas pat nemēģinās vadīt gaismas diodes. Es to izdarīju, vienkārši pārdēvējot to. Ierakstiet šo komandu mv /etc/asound.conf /etc/asound.conf.bak Es to atradu, mazliet meklējot Google, tāpēc varētu būt labāks veids.

Soks darbojas, un tas ir lieliski, bet es plānoju šīs mašīnas baltā trokšņa daļai izmantot dažus cilpojamus MP3, tāpēc man vajadzēja citu atskaņotāju, vēlams kaut ko patiešām vieglu. mpg123 ir tas, uz ko es apmetos. Instalējiet to tagad, izmantojot sudo apt-get install mpg123

Labi, tagad, kad mēs zinām, ka Speaker Phat darbojas kā paredzēts, ir laiks izveidot saskarni un atbilstošos skriptus.

7. darbība: neliela tīmekļa servera un tīmekļa lietotnes iestatīšana

Kolba ir mikro tīmekļa sistēma, kas rakstīta Python. Tas nodrošina visas funkcijas, kas nepieciešamas tīmekļa serverim (kurš darbosies kā lietotne). Instalējiet to ar šādu komandu:

pip3 uzstādīšanas kolba

Tas prasīs zināmu laiku, tāpēc pagaidiet. Kad tas būs pabeigts, mums būs jāizveido mapes, kas mums būs jāizvelk, kad vietne darbojas, un šīm mapēm ir konkrēti nosaukumi. Sāksim ar vietnes mitināšanas vietu. Mājas direktorijā izveidojiet jaunu direktoriju ar nosaukumu www ar mkdir www. Tagad cd www šajā direktorijā. Šeit mums ir vajadzīgi vēl divi katalogi, vienu sauc par statisku, bet otru - par veidnēm.

Mums ir nepieciešama arī vieta, kur ievietot mūsu cilpas MP3. Šim nolūkam es izveidoju direktoriju mājas direktorijā ar nosaukumu "skaņas". Es atradu savus MP3, Google tīklā meklējot cilpas balto MP3. Daudz brīvu vietu, no kurām izvilkt. Failu augšupielādēšanai izmantoju WinSCP.

Iespējams, vēlēsities tos pārbaudīt, izmantojot komandu omxplayer zemāk, spēlējot ar --vol -### daļu, lai izvēlētos savai istabai atbilstošu skaļuma līmeni. Atkal Ctrl+C apturēs spēlētāju.

Tagad, kad mums ir visi tie, ļaujiet uzrakstīt kādu python, lai paceltu tīmekļa serveri, kad pi sāk darboties. Dodieties atpakaļ uz www direktoriju un sāciet jaunu failu ar nosaukumu webapp.py (nano webapp.py) un ievietojiet šādu kodu

webbapp.py:

#!/usr/bin/python

no kolbas importēšanas Kolba, render_template, pieprasījums, novirzīšana importēšana os app = Kolba (_ name_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain'), metodes = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect ('/') @app.route ('/viļņi', metodes = ['POST']) def viļņi (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") atgriežas novirzīšana ('/') @app.route ('/whitenoise', metodes = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sound/whitenoise.mp3") return redirect (' /') @app.route ('/stop ', metodes = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (atkļūdošana = True, host = '0.0.0.0')

Kā redzat, šai tīmekļa lietotnei būs 5 lapas, viena indeksam, 3 3 dažādām skaņām (vilnis, lietus un balts) un vēl viena, lai apturētu. Visas 4 lapas, kas nav indekss, pēc tam, kad ir izpildījušas komandu, kas nosūtīta omxplayer, novirza atpakaļ uz indeksu ('/'), tāpēc mums ir jāizveido tikai viens indekss.html un nekas cits. Es šeit izmantoju killall kā apturēšanas funkciju, jo nevarēju atrast labāku veidu, kā nosūtīt komandu "stop" omxplayer. Ja jūs zināt labāku veidu, kā to izdarīt, es labprāt to dzirdētu!

Tagad saliksim kopā index.html.

8. solis: vietnes izveide

Vietnes veidošana
Vietnes veidošana
Vietnes veidošana
Vietnes veidošana
Vietnes veidošana
Vietnes veidošana
Vietnes veidošana
Vietnes veidošana

Šos attēlus es izmantoju savai būvei, bet jūtieties brīvi izveidot savus. Tie visi ir jāsaglabā iepriekš izveidotajā statiskajā mapē. Failam index.html, kuru mēs šeit izveidosim, ir jāatrodas veidņu mapē. Tas ir diezgan svarīgi, pretējā gadījumā nekas no tā nedarbosies. Šeit ir mans index.html kods (tas atkal ir vienkāršs html, tāpēc mainiet to jebkurā jums izdevīgā veidā).

Tā kā Instructables neļaus man ievietot neapstrādātu HTML, šeit ir saite uz failu, kāds tas ir manā Dropbox:

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

Bet gadījumā, ja tas kādreiz nomirst, HTML fails ir tikai izsmalcināts CSS un vienkārša 2x2 tabula ar šīm 4 ikonām kā pogas ar ziņu vērtībām:

forma action = "/whitenoise" method = "post"

input src = "/static/whitenoise.png" value = "Baltais troksnis"

Vajadzētu būt diezgan viegli izveidot sev tādu.

Pēdējais solis ir pārliecināties, ka webapp.py darbojas startēšanas laikā, es to darīju, pievienojot to crontab. Tātad vēlreiz ierakstiet crontab -e un beigās pievienojiet šo:

@pārstartējiet python3 /home/pi/www/webapp.py

Pēc tam pārstartējiet pi, norādiet pārlūkprogrammu citā datorā (tālrunī) uz pi IP (vislabāk, ja varat padarīt šo statisku) un pārbaudiet, vai tas darbojās. Noklikšķiniet uz pogām un pārbaudiet, vai rodas troksnis.

Android tālrunī jūs varat pievienot vietnei grāmatzīmi sākuma ekrānā, un es to darīju, lai tā izskatītos un justos kā lietotne. Ja vēlaties, lai tas patiešām izskatītos “profesionāli”, atrodiet vai izveidojiet piemērotu.ico failu un piešķiriet vietnei savu ikonu, kas parādīsies tālruņa sākuma ekrānā un izskatīsies pēc lietotnes. Tiešsaistē ir daudz pamācību, kā vietnei pievienot ikonu (favicon).

9. solis: iestrēdziet visu lietā

Ievārīt visu lietā
Ievārīt visu lietā
Ievārīt visu lietā
Ievārīt visu lietā
Ievārīt visu lietā
Ievārīt visu lietā

Tagad, kad viss ir pārbaudīts un darbojas, ir pienācis laiks to visu ielikt lietā.

Es uzbūvēju atdalīšanas stiprinājumu Raspberry Pi Zero, izmantojot kādu plastmasas palieku, kas man bija ap māju. Pēc tam es urbju dažus caurumus paneļa stiprinājuma mikro USB, un, izmantojot dažus juvelieru failus, izgriezām šo caurumu. Paneļa stiprinājuma kabelis ir nedaudz stīvs, tāpēc nākotnē es varētu nopirkt taisnleņķa adapteri Pi mikro USB portam.

Es izgriezu nelielu atveri korpusa augšpusē, lai skaļrunis varētu iziet, izurbjot divus caurumus un savienojot tos ar Dremel. Pēc tam urbiet caurumus vāciņā, lai uzstādītu skaļruņa vāciņu. Cik tas ir vērts, pēc šīs fotogrāfijas uzņemšanas es atgriezos un izveidoju vēl dažus caurumus, jo troksnis patiešām tika iesprostots korpusa iekšpusē. Es uzstādīju Blinkt, izmantojot šo plakātu špakteles, jo lietai nav montāžas caurumu, bet šķiet, ka tepe labi turas, tāpēc tā darīs.

10. solis: Tieši tā

Tieši tā!
Tieši tā!

Pievienojiet to un esat pabeidzis. Lūk, manējais skrien tikai pēc astoņiem vakarā. Zaļā gaismas diode uz paša pi nav tik spilgta, kā šķiet šajā fotoattēlā.

Daži vēlāk veikti labojumi:

Failiem webapp.py un index.html pievienoju vēl 4 lapas. Tie 4 ir "sarkani", "dzelteni", "zaļi" un "izslēgti". Diezgan pašsaprotami. Es gribēju iespēju to pārvērst no zaļas uz dzeltenu, ja mēs ar sievu jūtamies īpaši noguruši un nevēlamies, lai mani apgrūtinātu.

@app.route ('/sarkans', metodes = ['POST']) def red (): os.system ("python ~/scripts/red.py") atgriežas novirzīšana ('/')

Būtībā četras reizes, palaižot 4 dažādus skriptus, pēc tam vēl dažas pogas rādītājā, kas izsauc šīs lapas.

Citas izmaiņas, kuras es jau atzīmēju, bet es izurbju vēl dažus caurumus un paplašināju esošo atveri ap skaļruni, jo troksnis pietiekami labi neizbēga no korpusa.

Ja es veicu kādas papildu izmaiņas, es noteikti atgriezīšos šeit un uzskaitīšu tās.

11. solis: papildinājums

Pēc tā uzbūvēšanas es sapratu, ka abi ar sievu bieži atstājam savus telefonus lejā, noliekot bērnu gulēt vai snaust. Tāpēc es pievienoju īslaicīgu spiedpogu fiziskajai tapai 36 un iekļāvu šādu kodu (es to saucu par pogu.py), lai palaistu startēšanas laikā rc.local:

#!/usr/bin/env python

importēt RPi. GPIO kā GPIO importa laiku importēt os importēt apakšprocesu importēt re GPIO.setmode (GPIO. BOARD) # Izmantojiet pogu Fiziskās tapas numerācijas shēma = 36 # Poga ir savienota ar fizisko tapu 16 GPIO.setup (poga, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Padarīt pogu par ievadi, aktivizēt Pull UP Resistor, kamēr True: ja GPIO.input (poga) == 0: # Pagaidiet, līdz poga nospiesta returnprocess = False # Sākotnēji iestatīts, lai skaņa būtu izslēgta s = apakšprocess. Popen (["ps", "ax"], stdout = apakšprocess. PIPE) x vietā s.stdout: ja re.search ("mpg123", x): returnprocess = True, ja 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")

Kā redzat, es arī pārslēdzos uz mpg123 no omxplayer, jo tas ir daudz vieglāks un vienkāršāk lietojams.

Tomēr kaut kādu iemeslu dēļ, kad es ievietoju šo skriptu rc.local, tas patiešām darbojas startēšanas laikā bez problēmām. Bet skaņa patiešām ir ļoti nestabila. Palaižot skriptu kā parasti, špakteles veidā, šādu problēmu nav. Man ir problēmas novēršanas laiks, tāpēc, ja kādam ir kādas idejas, lūdzu, dariet man to zināmu! Paldies.

Ieteicams: