Spisu treści:

Oddychające światło kontrolowane przez Raspberry Pi: 5 kroków
Oddychające światło kontrolowane przez Raspberry Pi: 5 kroków

Wideo: Oddychające światło kontrolowane przez Raspberry Pi: 5 kroków

Wideo: Oddychające światło kontrolowane przez Raspberry Pi: 5 kroków
Wideo: Moes ZLD-RCW - Zigbee контроллер Tuya Smart для RGB+CCT LED лент, работа с Home Assistant 2024, Lipiec
Anonim
Oddychające światło kontrolowane przez Raspberry Pi
Oddychające światło kontrolowane przez Raspberry Pi

Opisane tutaj „Światło do ćwiczeń oddechowych” jest prostym i stosunkowo niedrogim pulsującym światłem, które może wspierać Cię w ćwiczeniach oddechowych i pomagać w utrzymaniu stałego rytmu oddychania. Może być również używany m.in. jako kojąca lampka nocna dla dzieci. Na obecnym etapie jest to bardziej działający prototyp.

Można go również użyć jako niedrogiego i prostego w budowie przykładu do "fizycznego przetwarzania" z Raspberry Pi, np. do wykorzystania jako projekt edukacyjny na poziomie początkującym, Tutaj masz wejścia analogowe (potencjometr obrotowy) i cyfrowe (przycisk) oraz cyfrowe (LED) i PWM (łańcuchy LED), a efekty zmian są bezpośrednio widoczne.

Światło biegnie przez powtarzające się okręgi składające się z czterech faz: przejście zielone (górne) do czerwonego (dolne), faza tylko czerwieni, przejście od czerwieni do zieleni i faza tylko zieleni. Długość tych faz określają stałe, które można modyfikować za pomocą potencjometrów. Proces można uruchamiać, wstrzymywać, wznawiać i zatrzymywać, naciskając przyciski. Diody LED wskazują aktualną fazę. Jest to oparte na przykładzie „Firefly Light” firmy Pimoroni (patrz tutaj). Podobnie jak „Firefly Light”, wymaga Raspberry Pi (Zero), Pimoroni Explorer pHAT (lub HAT) i dwóch łańcuchów świetlnych LED IKEA SĘRDAL. Te ostatnie są podłączone do dwóch portów PMW/silnika pHAT. Zamiast używać słoika, umieściłem diody w ramce na zdjęcia IKEA. Próbowałem nieco zoptymalizować oryginalny skrypt Pythona „światło świetlika”, implementując opcjonalną funkcję sinus dla zmian jasności / szerokości impulsu i wprowadziłem dwie fazy „wstrzymania” między fazami ściemniania. Podczas modyfikowania parametrów, aby znaleźć bardziej komfortowy wzorzec światła, odkryłem, że urządzenie może pomóc w utrzymaniu bardzo wyraźnie określonego, regularnego wzorca oddychania. Dlatego niektórzy z was mogą uznać to „oddech światła” za pomocne w medytacji lub w celach szkoleniowych. Ponieważ Explorer pHAT ma cztery wejścia cyfrowe i cztery analogowe, bardzo łatwo jest regulować do czterech różnych parametrów za pomocą potencjometrów suwakowych lub obrotowych oraz wprowadzać funkcje start/restart/stop dla świateł za pomocą przycisków. Umożliwi to korzystanie z urządzenia i optymalizację parametrów do własnych potrzeb bez konieczności podłączenia monitora do Pi.

Ponadto Explorer pHAT jest wyposażony w cztery cyfrowe porty wyjściowe, które umożliwiają dodanie diod LED lub brzęczyków, plus dwa porty 5V i dwa porty uziemienia oraz dwa porty wyjściowe PWM dla silników lub podobnych urządzeń. Upewnij się, że używasz odpowiednich rezystorów, aby zmniejszyć napięcie diod LED.

Biblioteka python Explorer pHAT firmy Pimoroni sprawia, że sterowanie wszystkimi tymi portami I/O jest niezwykle proste.

W tej instrukcji opisane są wersje urządzenia z 0, 2 i 4 potencjometrami i przyciskami. Wybierz ten, który odpowiada Twoim potrzebom.

Do autonomicznego działania urządzenia można było użyć zasilacza lub kombinacji podkładki Pimoroni LiPo i akumulatora LiPo, jak opisano w „Firefly Light”.

Zaktualizowane wersje 28 grudnia 2018: dodano wersję „cztery potencjometry i cztery przyciski”. 30: dodano kod dla wersji 4-poti i obrazki fritzowe.

Krok 1: Użyte/wymagane materiały

Użyte/wymagane materiały
Użyte/wymagane materiały
Użyte/wymagane materiały
Użyte/wymagane materiały
Użyte/wymagane materiały
Użyte/wymagane materiały

- Raspberry Pi Zero (4,80 GBP w Pimoroni, Wielka Brytania) i karta micro SD (>= 8 GB) z Raspianem

- Pimoroni Explorer pHAT (10 GBP w Pimoroni w Wielkiej Brytanii). Opcjonalnie: nagłówek jednorzędowy, kable rozruchowe

- Łańcuch świetlny LED IKEA SĘRDAL z 12 diodami LED (2 x, 3,99 € każda w IKEA Niemcy) lub dowolny podobny łańcuch LED 3-5 V. - Ramka na zdjęcia IKEA RIBBA (13 x 18 cm, 2,49 € w IKEA Niemcy).

- Kawałek pianki PU (2 x 18 x 13,5 cm), do trzymania diod LED. Alternatywnie można użyć pianki styropianowej.

- Kawałek nieprzezroczystego plastiku (18 x 13,5 cm), pełniący funkcję dyfuzora.

- Dwa arkusze kolorowego przezroczystego papieru (9 x 13,5 cm każdy). Użyłem czerwieni i zieleni.

- Kawałek cienkiego, mocno nieprzezroczystego arkusza z tworzywa sztucznego (18 x 13,5 cm), pełniący rolę ekranu zewnętrznego. Użyłem cienkiej białej płyty z poliwęglanu. Opcjonalnie, dla wersji przestrajanej:

Aby dostosować czas rampy i czas trwania plateau, lub alternatywnie inne parametry, takie jak jasność. - potencjometry 10, 20 lub 50 kOhm (do czterech, użyłem dwóch 10 kOhm i czterech 50 Ohm).

Jako przyciski start/stop/pause/resume:- Przyciski (do czterech, ja użyłem czterech lub dwóch)

Jako wskaźniki faz koła: - Kolorowe diody LED i niezbędne rezystory (zależą od charakterystyki diod, których użyjesz).

  1. ok 140 Ohm dla 5,2 -> 2, 2 V (żółty, pomarańczowy, czerwony; trochę zielonych diod),
  2. około 100 Ohm dla 5,3 -> 3,3 V (niektóre zielone; niebieskie, białe diody)

- Kable rozruchowe i płytka stykowa

Opcjonalnie, dla wersji zasilanej bateryjnie:

  • Zasilacz 5 V Micro-USB lub
  • Podkładka Pimoroni Zero LiPo i akumulator LiPo

Krok 2: Lazout i montaż

Lazout i montaż
Lazout i montaż
Lazout i montaż
Lazout i montaż
Lazout i montaż
Lazout i montaż

Zmontuj Explorer pHAT zgodnie z opisem producenta. Dodałem jednorzędowe złącze żeńskie, aby uprościć podłączenie kabli połączeniowych do portów I/O pHAT-ów. Skonfiguruj swoje Pi i zainstaluj bibliotekę Pimoroni dla Explorer HAT/pHAT, zgodnie z opisem Pimoroni. Wyłącz Pi i podłącz pHAT do Pi. Usuń pakiety baterii z łańcuchów LED, przecinając przewody i cynując końce przewodów. Przetnij dwa 2x męskie kable rozruchowe na środku, cynuj końce przewodów. Przylutuj kable rozruchowe do łańcuchów diod LED i odizoluj punkty lutowania za pomocą taśmy samoprzylepnej lub rurki termokurczliwej. Przed lutowaniem sprawdź, które z przewodów należy podłączyć do portów plus lub masy i odpowiednio je oznacz. Użyłem przewodów połączeniowych w różnych kolorach. Przytnij piankę, aby utrzymać diody LED, dyfuzor i arkusze ekranu do odpowiedniego rozmiaru. Na płytce mocującej LED zaznacz miejsca, w których mają być umieszczone diody LED i przebij 3-5 mm otwory w piance. Następnie wstaw 24 diody LED w odpowiednich pozycjach. Umieść kolorowe papiery i płytki rozpraszające na płycie LED (patrz zdjęcia), umieść ramkę nad opakowaniem. Zamocuj warstwy pianki w ramie, np. za pomocą taśmy klejącej. Podłącz kable taśmy LED do portów „silnika” urządzenia Explorer pHAT. W przypadku wersji przestrajalnej umieść potencjometry, przyciski, diody sterujące (i/lub brzęczyki) oraz rezystory na płytce stykowej i połącz je z odpowiednimi portami w Explorer pHAT.

Uruchom swoje Pi i zainstaluj wymagane biblioteki, zgodnie z opisem na stronie internetowej Pimoroni, a następnie uruchom dostarczony skrypt Python 3. Jeśli jeden z łańcuchów diod LED nie działa, może być podłączony w złym kierunku. Wtedy można albo zmienić połączenia plus/minus na pHAT albo dokonać zmiany w programie np. zmień „eh.motor.one.backwards()” na „… forwards()”.

W załączeniu skrypty ze stałymi ustawieniami, które można zmieniać w programie oraz przykład, w którym można modyfikować niektóre ustawienia za pomocą potencjometrów oraz uruchamiać i zatrzymywać cykl świecenia za pomocą przycisków. Dostosowanie skryptów do własnego układu „światła oddechowego” nie powinno być zbyt trudne.

Krok 3: Skrypty Pythona

Biblioteka Pythona Pimoroni dla Explorer HAT/pHAT sprawia, że adresowanie komponentów podłączonych do portów I/O HAT jest niezwykle proste. Dwa przykłady: „eh.two.motor.backwards(80)” steruje urządzeniem podłączonym do portu 2 PWM/silnika z 80% maksymalną intensywnością w kierunku wstecznym, „eh.output.three.flash()” powoduje podłączenie diody LED do wyjścia portu numer trzy miga, dopóki nie zostanie zatrzymany. Wygenerowałem kilka odmian światła, w zasadzie dodając rosnące poziomy sterowania poprzez dodanie do czterech przycisków i potencjometrów. W załączeniu znajduje się program Pythona o nazwie „Breathing light fixed lin cosin.py”, gdzie wszystkie cztery ustawienia parametrów muszą zostać zmodyfikowane w programie. Dodatkowo wersja o nazwie „Światło oddechowe var lin cosin.py”, w której długość dwóch faz ściemniania można regulować za pomocą dwóch potencjometrów oraz najbardziej rozbudowana wersja „Światło oddechowe var lin cosin3.py” dla wersji z czterema potencjometrami i przyciskiem. Programy są napisane w Pythonie 3.

We wszystkich przypadkach proces cykliczny można wywołać i zatrzymać za pomocą dwóch przycisków, w wersji czteroprzyciskowej można również przerwać i ponownie uruchomić proces. Dodatkowo do cyfrowych portów wyjściowych można podłączyć cztery (kolorowe) diody LED, wskazujące poszczególne fazy. Cykl urządzenia składa się z czterech faz:

- faza „wdechu”, gdzie górne diody są przyciemnione, a dolne diody zwiększają intensywność

- faza „wstrzymaj oddech”, gdzie górne diody są wyłączone, a dolne ustawione na maksimum

- faza „wydechu”, gdzie dolne diody są przyciemnione, a górne diody zwiększają intensywność

- faza "pozostań na wydechu", gdzie dolne diody są wyłączone, a górne świecą maksymalnie.

Długość wszystkich czterech faz jest określona przez indywidualny parametr numeryczny, który może być ustalony w programie i/lub może być regulowany za pomocą potencjometru.

Piąty parametr określa maksymalną intensywność. Pozwala ustawić maksymalną jasność diod LED, co może być przydatne, jeśli chcesz używać go jako lampki nocnej. Dodatkowo może pozwolić na usprawnienie procesu ściemniania, bo mam wrażenie, że trudno dostrzec różnicę między intensywnością 80 a 100%.

Dodałem opcjonalną funkcję (co-)sinus do zwiększania/zmniejszania jasności, ponieważ zapewnia płynniejsze połączenie między fazami. Zapraszam do wypróbowania innych funkcji. Np. możesz wyeliminować przerwy i użyć dwóch różnych (złożonych) funkcji sinus dla obu łańcuchów LED oraz dostosować częstotliwość i amplitudę za pomocą potencjometrów.

# Lampa "oddychająca": wersja z dwoma przyciskami i dwoma potencjometrami;

# modyfikacja przykładu świetlika dla Pimoroni Explorer pHAT # tutaj: zwiększenie/zmniejszenie sinoidy wartości silnika/PWM # dla funkcji liniowej unmute linear i mute cosin function # Ta wersja "var" odczytuje wejścia analogowe, zastępuje predefiniowane ustawienia # odczytuje wejście cyfrowe, przyciski do uruchamiania i zatrzymywania """, aby rozpocząć po włączeniu Pi, możesz użyć Cron: Cron to program uniksowy, który służy do planowania zadań i ma wygodną funkcję @reboot, która pozwala uruchomić skrypt za każdym razem, gdy uruchamiasz Pi. Otwórz terminal i wpisz crontab -e, aby edytować crontab. Przewiń do samego końca pliku, poza wszystkie wiersze zaczynające się od # i dodaj następującą (zakładając, że twój kod jest na /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Zamknij i zapisz plik crontab (jeśli używasz nano, naciśnij control-x, y i enter, aby wyjść i zapisać). """ czas importu import explorerhat as eh import wartości stałych matematycznych #sinus xmax = 316 step = 5 # szerokość kroku, np. 315/5 daje 63 kroki/cykl przycisk_startu = 0 # definiuje stan przycisku podłączonego do portu wejściowego nr 1 przycisk_stopu = 0 # definiuje stan przycisku podłączonego do portu wejściowego nr 3 pauza_1 = 0,02 # ustawia długość przerw w krokach w fazie "wdechu", tym samym narastając tempo i czas trwania pause_2 = 0,04 # ustawia tempo narastania "wydechu" pause_3 = 1.5 # przerwa między fazami wdechu i wydechu (trzymaj wdech) pause_4 = 1.2 # przerwa na końcu wydechu faza (utrzymuj wydech) max_intens = 0.9 # maksymalna intensywność/jasność max_intens_100= 100*max_intens # to samo w % # Może pozwolić zoptymalizować wrażenie „oddychania” diod LED i zredukować migotanie. l_cosin= # lista z wartościami pochodnymi cosinusa (100 >= x >=0) l_lin= # lista z wartościami liniowymi (100 >= x >=0) # wygeneruj listę funkcji cosinusa dla i w zakresie (0, 316, 3): # 315 jest blisko Pi*100, 105 kroków # drukuj (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #wygeneruj wartość # drukuj (n_cosin) l_cosin = l_cosin + n_cosin #dodaj wartość do listy # drukuj (l_cosin) # wygeneruj liniową listę dla i w zakresie (100, -1, -1): # odlicz od 100 do zera n_lin= l_lin=l_lin + n_lin # print (l_lin) # pokazuje nudną listę print () print ("""Aby rozpocząć cykle świetlne, naciśnij przycisk "Start" (wejście numer jeden)""") print () print ("""Aby zatrzymać światło, naciśnij i przytrzymaj przycisk "Stop" (wejście trzy)""") print () # poczekaj, aż przycisk Start zostanie naciśnięty podczas (start_button==0): start_button=eh.input.one.read() # read przycisk numer jeden eh.output.one.blink() # miga dioda LED numer jeden raz.sen (0.5) # odczyt dwa razy na sekundę #run świeci podczas (przycisk_stop==0): # odczyt wejść analogowych JEDEN i DWA, zdefiniować ustawienia set_1 =eh.an alog.one.read() # definiuje czerwony-> zielony tempo narastania pauza_1=nastaw_1*0.02 # wartości mieszczą się w zakresie od 0 do 0,13 s/krok drukowanie ("set_1:", set_1, "-> pauza _1:", pauza_1) set_2=eh.analog.two.read() # definiuje zielony -> czerwony szybkość narastania pauza_2=nastaw_2*0.02 # wartości mieszczą się w zakresie od 0 do 0.13 s/krok wydruku („set_2:”, set_2, „-> pauza _2: ", pause_2) # faza "wdechu" eh.output.one.on() # może sterować diodą LED lub sygnałem dźwiękowym ''' dla x w zakresie (len(l_lin)): fx=max_intens*l_lin [x] # krzywa liniowa eh.silnik.jeden.do tyłu(fx) eh.silnik.dwa.do tyłu(max_intens_100-fx) czas.uśpienia(pauza_1) eh.wyjście.jeden.off() ''' dla x w zakresie (len(l_cosin)): fx=max_intens*l_cosin [x] # krzywa liniowa eh.motor.one.backwards(fx) eh.motor.two.backwards(max_intens_100-fx) time.sleep(pause_1) eh.output.one.off() # sprawdź czy przycisk Stop jest wciśnięty stop_button=eh.input.three.read() # "Trzymaj oddech" pauza na końcu fazy wdechu eh.output.two.on() # włącz diodę LED dwa eh.motor.one.wstecz(0) eh.silnik.dwa.wstecz(max_intens_100) time.sleep(pause_3) eh.output.two.off() #sprawdź czy przycisk Stop jest wciśnięty stop_button=eh.input.three.read() # Faza "wydechu" eh.output.three.on() # włącz diodę trzy ''' dla x w zakresie (len(l_lin)): fx=max_intens*l_lin [x] # krzywa liniowa eh.motor.one.backwards(max_intens_100-fx) eh.motor.two.backwards(fx) time.sleep(pause_2) ''' dla x w zakresie (len(l_cosin)): fx=max_intens*l_cosin [x] # krzywa liniowa eh.motor.one.backwards(max_intens_100-fx) eh.motor.two. reverse(fx) time.sleep(pause_2) eh.output.three.off() #sprawdź, czy naciśnięto przycisk Stop stop_button=eh.input.three.read() # przerwa między fazami "wydechu" i "wdechu" eh. wyjście.cztery.on() silnik.jeden.do tyłu(max_intens_100) silnik.dwa.do tyłu(0) czas.snu(pauza_4) eh.wyjście.cztery.off() #sprawdź, czy wciśnięto przycisk Stop stop_button =eh.input.three.read() # zamknij, wyłącz wszystkie porty wyjściowe eh.motor.one.stop() eh.motor.dwa.stop() eh.output.one.off() eh.output.dwa.off() eh.output.three.off() eh.output.four.off() drukuj () drukuj ("Do widzenia")

Jeśli chcesz wykorzystać światło jako samodzielne urządzenie, np. jako światło do spania lub budzenia, możesz dodać mobilne źródło zasilania do Pi i uruchomić program po uruchomieniu i użyć "Cron" do włączania lub wyłączania go w określonych godzinach. Jak korzystać z "crona" szczegółowo opisałem w innym miejscu.

Krok 4: Przykłady wideo

W tym kroku znajdziesz kilka filmów pokazujących światło w normalnych (tj. wszystkich wartościach > 0, #1) i ekstremalnych warunkach, przy wszystkich wartościach ustawionych na zero (#2), tylko rampa (#3 i #4), i bez ramp (#5 i #6).

Krok 5: Kilka uwag

Proszę przepraszać za wszelkie błędne terminy, literówki i błędy. Nie jestem native speakerem języka angielskiego, nie posiadam rozbudowanej wiedzy z zakresu elektryki, elektroniki czy programowania. Co właściwie oznacza, że próbuję napisać po angielsku instruktaż o rzeczach, w których prawie nie znam poprawnych terminów we własnym języku. Dlatego mile widziane są wszelkie wskazówki, poprawki lub pomysły na usprawnienia. H

Zalecana: