INHOUDSOPGAWE:

N Asemhalingslig wat deur 'n Framboos Pi beheer word: 5 stappe
N Asemhalingslig wat deur 'n Framboos Pi beheer word: 5 stappe

Video: N Asemhalingslig wat deur 'n Framboos Pi beheer word: 5 stappe

Video: N Asemhalingslig wat deur 'n Framboos Pi beheer word: 5 stappe
Video: Zo bak je lamskebab zonder marinade in 30 minuten, recept voor lamskebab 2024, Julie
Anonim
'N Asemhalingslig wat beheer word deur 'n Framboos Pi
'N Asemhalingslig wat beheer word deur 'n Framboos Pi

Die "asemhalingsoefeninglig" wat hier beskryf word, is 'n eenvoudige en relatief goedkoop polsende lig wat u kan ondersteun in u asemhalingsoefeninge en u kan help om 'n konstante asemhalingsritme te handhaaf. Dit kan ook gebruik word bv. as 'n strelende naglig vir kinders. In die huidige fase is dit meer 'n werkende prototipe.

U kan dit ook as 'n goedkoop en eenvoudige voorbeeld gebruik vir 'fisiese rekenaar' met 'n Raspberry Pi, bv. om te gebruik as 'n opvoedkundige projek op beginnersvlak, hier het u analoog (roterende potensiometer) en digitale insette (drukknoppie) sowel as digitale (LED) en PWM -uitset (LED -kettings), en die effekte van veranderinge is direk sigbaar.

Die lig loop deur herhalende sirkels wat uit vier fases bestaan: 'n groen (boonste) na rooi (onderste) oorgang, 'n slegs-rooi fase, 'n rooi-tot-groen oorgang en 'n slegs-groen fase. Die lengte van hierdie fases word bepaal deur konstantes wat deur potensiometers aangepas kan word. Die proses kan begin, onderbreek, hervat en gestaak word deur op drukknoppies te druk. LED's dui die huidige fase aan. Dit is gebaseer op die voorbeeld van "Firefly Light" deur Pimoroni (sien hier). Soortgelyk aan die "Firefly Light" benodig dit 'n Raspberry Pi (Zero), die Pimoroni Explorer pHAT (of HAT) en twee IKEA SÄRDAL LED -ligkettings. Die latere is gekoppel aan die twee PMW/motorpoort van die pHAT. In plaas daarvan om 'n pot te gebruik, het ek die LED's in 'n IKEA -raam geplaas. Ek het 'n bietjie probeer om die oorspronklike "vuurvlieglig" -python -skrif te optimaliseer, met 'n opsionele sinusfunksie vir die veranderings in helderheid/ polswydte, en het twee "hou" -fases tussen die verdoffases ingevoer. Terwyl ek die parameters gewysig het om 'n ligter patroon te vind wat gemakliker voel, het ek gevind dat die toestel 'n baie duidelik gedefinieerde, gereelde asemhalingspatroon kan ondersteun. Sommige van u vind hierdie 'asemhalingslig' dus nuttig vir meditasie of opleiding. Aangesien die Explorer pHAT vier digitale en vier analoog insette het, is dit baie maklik om tot vier verskillende parameters te reguleer met behulp van skyfie- of draaipotensiometers, en om met die drukknoppies begin-/herbegin/stop -funksies vir die ligte in te stel. Hiermee kan u die toestel gebruik en die parameters volgens u behoeftes optimaliseer sonder dat 'n monitor aan die Pi gekoppel is.

Boonop bevat die Explorer pHAT vier digitale buitepoorten waarmee u LED's of gonsers kan byvoeg, plus twee 5V- en twee grondpoorten en twee PWM-out-poorte vir motors of soortgelyke toestelle. Maak seker dat u die regte weerstande gebruik om die spanning van u LED's te verminder.

Pimoroni se Explorer pHAT python -biblioteek maak dit baie eenvoudig om al hierdie I/O -poorte te beheer.

In hierdie instruksionele weergawes van die toestel met 0, 2 en 4 potensiometers en knoppies word beskryf. Kies die een wat by u behoeftes pas.

Om die toestel outonoom te laat werk, kan u óf 'n kragbron gebruik, óf die kombinasie van 'n Pimoroni LiPo -onderstel en 'n LiPo -battery, soos beskryf vir die 'Firefly Light'.

Opgedateerde weergawes 28 Desember 2018: 'vier potensiometers en vier drukknoppies' weergawe bygevoeg. 30: kode vir 4-poti weergawe en fritzing beelde bygevoeg.

Stap 1: Gebruikte materiaal / benodig

Materiaal gebruik / benodig
Materiaal gebruik / benodig
Materiaal gebruik / benodig
Materiaal gebruik / benodig
Materiaal gebruik / benodig
Materiaal gebruik / benodig

- Raspberry Pi Zero (4,80 GBP by Pimoroni, UK), en 'n micro SD -kaart (> = 8 GB) met Raspian

- Pimoroni Explorer pHAT (10 GBP in Pimoroni, VK). Opsioneel: 'n enkele ry kop, springkabels

- IKEA SÄRDAL LED-kettingligte met 12 LED's (2 x 3,99 € elk by IKEA Duitsland), of enige soortgelyke 3-5V LED-ketting.- IKEA RIBBA-prentraam (13 x 18 cm, 2,49 € by IKEA Duitsland).

- 'n Stuk PU -skuim (2 x 18 x 13,5 cm) om die LED's te hou. Alternatiewelik kan styro -skuim gebruik word.

- 'n Stukkie ondeursigtige plastiek (18 x 13,5 cm) wat as diffusor optree.

- Twee velle deursigtige gekleurde papier (9 x 13,5 cm elk). Ek het rooi en groen gebruik.

- 'n Stukkie dun, hoogs ondeursigtige plastiekplaat (18 x 13,5 cm) wat as die buitenste skerm dien. Ek het 'n dun, wit polikarbonaatvel gebruik. Opsioneel, vir die afstembare weergawe:

Om die tydsberekening en die plato-duur, of alternatiewelik ander parameters soos helderheid, aan te pas.- 10, 20 of 50 kOhm potensiometers (tot vier het ek twee 10 kOhm onderskeidelik vier 50 Ohm gebruik).

As knoppies begin/stop/pouse/hervat:- drukknoppies (tot vier, ek het vier of twee gebruik)

As aanduidings vir die fases van die sirkel:- Gekleurde LED's en die nodige weerstande (hang af van die eienskappe van die LED's wat u sal gebruik).

  1. ongeveer 140 Ohm vir 5.2 -> 2, 2 V (geel, oranje, rooi; 'n paar groen LED's),
  2. ongeveer 100 Ohm vir 5,3 -> 3,3 V (sommige groen; blou, wit LED's)

- Springkabels en 'n broodbord

Opsioneel, vir 'n battery-aangedrewe weergawe:

  • 5V mikro-USB-kragpakket, of
  • Pimoroni Zero LiPo -rand en 'n LiPo -battery

Stap 2: Uitval en samestelling

Ontspanning en vergadering
Ontspanning en vergadering
Ontspanning en vergadering
Ontspanning en vergadering
Ontspanning en vergadering
Ontspanning en vergadering

Monteer die Explorer pHAT soos beskryf deur die vervaardiger. Ek het 'n enkele ry vroulike kop vir die vereenvoudigde verbinding van springkabels by die pHATs I/O -poorte bygevoeg. Stel u Pi op en installeer die Pimoroni -biblioteek vir die Explorer HAT/pHAT, soos beskryf deur Pimoroni. Skakel die Pi uit en bevestig die pHAT aan die Pi. Verwyder die batterypakke uit die LED -kettings deur die drade te sny en die einde van die drade vas te maak. Sny twee 2x manlike kabels in die middel, maak die punt van die drade vas. Soldeer die aansluitkabels aan die LED -kettings en isoleer die soldeerpunte met kleeflint of krimpbuis. Voordat u soldeer, kyk watter van die drade aan plus- of grondpoort gekoppel moet word en merk dit dienooreenkomstig. Ek het springdrade met verskillende kleure gebruik. Sny die skuim om die LED's, die diffusor en skermblaaie in die regte grootte te hou. Merk die posisies op die LED-houerplaat waar die LED's geplaas moet word en maak 3-5 mm gate in die skuim. Plaas dan die 24 LED's op die gegewe posisies. Plaas die gekleurde papiere en diffusorplate op die LED -plaat (sien prente); dit plaas die raam bo die verpakking. Maak die skuimlae in die raam vas, bv. kleefband gebruik. Koppel die LED -strookkabels aan die "motor" -poort van die Explorer pHAT. Vir die afstembare weergawe, plaas potensiometers, drukknoppies, bedienings -LED's (en/of gonsers) en weerstande op die broodbord en verbind dit met die ooreenstemmende poorte by die Explorer pHAT.

Begin u Pi en installeer die vereiste biblioteke, soos beskryf op die Pimoroni -webwerf, en voer dan die meegeleverde Python 3 -script uit. As een van die LED -kettings nie werk nie, is dit moontlik in die verkeerde rigting gekoppel. Dan kan u die plus/minus -verbindings op die pHAT verander of 'n verandering in die program aanbring, bv. verander "eh.motor.one.backwards ()" na "… forward ()".

Hierby vind u skrifte met vaste instellings wat u binne die program kan verander, en 'n voorbeeld waarin u sommige van die instellings met potensiometers kan aanpas en die ligsiklus met drukknoppies kan begin en stop. Dit moet nie te moeilik wees om die skrifte aan te pas by u eie uitleg van die "asemhalingslig" nie.

Stap 3: Die Python -skrifte

Pimoroni se Python -biblioteek vir die Explorer HAT/pHAT maak dit baie eenvoudig om die komponente wat aan die I/O -poorte van die HAT's gekoppel is, aan te spreek. Twee voorbeelde: "eh.two.motor. agteruit (80)" dryf die toestel wat aan die PWM/motorpoort 2 gekoppel is met 80% maksimum intensiteit in agteruit rigting, "eh.output.three.flash ()" maak 'n LED gekoppel na poort nommer drie flits tot dit gestop is. Ek het 'n paar variasies van die lig gegenereer, wat basies toenemende vlakke van beheer toevoeg deur tot vier drukknoppies en potensiometers by te voeg. Aangeheg vind u 'n Python -program genaamd "Breathing light fixed lin cosin.py "waar al vier parameterinstellings binne die program gewysig moet word. Boonop 'n weergawe genaamd "Breathing light var lin cosin.py" waar die lengte van die twee dimfases aangepas kan word met twee potensiometers en die mees uitgebreide weergawe "Breathing light var lin cosin3.py" vir die vier potentiometer en drukknop weergawe. Die programme is in Python 3 geskryf.

In alle gevalle kan die fietsproses opgeroep en gestaak word met behulp van twee drukknoppies; in die vierknoppie -weergawe kan u ook die proses onderbreek en weer begin. Boonop kan vier (gekleurde) LED's aan die digitale uitvoerpoort gekoppel word, wat die spesifieke fases aandui. Die siklus van die toestel bestaan uit vier fases:

- die "inaseming" -fase, waar die boonste LED's laag gedemp word en die onderste LED's die intensiteit verhoog

- die "hou asem" fase, waar die boonste LED's afgeskakel word en die onderste LED's op maksimum gestel word

- die "uitasem" fase, waar die onderste LED's laag gedemp word en die boonste LED's die intensiteit verhoog

- die fase "bly uitasem", waar die onderste LED's afgeskakel word en die boonste LED's maksimum brand.

Die lengte van al vier die fases word bepaal deur 'n individuele numeriese parameter, wat in die program vasgestel kan word en/of met 'n potensiometer aangepas kan word.

'N Vyfde parameter definieer die maksimum intensiteit. Dit stel u in staat om die maksimum helderheid van die LED's in te stel, wat handig kan wees as u dit as 'n naglig wil gebruik. Boonop kan u die verduisteringsproses verbeter, aangesien ek die indruk het dat dit moeilik is om 'n verskil tussen 80 en 100% intensiteit te sien.

Ek het 'n opsionele (mede) sinusfunksie bygevoeg vir die verhoging/afname van die helderheid, aangesien dit 'n gladder verbinding tussen die fases gee. Probeer gerus ander funksies. Bv. U kan die onderbrekings uitskakel en twee verskillende (komplekse) sinusfunksies vir beide LED -kettings gebruik en die frekwensie en amplitude met potensiometers aanpas.

# Die "asemhaling" -lamp: weergawe met twee knoppies en twee potensiometer

# 'n wysiging van die vuurvlieg -voorbeeld vir die Pimoroni Explorer pHAT # hier: sinoïede verhoging/afname van motor/PWM -waardes # vir lineêre funksie ongedempte lineêre en gedempte kosinfunksie # Hierdie weergawe "var" lees analoog insette, oorheers vooraf gedefinieerde instellings # lees digitale invoer, knoppies om te begin en stop "" "om te begin by die aanskakel van die Pi, u kan Cron gebruik: Cron is 'n Unix -program wat gebruik word om werk te skeduleer, en dit het 'n handige @reboot -funksie waarmee u 'n script kan uitvoer wanneer u Pi begin. Maak 'n terminale oop en tik crontab -e om u crontab te wysig. Blaai tot onder in die lêer, verby al die reëls wat met #begin, en voeg die volgende reël by (as u kode by /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Sluit en stoor u crontab (as u nano gebruik, druk dan op control-x, y en voer in om af te sluit en te stoor). "" "invoer tyd invoer verkenner as eh invoer wiskunde konstante waardes #sinus xmax = 316 stap = 5 # stap breedte, bv. 315/5 gee 63 stappe/siklus start_button = 0 # dit definieer die toestand van 'n drukknoppie wat gekoppel is aan die invoerpoort no 1 stop_button = 0 # dit definieer die toestand van 'n drukknoppie wat gekoppel is aan die invoerpoort no 3 pause_1 = 0.02 # setlengte van pouses binne stappe in die "inasem" -fase, waardeur die tempo en duur styg, pouse_2 = 0.04 # stel die "uitasem" stygingsnelheid pause_3 = 1.5 # onderbreking tussen in- en uitasemfases (bly inasem) pause_4 = 1.2 # breek aan die einde van die uitaseming fase (hou uitasem) max_intens = 0.9 # maksimum intensiteit/helderheid max_intens_100 = 100*max_intens # dieselfde in % # Kan die "asemhaling" van LED's optimaliseer en flikkering verminder. l_cosin = # lys met cosinus afgeleide waardes (100> = x> = 0) l_lin = # lys met lineêre waardes (100> = x> = 0) # genereer cosinus funksie lys vir i in reeks (0, 316, 3): # 315 is naby Pi*100, 105 stappe # druk (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] # genereer waarde # druk (n_cosin) l_cosin = l_cosin + n_cosin # voeg waarde by lys # print (l_cosin) # genereer lineêre lys vir i in reeks (100, -1, -1): # aftel van 100 tot nul n_lin = l_lin = l_lin + n_lin # druk (l_lyn) # toon 'n vervelige lysafdruk () druk ("" "Om die ligsiklusse te begin, druk die" Start "-knoppie (Invoer een)" "") druk () druk ("" "Om te stop druk op die "stop" -knoppie (invoer drie) "" ") druk () # wag totdat die startknoppie ingedruk word terwyl (start_button == 0): start_button = eh.input.one.read () # lees knoppie nommer een eh.output.one.blink () # knipper LED nommer een keer. slaap (0.5) # lees twee keer per sekonde # hardloop ligte terwyl (stop_knoppie == 0): # lees analoog insette EEN en TWEE, definieer instellings set_1 = eh.an alog. set_2 = eh.analog.two.read () # definieer groen -> rooi stygingsnelheid pouse_2 = set_2*0,02 # waardes wissel tussen 0 en 0,13 sek./stapafdruk ("set_2:", set_2, " -> pouse _2: ", pause_2) #" inaseming "fase eh.output.one.on () # mag 'n LED of 'n pieper '' 'vir x in bereik (len (l_lin)) dryf: fx = max_intens*l_lin [x] # lineêre kromme eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'vir x in range (len (l_cosin)): fx = max_intens*l_cosin [x] # lineêre kurwe eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # kyk of Stop -knoppie ingedruk stop_button = eh.input.three.read () # "Hou jou asem" pouse aan die einde van die inasemingsfase eh.output.two.on () # skakel LED twee aan eh.motor.one. agteruit (0) eh.motor.twee.agteruit (max_intens_100) time.sleep (pause_3) eh.output.two.off () #kontroleer of Stop -knoppie ingedruk stop_button = eh.input.three.read () # "uitasem" fase eh.output.three.on () # skakel LED drie '' 'vir x in bereik (len (l_lin)) aan: fx = max_intens*l_lin [x] # lineêre kromme eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'vir x in reeks (len (l_cosin)): fx = max_intens*l_cosin [x] # lineêre kromme eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. agteruit (fx) time.sleep (pause_2) eh.output.three.off () #kontroleer of Stop -knoppie ingedruk stop_button = eh.input.three.read () # pouse tussen "uitasem" en "inasem" fases eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #kontroleer of Stop -knoppie stop_knop ingedruk word = 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 () afdruk () print ("Bye bye")

As u die lig as 'n losstaande toestel wil gebruik, bv. As slaap- of wakkerlig, kan u 'n mobiele kragbron by die Pi voeg en die program na die opstart begin en 'Cron' gebruik om dit op 'n gegewe tydstip aan of uit te skakel. Die gebruik van 'Cron' is elders breedvoerig beskryf.

Stap 4: Video -voorbeelde

In hierdie stap vind u 'n aantal video's wat die lig toon onder normale (dit wil sê alle waardes> 0, #1) en uiterste toestande, aangesien alle waardes op nul (#2) gestel word, slegs oprit (#3 ), en geen oprit nie (#5 ).;

Stap 5: Enkele opmerkings

Verskoon asseblief die verkeerde terme, tikfoute en foute. Ek is nie 'n moedertaalspreker van Engels nie, en ek het ook geen kennis oor elektrisiteit, elektronika of programmering nie. Dit beteken eintlik dat ek probeer om 'n Engelse instruksie te skryf oor dinge waar ek skaars die regte terme in my eie taal ken. Enige wenke, regstellings of idees vir verbetering is dus welkom. H.

Aanbeveel: