Мазмуну:

Pimp My Cam: 14 кадам (Сүрөттөр менен)
Pimp My Cam: 14 кадам (Сүрөттөр менен)

Video: Pimp My Cam: 14 кадам (Сүрөттөр менен)

Video: Pimp My Cam: 14 кадам (Сүрөттөр менен)
Video: Кыйноолордун курмандыктары «Эң жаман кылмышта» мыкаа... 2024, Ноябрь
Anonim
Pimp My Cam
Pimp My Cam

Мына бул долбоор кайдан келип жатат.

Бир аз убакыттан кийин мен кээ бир таймаптарды тартууну ойлодум. "Кантип?" Мен өзүмдөн сурадымбы? Биринчи жооп "Мейли.. сен жөн эле бир нерсени тасмага тартып, аны тездет, ошондо болду". Бирок чынында эле ушунчалык жөнөкөйбү? Биринчиден, мен бул үчүн DSLR колдонгум келет жана менин Nikon D3100 видео тартуу үчүн 10 мүнөткө чектелген. Экинчиден, менде видео тартуу убактысы жок камера болсо дагы, мен 12 саат сыяктуу реалдуу убакыт таймасын жасагым келсе эмне кылам? Мен 12 саатка созулган 1080p видео жасайм. Мен батарейканын ушунчалык көпкө иштээрине күмөн санайм жана бул анча практикалык эмес, туурабы? Жарайт, "видео идеясын тартуу". Ооба, анда сүрөттөр бар. Белгилүү бир убакыт аралыгында камерага сүрөткө түшүп, видеону жасоо үчүн программалык камсыздоону иштетүүдөн көрө жүздөгөн сүрөттөр менен бүтүрөм..?

Жакшы идея окшойт, ошон үчүн аны берүүнү чечтим. Ошентип, мен бир мезгилди киргизе турган түзмөк жасоону каалап калдым жана ошол мезгилдин негизинде ал менин камерамды дайыма иштетип турду. Ал эми биз иштеп жатканда, эмне үчүн кыймыл-триггер жана башка ушул сыяктуу нерселерди кошпойсуз?

1 -кадам: Бирок.. Кантип?

Бирок.. Кантип?
Бирок.. Кантип?

КАНТИП? биздин кийинки суроого жооп жок. Убакыттын, триггердин, сенсорлордун жана ушул сыяктуу нерселердин айынан, албетте, биринчи кезекте Arduino болгону таң калыштуу эмес. Макул, бирок ошентсе да, биз камерабыздын жапкычын кантип иштетүүнү үйрөнүшүбүз керек. Hm.. servo hot дененин камерасына жабыштырылганбы? Албетте, жок, биз муну унчукпай жана энергия үнөмдүү болушун каалайбыз. Энергия үнөмдүү - эмне үчүн? Мен аны портативдүү кылып, батарейканы ичине салгым келгендиктен, мен дайыма розеткага жакын боло бербейм. Анда биз аны кантип иштетебиз.. чындыгында абдан жөнөкөй.

Nikon сизге пультту жана башка аксессуарларды каалаарыңызды мурунтан эле билген жана алар "макул, биз мунун баарын аларга беребиз, бирок биз атайын портту жасайбыз, биз ал аксессуарларга көбүрөөк акча табабыз" деп айтышты, уят уят Никон. Бул порт (менин учурда) MC-DC2 деп аталат жана аны колго алуунун эң арзан жолу-eBayден алыстан жапкычты 2-3 долларга сатып алуу жана кабелди колдонуу.

*Кээ бир башка камералар, Canon сыяктуу, жөнөкөй эле 3,5 мм гарнитура уячасына ээ, андыктан эски динамиктерден/гарнитуралардан кээ бир кабелдерди колдоно аласыз.

2 -кадам: Камераны кантип иштетүүнү үйрөнүү

Image
Image
Триггер кылуу жолдору
Триггер кылуу жолдору

Баары бир, бул жерде келишим бар, порт бизди кызыктыра турган 3 байланышка ээ болот (Жер, Фокус жана Жалюзи), жана сиз жаңы эле сатып алган алыстан жапкычтын кабелинин аягында сиз жок кылган. Бул үч байланыш биз үчүн маанилүү, анткени эгерде биз жерди кыскартсак жана фокус кылсак, анда камера фокус баскычын баскандай фокусталат, анан бул байланыш сакталып турганда, жерди жана жапкычты кыскарта аласыз жана камера сүрөткө тартылат камеранын жапкычын баскандай.

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

Жер = КАРА; Фокус = АК; Жалюзи = КЫЗЫЛ.

Жарайт, эми биз Arduinoго биз үчүн муну үйрөтүшүбүз керек.

3 -кадам: Триггер кылуу жолдору

Image
Image

Ардуиного тышкы дүйнөгө жөнөтүүнү айта турган эң жөнөкөй нерсе - бул санариптик сигнал. Бул сигнал ЖОГОРУ (логикалык '1') же ТӨМ (логикалык '0') болушу мүмкүн, демек "санарип" деген аталышка ээ же анын негизги маанисине айландырылганда: логикалык ЖОЖ үчүн 5В, логикалык ТӨМӨН үчүн 0В.

Бул санарип сигналдар менен эмне кылышыбыз керек? Биз аларды жөн эле камерага туташтыра албайбыз жана камера биз эмнени каалап жатканыбызды күтөт. Көрүнүп тургандай, биз реакция кылышы үчүн камерадагы туташууларды кыскартуубуз керек, андыктан биз жөнөткөн электрдик сигналга жараша терминалдарын кыскарта турган кээ бир компоненттерди айдаш үчүн Arduino санарип сигналдарын колдонушубуз керек.. *Мен сүрөттөгөндөй, сиз "Ах, Релей!" Деп ойлошуңуз мүмкүн. бирок жок жок. Реле бул ишти аткармак, бирок биз кичинекей агымдар менен күрөшүп жатабыз, биз жарым өткөргүчтөрдүн кара магиясын оңой колдоно алабыз.

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

Ошентип, биз оптокуплерди мындайча колдонобуз: биз Arduinoго санариптик пиндер болсо, анда бирөөнө санариптик ЖОЖ жөнөтүүнү айтабыз, бул иш жүзүндө 5В, ал оптикалык жуптун ичиндеги LEDди айдайт жана анын ичиндеги фототранзистор "кыска" болот ал жарыкты аныктаганда анын чыгуучу терминалдары, жана тескерисинче, ал терминалдарын "ажыратып" коет, анткени биз Arduino аркылуу санарип LOW жөнөткөндө LEDден жарык жок.

Иш жүзүндө, бул билдирет: Arduino санарип казыктарынын бири optocouplerдин ANODE пинине, Arduino GND CATHODEге, камеранын GND эмитентке жана фокуска (же SHUTTER) коллекторго тиркелет. Бул казыктарды өзүңүздөн табуу үчүн колдонуп жаткан оптокуплердин маалымат барагына кайрылыңыз. Мен 4N35 колдонуп жатам, андыктан сиз менин схемамды сокур түрдө ээрчип кете аласыз, эгерде сиз оптокуплердин ичинде эмне болуп жатканына чындап кам көрбөсөңүз. Бизге булардын экөөсү керек болот деп айтуунун кажети жок, анткени биз камеранын ФОКУСУН да, жапкычын да башкарышыбыз керек.

Мунун кантип иштээрин көргөндө, фототранзистор менен, эмне үчүн биз аны жөнөкөй NPN транзистору менен сынап көрбөйбүз. Бул жолу биз санариптик сигналды түздөн -түз (резистор аркылуу) транзистордун базасына алып келебиз жана камеранын да, Ардуинонун да GNDсин эмитентке жана камеранын фокусун/жапкычын транзистордун коллекторуна туташтырабыз.

Дагы, бизге бул эки керек болот, анткени биз эки сигналды башкарып жатабыз. Мен BC547B колдонуп жатам жана сиз негизинен бул үчүн каалаган NPN колдоно аласыз, анткени биз башкарып жаткан ток бир миллиамп.

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

4 -кадам: Триггер үчүн код жазуу

Image
Image
Триггер үчүн код жазуу
Триггер үчүн код жазуу

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

pinMode (FOCUS_PIN, OUTPUT);

pinMode (SHUTTER_PIN, OUTPUT);

мында FOCUS_PIN жана SHUTTER_PIN же "#define NAME мааниси" менен же int (int) катары аныкталышы мүмкүн, анткени сиз пинди өзгөртүшүңүз мүмкүн, андыктан бүтүндөй кодду эмес, бир эле жерде маанини өзгөртүү оңой.

Биз жасай турган кийинки нерсе - бул trigger () функциясын жазуу, ал иштетилгенде так ошондой кылат. Мен жөн эле коду бар сүрөттү киргизем. Сиз билишиңиз керек болгон нерсе, адегенде биз FOCUS_PINди белгилүү бир убакытка ЖОЖдо кармап турабыз, анткени камера аны көрсөтүп жаткан темага көңүл бурушун күтүшүбүз керек, анан бир азга (FOCUS_PIN дагы эле ЖОГОРКУ бойдон калууда)) сүрөт тартуу үчүн SHUTTER_PINди HIGHго коюңуз.

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

5 -кадам: Класстар аралык {};

Image
Image
Arduino аркылуу интервалды манипуляциялоо
Arduino аркылуу интервалды манипуляциялоо

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

void loop () {

кечигүү (интервал); триггер (); }

Мен бул аралыкты, айталы, 5 секунддан 20-30 мүнөткө чейин өзгөртө алам. Бул жерде көйгөй бар, эгер мен аны 5тен 16га чейин өзгөртүүнү кааласам же ортосунда бир нерсе болсо, мен 1с көбөйтүүнү колдоном, мында ар бир суранычым үчүн интервалды жогорулатуу үчүн, интервал 1с үчүн көбөйөт. Бул сонун, бирок мен 5 секунддан 5 мүнөткө чейин баргым келсе эмне кылам? Бул мага 1с кадам менен 295 өтүнүчтү талап кылат, ошондуктан мен чоңоюп бара жаткан нерсени чоңойтушум керек жана мен так интервалдын маанисин (босогосун) көбөйтүүнү өзгөртүүм керек. Мен муну ишке ашырдым:

5s-60s: 1s increment; 60s-300s: 10s increment; 300s-3600s: 60s increment;

бирок мен бул классты жөнгө салуу үчүн жаздым, ошондо сиз өзүңүздүн чектериңизди жана көбөйтмөлөрүңүздү аныктай аласыз (бардыгы.h файлында комментарийленген, андыктан кайсы маанилерди өзгөртүү керек экенин билүү үчүн).

Мен берген интервалды манипуляциялоо боюнча мисал, албетте, ЖКда жасалат, эми биз аны Arduinoго жылдырышыбыз керек. Бул бүт класс, Interval, биздин класстын/функцияларынын декларацияларын жана аныктамаларын сактоо үчүн колдонулган бир баш файлдын ичине салынат (чындыгында эмес, бирок бул мисалда эч кандай зыян келтирбестен жасаса болот). Бул баш файлды arduino кодубузга киргизүү үчүн биз "#include" Interval.h "" колдонобуз (файлдар бир каталогдо болушу керек), бул биздин башкы кодубуздагы баш файлда аныкталган функцияларды колдоно аларыбызга ынандырат.

6 -кадам: Arduino аркылуу интервалды манипуляциялоо

Image
Image
Arduino аркылуу интервалды манипуляциялоо
Arduino аркылуу интервалды манипуляциялоо
Arduino аркылуу интервалды манипуляциялоо
Arduino аркылуу интервалды манипуляциялоо

Эми биз интервалдын маанисин өзгөртө алабыз, же көбөйтөбүз, же төмөндөтөбүз. Ошентип, бул эки нерсе, ошондуктан биз эки баскыч менен башкарыла турган эки санарип сигналды колдонобуз. Биз баскычтарга бекитилген санарип казыктардагы баалуулуктарды кайра -кайра окуйбуз жана checkButtons (int, int) функциясына ал баалуулуктарды талдайбыз; эгер "өйдө" баскычы басылса, интервалды көбөйтөт жана "ылдый" баскычы болсо интервалды азайтат. Ошондой эле, эгер эки баскыч тең басылса, анда ал фокустун маанисин өзгөртөт, ал иштетилгенде фокустоо керекпи же жокпу көзөмөлдөйт.

Коддун бир бөлүгү ((millis () - prevBtnPress)> = debounceTime) дебунинг үчүн колдонулат. Мен аны кантип жазганым, бул биринчи баскычты логикалык btnPressed өзгөрмөсү менен каттоодон өткөргөнүмдү жана ал болгон убакытты эстегенди билдирет. Мен белгилүү бир убакытты күтөм (debounceTime) жана эгер баскыч дагы эле басылса, мен жооп берем. Ал ошондой эле баскычтын ар бир басылышынын ортосунда "пауза" кылат, ошондуктан ал жок жерде бир нече жолу басуудан сактайт.

Жана, акырында, менен:

эгер ((миллис () - prevTrigger) / 1000> = interval.getVal ()) {

prevTrigger = millis (); триггер (); }

биз адегенде акыркы триггер (prevTrigger) менен учурдагы убакыттын (миллис ()) ортосундагы убакыттын суммасы интервалга барабар же чоңураак экенин текшеребиз биз каалайбыз, эгерде биз азыркы учурду камераны акыркы жолу иштеткенибизди эстеп, андан кийин иштетебиз.

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

7 -кадам: Интервалды көрсөтүү

Image
Image
Интервалды көрсөтүү
Интервалды көрсөтүү
Интервалды көрсөтүү
Интервалды көрсөтүү
Интервалды көрсөтүү
Интервалды көрсөтүү

Бул жерде биз дисплейди тааныштырабыз. Мен TM1637 тарабынан башкарылган 4 орундуу модулду колдондум, анткени мен аны убакытты көрсөтүү үчүн колдонушум керек жана башка эч нерсе жок. Arduino үчүн жасалган бул модулдарды колдонуунун эң оңой жолу - алар үчүн буга чейин даярдалган китепканаларды колдонуу. Arduino сайтында TM1673 чипин сүрөттөгөн баракча жана сунушталган китепканага шилтеме бар. Мен бул китепкананы жүктөп алдым жана бул китепканаларды Arduino IDE менен тааныштыруунун эки жолу бар:

  1. Arduino программасынан Sketch> Китепкананы кошуу> ZIP китепканасын кошуу бөлүмүнө өтүп, жаңы эле жүктөлгөн.zip файлын табыңыз.
  2. сиз Arduino кол менен кыла турган нерсени жасай аласыз жана китепкананы Arduino Windows китепканаларын сактай турган папкадан ачсаңыз болот: C: / Users / Username / Documents / Arduino / librarys \.

Китепкананы киргизгенден кийин, сиз "ReadMe" файлын окушуңуз керек, анда сиз ар кандай функциялардын жыйынтыгын таба аласыз. Кээде бул жетишсиз, андыктан бир аз тереңирээк барып, функциялардын кандайча ишке ашырылганын жана алар кириш аргументтери катары эмнени талап кыларын көрө турган баш файлдарды изилдөөнү каалайсыз. Жана, албетте, китепкананын эмнеге жөндөмдүү экенин сезүүнүн эң жакшы жолу, адатта, Arduino программасынан File> Examples> LibraryName> ExampleName аркылуу иштете турган мисалды сунуштайт. Бул китепкана дисплейиңиздин туура иштеп жатканын текшерүү үчүн дисплейиңизде иштөөнү сунуштаган бир мисалды сунуштайт жана мен сизге мисалда көрсөтүлгөн кодду өзгөртүүгө жана ар бир функция эмне кылганын жана дисплей кандай реакция кыларын өзүңүз көрүүгө чакырам. ал Мен муну жасадым жана муну түшүндүм:

ал ар бир цифра үчүн 8 биттен турган 4 белгисиз бүтүн сандарды колдонот (0bB7, B6, B5, B4, B3, B2, B1, B0). Ал эми В6-В0 биттеринин ар бири белгилүү бир цифранын ар бир сегментинде колдонулат жана бит 1 болсо, аны башкарган сегмент күйүп турат. Бул бүтүн сандар data деп аталган массивде сакталат. Бул биттерди дисплейге коюу Display.setSegments (data) аркылуу ишке ашат; же сиз табигый түрдө цифрлардын кайсынысына кирсеңиз болот жана аларды кол менен орнотсоңуз болот (data [0] = 0b01111001) же encodeDigit (int) функциясын колдонсоңуз болот; жана аны жөнөткөн цифраңызды биттерге айлантыңыз (data [0] = display.encodeDigit (3));. В7 бити жоон ичегини иштетүү үчүн экинчи цифрада же маалыматта [1] колдонулат.

Мен INTERVAL класс сыйкырчысында функцияларды жазгандыктан, мен интервалдын белгилүү бир цифраларын M1M0 түрүндө ала алам: S1S0, мында мүнөт жана S секундада турат, бул encodeDigitFunction (int) колдонгонум табигый нерсе; интервалды көрсөтүү үчүн:

displayInterval () {

маалыматтар [0] = display.encodeDigit (interval.getM1 ()); маалыматтар [1] = 0x80 | display.encodeDigit (interval.getM0 ()); маалыматтар [2] = display.encodeDigit (interval.getS1 ()); маалыматтар [3] = display.encodeDigit (interval.getS0 ()); display.setSegments (маалыматтар); }

Эми, интервалды дисплейге көрсөтүү керек болгондо, displayInterval () функциясын чакыра алам.

*Маалыматтардагы "0x80 |…" дегенге көңүл буруңуз [1]. Бул маалыматтын В7 [1] битинин дайыма 1 болушун камсыз кылуу үчүн колдонулат, андыктан жоон ичеги күйөт.

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

8 -кадам: Бардыгын бириктирүү

Баарын бир жерге коюу
Баарын бир жерге коюу

Биз камераны кантип иштетүүнү, интервалды кантип башкарууну жана ошол эле интервалды дисплейге кантип көрсөтүүнү билебиз. Эми биз булардын бардыгын бириктирүүбүз керек. Албетте, биз loop () функциясынан баштайбыз. Биз дайыма баскычтардын басылышын текшерип, checkButtons (int, int) менен жооп беребиз жана интервалды ошого жараша өзгөртүп, өзгөртүлгөн интервалды көрсөтөбүз. Ошондой эле циклда () биз акыркы триггерден же баскычты басуудан жетиштүү убакыт өткөнүн такай текшерип турабыз жана керек болсо trigger () функциясын чакырабыз. Аз энергия керектөө үчүн бир аздан кийин дисплейди өчүрөбүз.

Мен эки түстүү LED коштум, (Кызыл жана Жашыл, жалпы катод), ал триггер () жашыл болуп күйөт жана фокустоо күйүп турганда дисплей менен бирге кызыл болуп күйөт жана фокус болсо өчүп калат өчүк

Мындан тышкары, биз андан да кичине Arduino, Pro Miniге көчүп барабыз.

9 -кадам: Акыркы нерсени кошуу

Акыркы нерсени кошуу
Акыркы нерсени кошуу
Акыркы нерсени кошуу
Акыркы нерсени кошуу
Акыркы нерсени кошуу
Акыркы нерсени кошуу

Азырынча.. биз интервалометрди гана түздүк. Пайдалуу, бирок биз жакшыраак кыла алабыз.

Бул жерде мен эмнени ойлондум: интервалометр, биз кандайдыр бир тышкы коммутаторду/сенсорду тиркегенибизден тышкары, демейки боюнча кылат, ал интервалометрди токтотот жана которгучтун/сенсордун киришине жооп берет. Келгиле, сенсор деп коёлу, бул сөзсүз түрдө туташкан сенсор болбойт, бирок мен аны ушинтип атайм.

Биринчиден, сенсорду орнотконубузду кантип аныктайбыз?

Биз колдоно турган/жасай турган сенсорлорго ардуино менен туташтыруучу үч зым керек болот (Vcc, GND, Signal). Бул 3.5 мм аудио джекти сенсор үчүн кирүү уячасы катары колдоно алабыз дегенди билдирет. Анан бул биздин көйгөйдү кантип чечет? Ооба, 3,5 мм джекстин түрлөрү бар, аларда эркек туташтыргычы жок болсо, туташтыргычтын казыктарына кыска болгон казыктары бар жана алар туташтыргыч болгондо ажыратылат. Бул сенсордун болушуна негизделген маалыматка ээ экенибизди билдирет. Мен сүрөттө көрсөтүлгөндөй түшүрүлүүчү каршылыкты колдоном (санариптик пин сенсорсуз ЖОК деп окулат, сенсор менен ТӨМӨН), же сиз ошондой эле санариптик пинге кадимки туташтыргычтын казыгына кошсоңуз болот жерге туташып, INPUT_PULLUP деп санарип пинди аныктаңыз, ал эки жактан тең иштейт. Демек, азыр биз өзүбүздүн кодду оңдоп -түзөөбүз керек, ошондуктан сенсор жок болгондо же санариптик пин жогору экенин текшергенде гана жазат. Мен дагы аны жөнгө салдым, ошондуктан ал дисплейде бул режимде пайдасыз интервалдын ордуна "SENS" көрсөтөт, бирок фокус бизге дагы деле тиешелүү, биз фокусту эки баскычты басуу менен алмаштыруу функциясын сактап калабыз. кызыл LED аркылуу фокус абалын көрсөтүү.

Сенсор чындыгында эмне кылат?

Камераны иштетүүнү кааласак, анын сигнал сигналына 5В коюу керек. Бул бизге Arduinoдун дагы бир санарип пини керек экенин билдирет жана бул пиндин абалын текшерет жана ал HIGH катталгандан кийин, trigger () функциясын чакыруу жетиштүү болот жана камера сүрөт тартып калат. Эң оңой мисал жана бул иштей тургандыгын текшерүү үчүн колдонобуз-бул каршылыгы бар жөнөкөй баскыч. Сенсордун Vcc менен Сигналдын пининин ортосундагы баскычты бекитип, Signal pin менен GNDдин ортосуна каршылыкты кошуңуз, ошондо сигналдын пини GNDде болот, анткени баскыч басылбаса, анда резистор аркылуу агып өтпөйт. баскыч басылат, биз сигналдын пинин түздөн -түз HIGHго коебуз жана Arduino аны окуп камераны иштетет.

Муну менен биз кодду жазууну аяктадык.

*Мен колдонгон аудио уячалар менен болгон кээ бир көйгөйлөрдү белгилегим келет. Эркек джекти туташтыргычка салып жатканда, GND жана башка эки казыктын бири кээде кыска болуп калат. Бул дароо жана туташтыргычты коюп жатканда гана болот, бирок Arduino кыскача каттоосу үчүн дагы эле жетиштүү, ошондуктан Arduino жөн эле өчүрүлүп күйгүзүлөт. Бул көп учурда боло бербейт, бирок дагы деле коркунуч туудурушу мүмкүн жана Arduino'yу жок кылуу мүмкүнчүлүгү бар, андыктан мен колдонгон туташтыргычтардан алыс болуңуз.

10 -кадам: Кабарды камтыйт

Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт
Кабарды камтыйт

Сиз сүрөттөрдөн панелдин баш аламан болуп жатканын көрө аласыз жана биз бүтүрдүк, андыктан биз бардыгын перфбордго/ПКБга өткөрүп беришибиз керек. Мен ПКБга бардым, анткени мен буларды көбүрөөк жасайм деп ойлойм, ошондуктан аларды оңой көбөйтө алам.

Мен Бүркүттү ПХБны иштеп чыгууда колдондум жана мен колдонгон бардык бөлүктөрдүн дизайнын таптым. Дизайнымда бир кичинекей нерсе бар, мен кылбасам экен, ал дисплейдин Vcc үчүн зым төшөгү. Мен муну өтө кеч көрдүм, мен мурда иштеп чыккан нерсени кыйраткым келбеди жана зым төшөмөлөрдү кошуунун жалкоо жолуна түштүм, кийин жез издеринин ордуна бул байланыштарга зым кошууга туура келди, эгер сиз шахтанын дизайнын колдонуп жатсаңыз..

Arduino Board жана дисплей көрүнөө себептерден улам ПХБга түздөн -түз эритип коюунун ордуна, аялдын пин баштары аркылуу ПХБга туташкан. Ошентип, дисплейдин астында башка компоненттер үчүн резистор, транзистор, ал тургай аудио уячасы үчүн дагы көп орун бар.

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

Камерага туташкан кабелди туташтыруу үчүн дагы бир аял аудио уячасын коёбуз. Ошентип, такта ар тараптуу болуп калат, анткени биз башка камераларга башка туташтыргычтар менен туташа алабыз.

11 -кадам: Sens0rs

Image
Image
Sens0rs
Sens0rs

Сенсорду ишке ашыруу жолдорун карап көрөлү.

Ошентип, сенсор 5В камсыздоо чыңалуусуна ээ болот, жана биз камераны иштетүүнү каалаганыбызда анын сигналдык пининде санариптик ЖОГОРО камсыз кылуусу керек. Менин оюма келген биринчи нерсе - бул кыймыл сенсору, конкреттүү болушу үчүн PIR. Ардуино үчүн сатылган модулдар бар, аларда бул сенсор бар жана биз каалагандай кылышат. Алар 5В менен иштейт жана алар иштей баштаганда 5В салуучу пинге ээ, биз анын казыктарын 3.5мм аудио уячасына туташтырышыбыз керек жана биз тактага такай алабыз. Белгилей кетчү нерсе, бул сенсор жылытылып, туура иштей башташы үчүн убакыт керек, андыктан аны туташтырар замат анын туура иштешин күтпөңүз, ага бир аз убакыт бериңиз, анан орнотуңуз жана тирүү нерселер анын ичине кирет. диапазону камераны иштетет.

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

12 -кадам: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

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

13 -кадам: Корпус.. Кинда

Корпус.. Кандай
Корпус.. Кандай
Корпус.. Кандай
Корпус.. Кандай
Корпус.. Кандай
Корпус.. Кандай

Мен бул менен чындап күрөштүм. Учурдагы ПКБны салгым келген кутуга чыкканда, мен каалагандай баарына туура келүүнүн жакшы жолу жок экенин түшүндүм, андан кийин бул жолу оптокуплер менен жаңы ПХБ долбоорлоону чечтим. Мен ПКБны мен көрүүгө/тийүүгө муктаж болгон кээ бир компоненттер үчүн тешик жасай турган тараптын астына койгум келди. Бул иштеши үчүн, мен дисплейди жана Arduino -ны тактайга, оюгу жок же башы жок эле ширетишим керек эле, бул жерде биринчи көйгөй жатат. Баарын иштеп жатканын текшермейинче, мен аны дароо эле эритүүгө даяр эмес болчумун, анткени мен эч нерсени текшере алган жокмун, анткени мен аны ширете алган жокмун жана башкалар.. муну кылба. Маселе numero dos, корпуста тешиктерди жаратуу. Мен туура эмес өлчөдүм деп ойлойм, анткени корпустагы тешиктердин бири да ПХБдагы компоненттерге дал келбеген жана мен аларды чоңойтушум керек болчу жана баскычтар ПХБда өтө бийик болчу жана тактайды ордуна койгондо алар дайыма басылып калат. мен капталдагы аудио джектерди каалагандыктан, мен тешиктерди чоңойтушум керек болчу, адегенде уячаларга туура келип, дисплей жана баскычтар аркылуу өтүү үчүн тактаны түшүрүшүм керек болчу … натыйжасы коркунучтуу.

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

Өкүм, мен муну түздөн -түз ПХБга эмес, корпуска орнотулган компоненттерди сатып алуу менен сунуштайм. Ошентип, сиз компоненттерди жайгаштырууда көбүрөөк эркиндикке ээ болосуз жана ката кетире турган жерлериңиз азаят.

14 -кадам: Фин

Image
Image
Fin
Fin

Мен бүттүм, бирок бул жерде мен башкача кылмакмын:

Жакшы сапаттагы 3,5 мм аудио джекти колдонуңуз. Мен колдонгондор терминалды кыскартып салышат, же уячаны сууруп алып, натыйжада Arduino баштапкы абалга келтирилет же жасалма триггерлер пайда болот. Мен муну мурунку кадамда айткам, бирок дагы бир жолу кайталайм.. Arduino тактасын баш/розеткасыз жалгаштырбаңыз, бул жөн гана ар кандай көйгөйлөрдү чечүүнү же жаңы кодду жүктөөнү ж.б. Мен ошондой эле дисплей өчкөндөн бери кнопкасын баспай туруп айта албайм, анткени бул нерсенин күйүп тургандыгын көрсөткөн сигналдын болушу пайдалуу болмок деп ойлойм. Жана акыркы нерсе, тыныгуу функциясы. Мен муну пайдалуу деп ойлоп жатам, мисалы, PIR сенсорун туташтырып жатканда, анткени аны жылытуу үчүн убакыт керек, же жөн эле айланасында кыймылдатып жатканда, аны иштетүүнү каалабайсың, ошондо сен баарын токтото аласың, бирок жөн эле бура аласың камерадан … ошондо.

Дагы бир тыкан нерсе - бул штативде Velcro, анткени ал ошол жерде колдонулушу мүмкүн.

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

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