Mundarija:

Pimp My Cam: 14 qadam (rasmlar bilan)
Pimp My Cam: 14 qadam (rasmlar bilan)

Video: Pimp My Cam: 14 qadam (rasmlar bilan)

Video: Pimp My Cam: 14 qadam (rasmlar bilan)
Video: ERKAK KO'RMAGAN ROHIBA QIZLAR YIGIT BILAN BIR GURUX BO'LIB QILISHNI XOXLASHDI.. 2024, Iyul
Anonim
Mening kameramni pimp
Mening kameramni pimp

Mana bu loyiha qayerdan keladi.

Biroz vaqt o'tgach, men vaqt jadvallarini suratga olish haqida o'yladim. "Qanaqasiga?" Men o'zimdan so'radimmi? Birinchi javob: "Xo'sh, siz shunchaki biror narsani suratga olasiz va tezlashtirasiz, hammasi shu". Lekin bu haqiqatan ham oddiymi? Birinchidan, men buning uchun DSLR -dan foydalanmoqchiman va Nikon D3100 -da video suratga olish uchun 10 minut vaqt chegarasi bor. Ikkinchidan, agar menda video tasvirga olish uchun vaqt cheklanmagan kameram bo'lsa ham, 12 soatlik vaqt kabi juda uzoq vaqtni qaytarishni xohlasam nima bo'ladi? Men 12 soatlik 1080p uzunlikdagi video qilaman. Men batareyaning uzoq davom etishiga shubha qilaman va bu unchalik amaliy emas, shunday emasmi? Yaxshi, "video g'oyani suratga olish" ni kesib o'tish. Xo'sh, unda rasmlar bor. Kamerada ma'lum vaqt oralig'ida suratga olish va yuzlab tasvirlar bilan tugash, men ularni dasturiy ta'minot yordamida qayta ishlashim mumkinmi?

Bu yaxshi fikr kabi tuyuldi, shuning uchun men uni berishga qaror qildim. Shunday qilib, men vaqt oralig'ini kirita oladigan qurilma yasashni xohladim va shu davrga asoslanib, u doimo kameramni ishga soladi. Va biz tayyor ekanmiz, nima uchun harakatlantiruvchi va boshqa shunga o'xshash narsalarni qo'shmasligimiz kerak?

1 -qadam: Lekin.. Qanday qilib?

Lekin qanday?
Lekin qanday?

QANAQASIGA? bizning keyingi savolimizga javob yo'q. Vaqt, ishga tushirish, datchiklar va shunga o'xshash narsalar tufayli, aqlga kelgan birinchi narsa, albatta, Arduino bo'lishi ajablanarli emas. Yaxshi, lekin baribir, biz kameramizdagi deklanşörü qanday ishga tushirishni o'rganishimiz kerak. Hm.. tana kamerasiga servo issiq yopishtirilganmi? Yo'q, biz bu jim va energiya tejamkor bo'lishini xohlaymiz. Quvvatni tejash - nima uchun? Men uni portativ qilib, ichiga batareyani joylashtirmoqchi bo'lganim uchun, har safar elektr vilkasi yonida bo'lmayman. Xo'sh, qanday qilib biz uni ishga solamiz.. bu juda oddiy.

Nikon sizga masofadan boshqarish pulti va boshqa aksessuarlarni xohlayotganingizni allaqachon bilgan edi va ular: "Xo'sh, biz bularning barchasini beramiz, lekin biz maxsus port qilamiz, shunda biz bu aksessuarlarga ko'proq pul topishimiz mumkin", dedi uyat. Bu port (mening holimda) MC-DC2 deb nomlanadi va bizni qo'lga olishning eng arzon usuli-eBay-dan 2-3 dollarlik masofali deklanşör sotib olish va shunchaki kabeldan foydalanish.

*Boshqa ba'zi kameralarda, masalan, Canonda, xuddi shunday foydalanish uchun mo'ljallangan, 3,5 mm eshitish vositasi ulagichi mavjud, shuning uchun siz eski karnay/naushnik kabelidan foydalanishingiz mumkin.

2 -qadam: Kamerani ishga tushirishni o'rganish

Image
Image
Ishga tushirish usullari
Ishga tushirish usullari

Yaxshiyamki, bu erda shartnoma, port bizni qiziqtiradigan 3 ta ulanishga ega bo'ladi (Ground, Focus va Shutter) va siz kabelning uchida siz yangi yo'q qilingan masofadan boshqariladigan panjurni olasiz. Bu uchta ulanish biz uchun juda muhim, chunki agar biz "Ground" va "Fokus" ni qisqartirsak, kamera siz fokus tugmachasini bosgandek fokuslanadi, keyin esa ulanish saqlanib qolganda, siz "Ground" va "Shutter" ni qisqartirishingiz mumkin va kamera rasmga tushadi. xuddi kameradagi deklanşör tugmasini bosgandek.

Qaysi simni aniqlash uchun kabelning oxiridagi simlarni qisqartirish orqali buni sinab ko'rishingiz mumkin. Buni qilganingizdan so'ng, aniqlashni osonlashtirish uchun biz ularni shunday ranglaymiz:

Zamin = Qora; Fokus = oq; Deklanşör = RED.

Yaxshi, endi biz Arduinoga buni biz uchun qilishni o'rgatishimiz kerak.

3 -qadam: Trigger usullari

Image
Image

Arduino -ga tashqi dunyoga yuborishni aytishimiz mumkin bo'lgan eng oddiy narsa bu raqamli chiqish signalidir. Bu signal "yuqori" (mantiqiy "1") yoki "past" (mantiqiy "0") bo'lishi mumkin, shuning uchun "raqamli" nomi yoki uning asosiy ma'nosiga aylantirilganda: mantiqiy YUQORI uchun 5V, mantiqiy past uchun 0V.

Bu raqamli signallarni nima qilishimiz kerak? Biz ularni shunchaki kameraga ulab, kameradan biz xohlagan narsani bilishini kutish mumkin emas. Ko'rib turganimizdek, kameraning reaktsiyasi uchun ulanishlarni qisqartirishimiz kerak, shuning uchun biz Arduino raqamli signallarini ishlatib, biz yuboradigan elektr signaliga qarab terminallarini qisqarishi mumkin bo'lgan ba'zi komponentlarni haydashimiz kerak.. *Men qanday ta'riflagan bo'lsam, siz "Oh, estafetalar!" lekin yo'q yo'q. O'rnimizni bu ishni bajaradi, lekin biz shunday kichik oqimlar bilan shug'ullanmoqdamizki, biz yarimo'tkazgichlarning qora sehridan bemalol foydalana olamiz.

Men sinab ko'radigan birinchi komponent - bu optokupl. Men ularning eng ko'p amalga oshirilganini ko'rdim va bu, ehtimol, eng yaxshi echim. Optocoupler - bu elektr komponenti, uning yordamida siz chiqish davrini boshqarasiz, shu bilan birga kirish davri undan butunlay ajratilgan. Bunga ma'lumotni yorug'lik orqali uzatish orqali erishiladi, kirish sxemasi LEDni yoqadi va mos ravishda chiqish kalitidagi fototransistor.

Shunday qilib, biz optokuplni shunday ishlatamiz: biz Arduino -ga aytamizki, agar u raqamli pinli bo'lsa, raqamli YUKni yuboradi, bu signal deyarli 5V, u optokupl ichidagi LEDni boshqaradi va uning ichidagi fototransistor "qisqa" bo'ladi. u yorug'lik aniqlanganda uning chiqish terminallari, va aksincha, u o'z terminallarini "ajratadi", chunki biz Arduino orqali raqamli LOW yuborganimizda LEDdan yorug'lik yo'q.

Amalda, bu shuni anglatadiki: Arduino raqamli pinlaridan biri optokuplning ANODE piniga, Arduino GND CATHODE ga, kameraning GND emitentga va fokusga (yoki SHUTTER) kollektorga biriktirilgan. O'zingizning pinlaringizni topish uchun siz foydalanayotgan optokuplning ma'lumot varag'iga qarang. Men 4N35 dan foydalanayapman, shuning uchun siz optokupl ichida nima bo'layotgani haqida qayg'urmasangiz, mening sxemamga ko'r -ko'rona amal qilishingiz mumkin. Aytishga hojat yo'q, bizga ikkitasi kerak bo'ladi, chunki biz kameraning FOCUS va Shutter -ni boshqarishimiz kerak.

Chiqishdagi fototransistor bilan qanday ishlashini ko'rganimiz uchun, nega biz uni oddiy NPN tranzistorida sinab ko'rmaymiz. Bu safar biz raqamli signalni to'g'ridan -to'g'ri (rezistor orqali) tranzistor bazasiga olib kelamiz va kamerani ham, Arduino GND ni ham emitentga, ham kameraning fokusini/deklanşörini tranzistor kollektoriga ulaymiz.

Shunga qaramay, bizga ikkitasi kerak bo'ladi, chunki biz ikkita signalni boshqaramiz. Men BC547B dan foydalanmoqdaman va buning uchun siz asosan NPN dan foydalanishingiz mumkin, chunki biz boshqarayotgan oqim bitta milliamp.

Bu ikkala komponent ham ishlaydi, lekin optokuplni tanlash, ehtimol, yaxshiroq fikrdir, chunki u xavfsizroq. Agar siz nima qilayotganingizni bilsangiz, tranzistorlarni tanlang.

4 -qadam: Triggering kodini yozish

Image
Image
Triggering uchun kod yozish
Triggering uchun kod yozish

Yuqorida aytganimizdek, biz signal berish uchun Arduino raqamli pinlaridan foydalanamiz. Arduino ikkalasini ham undan ma'lumotlarni o'qish yoki yozish uchun ishlatishi mumkin, shuning uchun biz sozlashimiz kerak bo'lgan birinchi narsa, biz Arduino -ning ikkita raqamli pinini shunday chiqish uchun ishlatamiz:

pinMode (FOCUS_PIN, OUTPUT);

pinMod (SHUTTER_PIN, OUTPUT);

bu erda FOCUS_PIN va SHUTTER_PIN ni "#define NAME qiymati" bilan belgilash mumkin yoki setup () funktsiyasidan oldin int sifatida belgilash mumkin, chunki siz pinni o'zgartirishingiz mumkin, shuning uchun qiymatni butun kod o'rniga bir nuqtada o'zgartirish osonroq bo'ladi.

Keyingi qiladigan ishimiz trigger () funktsiyasini yozishdir, u ishga tushganda buni bajaradi. Men faqat kodli rasmni qo'shaman. Siz bilishingiz kerak bo'lgan narsa shundaki, biz birinchi navbatda FOCUS_PIN -ni HIGH -da ma'lum vaqt ushlab turamiz, chunki biz kamera ko'rsatayotgan mavzuga e'tibor qaratishini kutishimiz kerak, keyin esa bir lahzaga (FOCUS_PIN hali ham yuqori)) rasm olish uchun SHUTTER_PIN kodini HIGH ga qo'ying.

Men fokusni o'tkazib yuborish qobiliyatini ham qo'shib qo'ydim, chunki agar biz vaqt o'tishi bilan kameradan masofani o'zgartirmagan narsaning timelapsini suratga olsak, bunga hojat qolmaydi.

5 -qadam: sinflar oralig'i {};

Image
Image
Arduino orqali intervalni manipulyatsiya qilish
Arduino orqali intervalni manipulyatsiya qilish

Endi biz kamerani ishga tushirganimizdan so'ng, biz uni intervalli o'lchagichga aylantirishimiz kerak, bu esa ikkita tortishish orasidagi vaqtni boshqarish funktsiyasini qo'shadi. Shunday qilib, biz nima qilayotganimizni tasvirini olamiz, bu erda biz xohlagan funktsiyani namoyish qilish uchun ibtidoiy kod:

void loop () {

kechikish (interval); tetik (); }

Men bu intervalni 5 soniyadan 20-30 daqiqagacha o'zgartira olmoqchiman. Va bu erda muammo, agar men uni 5s dan 16s gacha o'zgartirmoqchi bo'lsam yoki ular orasidagi biror narsani o'zgartirsam, men har bir so'rov uchun intervalni ko'paytirish uchun 1 soniya o'sishidan foydalanaman, interval 1s ga oshadi. Bu ajoyib, lekin agar men 5 soniyadan 5 minutgacha borishni xohlasam nima bo'ladi? Menga 295 ta so'rov kerak edi, shuning uchun men aniq qiymatni kattaroq narsaga oshirishim kerak va o'sish oralig'ining aniq qiymatini (chegarasini) o'zgartirish kerakligini aniqlab olishim kerak. Men buni amalga oshirdim:

5s-60s: 1s o'sish; 60s-300s: 10 soniya ortishi; 300s-3600s: 60-yillardagi o'sish;

lekin men bu sinfni sozlanishi uchun yozdim, shunda siz o'zingizning chegaralaringiz va o'sishlaringizni belgilashingiz mumkin (hamma narsa.h faylida yozilgan, shuning uchun qaysi qiymatlarni o'zgartirish kerakligini bilishingiz mumkin).

Men bergan intervalni manipulyatsiya qilish misoli, albatta, kompyuterda qilingan, endi biz uni Arduino -ga ko'chirishimiz kerak. Bu butun sinf, Interval, bizning sinfimiz/funktsiyalarimiz deklaratsiyalari va ta'riflarini saqlash uchun ishlatiladigan bitta nomli faylga joylashtirilgan (aslida emas, lekin bu misolda buni hech qanday zarar etkazmasdan qilish mumkin). Bu sarlavha faylini arduino kodimiz bilan tanishtirish uchun biz "#include" Interval.h "" dan foydalanamiz (fayllar bitta katalogda bo'lishi kerak), bu bizning asosiy kodimizda sarlavha faylida belgilangan funktsiyalarni ishlatishimiz mumkinligiga ishonch hosil qiladi.

6 -qadam: Arduino orqali intervalni o'zgartirish

Image
Image
Arduino orqali intervalni manipulyatsiya qilish
Arduino orqali intervalni manipulyatsiya qilish
Arduino orqali intervalni manipulyatsiya qilish
Arduino orqali intervalni manipulyatsiya qilish

Endi biz intervalning qiymatini o'zgartira olamiz, uni ko'paytiramiz yoki kamaytiramiz. Bu ikkita narsa, shuning uchun biz ikkita tugma bilan boshqariladigan ikkita raqamli signaldan foydalanamiz. Biz tugmalarga tayinlangan raqamli pinlardagi qiymatlarni qayta -qayta o'qiymiz va bu qiymatlarni checkButtons (int, int) funktsiyasiga ajratamiz; "yuqoriga" tugmasi bosilsa, intervalni oshiradi va "pastga" tugmasi bo'lsa, intervalni kamaytiradi. Bundan tashqari, agar ikkala tugma ham bosilsa, u o'zgarmaydigan fokus qiymatini o'zgartiradi, u tetiklanayotganda diqqatni jamlash yoki qilmaslikni boshqaradi.

Kodning bir qismi ((millis () - prevBtnPress)> = debounceTime) o'chirish uchun ishlatiladi. Men uni qanday yozgan bo'lsam, tugmani birinchi bosilishini btnPressed boolean o'zgaruvchisida ro'yxatdan o'tkazaman va sodir bo'lgan vaqtni eslayman. Men ma'lum bir vaqtni kutaman (debounceTime) va agar tugma hali ham bosilsa, men javob beraman. Bu, shuningdek, tugmani boshqa bosish o'rtasida "pauza" qiladi, shuning uchun hech qaerda bo'lmagan bir nechta bosishni oldini oladi.

Va nihoyat, bilan:

if ((millis () - prevTrigger) / 1000> = interval.getVal ()) {

prevTrigger = millis (); tetik (); }

biz birinchi navbatda oxirgi ishga tushirish (prevTrigger) va joriy vaqt (millis ()) orasidagi vaqt miqdori (hamma narsa 1000 ga bo'linadi, chunki u millisekundlarda va interval sekundlarda) intervalga teng yoki katta ekanligini tekshiramiz. Biz xohlaymiz va agar shunday bo'lsa, biz hozirgi vaqtni oxirgi marta kamerani ishga tushirganimizdek eslaymiz va keyin uni ishga tushiramiz.

Bu to'liqlik bilan biz asosan intervalli o'lchagichni yaratdik, lekin biz hali tugamaganmiz. Biz hali ham intervalometrning qiymatini ko'rmayapmiz. U faqat ketma -ket monitorda ko'rsatiladi va biz har doim kompyuter yonida bo'lamiz, shuning uchun biz uni o'zgartirganda intervalni ko'rsatadigan narsani amalga oshiramiz.

7 -qadam: intervalni ko'rsatish

Image
Image
Intervalni ko'rsatish
Intervalni ko'rsatish
Intervalni ko'rsatish
Intervalni ko'rsatish
Intervalni ko'rsatish
Intervalni ko'rsatish

Bu erda biz displey bilan tanishamiz. Men TM1637 tomonidan boshqariladigan 4 ta raqamli moduldan foydalandim, chunki uni faqat vaqtni ko'rsatish uchun ishlatishim kerak, boshqa hech narsa yo'q. Arduino uchun yaratilgan ushbu modullardan foydalanishning eng oson yo'li - ular uchun oldindan tayyorlangan kutubxonalardan foydalanish. Arduino saytida TM1673 chipini tavsiflovchi sahifa va kutubxonaga havola mavjud. Men bu kutubxonani yukladim va bu kutubxonalarni Arduino IDE bilan tanishtirishning ikkita usuli bor:

  1. Arduino dasturiy ta'minotidan Sketch> Kutubxonani qo'shish> ZIP kutubxonasini qo'shish -ga o'ting va siz yuklagan.zip faylini toping.
  2. siz Arduino qo'li bilan bajaradigan ishni qilishingiz mumkin va kutubxonani Arduino kutubxonalari saqlanadigan papkada Windows -da ochishingiz mumkin: C: / Users / Username / Documents / Arduino / libraries \.

Kutubxonani kiritganingizdan so'ng, siz "ReadMe" faylini o'qishingiz kerak, unda siz turli funktsiyalar bajaradigan ishlar haqida qisqacha ma'lumot topasiz. Ba'zan bu etarli emas, shuning uchun siz biroz chuqurroq borib, sarlavha fayllarini o'rganishni xohlaysiz, unda siz funktsiyalar qanday bajarilishini va ular kirish argumentlari sifatida nimani talab qilishini ko'rishingiz mumkin. Va, albatta, kutubxonaning nimalarga qodirligini his qilishning eng yaxshi usuli, odatda Arduino dasturidan Fayl> Misollar> LibraryName> ExampleName orqali ishga tushiriladigan misolni taklif qiladi. Bu kutubxonada sizning displeyingiz to'g'ri ishlayotganini tekshirish uchun ishga tushirishni tavsiya etadigan bitta misol keltirilgan va men sizni misolda ko'rsatilgan kodni o'zgartirishga va har bir funksiya nima qilishini va displey qanday javob berishini o'zingiz ko'rishingizni tavsiya qilaman. u Men shunday qildim va men buni aniqladim:

har bir raqam uchun 8 bitli 4 ta imzosiz tamsayı ishlatiladi (0bB7, B6, B5, B4, B3, B2, B1, B0). Va B6-B0 bitlarining har biri ma'lum bir raqamning har bir segmenti uchun ishlatiladi va agar bit 1 bo'lsa, u tomonidan boshqariladigan segment yonadi. Bu butun sonlar ma'lumotlar deb nomlangan massivda saqlanadi. Bu bitlarni displeyga o'rnatish display.setSegments (ma'lumotlar) orqali amalga oshiriladi; yoki siz tabiiy ravishda har qanday raqamlarga kirishingiz va ularni qo'lda o'rnatishingiz mumkin (ma'lumotlar [0] = 0b01111001) yoki siz encodeDigit (int) funktsiyasidan foydalanishingiz mumkin; va siz yuborgan raqamni bitlarga aylantiring (ma'lumotlar [0] = display.encodeDigit (3));. Bit B7 yo'g'on ichakni faollashtirish uchun faqat ikkinchi raqam yoki ma'lumotlar [1] bilan ishlatiladi.

Men INTERVAL sinfidagi jodugar funktsiyalarni yozganim uchun, men intervalning ma'lum raqamlarini M1M0: S1S0 shaklida olishim mumkin, bu erda M daqiqa va S soniyalarda turadi, men encodeDigitFunction (int) dan foydalanishim tabiiydir; intervalni shunday ko'rsatish uchun:

displayInterval () {

ma'lumotlar [0] = display.encodeDigit (interval.getM1 ()); ma'lumotlar [1] = 0x80 | display.encodeDigit (interval.getM0 ()); ma'lumotlar [2] = display.encodeDigit (interval.getS1 ()); ma'lumotlar [3] = display.encodeDigit (interval.getS0 ()); display.setSegments (ma'lumotlar); }

Endi, agar men intervalni displeyda ko'rsatishim kerak bo'lsa, displayInterval () funktsiyasini chaqira olaman.

*Ma'lumotlardagi "0x80 |…" ga e'tibor bering [1]. Ma'lumotlarning [1] B7 biti har doim 1 bo'lishini ta'minlash uchun ishlatiladi, shuning uchun yo'g'on ichak yonadi.

Ekran haqida oxirgi narsa, quvvat sarfi. Bu katta ahamiyatga ega bo'lmasligi mumkin, chunki biz uni uzoq vaqt ushlab turmaymiz, lekin agar siz batareyani yanada tejamkor qilishni xohlasangiz, displeyning yorqinligini pasaytirish haqida o'ylang, chunki u maksimal nashrida 3 barobar ko'proq oqim oladi. eng pastidan ko'ra.

8 -qadam: Hammasini bir joyga to'plash

Hammasini bir joyga to'plash
Hammasini bir joyga to'plash

Biz kamerani qanday ishga tushirishni, intervalni qanday boshqarishni va shu intervalni displeyda qanday ko'rsatishni bilamiz. Endi biz bularning barchasini birlashtirishimiz kerak. Albatta, loop () funktsiyasidan boshlaymiz. Biz doimiy ravishda tugmalar bosilishini tekshirib turamiz va shunga mos ravishda checkButtons (int, int) bilan javob beramiz va mos ravishda intervalni o'zgartiramiz va o'zgartirilgan intervalni ko'rsatamiz. Bundan tashqari, loop () da biz oxirgi tetiklash yoki tugmani bosishdan etarli vaqt o'tganligini tekshirib turamiz va agar kerak bo'lsa trigger () funktsiyasini chaqiramiz. Kam quvvat iste'moli uchun biz bir muncha vaqt o'tgach displeyni o'chirib qo'yamiz.

Men ikkita rangli LEDni (Qizil va Yashil, umumiy katod) qo'shdim, u tetik () bo'lsa, yashil yonadi va agar fokus yoqilgan bo'lsa, u displey bilan birga qizil rangda yonadi va diqqat markazida bo'lsa o'chmaydi. o'chirilgan

Bundan tashqari, biz kichikroq Arduino, Pro Mini -ga o'tamiz.

9 -qadam: Oxirgi narsani qo'shing

Oxirgi narsani qo'shish
Oxirgi narsani qo'shish
Oxirgi narsani qo'shish
Oxirgi narsani qo'shish
Oxirgi narsani qo'shish
Oxirgi narsani qo'shish

Hozircha.. biz faqat intervalometrni yaratdik. Foydali, lekin biz yaxshiroq qila olamiz.

Mana men nimani o'ylardim: Intervalometr, biz tashqi kalitni/sensorni biriktirganimizdan tashqari, interval o'lchagichni to'xtatadi va kalit/sensorning kirishiga javob beradi. Keling, uni sensor deb ataymiz, bu ulangan sensor bo'lishi shart emas, lekin men buni shunday deb atayman.

Birinchidan, sensorni ulaganimizni qanday aniqlash mumkin?

Biz foydalanadigan/ishlab chiqaradigan datchiklar uchun ularni arduino bilan bog'laydigan uchta sim kerak bo'ladi (Vcc, GND, Signal). Bu shuni anglatadiki, biz sensor uchun kirish uyasi sifatida 3,5 mm audio uyadan foydalanishimiz mumkin. Va bu bizning muammomizni qanday hal qiladi? Xo'sh, "kaliti bo'lgan" 3,5 mm raz'emning turlari bor, ular pinli ulagichga ulanadi, agar ularda erkak ulagich bo'lmasa va ular ulagich mavjud bo'lganda uzilib qoladi. Bu shuni anglatadiki, bizda sensorlar borligi haqida ma'lumot bor. Men rasmda ko'rsatilgandek pastga tushadigan rezistorni ishlataman (raqamli pin sensorsiz YUQORI o'qiladi va sensori ulangan holda LOW past bo'ladi) yoki siz raqamli pinni odatda ulagichning piniga ulashingiz mumkin. erga ulangan va bu raqamli pinni INPUT_PULLUP deb aniqlagan holda, u har qanday usulda ishlaydi. Shunday qilib, endi biz o'z kodimizni o'zgartirishimiz kerak, shuning uchun u biz yozgan hamma narsani qiladi, agar sensor bo'lmasa yoki raqamli pin tekshiruvi yuqori bo'lsa. Men buni ham tuzatdim, shuning uchun bu rejimda foydasiz bo'lgan interval o'rniga displeyda "SENS" ko'rsatiladi, lekin fokus biz uchun hali ham dolzarbdir, biz ikkala tugmani bosish bilan fokusni almashtirish funktsiyasini saqlab qolamiz. qizil LED orqali fokus holatini ko'rsatish.

Sensor aslida nima qiladi?

Kamerani ishga tushirmoqchi bo'lganimizda, signal signal piniga 5V ni qo'yish kifoya. Bu shuni anglatadiki, biz Arduino -ning boshqa raqamli piniga ehtiyoj sezamiz va u HIGH holatida ro'yxatdan o'tganda, trigger () funktsiyasini chaqirish kifoya qiladi va kamera rasmga tushadi. Eng oson misol, va biz bu ishlayaptimi yoki yo'qligini tekshirish uchun ishlatamiz-bu tortishish qarshiligi bo'lgan oddiy tugma. Sensorning Vcc va Signal pimi orasidagi tugmachani ulang va Signal pimi va GND o'rtasida qarshilik qo'shing, shunda tugma bosilmaganda signal pin GNDda bo'ladi, chunki rezistordan oqim o'tmaydi va qachon tugma bosiladi, biz signal pinini to'g'ridan -to'g'ri HIGH -ga qo'yamiz va Arduino buni o'qiydi va kamerani ishga tushiradi.

Shu bilan biz kodni yozishni yakunladik.

*Men ishlatgan audio prizlar bilan bog'liq ba'zi muammolarni qayd etmoqchiman. Erkak ulagichni ulagichga qo'yayotganda, GND va boshqa ikkita pinning bittasi ba'zan qisqa bo'lardi. Bu bir zumda va faqat ulagichni qo'yish paytida sodir bo'ladi, lekin Arduino qisqa vaqtni ro'yxatdan o'tkazishi uchun etarli, shuning uchun Arduino qayta ishga tushadi. Bu tez -tez sodir bo'lmaydi, lekin baribir xavf tug'dirishi mumkin va Arduino -ni yo'q qilish ehtimoli bor, shuning uchun men ishlatgan ulagichlardan qoching.

10 -qadam: Xabarni o'z ichiga oladi

Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi
Xabarni o'z ichiga oladi

Rasmlardan ko'rishingiz mumkinki, non taxtasi buzilib ketayapti va biz tugatdik, shuning uchun biz hamma narsani perford/tenglikka o'tkazishimiz kerak. Men PCBga bordim, chunki men bularning ko'pini yarataman deb o'ylayman, shuning uchun ularni osonlik bilan ko'paytirishim mumkin.

Men PCBni loyihalashda Eagle -dan foydalandim va men ishlatgan barcha qismlar uchun dizaynlarni topdim. Dizaynimda bitta kichik narsa bor, men buni qilmagan bo'lardim va bu displeyning Vcc uchun simli yostig'i. Men buni juda kech ko'rdim va men ilgari ishlab chiqargan narsamni buzishni xohlamadim va sim yostiqchalarini qo'shishning dangasa usuliga o'tdim va keyinchalik mis izlari o'rniga bu ulanishlarga sim qo'shishga to'g'ri keldi, agar siz meniki konstruktsiyasidan foydalansangiz..

Aniq sabablarga ko'ra, Arduino taxtasi va displey PCBga to'g'ridan -to'g'ri PCBga lehimlanmasdan, ayol pinlari orqali ulanadi. Shunday qilib, rezistorlar, tranzistorlar va hatto audio raz'em kabi boshqa komponentlar uchun displey ostida boshqa komponentlar uchun ko'p joy bo'ladi.

Men mikro tugmachalarni qo'ydim, ular dizayni bo'yicha to'g'ridan -to'g'ri lehimlanishi kerak edi, lekin siz shuningdek, ayol pinli sarlavhalar uchun teshiklarni ishlatishingiz va tugmalarni sim bilan ulashingiz mumkin, agar ularni PCBga emas, balki korpusga o'rnatishni xohlasangiz.

Shuningdek, biz kameraga ulanadigan kabelni ulash uchun boshqa ayol audio raz'emni qo'yamiz. Shunday qilib, taxta yanada ko'p qirrali bo'ladi, shuning uchun biz boshqa kameralarga boshqa ulagichlar bilan ulanish imkoniyatiga ega bo'lamiz.

11 -qadam: Sens0rs

Image
Image
Sens0rs
Sens0rs

Sensorni amalga oshirish usullarini ko'rib chiqaylik.

Sensor besleme zo'riqishida 5V bo'ladi va biz kamerani ishga tushirishni xohlaganimizda, uning signal pimida raqamli YUQSKni ta'minlay olamiz. Aqlimga kelgan birinchi narsa - bu harakat sensori, aniqrog'i PIR. Arduino uchun sotiladigan modullar bor, ularda sensori bor va biz xohlagan narsani bajaradi. Ular 5V quvvatga ega va chiqish piniga ega, ular ishga tushirilganda 5V qo'yishadi, biz faqat uning pinlarini 3,5 mm audio uyaga ulashimiz kerak va biz uni to'g'ridan -to'g'ri taxtaga ulashimiz mumkin. Shuni e'tiborga olish kerakki, bu sensorni qizdirish va to'g'ri ishlashini boshlash uchun vaqt kerak, shuning uchun uni rozetkaga ulagandan so'ng, uning to'g'ri ishlashini kutmang, biroz vaqt bering, keyin o'rnating va tirik nima bo'lsa ham unga kiradi. diapazon kamerani ishga tushiradi.

Biz allaqachon ishlab chiqarilgan Arduino sensorli panellari yo'nalishi haqida o'ylayotganimizdan so'ng, yana bir ovoz keladi. Bu taxtalar odatda shunday qilinganki, ular oladigan tovushning analog qiymatini chiqaradigan bitta pinli, ikkinchisi - raqamli, mantiqiy YUQORI chiqadigan tovush ma'lum bir darajadan oshib ketsa. Biz bu darajani shunday sozlashimiz mumkinki, sensor ovozimizga e'tibor bermasin, lekin qarsak chaladi. Shunday qilib, har safar qarsak chalganda kamerani ishga tushirasiz.

12 -qadam: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

Menimcha, bu quvvatni tashqi tomondan emas, balki quvvat banki bilan boshqarishning eng oson yo'li. Biz telefonni yoki boshqa narsalarni zaryadlash funksiyasini saqlab qolamiz va boshqaruv panelidagi oqimni kalit orqali boshqaramiz. Biz GND va Vcc (5V) va lehim simlari bo'lgan quvvat bankining elektron kartasidagi chiqish USB ulagichining pinlarini to'g'ridan -to'g'ri ularga va u erdan bizning taxtamizga joylashtiramiz.

13 -qadam: Qoplama.. Nimadir

Qoplama.. Nimadir
Qoplama.. Nimadir
Qoplama.. Nimadir
Qoplama.. Nimadir
Qoplama.. Nimadir
Qoplama.. Nimadir

Men, albatta, bu bilan kurashdim. Qachonki men mavjud PCBni joylashtirmoqchi bo'lgan qutiga o'tirsam, hamma narsani xohlaganimga moslashtirishning yaxshi usuli yo'qligini tushundim va keyin bu safar optokupllar yordamida yangi tenglikni yaratishga qaror qildim. Men PCB -ni men ko'rmoqchi bo'lgan/tegib turadigan ba'zi komponentlar uchun teshik ochadigan tomonning ostiga qo'yishni xohlardim. Bu ishlashi uchun men displeyni va Arduino -ni to'g'ridan -to'g'ri taxtaga, rozetkasiz yoki sarlavhasiz lehimlashim kerak edi va birinchi muammo shu erda. Hamma narsa ishlayotganini sinab ko'rmagunimcha, men uni lehimlashga tayyor emas edim, chunki men hech narsani tekshira olmadim, chunki men uni lehimlay olmadim va hokazo. buni qilma. Muammo, sumkada teshiklar qilish. O'ylaymanki, men noto'g'ri o'lchaganman, chunki korpusdagi teshiklarning hech biri tenglikni komponentlariga to'g'ri kelmagan va men ularni kattalashtirishga majbur bo'ldim va tenglikni tugmalari juda baland edi va men taxtani joyiga qo'yganimda ular har doim bosilib turardi. aaand, chunki men yon tomonda audio raz'emlarni xohlaganim uchun, avval teshiklarni o'rnatish uchun teshiklarni kattalashtirishim kerak edi, keyin displey va tugmalar o'tishi uchun taxtani pastga tushirishim kerak edi … natija dahshatli.

Men qandaydir dahshatli teshiklarni dahshatli qildim, uning tepasini ingichka karton bilan yopishtirib, uning tarkibiy qismlari uchun yanada oqilona teshiklarni kesib tashladim va menimcha, bu dahshatli, lekin nazarimda osonroq.

Hukm, men sizga buni to'g'ridan -to'g'ri PCBga emas, balki korpusga o'rnatiladigan komponentlarni sotib olish orqali qilishni taklif qilaman. Shunday qilib, siz komponentlarni joylashtirishda ko'proq erkinlikka ega bo'lasiz va xato qilish uchun joy kamroq bo'ladi.

14 -qadam: Fin

Image
Image
Fin
Fin

Men tugadim, lekin men boshqacha qilgan bo'lardim:

Yaxshi sifatli 3,5 mm audio jaklardan foydalaning. Men ishlatganlar jakni ulash yoki chiqarib olishda terminallarni qisqartirishga moyildirlar, natijada ta'minot qisqaradi, natijada Arduino qayta tiklanadi yoki u faqat soxta tetiklarni ishlab chiqaradi. Men buni avvalgi bosqichda aytganman, lekin yana aytaman.. Arduino platasini sarlavhasiz/lehimsiz lehimlamang, bu har qanday muammolarni bartaraf etishni yoki yangi kodni yuklashni va boshqalarni ancha qiyinlashtiradi. Men ham o'ylaymanki, bu narsa yoqilganligini ko'rsatuvchi signalga ega bo'lish foydali bo'lardi, chunki displey o'chirilganidan buyon tugmachani bosmasdan tez -tez ayta olmayman. Va oxirgi narsa, pauza funktsiyasi. Menimcha, bu, masalan, PIR sensorini ulashda, chunki uni qizdirish uchun vaqt kerak, yoki uni harakatga keltirganda, siz uni ishga tushirishni xohlamaysiz, shuning uchun siz hamma narsani to'xtatib qo'yishingiz mumkin, lekin siz ham burishingiz mumkin. kameradan shunday.. nima bo'lishidan qat'i nazar.

Yana bir yaxshi narsa - bu tripodda Velcro, chunki u u erda ishlatilishi mumkin.

Sharhlarda ushbu loyiha haqida biror narsa so'rashdan qo'rqmang, agar siz uni qurgan bo'lsangiz va bu siz uchun qanday bo'lganini bilishni istardim.

Tavsiya: