Агуулгын хүснэгт:
- Алхам 1: Гэхдээ.. Яаж?
- Алхам 2: Камерыг хэрхэн ажиллуулах талаар сурах
- Алхам 3: Гох арга замууд
- Алхам 4: Доголдох кодыг бичих
- Алхам 5: Ангийн интервал {};
- Алхам 6: Arduino -ээр дамжуулан интервалыг өөрчлөх
- Алхам 7: Интервалыг харуулах
- Алхам 8: Бүгдийг нэгтгэх
- Алхам 9: Сүүлийн нэг зүйлийг нэмж оруулаарай
- Алхам 10: Эмх замбараагүй байдлыг агуулсан
- Алхам 11: Sens0rs
- Алхам 12: PoweeEeEer
- Алхам 13: Хашлага.. Ямар нэгэн байдлаар
- Алхам 14: Фин
Видео: Миний камерыг өрөвдөх: 14 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:06
Энэ төсөл хаанаас гараад байна.
Хэсэг хугацааны дараа би цагийн хуваарийн зураг авалт хийх талаар бодлоо. "Яаж?" Би өөрөөсөө асуусан уу? Эхний хариулт нь "За.. чи зүгээр л ямар нэг юм зураг авалт хийж, хурдасгаад л боллоо." Гэхдээ энэ үнэхээр тийм энгийн юм болов уу? Нэгдүгээрт, би DSLR -ийг ашиглахыг хүсч байна, миний Nikon D3100 нь видео бичлэг хийх 10 минутын хугацаатай. Хоёрдугаарт, би видео бичлэг хийх цаг хугацааны хязгаарлалтгүй камертай байсан ч 12 цагийн урт шиг үнэхээр урт хугацааны хоцрогдол хиймээр байвал яах вэ? Би 12 цагийн урттай 1080p видео хийдэг. Батерей удаан хугацаанд ажиллах болно гэдэгт би эргэлзэж байна, гэхдээ энэ нь тийм ч практик биш юм, тийм үү? За, "видео бичлэг хийх санаа" -г давлаа. За тэгээд зурагнууд байна. Тодорхой хугацаанд камер дээр зураг авч, хэдэн зуун дүрсээр дуусгахын тулд би програм хангамж ашиглан видео бичлэг хийдэг.
Зөв санаа мэт санагдсан тул үүнийг туршиж үзэхээр шийдлээ. Тиймээс би цаг хугацааг оруулах боломжтой төхөөрөмжийг бүтээхийг хүссэн бөгөөд энэ хугацаанд үндэслэн энэ нь миний камерыг байнга асаах болно. Тэгээд биднийг ажиллаж байх хооронд яагаад хөдөлгөөн хийх гэх мэт өөр зүйл нэмж болохгүй гэж?
Алхам 1: Гэхдээ.. Яаж?
ЯАЖ? хариулт дутуу байгаа бидний дараагийн асуулт. Цаг хугацаа, идэвхжүүлэгч, мэдрэгч гэх мэт зүйлсийн улмаас санаанд орж ирсэн анхны зүйл бол мэдээж Arduino байсан нь гайхах зүйл биш юм. Зүгээр дээ, гэхдээ бид камерынхаа хаалтыг хэрхэн яаж асаахыг сурах хэрэгтэй. Хм.. биеийн серверт халуунаар наасан уу? Үгүй ээ, бид үүнийг чимээгүй, эрчим хүчний хэмнэлттэй байхыг хүсч байна. Цахилгаан хэмнэлттэй - яагаад? Би үүнийг зөөврийн болгож, батерейг дотор нь оруулахыг хүсч байгаа тул цахилгаан залгуурын ойролцоо байх болно. Тэгвэл бид үүнийг хэрхэн өдөөх вэ.. энэ нь үнэхээр энгийн зүйл юм.
Никон танд алсын удирдлага болон бусад дагалдах хэрэгслүүд хэрэгтэй болно гэдгийг аль хэдийн мэдэж байсан бөгөөд тэд "За, бид тэдэнд энэ бүгдийг өгөх болно, гэхдээ бид тусгай боомт хийх болно, ингэснээр эдгээр хэрэгслүүдээс илүү их мөнгө олох боломжтой болно" гэж хэлсэн, Никон. Энэ портыг (миний хувьд) MC-DC2 гэж нэрлэдэг бөгөөд үүнийг гартаа авах хамгийн хямд арга бол eBay дээр алсын хаалтыг 2-3 доллараар худалдаж аваад кабелийг ашиглах явдал юм.
*Canon гэх мэт бусад зарим камерууд нь ижил зориулалттай 3.5 мм чихэвчний үүртэй тул хуучин чанга яригч/чихэвчний кабелийг ашиглаж болно.
Алхам 2: Камерыг хэрхэн ажиллуулах талаар сурах
Ямар ч байсан, энд хэлэлцээр байна, боомт нь бидний сонирхлыг татах 3 холболттой байх болно (Ground, Focus and Shutter), мөн та шинээр худалдаж авсан алсын хаалтны кабелийнхаа төгсгөлд байгаа холбоосуудтай байх болно. Эдгээр гурван холболт нь бидний хувьд чухал ач холбогдолтой, учир нь хэрэв бид Газрыг богиносгож, фокуслах юм бол камер нь яг л таны товчлуурыг дарж байгаа шиг анхаарлаа төвлөрүүлж, дараа нь холболт хэвээр байх үед та Ground болон Shutter -ийг богиносгож, камер зураг авах болно. яг л камер дээрх Хөшигний товчлуурыг дарсан шиг.
Та кабелийн төгсгөлд байгаа утсыг богиносгож, аль утас болохыг тодорхойлох боломжтой. Үүнийг хийсний дараа танихад хялбар болгох үүднээс бид тэдгээрийг дараах байдлаар өнгөөр будна.
Газар = ХАР; Фокус = ЦАГААН; Хөшиг = УЛААН.
За, одоо бид Arduino -д үүнийг бидний төлөө хийхийг зааж өгөх хэрэгтэй.
Алхам 3: Гох арга замууд
Arduino -г гадаад ертөнц рүү илгээхийг бид хэлж чадах хамгийн энгийн зүйл бол энэ бол дижитал гаралтын дохио юм. Энэ дохио нь HIGH (логик '1') эсвэл LOW (логик '0') байж болох тул "дижитал" гэж нэрлэж болно, эсвэл үндсэн утгаар нь хөрвүүлбэл логик HIGH 5V, логик LOW бол 0V болно.
Энэ дижитал дохиог бид яах ёстой вэ? Бид тэднийг зүгээр л камертай холбож, камер юу хүсч байгаагаа мэдэх болно гэж найдаж болохгүй. Бидний харж байгаагаар камер хариу үйлдэл үзүүлэхийн тулд түүний холболтыг богиносгох шаардлагатай байгаа тул бид илгээсэн эдгээр цахилгаан дохионоос хамааран терминалуудыг нь богиносгож болох зарим эд ангиудыг жолоодохын тулд Arduino -ийн дижитал дохиог ашиглах шаардлагатай байна.. *Миний дүрсэлсэн байдлаар та "Аа, релей!" Гэж бодож байж магадгүй. гэхдээ үгүй үгүй. Реле энэ ажлыг хийх байсан ч бид хагас дамжуулагчийн хар ид шидийг хялбархан ашиглах боломжтой жижиг урсгалтай харьцаж байна.
Миний туршиж үзэх эхний бүрэлдэхүүн хэсэг бол оптик холбогч юм. Тэд үүнийг хамгийн их хэрэгжүүлж байгааг би харсан бөгөөд энэ нь хамгийн зөв шийдэл байж магадгүй юм. Опто холбогч нь оролтын хэлхээг түүнээс бүрэн тусгаарлагдсан байхад та гаралтын хэлхээг хянадаг цахилгаан бүрэлдэхүүн хэсэг юм. Мэдээллийг гэрлээр дамжуулах, оролтын хэлхээ нь LED -ийг асаах, гаралтын унтраалга дээрх фототранзисторыг тохируулах замаар олж авдаг.
Тиймээс бид оптик холбогчийг дараах байдлаар ашиглах болно: бид Arduino -д дижитал тээглүүртэй бол дижитал HIGH -ийг нэг рүү илгээхийг хэлдэг бөгөөд энэ дохио нь бараг 5V бөгөөд энэ нь оптик холбогч доторх LED -ийг хөдөлгөж, доторх фототранзистор нь "богино" болно. Энэ гэрлийг илрүүлэх үед энэ нь гаралтын терминал бөгөөд эсрэгээр нь бид Arduino -ээр дижитал LOW дамжуулах үед LED -ээс гэрэл байхгүй тул терминалуудыг "салгах" болно.
Практикаас харахад энэ нь: Arduino -ийн дижитал тээглүүрүүдийн нэгийг оптокуперын ANODE зүү дээр, Arduino -ийн GND -ийг CATHODE -д, камерын GND -ийг EMITTER, FOCUS (эсвэл SHUTTER) цуглуулагч руу хавсаргасан болно. Эдгээр тээглүүрийг олохын тулд ашиглаж буй оптик холбогчийн мэдээллийн хуудсыг үзнэ үү. Би 4N35 -ийг ашиглаж байгаа тул хэрэв та оптик холбогч дотор юу болж байгааг огт тоохгүй бол миний схемийг сохроор дагаж болно. Бидэнд камерын ФОКУС ба Хөшигийг хоёуланг нь хянах шаардлагатай тул бидэнд эдгээрийн хоёр нь хэрэгтэй болно гэж хэлэх нь илүүц биз.
Гаралт дээрх фототранзистор хэрхэн ажилладагийг бид олж харсан болохоор яагаад үүнийг энгийн NPN транзистороор туршиж үзэхгүй байна вэ? Энэ удаад бид дижитал дохиог транзисторын сууринд шууд (эсэргүүцэл дамжуулж) авч, камер болон Arduino -ийн GND хоёуланг нь ялгаруулагч болон камерын фокус/хаалтийг транзисторын коллекторт холбоно.
Дахин хэлэхэд бид хоёр дохиог хянаж байгаа тул эдгээрийн хоёр нь хэрэгтэй болно. Би BC547B -ийг ашиглаж байгаа бөгөөд үндсэндээ та ямар ч NPN ашиглаж болно, учир нь бидний хянаж буй гүйдэл нь ганц миллиампер юм.
Эдгээр бүрэлдэхүүн хэсгүүд хоёулаа ажиллах болно, гэхдээ оптик холбогчийг сонгох нь илүү аюулгүй тул илүү сайн санаа байж магадгүй юм. Та юу хийж байгаагаа мэдэж байж л транзисторыг сонгоорой.
Алхам 4: Доголдох кодыг бичих
Өмнө нь хэлсэнчлэн бид дохио өгөхдөө Arduino -ийн дижитал тээглүүрийг ашиглах болно. Arduino нь эдгээр өгөгдлийг унших эсвэл бичихийн тулд хоёуланг нь ашиглаж болох тул бидний хийх ёстой хамгийн эхний зүйл бол setup () функц дээр бид Arduino -ийн хоёр дижитал тээглүүрийг дараах байдлаар гаргах болно.
pinMode (FOCUS_PIN, OUTPUT);
pinMode (SHUTTER_PIN, OUTPUT);
хаана FOCUS_PIN болон SHUTTER_PIN -ийг "#Define NAME утга" -аар эсвэл int (int) гэж тодорхойлж болно, учир нь та зүүг өөрчилж болох тул утгыг бүхэлд нь биш харин нэг цэг дээр өөрчлөх нь илүү хялбар болно.
Дараагийн хийх зүйл бол trigger () функцийг бичих бөгөөд үүнийг ажиллуулахад л хийх болно. Би зүгээр л кодтой зургийг оруулах болно. Таны мэдэх ёстой зүйл бол эхлээд бид FOCUS_PIN -ийг тодорхой хугацаанд HIGH дээр байлгадаг, учир нь камер чиглүүлж буй зүйл дээрээ анхаарлаа төвлөрүүлэхийг хүлээх хэрэгтэй бөгөөд дараа нь хэсэг хугацаанд (FOCUS_PIN өндөр хэвээр байхад)) зураг авахын тулд SHUTTER_PIN -ийг HIGH дээр тавина уу.
Би анхаарлаа төвлөрүүлэх чадвараа алгасах чадварыг оруулсан болно.
Алхам 5: Ангийн интервал {};
Одоо бид камерыг идэвхгүй болгож, интервал хэмжигч болгохын тулд хоёр буудлагын хоорондох хугацааг зохицуулах функцийг нэмж орууллаа. Бидний хийж буй зүйлийн зургийг авахын тулд бидний хүссэн функцийг харуулах энгийн код энд байна:
void loop () {
саатал (интервал); гох (); }
Би энэ интервалыг 5 секундээс 20-30 минут хүртэл өөрчлөхийг хүсч байна. Энд асуудал байна, хэрэв би үүнийг 5s -аас 16s болгон өөрчлөхийг хүсч байвал эсвэл завсрын хоорондох зүйлийг өөрчлөхийг хүсч байвал интервалаа нэмэгдүүлэх хүсэлт бүрийн хувьд интервал 1s -ээр нэмэгдэх болно. Энэ үнэхээр гайхалтай, гэхдээ хэрэв би 5 -аас 5 минут хүртэл явмаар байвал яах вэ? Энэ нь надад 295 хүсэлтийг 1 секундын алхамаар хийх шаардлагатай болно, тиймээс би өсөлтийн утгыг илүү том болгож нэмэгдүүлэх шаардлагатай бөгөөд тодорхой интервалын утгыг (босго) нэмэгдүүлэх ёстой. Би үүнийг хэрэгжүүлсэн:
5s-60s: 1s-ийн өсөлт; 60-аас 300-аад он хүртэл: 10-ийн алхам; 300s-3600s: 60-аад оны үе;
Гэхдээ би энэ ангийг тохируулж болохын тулд бичсэн бөгөөд ингэснээр та өөрийн босго болон өсөлтийг тодорхойлж чадна (бүх зүйлийг.h файлд тайлбарласан байгаа тул та ямар утгыг хаанаас өөрчлөхөө мэдэх боломжтой болно).
Миний өгсөн интервалыг удирдах жишээг компьютер дээр хийсэн нь ойлгомжтой, одоо бид үүнийг Arduino руу шилжүүлэх хэрэгтэй. Интервал гэсэн бүхэл бүтэн анги нь манай ангийн/функцуудын мэдэгдэл, тодорхойлолтыг хадгалахад ашигладаг нэг толгой файл дотор байрладаг (үнэндээ тийм биш, гэхдээ энэ жишээнд үүнийг ямар ч хор хөнөөл учруулахгүйгээр хийж болно). Энэ толгой файлыг arduino кодтойгоо танилцуулахын тулд бид "#include" Interval.h "" (файлууд нэг лавлах санд байх ёстой) ашигладаг бөгөөд энэ нь бид үндсэн код дээрээ толгой файлд тодорхойлсон функцүүдийг ашиглах боломжтой болно.
Алхам 6: Arduino -ээр дамжуулан интервалыг өөрчлөх
Одоо бид интервалын утгыг өөрчлөх эсвэл нэмэгдүүлэхийг хүсч байна. Энэ бол хоёр зүйл тул бид хоёр товчлуураар хянагдах хоёр дижитал дохиог ашиглах болно. Бид товчлууруудад өгсөн дижитал тээглүүр дээрх утгыг дахин дахин уншиж, эдгээр утгыг checkButtons (int, int) функцэд задлан шинжлэх болно; Хэрэв "дээш" товчлуур дарагдсан бол интервал нэмэгдэх бөгөөд "доош" товчлуур байвал интервал буурах болно. Түүнчлэн, хэрэв хоёулаа товчлуурыг дарвал энэ нь идэвхжүүлэх үед анхаарлаа төвлөрүүлэх эсэхийг анхаарах хувьсагчийн фокусын утгыг өөрчлөх болно.
Кодын нэг хэсгийг ((millis () - prevBtnPress)> = debounceTime) хасахад ашигладаг. Миний бичсэн арга бол би товчлуурын эхний даралтыг btnPressed логик хувьсагчаар бүртгэж, болсон цагийг санаж байна гэсэн үг юм. Би тодорхой цаг хүлээдэг (debounceTime), хэрэв товчлуур дарагдсан хэвээр байвал хариу үйлдэл үзүүлдэг. Энэ нь товчлуурыг дарах хооронд "түр зогсоох" боломжийг олгодог тул хаана ч байхгүй олон даралтаас зайлсхийдэг.
Тэгээд эцэст нь:
if ((millis () - prevTrigger) / 1000> = interval.getVal ()) {
prevTrigger = millis (); гох (); }
Бид эхлээд хамгийн сүүлийн идэвхжүүлэгч (prevTrigger) болон одоогийн цаг (миллис ()) (бүх зүйлийг миллисекундээр, интервал нь секундын дотор байдаг тул бүх зүйлийг 1000 -д хуваана) хоорондох хугацааны интервалтай тэнцүү эсвэл түүнээс их эсэхийг шалгадаг. Бид хүсч байна, хэрэв тийм бол бид одоогийн цагийг хамгийн сүүлд камерыг асааж, дараа нь ажиллуулснаа санаж байна.
Үүнийг бүрэн хийснээр бид интервалометрийг үндсэндээ хийсэн боловч бид дуусаагүй байна. Бид интервалометрийн утгыг хараагүй хэвээр байна. Энэ нь зөвхөн сериал монитор дээр харагддаг бөгөөд бид үргэлж компьютерын ойролцоо байдаггүй тул одоо бид үүнийг өөрчлөх үед интервалыг харуулах зүйлийг хэрэгжүүлэх болно.
Алхам 7: Интервалыг харуулах
Энд бид дэлгэцийг танилцуулж байна. Би TM1637 -ийн удирддаг 4 оронтой модулийг ашигласан, учир нь үүнийг зөвхөн цагийг харуулахын тулд ашиглах ёстой бөгөөд өөр юу ч байхгүй. Arduino -д зориулагдсан эдгээр модулиудыг ашиглах хамгийн хялбар арга бол тэдэнд зориулж аль хэдийн хийсэн номын санг ашиглах явдал юм. Arduino сайт дээр TM1673 чипийг тайлбарласан хуудас, санал болгож буй номын сангийн линк байна. Би энэ номын санг татаж авсан бөгөөд та эдгээр номын санг Arduino IDE -т танилцуулах хоёр арга бий.
- Arduino програм хангамжаас Sketch> Номын санг оруулах>. ZIP номын сан руу очиж, татаж авсан.zip файлыг олоорой.
- Та Arduino -ийн гараар хийж чадах зүйлийг хийж, Windows дээр Arduino -ийн номын санг хадгалдаг хавтсан дахь номын санг задлах боломжтой: C: / Хэрэглэгчид / Хэрэглэгчийн нэр / Баримт бичиг / Arduino / номын сан \.
Номын санг оруулсны дараа та "ReadMe" файлыг унших ёстой бөгөөд тэнд янз бүрийн функцүүдийн хийж гүйцэтгэсэн ажлын хураангуйг олох болно. Заримдаа энэ нь хангалтгүй байдаг тул та жаахан гүнзгийрч, толгойн файлуудыг судлахыг хүсч байгаа бөгөөд эдгээр функцууд хэрхэн хэрэгжиж байгааг, оролтын аргумент болгон тэдэнд юу хэрэгтэй байгааг харах боломжтой болно. Мэдээжийн хэрэг, номын сан ямар чадвартай болохыг мэдрэх хамгийн сайн арга бол Arduino програм хангамжаас Файл> Жишээ> Номын сангийн нэр> ExampleName ашиглан ажиллуулж болох жишээг санал болгодог. Энэхүү номын сан нь таны дэлгэц зөв ажиллаж байгаа эсэхийг шалгахын тулд дэлгэц дээр ажиллуулахыг танд зөвлөж буй нэг жишээг санал болгож байна, гэхдээ жишээнд харсан кодыг өөрчилж, функц бүр юу хийдэг, дэлгэц хэрхэн хариу үйлдэл үзүүлж байгааг өөрөө харахыг зөвлөж байна. энэ. Би үүнийг хийсэн бөгөөд үүнийг би ойлгосон юм.
Энэ нь цифр бүрт 8 битийн тэмдэггүй 4 бүхэл тоог ашигладаг (0bB7, B6, B5, B4, B3, B2, B1, B0). В6-В0 битүүдийг тодорхой оронтой сегмент бүрт ашигладаг бөгөөд хэрэв бит нь 1 байвал түүний удирддаг хэсэг асдаг. Эдгээр бүхэл тоо нь өгөгдөл гэж нэрлэгддэг массивт хадгалагддаг. Эдгээр битүүдийг дэлгэц дээр тохируулах ажлыг display.setSegments (өгөгдөл); эсвэл та аль ч оронтой тоонд хандаж, гараар тохируулах боломжтой (өгөгдөл [0] = 0b01111001) эсвэл encodeDigit (int) функцийг ашиглаж болно; мөн илгээсэн цифрийг бит болгон хөрвүүлнэ (өгөгдөл [0] = display.encodeDigit (3));. В7 битийг зөвхөн хоёр дахь цифр буюу өгөгдөл [1] ашиглан бүдүүн гэдэсний цэгийг идэвхжүүлэхэд ашигладаг.
Би интерфэйсийн тодорхой цифрүүдийг M1M0: S1S0 хэлбэрээр авах боломжтой INTERVAL ангиллын шулам дахь функцуудыг бичсэн тул M нь минут, 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]. Энэ нь өгөгдлийн [1] B7 бит үргэлж 1 байхыг баталгаажуулах зорилгоор ашиглагддаг тул бүдүүн гэдэс асдаг.
Дэлгэцийн хамгийн сүүлийн зүйл бол эрчим хүчний хэрэглээ юм. Бид үүнийг удаан байлгадаггүй тул энэ нь тийм ч чухал биш байж магадгүй, гэхдээ хэрэв та үүнийг батерейг илүү ээлтэй болгохыг хүсч байвал дэлгэцийн гэрэлтүүлгийг хамгийн бага гэрэлтүүлгээс 3 дахин их гүйдэл авч байгаа тул багасгах хэрэгтэй. хамгийн доод хэмжээнээс илүү.
Алхам 8: Бүгдийг нэгтгэх
Бид камерыг хэрхэн асаах, интервалыг хэрхэн яаж зохицуулах, мөн ижил интервалыг дэлгэц дээр хэрхэн харуулахыг мэддэг. Одоо бид эдгээр бүх зүйлийг нэгтгэх хэрэгтэй. Бид мэдээж loop () функцээс эхэлнэ. Бид товчлуур дарагдсан эсэхийг байнга шалгаж, checkButtons (int, int) дээр хариу үйлдэл үзүүлж, интервалыг зохих ёсоор өөрчилж, өөрчлөгдсөн интервалыг харуулна. Мөн давталт () дээр сүүлчийн идэвхжүүлэлт эсвэл товчлуур дарахад хангалттай хугацаа өнгөрсөн эсэхийг байнга шалгаж, шаардлагатай бол trigger () функцийг дуудах болно. Цахилгаан бага зарцуулахын тулд хэсэг хугацааны дараа дэлгэцийг унтраах болно.
Би хоёр өнгөний LED (Улаан ба Ногоон, нийтлэг катод) нэмсэн бөгөөд энэ нь гох () байхад ногоон асах бөгөөд фокус асаалттай байвал дэлгэцтэй хамт улаан асах бөгөөд хэрэв анхаарлаа төвлөрүүлж байвал унтраах болно. унтраасан
Түүнчлэн, бид бүр жижиг Arduino, Pro Mini руу шилжих болно.
Алхам 9: Сүүлийн нэг зүйлийг нэмж оруулаарай
Одоогоор.. бид зөвхөн интервалометрийг бий болгосон. Ашигтай, гэхдээ бид илүү сайн хийж чадна.
Миний санаж байсан зүйл бол интервал хэмжигч нь бид ямар нэгэн гадны унтраалга/мэдрэгч залгахад интервалометрийг зогсоож унтраалга/мэдрэгчийн оролтод хариу өгөхөөс бусад тохиолдолд үүнийг хийдэг. Үүнийг мэдрэгч гэж нэрлэе, энэ нь заавал холбогдсон мэдрэгч биш байх болно, гэхдээ би үүнийг ингэж нэрлэх болно.
Нэгдүгээрт, мэдрэгчийг хавсаргасан гэдгээ хэрхэн олж мэдэх вэ?
Бидний ашиглах/хийх мэдрэгчүүд нь тэдгээрийг arduino (Vcc, GND, Signal) руу холбосон гурван утас хэрэгтэй болно. Энэ нь бид 3.5 мм аудио залгуурыг мэдрэгчийн оролтын үүр болгон ашиглаж болно гэсэн үг юм. Энэ нь бидний асуудлыг хэрхэн шийдвэрлэх вэ? 3.5 мм -ийн "унтраалгатай" үүрний төрөл байдаг бөгөөд тэдгээрт эрэгтэй холбогч байхгүй бол холбогчийн зүү рүү богиноссон зүү байдаг бөгөөд холбогч байгаа үед салдаг. Энэ нь бидэнд мэдрэгч байгаа эсэх дээр үндэслэсэн мэдээлэл байна гэсэн үг юм. Би зурган дээрх татах резисторыг ашиглана (дижитал зүү нь мэдрэгчгүй бол өндөр, мэдрэгч хавсаргасан байхад LOW гэж уншина) эсвэл та дижитал зүүг ердийн холбогчийн зүү дээр холбож болно. газардуулгатай холбож, дижитал зүүг INPUT_PULLUP гэж тодорхойлсон бол энэ нь ямар ч тохиолдолд ажиллах болно. Тиймээс одоо бид кодоо өөрчлөх ёстой бөгөөд ингэснээр зөвхөн мэдрэгч байхгүй үед эсвэл дижитал зүү өндөр байгаа эсэхийг шалгахад л бичсэн зүйлээ хийх болно. Би бас үүнийг өөрчилсөн тул энэ горимд ашиглагдах интервалын оронд дэлгэц дээр "SENS" гэж харуулсан боловч анхаарлаа төвлөрүүлэх нь бидэнд хамааралтай хэвээр байгаа тул бид хоёр товчлуурыг дарж анхаарлаа төвлөрүүлэх функцийг хадгалах болно. улаан удирдамжаар дамжуулан фокусын байдлыг харуулав.
Мэдрэгч яг юу хийдэг вэ?
Камерыг асаахыг хүссэн үедээ дохионы зүү дээр 5V асаахад л хангалттай. Энэ нь бидэнд энэ зүүний байдлыг шалгах өөр Arduino дижитал зүү хэрэгтэй болно гэсэн үг бөгөөд энэ нь HIGH -ийг бүртгүүлэхдээ trigger () функцийг дуудахад л хангалттай бөгөөд камер зураг дарах болно. Хамгийн хялбар жишээ бөгөөд энэ нь ажиллаж байгаа эсэхийг шалгахын тулд бид доош татах эсэргүүцэлтэй энгийн товчлуур юм. Мэдрэгчийн Vcc ба дохионы зүү хоёрын хоорондох товчлуурыг холбож, дохионы зүү ба GND хооронд резистор нэмнэ үү. товчлуур дээр дарахад бид дохионы зүүг HIGH дээр шууд тавьдаг бөгөөд Arduino үүнийг уншиж, камерыг асаадаг.
Үүний тусламжтайгаар бид кодыг бичиж дуусгасан.
*Би ашиглаж байсан аудио залгууртай холбоотой зарим бэрхшээлийг тэмдэглэхийг хүсч байна. Эр залгуурыг холбогч руу оруулах үед GND болон бусад хоёр тээглүүрийн аль нэг нь богино байдаг. Энэ нь холбогчийг оруулах үед л тохиолддог, гэхдээ Arduino богино хугацаанд бүртгүүлэхэд хангалттай хугацаа байгаа тул Arduino дахин асаах болно. Энэ нь тийм ч их тохиолддоггүй, гэхдээ аюул занал учруулж болзошгүй тул Arduino -ийг устгах магадлалтай тул миний ашиглаж байсан холбогчоос зайлсхий.
Алхам 10: Эмх замбараагүй байдлыг агуулсан
Талхны самбар эмх замбараагүй болж байгааг бид зургуудаас харж байна, ингэснээр бид бүх зүйлийг perfboard/PCB руу шилжүүлэх шаардлагатай байна. Би ПХБ -ийг сонгосон, учир нь би эдгээрийг илүү их хийх болно гэж бодож байгаа болохоор хялбархан хуулбарлаж чадна.
Би ПХБ -ийн дизайн хийхэд Eagle -ийг ашиглаж, ашигласан бүх эд ангиудынхаа загварыг олсон. Миний дизайнд хийхийг хүсээгүй нэг жижиг зүйл байдаг бөгөөд энэ нь дэлгэцийн Vcc -ийн утсан дэвсгэр юм. Би үүнийг хэтэрхий оройтож харсан бөгөөд урьд нь зохион бүтээсэн зүйлээ нураахыг хүсээгүй бөгөөд утсан дэвсгэр нэмэх залхуу замаар явж, дараа нь зэсийн ул мөрийн оронд эдгээр холболтод утас нэмж оруулах шаардлагатай болсон тул хэрэв та уурхайн загварыг ашиглаж байгаа бол санаа зовоорой..
Arduino самбар ба дэлгэц нь тодорхой шалтгаанаар ПХБ -д шууд гагнах биш харин эмэгтэй зүү толгойгоор ПХБ -тэй холбогддог. Ийм байдлаар дэлгэцийн доор бусад бүрэлдэхүүн хэсгүүдэд резистор, транзистор, тэр ч байтугай аудио залгуур гэх мэт бусад хэсгүүдэд хангалттай зай бий болно.
Би дизайны дагуу шууд гагнах ёстой микро товчлууруудыг тавьсан боловч та эмэгтэй зүү толгойн нүхийг ашиглаж, товчлуурыг ПХБ дээр биш харин хайрцагт бэхлэхийг хүсч байвал утсаар холбож болно.
Бид бас камертай холбосон кабелийг залгахын тулд өөр эмэгтэй аудио залгуур тавих болно. Ингэснээр бид бусад камертай бусад холбогчтой холбогдох боломжтой болох тул самбар илүү уян хатан болдог.
Алхам 11: Sens0rs
Мэдрэгчийг хэрэгжүүлэх арга замыг авч үзье.
Тиймээс мэдрэгч нь 5V тэжээлийн хүчдэлтэй байх бөгөөд бид камерыг асаахыг хүссэн үедээ дохионы зүү дээр дижитал HIGH -ийг өгөх боломжтой байх ёстой. Миний санаанд орж ирсэн хамгийн эхний зүйл бол хөдөлгөөний мэдрэгч, тодруулбал PIR юм. Arduino -д зарагддаг модулиуд байдаг бөгөөд эдгээр мэдрэгчтэй бөгөөд бидний хүссэн зүйлийг хийдэг. Тэд 5V -ээр тэжээгддэг бөгөөд 5V -ийг асаахад гаралтын зүүтэй байдаг, бид үүнийг зөвхөн 3.5 мм аудио үүрэнд холбож, шууд самбар дээр залгах боломжтой. Анхаарах ёстой нэг зүйл бол энэ мэдрэгчийг халааж, зөв ажиллаж эхлэхэд цаг хугацаа хэрэгтэй тул залгуурт залгасны дараа зөв ажиллах болно гэж битгий бодоорой, жаахан хугацаа өгөөд тохируулаад амьд зүйл нь түүн рүү ороорой. хүрээ нь камерыг асаах болно.
Бид аль хэдийн хийсэн Arduino мэдрэгч самбарын талаар бодож байгаа тул өөр нэг самбар санаанд орж байна. Эдгээр самбарууд нь ихэвчлэн авсан дууныхаа аналог утгыг гаргадаг нэг зүүтэй, нөгөө нь дижитал, хэрэв авсан дуу нь тодорхой түвшинг давсан бол логик HIGH -ийг гаргадаг. Бид энэ түвшинг мэдрэгч бидний дуу хоолойг үл тоомсорлож, алга ташилтыг бүртгэдэг. Ингэснээр та алга таших тоолондоо камераа ажиллуулдаг.
Алхам 12: PoweeEeEer
Үүнийг хүчээр хангах хамгийн хялбар арга бол гаднаас биш цахилгаан банкнаас авах явдал гэж би бодож байна. Бид утсаа цэнэглэх функцийг хадгалж, унтраалгаар дамжуулан самбар дээрх одоогийн урсгалыг хянах болно. Бид хэлхээний самбар дээрх GND ба Vcc (5V) болон гагнуурын утас бүхий цахилгаан гаралтын USB холболтын зүүг шууд тэндээс, тэндээс манай самбар дээр байрлуулах болно.
Алхам 13: Хашлага.. Ямар нэгэн байдлаар
Би үүнтэй үнэхээр тэмцсэн. Би одоо байгаа ПХБ -ийг оруулахыг хүссэн хайрцгийг боогоод хүссэн бүх зүйлээ тааруулах сайхан арга байхгүй гэдгийг ойлгоод дараа нь энэ удаа оптик холбогчтой шинэ ПХБ хийхээр шийдлээ. Би ПХБ -ийг харах/хүрэх шаардлагатай зарим бүрэлдэхүүн хэсгүүдийн цооног өрөмдөх хажуугийн доор байрлуулахыг хүссэн. Үүнийг ажиллуулахын тулд би дэлгэц болон Arduino -ийг залгуур эсвэл толгойгүйгээр шууд самбар дээр гагнах хэрэгтэй болно. Бүх зүйл ажиллаж байгааг шалгах хүртэл би гагнах ажилд бэлэн биш байсан тул ямар нэгэн зүйлийг засах нь үнэхээр аймшигтай байсан, гагнах боломжгүй байсан тул би юу ч туршиж чадаагүй юм. Гэх мэт. Үүнийг бүү хий. Асуудлын дугаар, хэрэг дээр нүх гаргах. Би хайрцаг дээрх нүхнүүдийн аль нь ч ПХБ -ийн бүрэлдэхүүн хэсгүүдтэй таарч тохирохгүй байсан тул хэмжилтийг буруу хийсэн гэж бодож байна. aaand би аудио залгуурыг хажуу талд нь байрлуулахыг хүссэн тул эхлээд нүхийг нь үүрэнд нь тохируулахын тулд томруулж, дараа нь дэлгэц болон товчлууруудыг дамжуулахын тулд самбарыг доош нь буулгах шаардлагатай болсон. үр дүн нь аймшигтай юм.
Би аймшигтай нүхнүүдийг арай нимгэн картоноор бүрхэж, бүрдэл хэсгүүдийн хувьд илүү оновчтой нүхийг хайчилж авснаар аймшигтай нүх гаргав. Энэ нь аймшигтай боловч миний нүдэнд илүү хялбар байдаг.
Шийдвэр, би үүнийг ПХБ -д шууд биш харин хашаанд бэхлэх бүрэлдэхүүн хэсгүүдийг худалдаж авах замаар хийхийг зөвлөж байна. Ингэснээр та бүрэлдэхүүн хэсгүүдийг байрлуулахдаа илүү их эрх чөлөөтэй болж, алдаа гаргах газар багатай болно.
Алхам 14: Фин
Би дууссан, гэхдээ би өөрөөр хийх байсан зүйл байна:
Илүү сайн чанарын 3.5 мм аудио залгуур ашиглана уу. Миний ашиглаж байсан терминалууд терминалыг богиносгох хандлагатай байдаг бөгөөд энэ нь нийлүүлэлтийг богиносгодог бөгөөд ингэснээр Arduino -ийг дахин тохируулдаг эсвэл хуурамч өдөөгчийг үүсгэдэг. Би үүнийг өмнөх алхам дээр хэлсэн боловч дахин хэлье.. Arduino самбарыг толгой/залгуургүйгээр бүү гагнаарай, энэ нь аливаа алдааг олж засварлах эсвэл шинэ код оруулах гэх мэтийг илүү хэцүү болгодог. Дэлгэц унтарснаас хойш товчлуурыг дарахгүйгээр хэлэх боломжгүй байдаг тул энэ зүйл асаалттай байгаа гэсэн дохио өгөх нь ашигтай байсан гэж би бодож байна. Хамгийн сүүлчийн зүйл бол түр зогсоох функц юм. Энэ нь жишээлбэл, PIR мэдрэгчийг залгахад халаахад цаг хугацаа шаардагддаг, эсвэл түүнийг хөдөлгөхөд үүнийг асаахыг хүсэхгүй байгаа тул бүх зүйлийг түр зогсоох боломжтой гэж би бодож байна. камераас гадуур.. тэгээд ч хамаагүй.
Өөр нэг цэвэрхэн зүйл бол tripod дээр Velcro хийх явдал юм, учир нь үүнийг тэнд ашиглах магадлал өндөр байдаг.
Энэ төслийн талаар ямар нэгэн зүйл асууж, сэтгэгдлээс асуугаарай, хэрэв та үүнийг барьж байгаа бол энэ нь танд хэрхэн тохиолдсоныг мэдэхийг хүсч байна.
Зөвлөмж болгож буй:
Лиго ба Servo бүхий өндөр чанартай камерыг 4 фокус руу чиглүүлээрэй: 4 алхам (зурагтай)
Leg өндөр ба камертай өндөр чанартай камерыг анхаарч үзээрэй: бага зэрэг хакердсан Lego хэсэг, тасралтгүй servo болон зарим Python кодын тусламжтайгаар та дэлхийн өнцөг булан бүрээс Raspberry Pi өндөр чанартай камераа төвлөрүүлж чадна! Pi HQ камер бол гайхалтай хэсэг юм. иж бүрдэл, гэхдээ саяхны Мерлин дээр ажиллаж байхдаа олж мэдсэн
Полароид газрын камерыг амилуулах: 32 алхам (зурагтай)
Полароидын газрын камерыг амилуул: Полароид газрын камерыг зохион бүтээгч Эдвин Ландын нэрээр нэрлэжээ. Энэ нь хорвоогийн гэрэл зургийн санааг дэлхий нийтэд танилцуулсан бөгөөд зарим талаараа дижитал түр зуурын таашаал авах орчин үеийн эрин үеийг эхлүүлсэн юм
M5StickV AI + IOT камерыг эхлүүлэх: 6 алхам (зурагтай)
M5StickV AI + IOT Камерыг эхлүүлэх нь: Товч танилцуулга зохистой үзүүлэлтүүд. Камер нь гайхалтай хүчээр ажилладаг
LED гэрэлтүүлэгтэй өөрийн камерыг өөрөө хий! 5 алхам (зурагтай)
LED гэрэлтүүлэгтэй өөрийн камерыг өөрийн гараар хий!: Энэхүү төсөл дээр би энгийн камерын төхөөрөмж хэрхэн бүтээхийг танд үзүүлэх болно. Тоног төхөөрөмж нь камер авахыг хүссэн объектынхаа дэргэд байрлуулахаас гадна бичлэг, LED гэрэлтүүлгийг бүрэн хянах чадвартай дэлгэцтэй
Миний гар миний гар: 8 алхам (зурагтай)
Миний гар миний гар: Би цоо шинэ Epilog лазер таслагчийг ашигласан бөгөөд Instructables саяхан гарныхаа зургийг зөөврийн компьютерын гар дээрээ лазераар сийлэх боломжтой болсон. Одоо энэ нь таны баталгааг DIY хэв маягаар хүчингүй болгож байна! Би тусалж эхэлснээсээ хойш ихэнх зөөврийн компьютерээ лазераар сийлсэн