Съдържание:

Дихателна светлина, контролирана от Raspberry Pi: 5 стъпки
Дихателна светлина, контролирана от Raspberry Pi: 5 стъпки

Видео: Дихателна светлина, контролирана от Raspberry Pi: 5 стъпки

Видео: Дихателна светлина, контролирана от Raspberry Pi: 5 стъпки
Видео: The Choice is Ours (2016) Official Full Version 2024, Ноември
Anonim
Дишаща светлина, контролирана от Raspberry Pi
Дишаща светлина, контролирана от Raspberry Pi

Описаната тук „Дихателна светлина за упражнения“е проста и сравнително евтина пулсираща светлина, която може да ви подкрепи при дихателните упражнения и да ви помогне да поддържате постоянен дихателен ритъм. Може да се използва и напр. като успокояваща нощна лампа за деца. В настоящия етап това е по -скоро работещ прототип.

Можете също така да го използвате като евтин и лесен за изграждане пример за "физически изчисления" с Raspberry Pi, напр. да се използва като образователен проект на ниво начинаещи, Тук имате аналогов (ротационен потенциометър) и цифрови входове (бутон), както и цифров (LED) и ШИМ изход (LED вериги), а ефектите от промените са видими директно.

Светлината преминава през повтарящи се кръгове, състоящи се от четири фази: зелен (горен) към червен (долен) преход, фаза само за червено, преход от червено към зелено и само за зелено. Дължината на тези фази се определя от константи, които могат да се променят с потенциометри. Процесът може да бъде стартиран, поставен на пауза, възобновен и спрян чрез натискане на бутони. Светодиодите показват текущата фаза. Тя се основава на примера „Светлина на светулка“от Pimoroni (вижте тук). Подобно на „Firefly Light“, той изисква Raspberry Pi (нула), Pimoroni Explorer pHAT (или HAT) и две светодиодни светлинни вериги IKEA SÄRDAL. Последните са свързани към двата PMW/моторни порта на pHAT. Вместо да използвам буркан, поставих светодиодите в рамка за картини на IKEA. Опитвах се да оптимизирам малко оригиналния скрипт на python „lightfly light“, внедрявайки опционална функция sinus за промените в яркостта/ ширината на импулса и въведох две фази „задържане“между фазите на затъмняване. Докато променях параметрите, за да намеря лек модел, който се чувства по -удобен, открих, че устройството може да помогне за поддържане на много ясно определен, редовен модел на дишане. По този начин някои от вас може да намерят тази „Дишаща светлина“полезна за медитация или тренировъчни цели. Тъй като Explorer pHAT има четири цифрови и четири аналогови входа, е много лесно да се регулират до четири различни параметъра с помощта на плъзгащи или въртящи се потенциометри и да се въведат функции за стартиране/рестартиране/спиране на светлините с помощта на бутони. Това ще ви позволи да използвате устройството и да оптимизирате параметрите според вашите нужди, без мониторът да трябва да бъде свързан към Pi.

В допълнение Explorer pHAT се предлага с четири цифрови изхода, които позволяват добавяне на светодиоди или звукови сигнали, плюс два 5V и два заземяващи порта и два PWM изхода за двигатели или подобни устройства. Моля, уверете се, че използвате правилните резистори, за да намалите напрежението на вашите светодиоди.

Pythoro библиотеката на Explorer на Pimoroni улеснява управлението на всички тези I/O портове.

В тази инструкция са описани версиите на устройството с 0, 2 и 4 потенциометри и бутони. Изберете този, който отговаря на вашите нужди.

За да работи устройството автономно, може да се използва или захранващ блок, или комбинацията от подложка Pimoroni LiPo и LiPo батерия, както е описано за „Светлината на светулка“.

Актуализирани версии на 28 декември 2018 г.: добавена е версия „четири потенциометра и четири бутона“. Дек. 30: Добавен е код за версия с 4 поти и фризиращи изображения.

Стъпка 1: Използвани / необходими материали

Използвани / необходими материали
Използвани / необходими материали
Използвани / необходими материали
Използвани / необходими материали
Използвани / необходими материали
Използвани / необходими материали

- Raspberry Pi Zero (4,80 GBP в Pimoroni, Великобритания) и микро SD карта (> = 8 GB) с Raspian

- Pimoroni Explorer pHAT (10 GBP в Pimoroni, Великобритания). По избор: едноредов хедър, джъмперни кабели

- IKEA SÄRDAL LED верижни лампи с 12 светодиода (2 x, 3,99 € всяка в IKEA Германия), или всяка подобна 3-5V LED верига.- IKEA RIBBA рамка за картина (13 x 18 cm, 2,49 € в IKEA Германия).

- Парче PU пяна (2 x 18 x 13,5 см), за да държи светодиодите. Като алтернатива може да се използва стиропорена пяна.

- Парче непрозрачна пластмаса (18 x 13,5 см), действащо като дифузор.

- Два листа цветна прозрачна хартия (9 x 13,5 cm всеки). Използвах червено и зелено.

- Парче тънък, силно непрозрачен пластмасов лист (18 x 13,5 см), действащ като външен екран. Използвах тънък бял поликарбонатен лист. По избор, за настройваемата версия:

За да регулирате времето на нарастване и продължителността на платото, или алтернативно други параметри като яркост.- 10, 20 или 50 kOhm потенциометри (до четири, използвах два 10 kOhm съответно четири 50 Ohm).

Като бутони за стартиране/спиране/пауза/възобновяване:- Бутони (до четири, използвах четири или два)

Като индикатори за фазите на кръга:- Цветни светодиоди и необходимите резистори (ще зависи от характеристиките на светодиодите, които ще използвате).

  1. около 140 Ohm за 5.2 -> 2, 2 V (жълто, оранжево, червено; някои зелени светодиоди),
  2. около 100 ома за 5.3 -> 3.3 V (някои зелени; сини, бели светодиоди)

- Джъмперни кабели и макет

По избор, за версия с батерии:

  • 5V Micro-USB захранващ блок, или
  • Pimoroni Zero LiPo подложка и LiPo батерия

Стъпка 2: Lazout и монтаж

Лазут и монтаж
Лазут и монтаж
Лазут и монтаж
Лазут и монтаж
Лазут и монтаж
Лазут и монтаж

Сглобете Explorer pHAT, както е описано от производителя. Добавих едноредов женски хедър за опростено свързване на джъмперни кабели към входно -изходните портове pHATs. Настройте своя Pi и инсталирайте библиотеката Pimoroni за Explorer HAT/pHAT, както е описано от Pimoroni. Изключете Pi и прикрепете pHAT към Pi. Извадете батериите от LED веригите, като отрежете проводниците и отрежете края на проводниците. Изрежете два 2x кабела за мъжки джъмпер в средата, калайдайте края на проводниците. Запоявайте кабелите на джъмпера към светодиодните вериги и изолирайте местата за запояване с помощта на самозалепваща лента или свиваща се тръба. Преди запояване проверете кои от проводниците трябва да бъдат свързани към плюс или заземяващи портове и ги маркирайте съответно. Използвах джъмперни проводници с различни цветове. Изрежете пяната, за да държите светодиодите, дифузора и екранните листове до подходящия размер. На плочата за задържане на светодиодите маркирайте позициите, където трябва да се поставят светодиодите, и пробийте 3-5 мм дупки в пяната. След това поставете 24 -те светодиода в дадените позиции. Поставете цветните хартии и дифузорните плочи върху LED плочата (вижте изображенията), те поставят рамката над опаковката. Фиксирайте слоевете от пяна в рамката, напр. с помощта на лепяща лента. Прикрепете кабелите на LED лентата към „моторните“портове на Explorer pHAT. За настройващата се версия поставете потенциометри, бутони, контролни светодиоди (и/или зумери) и резистори на макета и ги свържете със съответните портове на Explorer pHAT.

Стартирайте своя Pi и инсталирайте необходимите библиотеки, както е описано на уебсайта на Pimoroni, след това стартирайте предоставения скрипт Python 3. Ако една от LED веригите не работи, тя може да бъде свързана в грешна посока. След това можете или да промените връзките плюс/минус на pHAT или да направите промяна в програмата, напр. променете „eh.motor.one.backwards ()“на „… напред ()“.

В прикачени файлове намирате скриптове с фиксирани настройки, които можете да промените в програмата и пример, където можете да промените някои от настройките с потенциометри, и да стартирате и спрете цикъла на светлината с помощта на бутони. Не би трябвало да е твърде трудно да настроите скриптовете, които отговарят на вашето собствено оформление на „дишащата светлина“.

Стъпка 3: Скриптовете на Python

Библиотеката Python на Pimoroni за Explorer HAT/pHAT прави изключително лесно адресирането на компонентите, свързани към I/O портовете на HATs. Два примера: „eh.two.motor.backwards (80)“задвижва устройството, свързано към ШИМ/моторния порт 2 с 80% максимален интензитет в посока назад, „eh.output.three.flash ()“прави светодиод свързан за извеждане на порт номер три мига, докато не бъде спрян. Аз генерирах няколко варианта на светлината, като по принцип добавих увеличаващи се нива на управление чрез добавяне на до четири бутони и потенциометри. Прикрепен ще намерите програма на Python, наречена "Breathing light fixed lin cosin.py ", където и четирите настройки на параметри трябва да бъдат променени в програмата. В допълнение версия, наречена "Breathing light var lin cosin.py", където дължината на двете фази на затъмняване може да се регулира с помощта на два потенциометра и най -подробната версия "Breathing light var lin cosin3.py" за версията с четири потенциометра и бутон. Програмите са написани на Python 3.

Във всички случаи процесът на колоездене може да бъде предизвикан и спрян с помощта на два бутона, във версията с четири бутона можете също да прекъснете и рестартирате процеса. Освен това четири (цветни) светодиода могат да бъдат свързани към цифровите изходни портове, показващи конкретните фази. Цикълът на устройството се състои от четири фази:

- фазата "вдишване", при която горните светодиоди са затъмнени ниско, а долните светодиоди увеличават интензивността

- фазата „задръжте дъха“, при която горните светодиоди се изключват, а долните се настройват на максимум

- фазата "издишване", при която долните светодиоди са затъмнени ниско, а горните светодиоди увеличават интензивността

- фазата „оставане на издишване“, при която долните светодиоди са изключени, а горните светодиоди светват максимално.

Дължината на четирите фази се определя от индивидуален числов параметър, който може да бъде фиксиран в програмата и/или да се регулира с помощта на потенциометър.

Пети параметър определя максималния интензитет. Тя ви позволява да зададете максималната яркост на светодиодите, което може да бъде удобно, ако искате да го използвате като нощна лампа. Освен това може да ви позволи да подобрите процеса на затъмняване, тъй като имам впечатлението, че е трудно да се види разлика между 80 и 100% интензитет.

Добавях допълнителна (съ-) синусова функция за увеличаване/намаляване на яркостта, тъй като дава по-гладка връзка между фазите. Чувствайте се свободни да опитате други функции. Напр. можете да премахнете прекъсванията и да използвате две различни (сложни) синусови функции за двете LED вериги и да регулирате честотата и амплитудата чрез потенциометри.

# Лампата "дишане": версия с два бутона и два потенциометра

# модификация на примера на светулка за Pimoroni Explorer pHAT # тук: синоидно увеличение/намаляване на стойностите на двигателя/PWM # за линейна функция включване на линейна и заглушаване на функцията cosin # Тази версия "var" чете аналогови входове, отменя предварително зададените настройки # четения цифров вход, бутони за стартиране и спиране "" "за стартиране при включване на Pi можете да използвате Cron: Cron е програма на Unix, която се използва за планиране на задания и има удобна функция @reboot, която ви позволява да стартирате скрипт когато Pi се зарежда. Отворете терминал и въведете crontab -e, за да редактирате crontab. Превъртете чак до дъното на файла, минайте през всички редове, които започват #, и добавете следния ред (ако вашият код е на /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Затворете и запазете crontab (ако използвате nano, натиснете control-x, y и enter за изход и запазване). "" "време за импортиране изследовател за импортиране като eh импортиране на математически константни стойности #sinus xmax = 316 стъпка = 5 # ширина на стъпката, напр. 315/5 дава 63 стъпки/цикъл start_button = 0 # това определя състоянието на бутон, свързан към входния порт № 1 stop_button = 0 # това определя състоянието на бутон, свързан към входния порт № 3 пауза_1 = 0,02 # задава дължина на прекъсвания в рамките на стъпки във фаза "вдишване", като по този начин увеличава скоростта и продължителността на пауза_2 = 0,04 # задава "издишване" нарастваща скорост пауза_3 = 1,5 # почивка между фазите на вдишване и издишване (задръжте вдишването) пауза_4 = 1,2 # почивка в края на издишването фаза (поддържайте издишано) max_intens = 0.9 # максимален интензитет/яркост max_intens_100 = 100*max_intens # същото в % # Може да позволи да се оптимизира "дишащото" впечатление на светодиодите и да се намали трептенето. l_cosin = # списък със стойности, получени от cosinus (100> = x> = 0) l_lin = # списък с линейни стойности (100> = x> = 0) # генериране на списък с функции на cosinus за i в диапазона (0, 316, 3): # 315 е близо до Pi*100, 105 стъпки # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] # генериране на стойност # print (n_cosin) l_cosin = l_cosin + n_cosin # добавяне на стойност към списък # print (l_cosin) # генериране на линеен списък за i в обхват (100, -1, -1): # отброяване от 100 до нула n_lin = l_lin = l_lin + n_lin # print (l_lin) # показва скучен списък print () print ("" "За да стартирате светлинните цикли, натиснете бутона" Старт "(Input One)" "") print () print ("" "За да спрете светлината, натиснете и задръжте бутона "Стоп" (вход три) "" ") print () # изчакайте, докато бутонът за стартиране се натисне, докато (start_button == 0): start_button = eh.input.one.read () # read бутон номер едно eh.output.one.blink () # мига светодиод номер едно време.спиване (0.5) # четене два пъти в секунда # бягане светва докато (stop_button == 0): # четене на аналогови входове ЕДИН и ДВА, дефинирайте set_1 = eh.an alog.one. set_2 = eh.analog.two.read () # дефинира зелено -> червено увеличение на скоростта pause_2 = set_2*0,02 # стойности ще варират между 0 и 0,13 сек/стъпка печат ("set_2:", set_2, " -> пауза _2: ", pause_2) # фаза" вдишване "eh.output.one.on () # може да задейства светодиод или звуков сигнал" "" за x в обхват (len (l_lin)): fx = max_intens*l_lin [x] # линейна крива eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'за x в обхват (len (l_cosin)): fx = max_intens*l_cosin [x] # линейна крива eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # проверете дали стоп бутонът е натиснат stop_button = eh.input.three.read () # "Задръжте дъха си" пауза в края на фазата на вдишване eh.output.two.on () # включете LED два eh.motor.one.назад (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # проверете дали бутонът Stop е натиснат stop_button = eh.input.three.read () # фаза "издишване" eh.output.three.on () # включете LED три "" за x в обхвата (len (l_lin)): fx = max_intens*l_lin [x] # линейна крива eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'за x в обхвата (len (l_cosin)): fx = max_intens*l_cosin [x] # линейна крива eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. назад (fx) time.sleep (pause_2) eh.output.three.off () # проверете дали бутонът Stop е натиснат stop_button = eh.input.three.read () # пауза между фазите "издишване" и "вдишване" ех. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #проверете дали бутонът Stop е натиснат stop_button = eh.input.three.read () # изключване, завъртане на всички изходни портове eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () печат () print ("Чао чао")

Ако искате да използвате светлината като самостоятелно устройство, напр. като светлина за заспиване или събуждане, можете да добавите мобилен източник на захранване към Pi и да стартирате програмата след зареждане и да използвате „Cron“, за да я включите или изключите в определени моменти. Как да използвате "Cron" е описано много подробно другаде.

Стъпка 4: Примери за видео

В тази стъпка ще намерите редица видеоклипове, показващи светлината при нормални (т.е. всички стойности> 0, #1) и екстремни условия, тъй като всички стойности са настроени на нула (#2), само нарастване (#3 ), и без рампа (#5 ).;

Стъпка 5: Някои забележки

Моля, извинете се за грешни условия, правописни грешки и грешки. Нито съм носител на английски език, нито имам задълбочени познания по електротехника, електроника или програмиране. Което всъщност означава, че се опитвам да напиша английски с инструкции за неща, в които почти не знам правилните термини на моя език. По този начин всякакви съвети, корекции или идеи за подобрение са добре дошли

Препоръчано: