Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ovdje opisano "Svjetlo vježbe disanja" jednostavno je i relativno jeftino pulsirajuće svjetlo koje vas može podržati u vježbama disanja i pomoći vam u održavanju stalnog ritma disanja. Takođe se može koristiti npr. kao umirujuće noćno svjetlo za djecu. U sadašnjoj fazi to je više radni prototip.
Možete ga koristiti i kao jeftin i jednostavan primjer za "fizičko računanje" s Raspberry Pi, npr. koji će se koristiti kao obrazovni projekt za početnike, Ovdje imate analogne (rotacijski potenciometar) i digitalne ulaze (tipkalo), kao i digitalne (LED) i PWM izlaz (LED lanci), a učinci promjena su direktno vidljivi.
Svjetlost prolazi kroz ponavljajuće se krugove koji se sastoje od četiri faze: zelena (gornja) do crvena (donja) tranzicija, samo crvena faza, prijelaz crveno-zeleno i samo zelena faza. Dužina ovih faza definirana je konstantama koje se mogu mijenjati potenciometrima. Proces se može pokrenuti, pauzirati, nastaviti i zaustaviti pritiskom na tipke. LED diode pokazuju trenutnu fazu. Zasniva se na primjeru "Firefly Light" od Pimoronija (vidi ovdje). Slično kao i „Firefly Light“, potrebna mu je Raspberry Pi (nula), Pimoroni Explorer pHAT (ili HAT) i dva IKEA SÄRDAL LED lampa. Kasniji su spojeni na dva priključka PMW/motor pHAT -a. Umjesto staklenke, LED diode sam stavio u IKEA okvir za slike. Pokušavao sam malo optimizirati originalnu python skriptu „firefly light“, implementirajući opcionalnu sinusnu funkciju za promjene svjetline/ širine impulsa i uveo sam dvije faze „zadržavanja“između faza zatamnjenja. Mijenjajući parametre kako bih pronašao laganiji uzorak svjetla, otkrio sam da uređaj može pomoći u podržavanju vrlo jasno definiranog, pravilnog uzorka disanja. Stoga će nekima od vas ovo "Svjetlo za disanje" biti od pomoći za meditaciju ili obuku. Kako Explorer pHAT ima četiri digitalna i četiri analogna ulaza, vrlo je jednostavno regulirati do četiri različita parametra pomoću kliznih ili rotacijskih potenciometara, te uvesti funkcije pokretanja/ponovnog pokretanja/zaustavljanja svjetla pomoću tipki. To će vam omogućiti korištenje uređaja i optimiziranje parametara prema vašim potrebama bez da monitor mora biti priključen na Pi.
Uz to, Explorer pHAT dolazi s četiri digitalna izlazna priključka, koji omogućuju dodavanje LED dioda ili zvučnih signala, plus dva 5V i dva uzemljena porta i dva PWM izlazna priključka za motore ili slične uređaje. Molimo provjerite koristite li ispravne otpornike za smanjenje napona vaših LED dioda.
Pimoronijeva Explorer pHAT python biblioteka čini izuzetno jednostavnom kontrolu svih ovih I/O portova.
U ovom uputstvu opisane su verzije uređaja s 0, 2 i 4 potenciometra i tipkama. Odaberite onu koja odgovara vašim potrebama.
Za autonomno pokretanje uređaja moglo bi se koristiti ili napajanje ili kombinacija Pimoroni LiPo podmetača i LiPo baterije, kako je opisano za "Firefly Light".
Ažurirane verzije 28. decembra 2018.: dodana verzija 'četiri potenciometra i četiri tastera'. 30: dodan je kod za verziju sa 4 porta i dodavanje slika.
Korak 1: Korišteni materijali / potrebni
- Raspberry Pi Zero (4,80 GBP u Pimoroniju, UK) i mikro SD kartica (> = 8 GB) sa Raspian -om
- Pimoroni Explorer pHAT (10 GBP u Pimoroniju, UK). Opciono: jednoredni zaglavlje, kratkospojni kablovi
- IKEA SÄRDAL LED svjetla za lance sa 12 LED dioda (2 x, 3,99 € svaki u IKEA Njemačkoj), ili bilo koji sličan 3-5V LED lanac.- IKEA RIBBA okvir za slike (13 x 18 cm, 2,49 € u IKEA Njemačkoj).
- Komad PU pjene (2 x 18 x 13,5 cm) za držanje LED dioda. Alternativno se može koristiti stiropora.
- Komad neprozirne plastike (18 x 13,5 cm), koji djeluje kao difuzor.
- Dva lista prozirnog papira u boji (9 x 13,5 cm svaki). Koristio sam crvenu i zelenu boju.
- Komad tankog, vrlo neprozirnog plastičnog lima (18 x 13,5 cm), koji djeluje kao vanjski ekran. Koristio sam tanak bijeli polikarbonatni lim. Opcionalno, za podesivu verziju:
Za podešavanje vremena povećanja i trajanja platoa, ili alternativno drugih parametara poput svjetline.- potenciometri od 10, 20 ili 50 kOhm (do četiri, koristio sam dva 10 kOhm odnosno četiri 50 Ohma).
Dugmad za pokretanje/zaustavljanje/pauzu/nastavak:- Dugmad (do četiri, koristio sam četiri ili dva)
Kao pokazatelji za faze kruga:- LED u boji i potrebni otpornici (ovisit će o karakteristikama LED dioda koje ćete koristiti).
- oko 140 Ohma za 5,2 -> 2, 2 V (žuta, narančasta, crvena; neke zelene LED diode),
- oko 100 Ohma za 5,3 -> 3,3 V (neke zelene; plave, bijele LED diode)
- Prespojni kablovi i matična ploča
Opcionalno, za verziju na baterije:
- 5V Micro-USB napajanje, ili
- Pimoroni Zero LiPo podmetač i LiPo baterija
Korak 2: Lazout i montaža
Sastavite Explorer pHAT kako je opisao proizvođač. Dodao sam jednoredni ženski zaglavlje za pojednostavljeno povezivanje kratkospojnih kabela na pHATs I/O portove. Postavite svoj Pi i instalirajte Pimoronijevu biblioteku za Explorer HAT/pHAT, kako je opisao Pimoroni. Isključite Pi i pričvrstite pHAT na Pi. Uklonite baterije iz LED lanaca tako što ćete prerezati žice i pokositi kraj žica. Prerežite dva 2x kratka spojna kabela na sredini, kosite kraj žica. Lemite kratkospojne kabele na LED lance i izolirajte mjesta lemljenja pomoću ljepljive trake ili skupljajuće cijevi. Prije lemljenja provjerite koje žice moraju biti spojene na plus ili uzemljenje i označite ih na odgovarajući način. Koristio sam kratkospojne žice u različitim bojama. Izrežite pjenu da drži LED diode, difuzor i listove ekrana na odgovarajućoj veličini. Na ploči za držanje LED označite položaje na koje će LED diode biti postavljene i probušite rupe od 3-5 mm u pjeni. Zatim umetnite 24 LED diode na zadane položaje. Stavite obojene papire i ploče difuzora na LED ploču (pogledajte slike), a okvir postavite iznad pakovanja. Učvrstite slojeve pjene u okvir, npr. upotrebom ljepljive trake. Priključite kablove LED traka na priključke „motora“Explorer pHAT -a. Za podesivu verziju postavite potenciometre, tipke, kontrolne LED diode (i/ili zujalice) i otpornike na matičnu ploču i povežite ih s odgovarajućim priključcima na Exploreru pHAT.
Pokrenite svoj Pi i instalirajte potrebne biblioteke, kako je opisano na web stranici Pimoroni, a zatim pokrenite priloženu skriptu Python 3. Ako jedan od LED lanaca ne radi, možda je spojen u pogrešnom smjeru. Tada možete promijeniti plus/minus veze na pHAT -u ili promijeniti program, npr. promijenite “eh.motor.one.backwards ()” u “… forwards ()”.
U prilogu se nalaze skripte sa fiksnim postavkama koje možete promijeniti unutar programa i primjer gdje možete promijeniti neke postavke pomoću potenciometara, te pokrenuti i zaustaviti svjetlosni ciklus pomoću gumba. Ne bi trebalo biti previše teško prilagoditi skripte prilagođene vašem vlastitom rasporedu "svjetla za disanje".
Korak 3: Python skripte
Pimoronijeva Python biblioteka za Explorer HAT/pHAT čini izuzetno jednostavnim adresiranje komponenti spojenih na I/O portove HAT -ova. Dva primjera: "eh.two.motor.backwards (80)" pokreće uređaj priključen na PWM/priključak motora 2 sa 80% maksimalnog intenziteta u smjeru unatrag, "eh.output.three.flash ()" čini LED spojenom za izlaz trećeg priključka treperi dok se ne zaustavi. Generirao sam nekoliko varijacija svjetla, u osnovi dodajući povećane nivoe kontrole dodavanjem do četiri tipke i potenciometra. U prilogu se nalazi Python program pod nazivom "Breathing light fixed lin cosin".py "gdje se sve četiri postavke parametara moraju promijeniti u programu. Dodatno, verzija pod nazivom "Breathing light var lin cosin.py" gdje se duljina dvije faze zatamnjivanja može podesiti pomoću dva potenciometra i najrazrađenija verzija "Breathing light var lin cosin3.py" za verziju s četiri potenciometra i tipkama. Programi su napisani na Pythonu 3.
U svim slučajevima ciklički proces može se izazvati i zaustaviti pomoću dva gumba, u verziji s četiri gumba također možete prekinuti i ponovo pokrenuti proces. Osim toga, četiri (obojene) LED diode mogu se spojiti na digitalne izlazne portove, pokazujući određene faze. Ciklus uređaja sastoji se od četiri faze:
- faza "udisanja", gdje su gornje LED diode prigušene, a donje LED pojačavaju intenzitet
- faza "zadržite dah", gdje su gornje LED diode isključene, a donje LED postavljene na maksimum
- faza "izdaha", gdje su donje LED diode prigušene nisko, a gornje LED pojačavaju intenzitet
- faza "ostanite na izdisaju", gdje su donje LED diode isključene, a gornje LED diode svijetle maksimalno.
Dužina sve četiri faze definirana je pojedinačnim numeričkim parametrom, koji se može ili fiksirati u programu i/ili prilagoditi pomoću potenciometra.
Peti parametar definira maksimalni intenzitet. Omogućuje vam postavljanje maksimalne svjetline LED dioda, što bi moglo biti zgodno ako ga želite koristiti kao noćno svjetlo. Osim toga, može vam omogućiti poboljšanje procesa zatamnjivanja, jer imam dojam da je teško vidjeti razliku između intenziteta 80 i 100%.
Dodao sam dodatnu (ko) sinusnu funkciju za povećanje/smanjenje svjetline, jer daje glatkiju vezu između faza. Isprobajte druge funkcije. Npr. možete ukloniti prekide i koristiti dvije različite (složene) sinusne funkcije za oba LED lanca i podesiti frekvenciju i amplitudu pomoću potenciometara.
# Lampa "disanje": verzija sa dva dugmeta i dva potenciometra
# modifikacija primjera krijesnice za Pimoroni Explorer pHAT # ovdje: sinoidno povećanje/smanjenje vrijednosti motora/PWM vrijednosti # za linearnu funkciju uključivanje linearne i isključivanje funkcije cosin # Ova verzija "var" čita analogne ulaze, poništava unaprijed definirane postavke # čitanja digitalni ulaz, tipke za pokretanje i zaustavljanje "" "za pokretanje nakon uključivanja Pi možete koristiti Cron: Cron je Unix program koji se koristi za planiranje poslova i ima prikladnu funkciju @reboot koja vam omogućuje pokretanje skripte kad god se Pi pokrene. Otvorite terminal i upišite crontab -e za uređivanje crontaba. Pomaknite se skroz do dna datoteke, mimo svih redaka koji počinju #, i dodajte sljedeći redak (pod pretpostavkom da je vaš kôd na /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Zatvorite i sačuvajte svoju crontab (ako koristite nano, pritisnite control-x, y i enter za izlaz i spremanje). "" "vreme uvoza import explorerhat kao eh uvoz matematičke konstantne vrednosti #sinus xmax = 316 step = 5 # širina koraka, npr. 315/5 daje 63 koraka/ciklus start_button = 0 # ovo definira stanje tipke spojene na ulazni port br. 1 stop_button = 0 # ovo definira stanje tipke spojene na ulazni port br. 3 pause_1 = 0,02 # postavlja dužinu pauza unutar koraka u fazi "udisaja", čime se povećava brzina i trajanje pauze_2 = 0,04 # postavlja pauzirajuću brzinu "izdaha "_3 = 1,5 # pauze između faza udaha i izdisaja (zadržite udah) pauza_4 = 1,2 # pauze na kraju izdisaja faza (zadržite izdah) max_intens = 0.9 # maksimalni intenzitet/svjetlina max_intens_100 = 100*max_intens # isto u % # Može omogućiti optimiziranje "disanja" utiska LED dioda i smanjiti treperenje. l_cosin = # lista s izvedenim vrijednostima cosinusa (100> = x> = 0) l_lin = # lista s linearnim vrijednostima (100> = x> = 0) # generira listu funkcija cosinus za i u rasponu (0, 316, 3): # 315 je blizu Pi*100, 105 koraka # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generiraj vrijednost # print (n_cosin) l_cosin = l_cosin + n_cosin #dodajte vrijednost listi # print (l_cosin) # generirajte linearnu listu za i u rasponu (100, -1, -1): # odbrojavanje od 100 do nule n_lin = l_lin = l_lin + n_lin # print (l_lin) # prikazuje dosadnu listu print () print ("" "Za pokretanje ciklusa svetlosti, pritisnite dugme" Start "(Input One)" "") print () print ("" "Za zaustavljanje lampica, pritisnite i držite dugme "Stop" (ulaz tri) "" ") print () # sačekajte dok se dugme Start ne pritisne dok (start_button == 0): start_button = eh.input.one.read () # read dugme broj jedan eh.output.one.blink () # trepće LED broj jedan put.sleep (0.5) # čitanje dvaput u sekundi # trčanje svetli dok (stop_button == 0): # čitanje analognih ulaza JEDAN i DVA, definišite set_1 = eh.an alog.one.read () # definira crveno-> zeleno ramping rate pause_1 = set_1*0,02 # vrijednosti će se kretati između 0 i 0,13 sec/korak ispisa ("set_1:", set_1, " -> pauza _1:", pauza_1) set_2 = eh.analog.two.read () # definira zeleno -> crveno ramping rate pause_2 = set_2*0,02 # vrijednosti će se kretati između 0 i 0,13 sec/korak ispisa ("set_2:", set_2, " -> pause _2: ", pause_2) #" inhalacijska "faza eh.output.one.on () # može pokrenuti LED ili zvučni signal" "" za x u rasponu (len (l_lin)): fx = max_intens*l_lin [x] # linearna krivulja eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'za x u rasponu (len (l_cosin)): fx = max_intens*l_cosin [x] # linearna krivulja eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # provjerite je li pritisnuto dugme Stop.nazad (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # provjerite je li pritisnuto dugme Stop stop_button = eh.input.three.read () # faza "izdaha" eh.output.three.on () # uključite LED tri '' 'za x u rasponu (len (l_lin)): fx = max_intens*l_lin [x] # linearna krivulja eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. unazad (fx) time.sleep (pause_2) '' 'za x u rasponu (len (l_cosin)): fx = max_intens*l_cosin [x] # linearna krivulja eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. backwards (fx) time.sleep (pause_2) eh.output.three.off () #check ako je pritisnuto Stop dugme stop_button = eh.input.three.read () # pauza između faza "izdaha" i "udisaja" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #check ako je Stop dugme pritisnuto stop_button = eh.input.three.read () # isključivanje, okretanje svih izlaznih portova eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () ispis () print ("Zbogom")
Ako želite koristiti svjetlo kao samostalan uređaj, npr. kao svjetlo za spavanje ili buđenje, možete dodati mobilni izvor napajanja u Pi i pokrenuti program nakon pokretanja i koristiti "Cron" za uključivanje ili isključivanje u određeno vrijeme. Kako koristiti "Cron" detaljno je opisano na drugom mjestu.
Korak 4: Primjeri videozapisa
U ovom koraku pronaći ćete brojne videozapise koji prikazuju svjetlo pod normalnim (tj. Sve vrijednosti> 0, #1) i ekstremnim uvjetima, jer su sve vrijednosti postavljene na nulu (#2), samo rampanje (#3 i #4), i bez rampanja (#5 ).;
Korak 5: Neke napomene
Izvinite se zbog bilo kakvih pogrešnih odredbi, pravopisnih grešaka i grešaka. Nisam izvorni govornik engleskog jezika, niti imam razvijeno znanje o električnoj energiji, elektronici ili programiranju. Što zapravo znači da pokušavam da napišem engleski jezik na kome mogu da govorim o stvarima u kojima jedva poznajem tačne izraze na svom jeziku. Stoga su svi savjeti, ispravke ili ideje za poboljšanje dobrodošli. H