Мазмуну:

Raspberry Pi башкарган дем алуу жарыгы: 5 кадам
Raspberry Pi башкарган дем алуу жарыгы: 5 кадам

Video: Raspberry Pi башкарган дем алуу жарыгы: 5 кадам

Video: Raspberry Pi башкарган дем алуу жарыгы: 5 кадам
Video: THE WALKING DEAD SEASON 2 COMPLETE GAME 2024, Июль
Anonim
Raspberry Pi башкарган дем алуу жарыгы
Raspberry Pi башкарган дем алуу жарыгы

Бул жерде сүрөттөлгөн "Дем алуу көнүгүүсү жарыгы" - бул жөнөкөй жана салыштырмалуу арзан импульстуу жарык, ал сиздин дем алууңузду колдоп, тынымсыз дем алуу ритмин сактоого жардам берет. Ал ошондой эле колдонулушу мүмкүн, мис. балдар үчүн түнкү жарык катары. Азыркы этапта бул көбүрөөк иштөөчү прототип.

Сиз аны Raspberry Pi менен "физикалык эсептөө" үчүн арзан жана жөнөкөй мисал катары колдоно аласыз, мис. башталгыч деңгээлде билим берүү долбоору катары колдонуу үчүн, Бул жерде сизде аналогдук (айлануучу потенциометр) жана санариптик кириштер (баскыч), ошондой эле санариптик (LED) жана PWM чыгаруу (LED чынжырлары) бар жана өзгөрүүлөрдүн таасири түздөн -түз көрүнүп турат.

Жарык төрт фазадан турган кайталануучу чөйрөлөр аркылуу өтөт: жашыл (үстүнкү) кызылдан (төмөн) өтүү, кызыл гана фаза, кызылдан жашылга өтүү жана жашыл гана фаза. Бул фазалардын узундугу потенциометрлер менен өзгөртүлө турган константалар менен аныкталат. Баскычтарды басуу менен процессти баштоого, тындырууга, улантууга жана токтотууга болот. Светодиоддор учурдагы этапты көрсөтүп турат. Пиморони "Firefly Light" мисалына негизделген (бул жерде караңыз). "Firefly Light" сыяктуу эле, ал үчүн Raspberry Pi (Zero), Pimoroni Explorer pHAT (же HAT) жана эки IKEA SÄRDAL LED жарык чынжыры керек. Кийинчерээк pHATтын эки PMW/мотор портуна туташкан. Мен кумураны колдонуунун ордуна, LED ди IKEA сүрөт алкагына койдум. Мен баштапкы "от өчпөйт" питон скриптин бир аз оптималдаштырууга аракет кылып, жарыктык/ импульстун туурасы үчүн кошумча синус функциясын ишке ашырдым жана караңгылатуу фазаларынын ортосунда эки "кармоо" фазасын киргиздим. Параметрлерди өзгөртүп жатып, өзүңүздү ыңгайлуураак сезген жарык үлгүсүн табуу үчүн, мен аппарат абдан так аныкталган, үзгүлтүксүз дем алуу моделин колдоого жардам берерин таптым. Ошентип, кээ бирлериңиз бул "Дем Алуучу Жарыкты" медитация же машыгуу үчүн пайдалуу деп табышы мүмкүн. Explorer pHATта төрт санарип жана төрт аналогдук кирүү болгондуктан, слайд же айлануучу потенциометрлерди колдонуу менен төрт түрдүү параметрге чейин жөнгө салуу жана баскычтарды колдонуу менен жарыктар үчүн баштоо/өчүрүп -күйгүзүү/токтотуу функцияларын киргизүү абдан оңой. Бул сизге аппаратты колдонууга жана параметрлерди керектөөлөрүңүзгө ылайыкташтырууга мүмкүндүк берет, мониторго Pi орнотулбашы керек.

Андан тышкары, Explorer pHAT төрт санариптик порт менен коштолот, алар светодиоддорду же сигналдарды кошууга мүмкүндүк берет, плюс эки 5В жана эки Жер порттору жана моторлорго же ушул сыяктуу түзүлүштөр үчүн PWM эки портторуна кошулат. Жарык диоддоруңуздун чыңалуусун азайтуу үчүн туура резисторлорду колдонуп жатканыңызды текшериңиз.

Pimoroni's Explorer pHAT python китепканасы, бул бардык I/O портторун башкарууну өтө жөнөкөй кылат.

0, 2 жана 4 потенциометрлери жана баскычтары бар түзмөктүн бул нускоочу версияларында сүрөттөлөт. Сиздин муктаждыктарыңызга ылайыктуусун тандаңыз.

Түзмөктү өз алдынча иштетүү үчүн, "Firefly Light" үчүн сүрөттөлгөндөй, кубат пакетин же Pimoroni LiPo шымы менен LiPo батареясынын айкалышын колдонууга болот.

Жаңыртылган версиялар Дек. 28, 2018: "төрт потенциометр жана төрт баскыч" версиясы кошулду. 30: 4-poti версиясынын коду жана сүрдүү сүрөттөр кошулду.

1 -кадам: Колдонулган материалдар / Керектүү

Колдонулган материалдар / Керектүү
Колдонулган материалдар / Керектүү
Колдонулган материалдар / Керектүү
Колдонулган материалдар / Керектүү
Колдонулган материалдар / Керектүү
Колдонулган материалдар / Керектүү

- Raspberry Pi Zero (4.80 GBP, Pimoroni, Улуу Британия) жана микро SD карта (> = 8 ГБ) w/ Raspian

- Pimoroni Explorer pHAT (10 GBP, Pimoroni, Улуу Британия). Кошумча: бир катар баш, секирүүчү кабелдер

- IKEA SÄRDAL LED чынжыр чырактары 12 светодиод (2 х, 3,99 евро IKEA Германияда), же окшош 3-5В LED чынжыры.- IKEA RIBBA сүрөт алкагы (13 x 18 см, IKEA Германияда 2,49 евро).

- ПУ көбүктүн бир бөлүгү (2 x 18 x 13,5 см), LEDди кармоо үчүн. Же болбосо стирол көбүгүн колдонсо болот.

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

- түстүү тунук кагаздын эки барагы (ар бири 9х13,5 см). Мен кызыл менен жашылды колдондум.

- Жука, өтө тунук эмес пластикалык барак (18 x 13,5 см), сырткы экран катары иштейт. Мен ичке ак поликарбонат баракты колдондум. Кошумча, жөнгө салынуучу версия үчүн:

Тартуу убактысын жана бөксө тоонун узактыгын тууралоо үчүн, же башка жарыктык сыяктуу параметрлер.- 10, 20 же 50 кОм потенциометрлери (төрткө чейин, мен тиешелүүлүгүнө жараша төрт 50 Ом эки 10 кОм колдондум).

Баштоо/токтотуу/пауза/улантуу баскычтары катары:- Баскычтарды басуу (төрткө чейин, мен төрт же экөөнү колдондум)

Чөйрөнүн этаптары үчүн индикатор катары:- Түстүү LED жана керектүү резисторлор (сиз колдоно турган диоддордун өзгөчөлүктөрүнө жараша болот).

  1. болжол менен 140 Ом 5.2 -> 2, 2 V үчүн (сары, кызгылт сары, кызыл; кээ бир жашыл LED),
  2. болжол менен 100 Ом 5.3 -> 3.3 V үчүн (кээ бир жашыл; көк, ак LED)

- Өткөргүч кабелдер жана нан тактасы

Кошумча, батарейка менен иштеген версия үчүн:

  • 5V Микро-USB кубаттуулугу, же
  • Pimoroni Zero LiPo shim жана LiPo батареясы

2 -кадам: Lazout жана Ассамблея

Lazout жана Ассамблея
Lazout жана Ассамблея
Lazout жана Ассамблея
Lazout жана Ассамблея
Lazout жана Ассамблея
Lazout жана Ассамблея

Өндүрүүчү сүрөттөгөндөй Explorer pHATти чогултуп алыңыз. Мен pHATs I/O портторуна секирүүчү кабелдердин жөнөкөйлөтүлгөн туташуусу үчүн бир катар аял башын коштум. Пиңизди орнотуңуз жана Pimoroni сүрөттөгөндөй Explorer HAT/pHAT үчүн Pimoroni китепканасын орнотуңуз. Пиди өчүрүңүз жана pHATты Pi'ге тиркеп коюңуз. Батарея топторун LED чынжырларынан зымдарды кесүү жана зымдардын аягына калай салуу менен алып салыңыз. Ортодо 2x эркек секирүүчү кабелин кесип, зымдардын учуна калай тарткыла. Өткөргүч кабелдерди LED чынжырларына туташтырыңыз жана ширетүүчү чекиттерди жабышчаак скотч же трубанын жардамы менен бөлүп алыңыз. Лайкоодон мурун зымдардын кайсынысын плюс же жерге портторго туташтыруу керек экенин текшерип, ошого жараша белгилеңиз. Мен LEDдерди, диффузорду жана экран барактарын тиешелүү өлчөмдө кармап туруу үчүн ар кандай түстөгү секирүүчү зымдарды колдондум. Светодиоддук плитада светодиоддор жайгаштырыла турган жерлерди белгилеп, көбүккө 3-5 мм тешиктерди салыңыз. Андан кийин берилген позицияларга 24 LEDди коюңуз. Түстүү кагаздарды жана диффузордук плиталарды LED плитасына коюңуз (сүрөттөрдү караңыз), алар рамканы пакеттин үстүнө коюшат. Көбүктүн катмарын алкакка бекитүү, мис. скотч колдонуу. LED тилкесиндеги кабелдерди Explorer pHATтын "мотор" портторуна тиркеңиз. Жөнгө салынуучу версия үчүн потенциометрлерди, баскычтарды, контролдук светодиоддорду (жана/же ызылдактарды) жана резисторлорду панельге коюп, аларды Explorer pHATтын тиешелүү порттору менен туташтырыңыз.

Пимди баштаңыз жана Pimoroni веб -сайтында сүрөттөлгөндөй керектүү китепканаларды орнотуңуз, андан кийин берилген Python 3 скриптин иштетиңиз. Эгерде LED чынжырларынын бири иштебесе, анда ал туура эмес багытта туташкан болушу мүмкүн. Андан кийин сиз pHATтын плюс/минус байланыштарын өзгөртө аласыз же программаны өзгөртө аласыз, мис. өзгөртүү "eh.motor.one.backwards ()" "… алдыга ()".

Тиркелген сиз орнотулган орнотуулары бар сценарийлерди программанын ичинде өзгөртө аласыз жана кээ бир жөндөөлөрдү потенциометрлер менен өзгөртүп, баскычтарды колдонуу менен жарык циклин баштоого жана токтотууга болот. Сценарийлерди өзүңүздүн "дем берүүчү жарыктын" жайгашуусуна тууралоо өтө кыйын болбошу керек.

3 -кадам: Python скрипттери

Explorer HAT/pHAT үчүн Pimoroni's Python китепканасы, HATs I/O портторуна тиркелген компоненттерди даректөөнү өтө жөнөкөй кылат. Эки мисал: "eh.two.motor.backwards (80)" PWM/мотор портуна 2 тиркелген түзмөктү 80% максималдуу интенсивдүүлүк менен артка карай айдайт, "eh.output.three.flash ()" LEDди туташтырат Жарыктын бир нече вариациясын чыгардым, негизинен төрт баскычка жана потенциометрге чейин кошуп, көзөмөлдүн жогорулатылган деңгээлин кошуп койдум..py "бул жерде бардык төрт параметр орнотуулары программанын ичинде өзгөртүлүшү керек. Мындан тышкары, "Breathing light var lin cosin.py" деп аталган версия, бул жерде эки караңгылатуу фазасынын узундугун эки потенциометрди жана төрт потенциометр жана баскыч баскычы версиясы үчүн "Breathing light var lin cosin3.py" версиясын колдонуп туураласа болот.. Программалар Python 3те жазылган.

Бардык учурларда велосипед жараяны эки баскычты колдонуп, токтотулушу мүмкүн, төрт баскычтын версиясында сиз процессти үзгүлтүккө учуратып, кайра баштасаңыз болот. Мындан тышкары, төрт (түстүү) LED конкреттүү фазаларды көрсөтүү менен санариптик чыгуу портторуна туташтырылышы мүмкүн. Аппараттын циклы төрт фазадан турат:

- "дем алуу" фазасы, мында жогорку светодиоддор күңүрт, ал эми төмөнкү диоддор интенсивдүүлүгүн жогорулатат

- "демиңизди кармап туруу" фазасы, мында жогорку LEDлар өчүрүлүп, астынкы диоддор максимумга коюлган

- "дем алуу" фазасы, мында астынкы диоддор төмөн караңгылатылат жана жогорку диоддор интенсивдүүлүгүн жогорулатат

- "дем алуу" фазасы, мында астынкы светодиоддор өчүрүлөт жана жогорку диоддор максималдуу күйөт.

Бардык төрт фазанын узундугу жеке сандык параметр менен аныкталат, ал программада белгилениши мүмкүн жана/же потенциометрдин жардамы менен жөнгө салынышы мүмкүн.

Бешинчи параметр максималдуу интенсивдүүлүктү аныктайт. Бул жарыктын максималдуу жарыктыгын коюуга мүмкүндүк берет, эгер сиз аны түнкү жарык катары колдонууну кааласаңыз, ыңгайлуу болушу мүмкүн. Мындан тышкары, бул сизге күңүрттөө процессин жакшыртууга мүмкүндүк берет, анткени менде 80 жана 100% интенсивдүүлүктүн айырмасын көрүү кыйын окшойт.

Мен кошумча (ко-) синус функциясын кошуп жаттым, анткени ал фазалардын ортосундагы жылмакай байланышты камсыз кылат. Башка функцияларды колдонуп көрүңүз. Мисалы Сиз тыныгууларды жок кылып, эки LED (чынжыр) үчүн эки башка (комплекстүү) синус функцияларын колдоно аласыз жана потенциометрлер менен жыштыкты жана амплитуданы тууралай аласыз.

# "Дем алуу" чырагы: эки баскыч жана эки потенциометрдин версиясы

# Pimoroni Explorer pHAT # үчүн firefly мисалынын модификациясы: бул жерде: мотор/PWM баалуулуктарынын синоиддик көбөйүшү/төмөндөшү # сызыктуу функция үчүн сызыктуу жана үнсүз косин функциясын өчүрүү # Бул версия "var" аналогдук кирүүлөрдү окуйт, алдын ала аныкталган орнотууларды жокко чыгарат # окулат Санариптик киргизүү, "" "баштоо жана токтотуу баскычтары Pi'ди иштеткенден кийин баштоо үчүн Cron колдонсоңуз болот: Cron - бул жумуштарды пландаштыруу үчүн колдонулган Unix программасы жана ал сценарийди иштетүүгө мүмкүндүк берген @reboot ыңгайлуу функциясына ээ Пиңиз качан өтөт. Терминалды ачыңыз жана crontab -e териңиз crontab -e териңиз. #менен башталган бардык саптардан өтүп, файлдын түбүнө чейин жылдырып, төмөнкү сапты кошуңуз (эгер сиздин кодуңуз /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Жабуу жана кронтабыңызды сактоо (эгер сиз нанону колдонуп жатсаңыз, анда Control-x, y баскычтарын басып, чыккыла жана сактаңыз). "" "импорттоо убактысын импорттоочу изилдөөчү eh импорт математикалык туруктуу маанилер катары #sinus xmax = 316 кадам = 5 # кадам туурасы, мис. 315/5 63 кадам берет/цикл start_button = 0 # бул кирүү портуна туташкан баскычтын абалын аныктайт no stop_button = 0 # бул 3 портуна туташкан баскычтын абалын аныктайт pause_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) # диапазондо i үчүн косинус функцияларынын тизмесин түзүү (0, 316, 3): # 315 Pi*100гө жакын, 105 кадам # print (i) n_cosin = [((((math.cos (i/100))+1)/2)*100] # генерациялоочу маани # басып чыгаруу (n_cosin) l_cosin = l_cosin + n_cosin # тизмеге баалуулукту кошуу # басып чыгаруу (l_cosin) # диапазондогу i үчүн сызыктуу тизме түзүү (100, -1, -1): # 100дөн нөлгө чейин саноо n_lin = l_lin = l_lin + n_lin # print (l_lin) # кызыксыз тизмесин көрсөтөт print () басып чыгаруу ("" "Жарык айлампаларын баштоо үчүн" Старт "баскычын (Бирин киргизүү)" "") басып чыгаруу () басып чыгаруу ("" "Токтотуу үчүн) жарык, "Stop" баскычын басып кармап туруңуз (Үч киргизүү) "" ") print () # Start Button басылганча күтө туруңуз (start_button == 0): start_button = eh.input.one.read () # окуу баскыч номер eh.output.one.blink () # бир жолу светодиод LED саны. уктоо (0,5) # секундасына эки жолу окуу = eh.an alog.one.read () # кызыл-> жашыл ылдамдыктын ылдамдыгын аныктайт pause_1 = set_1*0.02 # баалуулуктар 0 менен 0.13 сек/кадам аралыгында болот ("set_1:", set_1, " -> тыным _1:", пауза_1) set_2 = eh.analog.two.read () # жашыл -> кызыл ылдамдык ылдамдыгын аныктайт pause_2 = set_2*0,02 # баалуулуктар 0 менен 0,13 сек/кадам аралыгында болот ("set_2:", set_2, " -> тыным _2: ", пауза_2) #" ингаляция "фазасы eh.output.one.on () # диапазондогу x үчүн" len "же" "сигналын айдай алат (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 () # светодиодду күйгүзүү эки eh.motor.one. артка (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # Stop Stop басылганын текшериңиз stop_button = eh.input.three.read () # "дем алуу" фазасы eh.output.three.on () # LED диапазонундагы үч "" ди күйгүзүү (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 for 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 басылганын текшериңиз stop_button = eh.input.three.read () # "тыныс алуу" жана "дем алуу" фазаларынын ортосунда # пауза eh. 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 басылганын текшериңиз 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 () басып чыгаруу () басып чыгаруу ("Кош бол")

Эгерде сиз жарыкты өзүнчө түзмөк катары колдонууну кааласаңыз, мис. уктоо же ойготуу жарыгы катары, сиз Пи-ге мобилдик энергия булагын кошуп, жүктөлгөндөн кийин программаны иштетип, "Cron" колдонуп, аны каалаган убакта күйгүзүп же өчүрө аласыз. "Cron" кантип колдонуу керектиги башка жерде кеңири сүрөттөлгөн.

4 -кадам: Видео мисалдары

Бул кадамда сиз нормалдуу (башкача айтканда, бардык маанилер> 0, #1) жана экстремалдык шарттарда жарыкты көрсөтүүчү бир катар видеолорду таба аласыз, анткени бардык баалуулуктар нөлгө коюлган (#2), бир гана жайылуу (#3 ), жана эч кандай жантык (#5 ).;

5 -кадам: Кээ бир эскертүүлөр

Туура эмес терминдер, каталар жана каталар үчүн кечирим сурайбыз. Мен англис тилинде сүйлөгөн эмесмин, же электрика, электроника же программалоо боюнча толук билимге ээ эмесмин. Бул чындыгында мен өз тилимде туура терминдерди дээрлик билбеген нерселер жөнүндө англис тилинде инструктивдүү жазууга аракет кылып жатам дегенди билдирет. Ошентип, жакшыртуу үчүн ар кандай кыйытмалар, оңдоолор же идеялар кабыл алынат

Сунушталууда: