Orodha ya maudhui:

Mwanga wa Sauti Nyeupe ya Kelele: Hatua 11 (na Picha)
Mwanga wa Sauti Nyeupe ya Kelele: Hatua 11 (na Picha)

Video: Mwanga wa Sauti Nyeupe ya Kelele: Hatua 11 (na Picha)

Video: Mwanga wa Sauti Nyeupe ya Kelele: Hatua 11 (na Picha)
Video: VIDEO;MREMBO AKIFANYA NA CHUPA YA FANTA 2024, Julai
Anonim
Kelele Nyeupe Usiku Mwanga
Kelele Nyeupe Usiku Mwanga
Kelele Nyeupe Usiku Mwanga
Kelele Nyeupe Usiku Mwanga

Huu ni mradi niliomtengenezea mtoto wangu wa miaka 1 kwa Krismasi. Kusema kweli, ilikuwa ni akili timamu kwangu na kwa mke wangu. Ni mashine nyeupe ya kelele ambayo inaweza kucheza sauti tofauti tofauti zilizochaguliwa kupitia kiolesura cha wavuti, na pia inajumuisha taa ambazo hubadilisha rangi kulingana na wakati (taa nyekundu inamaanisha kuwa kitandani, manjano inamaanisha unaweza kucheza kwenye chumba chako, na kijani inamaanisha ni sawa kutoka nje). Kwa kuwa mtoto wangu ni mchanga sana kusema wakati, taa ya usiku inayotegemea rangi ilionekana kama wazo zuri sana.

Ni mradi rahisi sana, na kwa kuwa tayari nimeandika nambari hiyo, labda ni 1 kati ya 5 kwa kiwango cha ugumu. Ikiwa una watoto wachanga ambao husumbua heck kutoka kwako mapema asubuhi, utataka kuifanya.

Hatua ya 1: Orodha ya Sehemu

Orodha ya Sehemu
Orodha ya Sehemu
Orodha ya Sehemu
Orodha ya Sehemu
Orodha ya Sehemu
Orodha ya Sehemu

1. Raspberry Pi Zero W

2. Aina fulani ya kesi (nilitumia hii kutoka Amazon)

3. Blinkt kutoka Pimoroni

4. Spika Phat kutoka Pimoroni (Unaweza pia kutumia DAC nyingine na spika za bei rahisi)

Utahitaji kuwa na ustadi wa msingi wa kutengenezea kuweka pamoja phat ya spika, kuna kiunga na maagizo ya hatua kwa hatua kutoka kwa ukurasa wa bidhaa, kwa hivyo huwezi kuisonga.

5. [KWA hiari] Jopo limepanda kebo ndogo ya USB - kutoka Adafruit

6. waya zinazounganisha au kuruka

Hiyo ndio!

Hatua ya 2: Choma Raspbian na Unganisha Bodi

Choma Raspbian na Unganisha Bodi
Choma Raspbian na Unganisha Bodi

Ninatumia Raspian Stretch lite kwa ujenzi huu. Kwa hivyo choma hiyo kwa microSD na zana yoyote inayokufanyia kazi, kisha choma moto pi. Ikiwa unahitaji msaada kupata pi isiyo na kichwa kuungana na wifi ya nyumba yako na kuwezesha ssh, kuna mafunzo mengi mkondoni ambayo yanaweza kukuonyesha jinsi ya kufanya hivyo, lakini utahitaji kuhakikisha kuwa umefanya hivyo kwa haya yote kufanya kazi.

Kutumia https://pinout.xyz unaweza kuvuta bodi zote mbili na kupata alama zao kwenye tovuti hii. Bodi za Blinkt zinahitaji tu unganisho 4, na Spika Phat anahitaji 9.

Inapaswa kuonekana kama picha ukimaliza. Sasa tunahitaji kujaribu kuwa kila kitu kinafanya kazi.

Hatua ya 3: Kufunga Programu Inayotakiwa

Sasa kwa kuwa tumeunganishwa, tutahitaji kusanikisha programu inayohitajika kuendesha bodi za Blinkt na Spika Phat. SSH kwa pi, na utajikuta kwenye saraka ya nyumbani. Ingiza yafuatayo:

curl https://get.pimoroni.com/blinkt | bash

na kisha mara tu hiyo imekamilika, hii:

curl -sS https://get.pimoroni.com/speakerphat | bash

Hiyo itaweka kila kitu kinachohitajika kwa bodi zote za Pimoroni. Ikiwa utaingiza amri ya ls, unapaswa kuona saraka ya Pimoroni. Kwa hivyo sasa wacha tuandike nambari kadhaa na tujaribu bodi ya Blinkt.

Hatua ya 4: Kuandika Nambari kadhaa na Kuijaribu

Tengeneza saraka inayoitwa "hati" kwa kuandika maandishi ya mkdir na tutaweka kila kitu tunachohitaji kukimbilia huko. Kwa hivyo hati za cd kujiingiza kwenye folda hiyo.

Sasa, tunachotaka ni taa nyekundu za usiku, taa za manjano kwa wakati wa kucheza kimya, na taa nyepesi za kijani wakati ni sawa kutoka. Kwangu, nilitaka taa nyekundu kutoka 7:30 jioni hadi 6:15 asubuhi, na saa 6:15 asubuhi wangegeuka manjano kwa saa moja, na kisha kijani kibichi saa 7:15 asubuhi. Nilitaka pia wazime saa 8:30 asubuhi wakati hakuna mtu aliyewezekana kuwa kwenye chumba hicho.

Kuna njia mbili za kufanya hivyo. Ya kwanza (njia niliyochagua kuifanya) ni na hati nne tofauti, kukimbia kutoka kwa kazi za cron. Njia nyingine ya kuifanya, ni hati moja, ambayo inajumuisha kazi ya wakati ambayo inaendeshwa wakati wa kuanza. Kwa kweli niliandika hati kuifanya kwa njia hiyo kwanza, lakini ilionekana kuwa na ufanisi mdogo kuliko kuifanya kulingana na cron, kwa hivyo niliibadilisha. Ikiwa unataka njia "ya hati moja", nijulishe na ninaweza kuiposti kwenye maoni.

Kwa hivyo, wacha tuanze na hati nyekundu. Aina ya kugusa nyekundu.py, kisha nano red.py. Kisha ingiza nambari ifuatayo.

#! / usr / bin / env chatu

kuagiza 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 saizi 3 na 4 kwa blinkt.show nyekundu (onyesha ()

Fanya vivyo hivyo kwa njano.py na kijani.py.

njano.py:

#! / usr / bin / env chatu

kuagiza blinkt blinkt.set_clear_on_exit (Uongo) 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) #seti saizi 2, 3, 4, na 5 kwa blinkt njano.show ()

kijani.py:

#! / usr / bin / env chatu

kuagiza blinkt blinkt.set_clear_on_exit (Uongo) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #sets all pixels to green blinkt.show ()

Na mwishowe, tunataka hati ifute Blinkt wakati haihitajiki (lightout.py):

#! / usr / bin / env chatu

kuagiza blinkt blinkt.set_clear_on_exit (Kweli) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #sets saizi zote kuzima blinkt.show ()

Hiyo ndio. Ili kujaribu aina ya chatu nyekundu.py na uone ikiwa saizi mbili za kati zinawaka nyekundu. Kisha chapa taa ya chatu.py kuiondoa. Hiyo ndio! Ifuatayo itabidi tuweke zile kwenye kichupo cha cron ili wakimbie wakati tunataka.

Hatua ya 5: Kuongeza Hati hizo kwa Cron

Katika aina ya terminal ya SSH crontab -e

songa hadi mwisho wa faili na ongeza mistari ifuatayo:

15 6 * * * chatu / nyumba/pi/script/yellow.py15 7 * * * chatu / nyumba/pi/script/green.py 30 8 * * * chatu / nyumba/pi/script/lightsout.py 30 19 * * * chatu / nyumba/pi/script/red.py

Hiyo inaweka maandiko ya kukimbia kwa nyakati zilizoelezewa katika hatua ya awali, endelea na urekebishe hizi ili kukidhi mahitaji yako.

Hiyo ni kwa mwangaza wa usiku! Rahisi sana. Sasa wacha tuendelee kuanzisha sehemu ya Kelele Nyeupe ya jengo hili.

Hatua ya 6: Kumjaribu Spika Phat

Njia rahisi (kwa maoni yangu) ya kujaribu Spika Phat ni kwa kuweka sox na kuendesha static kutoka kwa laini ya amri.

Sudo apt-get kufunga sox

Mara tu ikiwa imewekwa, tunaweza kujaribu amri zingine za kucheza. Huyu anapaswa kusikika kama mawimbi.

cheza -n synth brownnoise synth pinknoise changanya synth 0 0 0 10 10 40 trapezium amod 0.1 30

Inatuliza vipi! Ctrl + c itaisimamisha. Lakini, ni nini hiyo? Kuna rundo la taa za LED kwenye uso wa Spika Phat akiangaza, na hatuwezi kuingiliana na taa zetu za Blinkt. Basi lets kuzima hizo.

Ili kufanya hivyo, tutahitaji kurekebisha faili ya /etc/asound.conf na uondoe programu-jalizi ya mita ya VU, kwa hivyo itajaribu hata kuendesha LEDs kwanza. Nilifanya hivyo kwa kuiita jina jipya. Andika amri hii mv /etc/asound.conf /etc/asound.conf.bak Nimepata hii kupitia Googling kidogo, kwa hivyo kunaweza kuwa na njia bora.

Sox inafanya kazi, na hiyo ni nzuri, lakini nilipanga kutumia MP3 zinazoweza kutolewa kwa sehemu nyeupe ya kelele ya mashine hii, kwa hivyo nilihitaji kicheza tofauti, haswa kitu kizito. mpg123 ndio nimekaa. Sakinisha hiyo sasa na sudo apt-get install mpg123

Sawa, sasa kwa kuwa tunajua Spika Phat anafanya kazi kama inavyotarajiwa, wakati wa kujenga kiolesura na maandishi yanayofanana.

Hatua ya 7: Kuanzisha Webserver ndogo na Webapp

Flask ni mfumo mdogo wa wavuti ulioandikwa katika chatu. Inatoa utendaji wote tunaohitaji kwa webserver (ambayo itafanya kama programu). Sakinisha kwa amri ifuatayo:

bomba3 kufunga chupa

Hiyo itachukua muda, kwa hivyo subiri nje. Mara tu ikiwa imekamilika, tutahitaji kujenga folda ambazo tutahitaji kuvuta kutoka wakati wavuti inaendesha, na folda hizi zina majina maalum. Wacha tuanze na mahali pa kupangisha wavuti. Kutoka kwa saraka ya nyumbani, fanya saraka mpya inayoitwa www na mkdir www. Sasa cd www katika saraka hiyo. Hapa tunahitaji saraka mbili zaidi, moja inaitwa tuli na nyingine inaitwa templeti.

Tunahitaji pia mahali pa kuweka MP3s zetu zinazoweza kupakuliwa. Nilitengeneza saraka katika saraka ya nyumbani inayoitwa "sauti" kwa hii. Nilipata MP3s zangu kwa kutafuta MP3 za whitenoise zinazoweza kutolewa kwa urahisi kwenye Google. Sehemu nyingi za bure za kuvuta kutoka. Nilitumia WinSCP kupakia faili.

Unaweza kutaka kuwajaribu kwa amri ya omxplayer hapa chini ikicheza na --vol - ### sehemu ya kupiga kiwango cha sauti inayofaa kwa chumba chako. Tena Ctrl + C itasimamisha kichezaji.

Sasa kwa kuwa tuna wale wote mahali, wacha tuandike chatu ili kusimama kwa seva ya wavuti wakati pi inaanza. Rudi kwenye saraka ya www na uanze faili mpya inayoitwa webapp.py (nano webapp.py) na ingiza nambari ifuatayo

webbapp.py:

#! / usr / bin / chatu

kutoka Flask kuagiza Flask, render_template, ombi, kuelekeza kuagiza os app = Flask (_ name_) @ app.route ('/') def index (): Return render_template ('index.html') @ app.route ('/ rain', mbinu = ['POST']) def rain (): os.system ("mpg123 -f 8000 - loop -1 ~ / scripts / sounds / rain.mp3") rejea kuelekeza ('/') @ app.route ('/ waves', methods = ['POST']) def mawimbi (): os.system ("mpg123 -f 20500 - loop -1 ~ / scripts / sounds / waves.mp3") rudisha mwelekeo ('/') @ app.route ('/ whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~ / scripts / sounds / whitenoise.mp3") rudisha mwelekeo (' / ') @ app.route (' / stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") rejea kuelekeza (' / ') if _name_ ==' _main_ ': app.run (debug = Kweli, mwenyeji = '0.0.0.0')

Kama unavyoona programu hii ya wavuti itakuwa na kurasa 5, moja ya faharisi, 3 kwa sauti 3 tofauti (wimbi, mvua na whitenoise) na 1 zaidi ya kuacha. Kurasa zote 4 zisizo za faharisi zinaelekeza tena kwa faharisi ('/') baada ya kutekeleza amri iliyotumwa kwa omxplayer, kwa hivyo tunahitaji tu kuunda index.html moja, na sio kitu kingine chochote. Ninatumia killall hapa kama kazi ya kuacha, kwa sababu sikuweza kupata njia bora ya kutuma amri ya "stop" kwa omxplayer. Ikiwa unajua njia bora ya kufanya hivyo, ningependa kuisikia!

Sasa wacha tuunganishe index.html.

Hatua ya 8: Kuunda Tovuti

Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti
Kujenga Tovuti

Hizi ndizo picha nilizotumia kwa ujenzi wangu, lakini jisikie huru kutengeneza yako mwenyewe. Wote wanahitaji kuokolewa kwenye folda tuli tuliyoifanya mapema. Faili ya index.html tutafanya hapa inahitaji kuwa kwenye folda ya templeti. Hiyo ni muhimu sana, vinginevyo, hakuna hata moja itakayofanya kazi. Hapa kuna nambari ya index.html yangu (tena, hii ni html rahisi tu, kwa hivyo ibadilishe kwa njia yoyote inayokufaa).

Kwa kuwa Maagizo hayaniruhusu kuchapisha HTML mbichi, hapa kuna kiunga cha faili kwani iko kwenye Dropbox yangu:

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

Lakini ikiwa itakufa, faili ya HTML ni CSS tu ya kupendeza, na meza rahisi ya 2x2 na hizo ikoni 4 kama vifungo vyenye maadili ya chapisho kama hivyo:

form action = "/ whitenoise" method = "post"

pembejeo src = "/ tuli / whitenoise.png" value = "Kelele Nyeupe"

Inapaswa kuwa rahisi sana kujifanya moja.

Hatua ya mwisho ni kuhakikisha kuwa webapp.py inaendesha wakati wa kuanza, tena, nilifanya hivi kwa kuiongeza kwenye crontab. Kwa hivyo tena chapa crontab -e na ongeza zifuatazo hadi mwisho:

@ reboot python3 /home/pi/www/webapp.py

Kisha reboot pi, onyesha kivinjari kwenye mashine nyingine (simu yako) kwa IP ya pi (bora ikiwa unaweza kufanya static hii) na uone ikiwa ilifanya kazi. Bonyeza vifungo na uone ikiwa unapata kelele.

Kwenye simu ya Android unaweza kuweka alama kwenye wavuti kwenye skrini yako ya nyumbani, na ndivyo nilivyofanya na hii kuifanya ionekane na kuhisi kama programu. Ikiwa unataka kuifanya ionekane "pro" pata au tengeneza faili inayofaa ya.ico na upe wavuti ikoni yake ambayo itaonekana kwenye skrini ya nyumbani ya simu yako na ionekane kama programu. Mafunzo mengi mkondoni juu ya jinsi ya kuongeza ikoni (favicon) kwenye wavuti.

Hatua ya 9: Jamisha kila kitu kwa Kesi

Jam Kila kitu kwenye Kesi
Jam Kila kitu kwenye Kesi
Jam Kila kitu kwenye Kesi
Jam Kila kitu kwenye Kesi
Jam Kila kitu kwenye Kesi
Jam Kila kitu kwenye Kesi

Sasa kwa kuwa kila kitu kimejaribiwa na kinafanya kazi, wakati wa kuijaza kwa kesi.

Nilijenga mlima wa kusimama kwa Raspberry Pi Zero kutumia plastiki iliyobaki niliyokuwa nayo karibu na nyumba. Kisha nikachimba mashimo kadhaa kwa paneli USB ndogo ya jopo, na kutumia faili za vito vya mraba zilizotengwa kwenye shimo. Cable mount mount ni ngumu kidogo, kwa hivyo naweza kununua adapta ya pembe ya kulia kwa bandari ndogo ya USB kwenye Pi wakati mwingine baadaye.

Nilikata ufunguzi mdogo juu ya kesi ili spika icheze kwa kuchimba mashimo mawili na kuyaunganisha na Dremel. Kisha ukachimba mashimo kwenye kifuniko ili kuweka Spika Phat. Kwa kile kinachofaa, baada ya kuchukua picha hii nilirudi nyuma na kutengeneza mashimo mengine machache kwa sababu kelele ilikuwa imenaswa ndani ya kesi hiyo. Niliweka Blinkt kwa kutumia vitu vya bango kwa sababu kitu hicho hakina mashimo ya mlima, lakini putty inaonekana kushikilia vizuri, kwa hivyo itafanya.

Hatua ya 10: Hiyo ndio

Hiyo Ndio!
Hiyo Ndio!

Chomeka na umemaliza. Hapa kuna yangu inaendesha tu baada ya saa nane usiku. LED ya kijani kwenye pi yenyewe sio mkali kama picha hii inavyoonekana.

Marekebisho kadhaa ya baadaye niliyoyafanya:

Niliongeza kurasa 4 zaidi kwenye wavuti.py na faili za index.html. Wale 4 wakiwa "nyekundu", "manjano", "kijani", na "mbali". Maelezo ya kibinafsi. Nilitaka uwezo wa kuibadilisha kutoka kijani kurudi kwenye manjano ikiwa mke na mimi tulikuwa tukisikia uchovu zaidi na hatutaki kusumbuliwa.

@ app.route ('/ red', methods = ['POST']) def red (): os.system ("python ~ / scripts / red.py") rudisha mwelekeo ('/')

Kimsingi hizo mara 4, kuendesha hati 4 tofauti, kisha vifungo vingine kwenye faharisi ambavyo huita kurasa hizo.

Mabadiliko mengine ambayo tayari niliona, lakini nilichimba mashimo zaidi na nikapanua ufunguzi uliopo karibu na spika kwa sababu kelele haikukimbia kiambatisho vizuri.

Ikiwa nitafanya marekebisho yoyote ya ziada, nitahakikisha nirudi hapa na kuorodhesha.

Hatua ya 11: Nyongeza

Baada ya kujenga hii niligundua kuwa mimi na mke wangu mara nyingi tunaacha simu zetu chini wakati tunamlaza mtoto kitandani au kulala. Kwa hivyo niliongeza kitufe cha kushinikiza kwa muda mfupi kwa pini ya mwili 36, na ni pamoja na nambari ifuatayo (niliiita button.py) kukimbia mwanzoni mwa rc.local:

#! / usr / bin / env chatu

kuagiza RPi. GPIO kama wakati wa kuagiza wa GPIO kuagiza kuingiza kuingiza tena GPIO.setmode (GPIO. BOARD) # Tumia Kitufe cha Kuhesabu Nambari za Kimwili = 36 # Kitufe kimeunganishwa na pini halisi 16 GPIO.setup (kifungo, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Fanya kitufe cha kuingiza, Anzisha Resistor ya Kuvuta wakati ni Kweli: ikiwa GPIO.input (kifungo) == 0: # Subiri kitufe cha vyombo vya habari returnprocess = Uongo # Hapo awali uliweka sauti kuwa mbali s = subprocess. ["ps", "ax"], stdout = subprocess. PIPE) kwa x katika s.stdout: ikiwa re.search ("mpg123", x): returnprocess = True ikiwa mchakato wa kurudi = Uongo: mfumo wa os (mfumo mpg123) --loop -1 / nyumba/pi/script/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/script/red.py ") mwingine: os.system (" killall mpg123 ") os Mfumo ("python /home/pi/script/lightsout.py")

Kama unavyoona, pia nimebadilisha mpg123 kutoka kwa omxplayer kwa sababu ni nyepesi zaidi na ni rahisi kutumia.

HATA hivyo, kwa sababu fulani ninapoweka hati hii katika rc.local inafanya kazi wakati wa kuanza bila shida yoyote. Lakini sauti ni kweli choppy. Ninapoendesha hati kama kawaida, kwa putty, hakuna maswala kama hayo. Nina kubeba wakati wa kusuluhisha hii, kwa hivyo ikiwa mtu yeyote ana maoni yoyote, tafadhali nijulishe! Asante.

Ilipendekeza: