Kvėpuojanti šviesa, valdoma „Raspberry Pi“: 5 žingsniai
Kvėpuojanti šviesa, valdoma „Raspberry Pi“: 5 žingsniai
Anonim
Kvėpuojanti šviesa, valdoma „Raspberry Pi“
Kvėpuojanti šviesa, valdoma „Raspberry Pi“

Čia aprašyta „Kvėpavimo pratimų lemputė“yra paprasta ir palyginti nebrangi pulsuojanti šviesa, kuri gali padėti palaikyti kvėpavimą ir padėti išlaikyti pastovų kvėpavimo ritmą. Jis taip pat gali būti naudojamas, pvz. kaip raminanti naktinė lemputė vaikams. Dabartiniame etape tai labiau veikiantis prototipas.

Taip pat galite naudoti jį kaip nebrangų ir nesudėtingą pavyzdį „fiziniam skaičiavimui“su „Raspberry Pi“, pvz. bus naudojamas kaip edukacinis projektas pradedantiesiems, čia yra analoginis (rotacinis potenciometras) ir skaitmeninis įėjimas (mygtukas), taip pat skaitmeninis (LED) ir PWM išėjimas (LED grandinės), o pakeitimų poveikis yra tiesiogiai matomas.

Šviesa eina per pasikartojančius apskritimus, susidedančius iš keturių fazių: perėjimo nuo žalios (viršutinės) iki raudonos (apatinės), tik raudonos fazės, perėjimo nuo raudonos iki žalios ir tik žalios. Šių fazių ilgį apibrėžia konstantos, kurias galima keisti potenciometrais. Procesą galima pradėti, pristabdyti, atnaujinti ir sustabdyti paspaudus mygtukus. Šviesos diodai rodo dabartinę fazę. Jis pagrįstas Pimoroni „Firefly Light“pavyzdžiu (žr. Čia). Panašiai kaip „Firefly Light“, jam reikia „Raspberry Pi“(nulis), „Pimoroni Explorer pHAT“(arba HAT) ir dviejų „IKEA SÄRDAL“LED šviesos grandinių. Pastarieji yra prijungti prie dviejų pHAT PMW/variklio prievadų. Užuot naudojęs stiklainį, šviesos diodus įdėjau į IKEA nuotraukų rėmelį. Aš šiek tiek bandžiau optimizuoti pradinį „firefly light“python scenarijų, įdiegdamas pasirinktinę sinuso funkciją ryškumo/ impulsų pločio pokyčiams ir įvedžiau dvi „palaikymo“fazes tarp pritemdymo fazių. Keisdamas parametrus, kad būtų rastas patogus šviesos modelis, pastebėjau, kad prietaisas gali padėti palaikyti labai aiškiai apibrėžtą, taisyklingą kvėpavimo modelį. Taigi kai kuriems iš jūsų ši „kvėpuojanti šviesa“gali būti naudinga meditacijos ar mokymo tikslais. Kadangi „Explorer pHAT“turi keturis skaitmeninius ir keturis analoginius įėjimus, labai lengva reguliuoti iki keturių skirtingų parametrų, naudojant slankiojančius arba sukamuosius potenciometrus, ir įjungti žibintų paleidimo/paleidimo/sustabdymo funkcijas naudojant mygtukus. Tai leis jums naudoti įrenginį ir optimizuoti parametrus pagal jūsų poreikius be monitoriaus prijungimo prie „Pi“.

Be to, „Explorer pHAT“yra su keturiais skaitmeniniais išėjimais, kurie leidžia pridėti šviesos diodus arba signalus, taip pat du 5 V ir du įžeminimo prievadus bei du variklių ar panašių įrenginių PWM išėjimus. Įsitikinkite, kad naudojate tinkamus rezistorius, kad sumažintumėte šviesos diodų įtampą.

„Pimoroni“„Explorer pHAT“python biblioteka leidžia labai lengvai valdyti visus šiuos įvesties/išvesties prievadus.

Šioje instrukcijoje aprašytos įrenginio versijos su 0, 2 ir 4 potenciometrais ir mygtukais. Pasirinkite tą, kuris atitinka jūsų poreikius.

Norėdami savarankiškai valdyti įrenginį, galite naudoti maitinimo bloką arba „Pimoroni LiPo“tarpiklio ir „LiPo“akumuliatoriaus derinį, kaip aprašyta „Firefly Light“.

Atnaujintos 2018 m. Gruodžio 28 d. Versijos: pridėta „keturių potenciometrų ir keturių mygtukų“versija. 30: pridėtas 4-poti versijos kodas ir vaizdai.

1 žingsnis: naudojamos / reikalingos medžiagos

Naudotos / reikalingos medžiagos
Naudotos / reikalingos medžiagos
Naudotos / reikalingos medžiagos
Naudotos / reikalingos medžiagos
Naudotos / reikalingos medžiagos
Naudotos / reikalingos medžiagos

- „Raspberry Pi Zero“(4,80 GBP Pimoroni mieste, JK) ir „micro SD“kortelė (> = 8 GB) su „Raspian“

- „Pimoroni Explorer pHAT“(10 GBP „Pimoroni“, JK). Neprivaloma: vienos eilės antraštė, jungiamieji kabeliai

- IKEA SÄRDAL LED grandininiai žibintai su 12 šviesos diodų (2 x, 3,99 € už kiekvieną IKEA Vokietijoje) arba bet kokia panaši 3-5 V LED grandinė.- IKEA RIBBA nuotraukų rėmelis (13 x 18 cm, 2,49 € IKEA Vokietijoje).

- PU putų gabalas (2 x 18 x 13,5 cm), skirtas šviesos diodams laikyti. Arba gali būti naudojamos styro putos.

- nepermatomo plastiko gabalas (18 x 13,5 cm), veikiantis kaip difuzorius.

- Du spalvoto skaidraus popieriaus lapai (po 9 x 13,5 cm). Naudojau raudoną ir žalią.

- Plonas, labai nepermatomas plastiko lakštas (18 x 13,5 cm), veikiantis kaip išorinis ekranas. Aš naudojau ploną baltą polikarbonato lakštą. Pasirinktinai, derinamai versijai:

Norėdami reguliuoti rampos laiką ir plokščiakalnio trukmę arba kitus parametrus, tokius kaip ryškumas.- 10, 20 arba 50 kOhm potenciometrai (iki keturių, aš naudoju du 10 kOhm atitinkamai keturis 50 omų).

Kaip pradžios/sustabdymo/pristabdymo/atnaujinimo mygtukai:- Mygtukai (iki keturių, aš naudoju keturis ar du)

Kaip apskritimo fazių rodikliai:- Spalvoti šviesos diodai ir reikalingi rezistoriai (priklausys nuo naudojamų šviesos diodų charakteristikų).

  1. apie 140 omų, esant 5,2 -> 2, 2 V (geltona, oranžinė, raudona; kai kurie žali šviesos diodai),
  2. apie 100 omų, esant 5,3 -> 3,3 V (kai kurie žali; mėlyni, balti šviesos diodai)

- Trumpieji kabeliai ir duonos lenta

Pasirinktinai, naudojant bateriją varomą versiją:

  • 5V „Micro-USB“maitinimo blokas arba
  • „Pimoroni Zero LiPo“tarpinė ir „LiPo“baterija

2 žingsnis: Lazout ir surinkimas

Lazoutas ir surinkimas
Lazoutas ir surinkimas
Lazoutas ir surinkimas
Lazoutas ir surinkimas
Lazoutas ir surinkimas
Lazoutas ir surinkimas

Surinkite „Explorer pHAT“, kaip aprašė gamintojas. Pridėjau vienos eilės antraštę, skirtą supaprastintam jungiamųjų kabelių prijungimui prie pHAT įvesties/išvesties prievadų. Nustatykite „Pi“ir įdiekite „Pimoroni“biblioteką „Explorer HAT/pHAT“, kaip aprašė Pimoroni. Išjunkite „Pi“ir pritvirtinkite pHAT prie „Pi“. Ištraukite akumuliatorių paketus iš šviesos diodų grandinių, nukirpdami laidus ir skardindami laidų galus. Perpjaukite du 2x vyriškus trumpiklius, esančius viduryje, apvyniokite laidų galus. Lituokite trumpiklius prie šviesos diodų grandinių ir izoliuokite litavimo vietas naudodami lipnią juostą arba susitraukiantį vamzdelį. Prieš litavimą patikrinkite, kuris iš laidų turi būti prijungtas prie pliuso arba įžeminimo prievadų, ir atitinkamai pažymėkite. Aš naudoju skirtingų spalvų trumpiklius. Iškirpkite putas, kad šviesos diodai, difuzorius ir ekrano lakštai būtų tinkamo dydžio. Šviesos diodų laikymo plokštėje pažymėkite vietas, kur turi būti dedami šviesos diodai, ir įpurškite 3-5 mm skyles į putas. Tada įdėkite 24 šviesos diodus į nurodytas vietas. Įdėkite spalvotą popierių ir difuzoriaus plokštes ant LED plokštės (žr. Paveikslėlius), padėkite rėmelį virš pakuotės. Pritvirtinkite putų sluoksnius rėme, pvz. naudojant lipnią juostelę. Prijunkite LED juostos kabelius prie „Explorer pHAT“„variklio“prievadų. Norėdami nustatyti derinamą versiją, įdėkite į duonos lentą potenciometrus, mygtukus, valdymo šviesos diodus (ir (arba) signalus) ir rezistorius ir prijunkite juos prie atitinkamų „Explorer“pHAT prievadų.

Paleiskite „Pi“ir įdiekite reikalingas bibliotekas, kaip aprašyta „Pimoroni“svetainėje, tada paleiskite pateiktą „Python 3“scenarijų. Jei viena iš LED grandinių neveikia, ji gali būti prijungta netinkama kryptimi. Tada galite pakeisti pHAT pliuso/minuso jungtis arba pakeisti programą, pvz. pakeisti „eh.motor.one.backwards ()“į „… į priekį ()“.

Pridedami rasite scenarijus su fiksuotais nustatymais, kuriuos galite pakeisti programoje, ir pavyzdį, kuriame galite keisti kai kuriuos nustatymus naudodami potenciometrus ir pradėti bei sustabdyti šviesos ciklą naudodami mygtukus. Turėtų būti ne per sunku pritaikyti scenarijus, kad jie atitiktų jūsų „kvėpuojančios šviesos“išdėstymą.

3 žingsnis: „Python“scenarijai

„Pimoroni“„Python“biblioteka, skirta „Explorer HAT/pHAT“, labai palengvina adresatų, prijungtų prie HAT įvesties/išvesties prievadų, adresavimą. Du pavyzdžiai: „eh.two.motor.backwards (80)“varo įrenginį, prijungtą prie PWM/2 variklio prievado, maksimaliu 80% intensyvumu atgal, „eh.output.three.flash ()“prijungia šviesos diodą kad išvesties prievado numeris trečias mirksėtų, kol jis bus sustabdytas. Sukūriau keletą šviesos variantų, iš esmės pridėdamas vis didesnius valdymo lygius, pridėdamas iki keturių mygtukų ir potenciometrų. Prijungta rasite „Python“programą, pavadintą „Kvėpuojanti šviesa, fiksuota linija.py , kur programoje turi būti pakeisti visi keturi parametrų nustatymai. Be to, versija, pavadinta „Kvėpuojanti šviesa var lin cosin.py“, kurioje dviejų pritemdymo fazių ilgis gali būti reguliuojamas naudojant du potenciometrus, o sudėtingiausia versija „Kvėpuojanti šviesa var lin cosin3.py“- keturių potenciometrų ir mygtukų versijai.. Programos parašytos „Python 3“.

Visais atvejais dviračio procesas gali būti sukeltas ir sustabdytas naudojant du mygtukus, o keturių mygtukų versijoje taip pat galite nutraukti ir iš naujo paleisti procesą. Be to, prie skaitmeninių išvesties prievadų galima prijungti keturis (spalvotus) šviesos diodus, nurodančius konkrečias fazes. Prietaiso ciklas susideda iš keturių etapų:

- „įkvėpimo“fazė, kai viršutiniai šviesos diodai yra pritemdyti, o apatiniai šviesos diodai padidina intensyvumą

- „sulaikykite kvėpavimą“fazė, kai viršutiniai šviesos diodai yra išjungti, o apatiniai - maksimaliai

- „iškvėpimo“fazė, kai apatiniai šviesos diodai yra pritemdyti, o viršutiniai šviesos diodai padidina intensyvumą

- fazė „likti iškvėptas“, kai apatiniai šviesos diodai yra išjungti, o viršutiniai - maksimaliai.

Visų keturių fazių ilgis nustatomas individualiu skaitmeniniu parametru, kuris gali būti nustatytas programoje ir (arba) gali būti sureguliuotas naudojant potenciometrą.

Penktasis parametras apibrėžia maksimalų intensyvumą. Tai leidžia nustatyti maksimalų šviesos diodų ryškumą, kuris gali būti naudingas, jei norite jį naudoti kaip naktinį apšvietimą. Be to, tai gali padėti pagerinti pritemdymo procesą, nes man susidaro įspūdis, kad sunku įžvelgti skirtumą tarp 80 ir 100% intensyvumo.

Pridėjau pasirenkamą (kartu) sinuso funkciją, kad padidintumėte/sumažintumėte ryškumą, nes tai suteikia sklandesnį ryšį tarp fazių. Nesivaržykite išbandyti kitų funkcijų. Pvz. galite pašalinti pertraukas ir naudoti dvi skirtingas (sudėtingas) sinusų funkcijas abiem LED grandinėms ir reguliuoti dažnį ir amplitudę potenciometrais.

# „Kvėpuojanti“lempa: dviejų mygtukų ir dviejų potenciometrų versija

# „Pimoroni Explorer“pHAT pavyzdžio „Firefly“modifikacija # čia: variklio sinchroninis padidėjimas/sumažėjimas/PWM reikšmės # linijinei funkcijai nutildyti linijinę ir išjungti kosino funkciją # Ši versija „var“nuskaito analogines įvestis, nepaiso iš anksto nustatytų nustatymų # skaito skaitmeninė įvestis, mygtukai paleidimui ir sustabdymui "" "pradėti įjungus" Pi ", galite naudoti" Cron ":" Cron "yra" Unix "programa, naudojama darbams planuoti, ir ji turi patogią @reboot funkciją, leidžiančią paleisti scenarijų kai tik „Pi“paleidžiamas. Atidarykite terminalą ir įveskite „crontab -e“, kad redaguotumėte „crontab“. Slinkite iki pat failo apačios, per visas eilutes, prasidedančias #, ir pridėkite šią eilutę (jei jūsų kodas yra /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Uždarykite ir išsaugokite „crontab“(jei naudojate „nano“, paspauskite „Control-x“, „y“ir įveskite, kad išeitumėte ir išsaugotumėte). "" "importavimo laiko importavimo tyrinėtojas, pvz., importo matematikos konstantos vertės #sinus xmax = 316 žingsnis = 5 # žingsnio plotis, pvz. 315/5 suteikia 63 žingsnius/ciklo start_button = 0 # tai apibrėžia prie įvesties prievado prijungto mygtuko 1 būseną stop_button = 0 # tai apibrėžia prie įvesties prievado prijungto mygtuko būseną Nr. 3 pauzė_1 = 0,02 # nustato ilgį pertraukų per „įkvėpimo“fazės žingsnius, taip sulėtinant greitį ir trukmę pauzė_2 = 0,04 # nustato „iškvėpimo“greitėjimo pauzę_3 = 1,5 # pertrauką tarp įkvėpimo ir iškvėpimo fazių (toliau įkvėpti) pauzė_4 = 1,2 # pertrauka iškvėpimo pabaigoje fazė (iškvėpkite) max_intens = 0.9 # maksimalus intensyvumas/ryškumas max_intens_100 = 100*max_intens # tas pats % # Gali leisti optimizuoti „kvėpuojantį“šviesos diodų įspūdį ir sumažinti mirgėjimą. l_cosin = # sąrašas su kosinuso išvestinėmis reikšmėmis (100> = x> = 0) l_lin = # sąrašas su tiesinėmis reikšmėmis (100> = x> = 0) # generuoja kosinuso funkcijų sąrašą, esantį diapazone (0, 316), 3): # 315 yra artimas Pi*100, 105 žingsniai # print (i) n_cosin = [((((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin # pridėkite vertę prie sąrašo # print (l_cosin) # sugeneruokite linijinį i diapazono (100, -1, -1) sąrašą: # suskaičiuokite nuo 100 iki nulio n_lin = l_lin = l_lin + n_lin # print (l_lin) # rodo nuobodų sąrašą print () print ("" "Norėdami pradėti šviesos ciklus, paspauskite mygtuką" Start "(Įvestis 1)" "") print () print ("" "Norėdami sustabdyti šviesą, paspauskite ir laikykite nuspaudę mygtuką „Stop“(trečioji įvestis) "" ") print () # palaukite, kol bus paspaustas pradžios mygtukas, kol (start_button == 0): start_button = eh.input.one.read () # read mygtukas numeris vienas eh.output.one.blink () # mirksi šviesos diodas numeris vieną kartą. miego režimas (0,5) # skaitymas du kartus per sekundę # veikia, o (stop_button == 0): # skaitykite analoginius įėjimus ONE ir TWO, nustatykite nustatymus_1 = eh.an alog.one.read () # apibrėžia raudoną-> žalią ramping rate pause_1 = set_1*0,02 # reikšmės svyruoja nuo 0 iki 0,13 sek. per sekundę ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # apibrėžia žalią -> raudoną pakėlimo greitį pauzė_2 = set_2*0,02 # vertės svyruoja nuo 0 iki 0,13 sek. per sekundę ("set_2:", set_2, " -> pauzė _2: ", pause_2) #" įkvėpimo "fazė eh.output.one.on () # gali sukelti šviesos diodą arba pyptelėjimą '' 'x diapazone (len (l_lin)): fx = max_intens*l_lin [x] # linijinė kreivė eh.motor.one.backwards (fx) eh.motor.two.backwards (maks.: fx = maks. patikrinkite, ar nuspaustas Stop mygtukas stop_button = eh.input.three.read () # „Palaikykite kvėpavimą“pauzę įkvėpimo fazės pabaigoje eh.output.two.on () # įjunkite šviesos diodą du eh.motor.one. atgal (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () #check jei paspaudžiamas Stop mygtukas stop_button = eh.input.three.read () # "iškvėpimo" fazė eh.output.three.on () # įjunkite trijų colių šviesos diodą x diapazone (len (l_lin)): fx = max_intens*l_lin [x] # linijinė kreivė eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'x diapazone (len (l_cosin)): fx = max_intens*l_cosin [x] # tiesinė kreivė eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. atgal (fx) time.sleep (pauzė_2) eh.output.three.off () #patikrinkite, ar nuspaustas Stop mygtukas stop_button = eh.input.three.read () # pauzė tarp „iškvėpimo“ir „įkvėpimo“fazių eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backw (0) time.sleep (pause_4) eh.output.four.off () #patikrinkite, ar paspaudžiamas Stop mygtukas stop_button = eh.input.three.read () # shutdown, turn of all output ports eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () spausdinti () spausdinti („Iki pasimatymo“)

Jei norite naudoti šviesą kaip atskirą įrenginį, pvz. kaip miego ar žadinimo lemputę, galite pridėti mobilųjį maitinimo šaltinį prie „Pi“ir paleisti programą po paleidimo ir naudoti „Cron“, kad įjungtumėte arba išjungtumėte tam tikru metu. Kaip naudoti „Cron“, labai išsamiai aprašyta kitur.

4 žingsnis: vaizdo įrašų pavyzdžiai

Šiame žingsnyje rasite daugybę vaizdo įrašų, kuriuose parodyta šviesa esant normalioms (ty visos vertės> 0, #1) ir ekstremalioms sąlygoms, nes visos vertės nustatytos į nulį (#2), tik pakopos (#3 ir #4), ir nėra rampos (#5 ir #6).

5 žingsnis: keletas pastabų

Prašome atsiprašyti už neteisingus terminus, rašybos klaidas ir klaidas. Nesu gimtoji anglų kalba, taip pat neturiu žinių apie elektrą, elektroniką ar programavimą. Tai iš tikrųjų reiškia, kad stengiuosi parašyti pamokomą anglų kalbą apie tai, kur vargu ar žinau teisingus terminus savo kalba. Taigi bet kokios užuominos, pataisymai ar tobulinimo idėjos yra laukiamos. H