Pimp My Cam: 14 Addım (Şəkillərlə birlikdə)
Pimp My Cam: 14 Addım (Şəkillərlə birlikdə)
Anonim

Bu layihə haradan gəlir.

Bir müddət əvvəl bəzi zaman planlarını çəkməyi düşündüm. "Necə?" Öz -özümə soruşdum? İlk cavab "Yaxşı.. sadəcə bir şeyi lentə alırsan və sürətləndirirsən, bu da budur" oldu. Ancaq həqiqətən bu qədər sadədirmi? Birincisi, bunun üçün DSLR -dən istifadə etmək istəyirəm və Nikon D3100 -də video çəkmək üçün 10 dəqiqə vaxt məhdudiyyəti var. İkincisi, videonun çəkilişində heç bir məhdudiyyəti olmayan bir kameram olsa belə, 12 saatlıq uzun bir geri çəkilmə etmək istəsəm nə olar? 12 saat uzunluğunda 1080p video çəkirəm. Batareyanın bu qədər uzun müddət dayanacağına şübhə edirəm və çox praktik deyil, elə deyilmi? Yaxşı, "video ideyasının çəkilişi" keçdi. Yaxşı, sonra şəkillər var. Kamerada müəyyən bir zaman aralığında bir şəkil çəkdirmək və yüzlərlə şəkil çəkməklə proqramlaşdıraraq video çəkirəm..?

Yaxşı bir fikir kimi göründü, buna görə də bir cəhd etməyə qərar verdim. Beləliklə, bir müddət daxil edə biləcəyim bir cihaz etmək istəyimlə sona çatdım və bu müddətə əsaslanaraq kameramı daim işə salacaq. Və hazır olduğumuz zaman, niyə hərəkət tetikleyicisi və sair kimi başqa şeylər əlavə etməyək?

Addım 1: Amma.. Necə?

NECƏ? cavabı olmayan növbəti sualımızdır. Zamanlama, tetikleme, sensorlar və bu kimi şeylər səbəbindən ağla gələn ilk şeyin əlbəttə bir Arduino olması təəccüblü olmayacaq. Tamam, amma yenə də kameramızdakı deklanşörü necə işə salmağı öyrənməliyik. Hm.. servo isti bədən kamerasına yapışdırılıb? Qətiyyən yox, bunun səssiz olmasını və enerjiyə qənaət etməsini istəyirik. Enerji səmərəli - niyə? Portativ etmək və içərisinə bir batareya taxmaq istədiyim üçün hər dəfə elektrik fişinin yanında olmayacağam. O zaman onu necə tətikləyək.. əslində olduqca sadədir.

Nikon, pult və digər aksesuarlara ehtiyacınız olacağını əvvəlcədən bilirdi və dedilər: "Tamam, hər şeyi onlara verəcəyik, ancaq bu aksesuarlardan daha çox pul qazana biləcəyimiz üçün xüsusi bir liman quracağıq" dedi Nikon.. Bu liman (mənim vəziyyətimdə) MC-DC2 adlanır və əlimizi tutmağın ən ucuz yolu eBay-də 2-3 dollara uzaqdan bir deklanşör almaq və sadəcə kabeldən istifadə etməkdir.

*Canon kimi bəzi digər kameralarda, eyni istifadə üçün hazırlanmış sadə 3,5 mm qulaqlıq yuvası var, belə ki köhnə dinamiklərdən/qulaqlıqlardan bir kabel istifadə edə bilərsiniz.

Addım 2: Kameranı necə işə salmağı öyrənin

Hər halda, burada razılaşma var, limanın maraqlandığımız 3 əlaqə (Zəmin, Fokus və Kepenk) olacaq və yeni aldığınız uzaqdan çəkiliş kabelinizin ucunda yeni məhv etdiyiniz olacaq. Bu üç əlaqə bizim üçün önəmlidir, çünki Zəmini qısaltsaq və Fokuslasaq, kamera fokus düyməsini basdığınız kimi fokuslanacaq və bu əlaqə davam edərkən, Zəmini və Deklanşörü qısalda bilərsiniz və kamera bir şəkil çəkəcək. sanki kameradakı deklanşöre basmısınız.

Hansı telin olduğunu müəyyən etmək üçün kabelin ucundakı canlı telləri qısaldaraq sınaya bilərsiniz. Bunu etdikdən sonra, daha asan tanımaq üçün onları belə rəngləndirəcəyik:

Torpaq = SİYAH; Fokus = BEYAZ; Panjur = QIRMIZI.

Yaxşı, indi Arduinoya bunu bizim üçün etməyi öyrətməliyik.

Addım 3: Tetikləmə yolları

Arduinoya xarici dünyaya göndərməsini söyləyə biləcəyimiz ən sadə şey rəqəmsal çıxış siqnalıdır. Bu siqnal ya YÜKSƏK (məntiqi '1') və ya LOW (məntiqi '0') ola bilər, buna görə də "rəqəmsal" adı və ya əsas mənasına çevrildikdə: məntiqi YÜKS üçün 5V, məntiqi DÜŞÜK üçün 0V ola bilər.

Bu rəqəmsal siqnallarla nə etməliyik? Onları sadəcə kameraya bağlaya və kameranın nə istədiyimizi bilməsini gözləyə bilmərik. Gördüyümüz kimi, kameranın reaksiya verməsi üçün əlaqələri qısaltmalıyıq, buna görə də göndərdiyimiz bu elektrik siqnalından asılı olaraq terminallarını qısalda bilən bəzi komponentləri idarə etmək üçün Arduinonun rəqəmsal siqnallarından istifadə etməliyik.. *Təsvir etdiyim kimi, "Ah, Relays!" amma yox yox. Relay işi edərdi, amma yarı keçiricilərin qara sehrindən asanlıqla istifadə edə biləcəyimiz kiçik cərəyanlarla məşğul oluruq.

Çalışacağım ilk komponent optokuplordur. Bunun üçün ən çox tətbiq etdiklərini gördüm və bəlkə də ən yaxşı həlldir. Optocoupler, giriş dövrəsi ondan tamamilə təcrid edildikdə, çıxış dövrəsini idarə etdiyiniz bir elektrik komponentidir. Bu məlumatı işıqla ötürməklə əldə edilir, giriş dövrəsi bir LED yandırır və buna görə də çıxış açarlarındakı fototransistor.

Beləliklə, optocoupler'ı bu şəkildə istifadə edəcəyik: Arduino -ya rəqəmsal pinlər varsa, rəqəmsal bir YÜK göndərməsini söyləyirik, bu siqnal praktiki olaraq 5V -dir, bu da optokuplun içərisindəki LED -i idarə edəcək və içindəki fototransistor "qısalacaq" bu işığı algıladığında çıxış terminallarıdır və əksinə, Arduino vasitəsilə rəqəmsal LOW göndərdiyimiz zaman LEDdən işıq olmadığı üçün terminallarını "ayıracaq".

Praktiki olaraq, bu o deməkdir: Arduinonun rəqəmsal pinlərindən biri optokuplörün ANODE pininə, Arduino -nun GND -si CATHODE -a, kameranın GND -si EMITTER -ə və FOCUS -a (və ya SHUTTER) KOLLEKTÖR -ə bağlıdır. Bu pinləri özünüzdə tapmaq üçün istifadə etdiyiniz optokuplun məlumat vərəqinə baxın. 4N35 istifadə edirəm, buna görə optokuplun içərisində baş verənlərlə maraqlanmırsınızsa, mənim sxemimi kor -koranə izləyə bilərsiniz. Deməyə ehtiyac yoxdur, bunlardan ikisinə ehtiyacımız olacaq, çünki həm kameranın FOCUS, həm də Shutter -i idarə etməliyik.

Çıxışda bir fototransistorla necə işlədiyini gördüyümüz üçün niyə bunu yalnız sadə bir NPN tranzistoru ilə sınamırıq. Bu dəfə rəqəmsal siqnalı birbaşa (bir rezistor boyunca) tranzistorun bazasına gətirəcəyik və həm kameranın, həm də Arduino -nun GND -ni emitentə və kameranın fokus/deklanşörünü tranzistor kollektoruna bağlayacağıq.

Yenə iki siqnala nəzarət etdiyimiz üçün bunlardan ikisinə ehtiyacımız olacaq. BC547B istifadə edirəm və bunun üçün əsasən hər hansı bir NPN istifadə edə bilərsiniz, çünki nəzarət etdiyimiz cərəyan tək bir milliampdır.

Bu komponentlərin hər ikisi işləyəcək, amma daha təhlükəsiz olduğundan optocoupler seçmək daha yaxşı fikirdir. Transistorları yalnız nə etdiyinizi bildiyiniz halda seçin.

Addım 4: Tetiklemenin Kodunu Yazın

Daha əvvəl dediyimiz kimi, siqnal vermək üçün Arduinonun rəqəmsal sancaqlarından istifadə edəcəyik. Arduino bunları həm məlumatları oxumaq, həm də ona yazmaq üçün istifadə edə bilər, buna görə də etmək üçün lazım olan ilk şey setup () funksiyasında Arduino -nun iki rəqəmsal pinindən istifadə etmək üçün istifadə edəcəyik:

pinMode (FOCUS_PIN, ÇIXIŞ);

pinMode (SHUTTER_PIN, ÇIXIŞ);

burada FOCUS_PIN və SHUTTER_PIN ya "#define NAME value" ilə təyin oluna bilər və ya quraşdırma () funksiyasından əvvəl int olaraq təyin edilə bilər, çünki pin dəyişdirə bilərsiniz, buna görə də dəyəri bütün kodu deyil, yalnız bir nöqtədə dəyişdirmək daha asandır.

Növbəti edəcəyimiz şey, işlədikdə bunu edəcək bir trigger () funksiyası yazmaqdır. Yalnız kodu olan bir şəkil əlavə edəcəyəm. Bilməyiniz lazım olan şey, əvvəlcə FOCUS_PIN kodunu müəyyən bir müddət YÜKSƏ saxlayırıq, çünki kameranın göstərdiyimiz mövzuya fokuslanmasını gözləmək lazımdır və sonra bir anlıq (FOCUS_PIN hələ də YÜKSƏK olduğu halda)) şəkil çəkmək üçün SHUTTER_PIN kodunu YÜKSƏ qoyun.

Vaxt keçdikcə kameradan olan məsafəsini dəyişməyən bir şeyin timelapsını çəksək buna ehtiyac olmayacaq, çünki fokuslanmanı atlama qabiliyyətini də daxil etdim.

Addım 5: Sinif Aralığı {};

İndi kameranı iki çəkiliş arasındakı vaxt aralığını manipulyasiya etmə funksiyasını əlavə edərək aralıqölçən halına gətirməliyik. İstədiyimiz funksiyanı nümayiş etdirmək üçün burada etdiyimiz işin şəklini əldə edə bilərsiniz:

boşluq döngəsi () {

gecikmə (interval); tətik (); }

Bu aralığı 5 saniyədən 20-30 dəqiqəyə qədər dəyişə bilmək istəyirəm. Və burada problem var, əgər onu 5s -dən 16s -ə dəyişmək istəsəm və ya aralarındakı hər şeyi 1s artımla istifadə edəcəmsə, hər bir aralığımda aralığın artırılması üçün interval 1s -də artacaq. Bu əladır, amma 5s -dən 5dq -ə getmək istəsəm nə olar? Mənə 1 saniyəlik artımlarla 295 istək verərdi, buna görə açıq -aydın artım dəyərini daha böyük bir şeyə yüksəltməliyəm və artımı hansı dəqiq interval dəyərində (eşik) dəyişdirəcəyimi təyin etməliyəm. Bunu həyata keçirdim:

5s-60s: 1s artım; 60s-300s: 10s artım; 300s-3600s: 60s artımı;

ancaq bu həddi öz həddlərinizi və artımlarınızı təyin edə biləcəyiniz üçün yazdım (hər şey.h faylında şərh olunur ki, hansı dəyərləri dəyişdirəcəyinizi biləsiniz).

Aralığın manipulyasiyası ilə bağlı verdiyim nümunə açıq şəkildə bir kompüterdə edilir, indi onu Arduinoya köçürməliyik. Bu bütün sinif, Interval, sinif/funksiyalarımızın bəyannamələrini və təriflərini (əslində deyil, ancaq bu nümunədə heç bir zərər vermədən edilə bilər) saxlamaq üçün istifadə olunan bir başlıq faylının içərisindədir. Bu başlıq faylını arduino kodumuza təqdim etmək üçün "#include" Interval.h "" istifadə edirik (fayllar eyni qovluqda olmalıdır), bu da baş kodumuzda başlıq sənədində müəyyən edilmiş funksiyaları istifadə edə biləcəyimizə əmin olur.

Addım 6: Arduino vasitəsilə Aralıq Manipulyasiyası

İndi aralığın dəyərini dəyişdirmək, ya artırmaq, ya da azaltmaq istəyirik. Bu iki şeydir, buna görə iki düymə ilə idarə ediləcək iki rəqəmsal siqnaldan istifadə edəcəyik. Düymələrə təyin etdiyimiz rəqəmsal pinlərdəki dəyərləri dəfələrlə oxuyacağıq və bu dəyərləri checkButtons (int, int) funksiyasına ayıracağıq; "yuxarı" düyməsinə basıldığı zaman aralığı artıracaq və "aşağı" düyməsi varsa aralığı azaldacaq. Ayrıca, hər iki düyməyə basıldıqda, tetiklerken fokuslanıb yoxlanılmayacağını idarə edən dəyişən fokusun dəyərini dəyişəcək.

Kodun bir hissəsi ((millis () - prevBtnPress)> = debounceTime) debunqdan çıxarmaq üçün istifadə olunur. Bunu necə yazdımsa, btnPressed boolean dəyişən ilə ilk düyməni basdırdığımı və baş vermə vaxtını xatırladığımı bildirirəm. Müəyyən bir müddət gözlədiyimdən (debounceTime) və düyməyə hələ də basılsa reaksiya verirəm. Düymənin hər digər basması arasında "fasilə" yaradır, belə ki, heç yerdə olmayan çoxsaylı basmalardan qaçınır.

Və nəhayət:

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

prevTrigger = milis (); tətik (); }

Əvvəlcə son tetikleme (prevTrigger) ilə cari vaxt (milis ()) arasındakı vaxtın miqdarının hər şeyin 1000 -ə bölündüyü üçün milisaniyədə olduğu və aralığın saniyələrdə olduğu) aralığa bərabər olub -olmadığını yoxlayırıq. İstəyirik və əgər belədirsə, kameranı sonuncu dəfə tətiklədiyimiz və sonra tətik etdiyimiz kimi indiki vaxtı xatırlayırıq.

Bu tamamlama ilə, əsasən bir intervalölçən hazırladıq, amma bitməkdən çox uzağıq. İntervalometrin dəyərini hələ də görmürük. Yalnız Serial Monitorda göstərilir və biz həmişə kompüterin yanında olmayacağıq, buna görə də dəyişdirdiyimiz zaman aralığımızı göstərəcək bir şey tətbiq edəcəyik.

Addım 7: Aralığın göstərilməsi

Ekranı təqdim etdiyimiz yer budur. TM1637 tərəfindən idarə olunan 4 rəqəmli moduldan istifadə etdim, çünki yalnız vaxt göstərmək üçün istifadə etməliyəm və başqa heç nə yoxdur. Arduino üçün hazırlanmış bu modullardan istifadə etməyin ən asan yolu, onlar üçün artıq hazırlanmış kitabxanalardan istifadə etməkdir. Arduino saytında TM1673 çipini təsvir edən bir səhifə və təklif olunan kitabxanaya bağlantı var. Bu kitabxananı yüklədim və bu kitabxanaları Arduino IDE ilə tanış etməyin iki yolu var:

  1. Arduino proqramından Sketch> Kitabxanaya daxil et> ZIP kitabxanası əlavə edin və yeni yüklədiyiniz.zip faylını tapın.
  2. Arduino -nun əllə etdiyini edə bilərsiniz və kitabxananı Windows -da Arduinonun kitabxanalarını saxladığı qovluqda açın: C: / İstifadəçilər / İstifadəçi adı / Sənədlər / Arduino / kitabxanaları \.

Kitabxanaya daxil olduqdan sonra müxtəlif funksiyaların nə etdiyinin xülasəsini tapacağınız "ReadMe" faylını oxumalısınız. Bəzən bu kifayət deyil, buna görə bir az daha dərinə getmək və funksiyaların necə tətbiq olunduğunu və giriş arqumentləri kimi tələb etdiklərini görə biləcəyiniz başlıq sənədlərini araşdırmaq istəyəcəksiniz. Və əlbəttə ki, kitabxananın nəyə qadir olduğunu hiss etməyin ən yaxşı yolu, ümumiyyətlə Arduino proqramından Fayl> Nümunələr> Kitabxana Adı> ExampleName vasitəsilə işlədə biləcəyiniz bir nümunə təqdim edir. Bu kitabxana, ekranınızın düzgün işlədiyini görmək üçün ekranınızda işləməyinizi tövsiyə etdiyim bir nümunə təqdim edir və nümunədə gördüyünüz kodu düzəltməyi və hər bir funksiyanın nə etdiyini və ekranın necə reaksiya verdiyini özünüz görməyi məsləhət görürəm. o. Mən bunu etdim və başa düşdüyüm budur:

hər rəqəm üçün 8 bitlik 4 işarəsiz tam ədəddən istifadə edir (0bB7, B6, B5, B4, B3, B2, B1, B0). Və B6-B0 bitlərinin hər biri müəyyən bir rəqəmin hər bir seqmenti üçün istifadə olunur və bit 1 olarsa, onun idarə etdiyi seqment yanır. Bu tam ədədlər data adlı bir massivdə saxlanılır. Bu bitlərin ekrana qoyulması display.setSegments (data); və ya təbii olaraq hər hansı bir rəqəmə daxil ola və ya əl ilə təyin edə bilərsiniz (data [0] = 0b01111001) və ya encodeDigit (int) funksiyasından istifadə edə bilərsiniz; və göndərdiyiniz rəqəmi bitlərə çevirin (data [0] = display.encodeDigit (3));. Bit B7, iki nöqtəni aktivləşdirmək üçün yalnız ikinci rəqəm və ya məlumatlar [1] tərəfindən istifadə olunur.

Intervalın müəyyən siniflərini M1M0 şəklində əldə edə biləcəyim INTERVAL sinif ifritə funksiyalarını yazdığım üçün, M dəqiqələr və S saniyələr üçün dayandığı S1S0, encodeDigitFunction (int) istifadə etməyim təbiidir; aralığı belə göstərmək üçün:

displayInterval () {

data [0] = display.encodeDigit (interval.getM1 ()); məlumatlar [1] = 0x80 | display.encodeDigit (interval.getM0 ()); data [2] = display.encodeDigit (interval.getS1 ()); data [3] = display.encodeDigit (interval.getS0 ()); display.setSegments (məlumatlar); }

İndi, Aralığı ekranda göstərməyim lazım olduğu vaxt, displayInterval () funksiyasına zəng edə bilərəm.

*Verilərdəki "0x80 |…" işarəsini [1] qeyd edin. Məlumatın [1] bit B7 -nin həmişə 1 olmasını təmin etmək üçün istifadə olunur, belə ki, iki nöqtə yanır.

Ekran haqqında son şey, enerji istehlakı. Uzun müddət davam etməyəcəyimiz üçün böyük əhəmiyyət kəsb edə bilməz, amma bu batareyanı daha da dostlaşdırmaq istəyirsinizsə, maksimum parlaqlığa 3 qat daha çox cərəyan çəkdiyi üçün ekranın parlaqlığını azaltmağı düşünün. ən aşağıdan daha çox.

Addım 8: Hamısını bir yerə yığın

Kameranı necə işə salacağımızı, aralığı necə idarə edəcəyimizi və eyni aralı bir ekranda necə göstərəcəyimizi bilirik. İndi bütün bunları bir araya gətirmək lazımdır. Əlbəttə ki, loop () funksiyasından başlayacağıq. Davamlı olaraq düymə basmalarını yoxlayacağıq və checkButtons (int, int) ilə reaksiya verəcəyik və buna uyğun olaraq aralığı dəyişdirəcəyik və dəyişdirilmiş aralığı göstərəcəyik. Döngədə () son tetiklemeden və ya düyməni basmaqdan kifayət qədər vaxt keçdiyini yoxlayacağıq və lazım gələrsə trigger () funksiyasını çağıracağıq. Daha az enerji istehlakı üçün bir müddət sonra ekranı söndürəcəyik.

İki rəngli bir LED əlavə etdim (Qırmızı və Yaşıl, ümumi katot), tetikleyici () isə yaşıl yanacaq və fokus açılarsa ekranla birlikdə qırmızı yanacaq və fokuslanarsa sönəcək. söndür

Bundan əlavə, daha kiçik bir Arduino Pro Mini -yə köçəcəyik.

Addım 9: Son bir şey əlavə edin

İndiyə qədər yalnız bir İntervalometr yaratdıq. Faydalıdır, amma daha yaxşı edə bilərik.

Düşündüklərim budur: bir növ xarici keçid/sensoru bağladıqdan sonra intervalölçəni dayandıran və açarın/sensorun girişinə cavab verən Intervalometer istisna olmaqla bunu edir. Buna bir sensor deyək, mütləq bağlı bir sensor olmayacaq, amma buna belə istinad edəcəyəm.

Birincisi, sensoru bağladığımızı necə aşkar edə bilərik?

İstifadə edəcəyimiz/edəcəyimiz sensorlar, arduino (Vcc, GND, Signal) ilə birləşdirən üç telə ehtiyac duyacaq. Bu o deməkdir ki, sensor üçün giriş yuvası olaraq 3,5 mm -lik audio jakdan istifadə edə bilərik. Və bu problemimizi necə həll edir? Bəli, içərisində kişi konnektoru yoxdursa, konnektorun sancaqlarına qısaldılmış sancaqları olan "açarı olan" 3,5 mm -lik jak növləri var və bir bağlayıcı olduqda ayrılırlar. Sensorun mövcudluğuna əsaslanan məlumatlara sahib olduğumuz deməkdir. Şəkildə göstərildiyi kimi açılan müqavimətdən istifadə edəcəm (rəqəmsal pin sensör olmadan YÜKSƏK və sensor bağlı olaraq LOW) oxuyacaqsınız və ya rəqəmsal pinə normal olaraq bağlayıcının pininə bağlaya bilərsiniz. yerə qoşulduqda və rəqəmsal pimi INPUT_PULLUP olaraq təyin etsəniz, hər iki şəkildə də işləyəcək. Beləliklə, indi kodumuzu düzəltməliyik ki, indiyə qədər yazdıqlarımızın hamısını yalnız sensor yoxdursa və ya rəqəmsal pin yoxlayanda YÜKSƏK olsun. Ekranda bu rejimdə yararsız olan intervalın əvəzinə "SENS" yazdığını göstərdim, amma diqqət hələ də bizim üçün aktualdır, hər iki düyməni basaraq diqqəti dəyişmə funksiyasını saxlayacağıq. qırmızı LED vasitəsilə fokus vəziyyətini göstərir.

Sensor əslində nə edir?

Kameranı işə salmaq istədiyimiz zaman 5V -u Siqnal pininə qoymaq kifayətdir. Bu o deməkdir ki, bu pinin vəziyyətini yoxlayan Arduinonun başqa bir rəqəmsal pininə ehtiyacımız olacaq və YÜKSEK qeydiyyatdan keçdikdə, trigger () funksiyasını çağırmaq kifayətdir və kamera bir şəkil çəkəcək. Ən asan və bunun işlədiyini yoxlamaq üçün istifadə edəcəyimiz nümunə aşağıya çəkilən rezistorlu sadə düymələrdir. Sensorun Vcc ilə Siqnal pimi arasındakı düyməni bağlayın və Siqnal pimi ilə GND arasında bir rezistor əlavə edin, beləliklə rezistordan axan cərəyan olmadığı üçün düyməyə basılmadıqda siqnal pimi GND -də olacaq. düyməyə basıldıqda Sinyal pinini birbaşa YÜK -ə qoyduq və Arduino bunu oxuyur və kameranı işə salır.

Bununla kod yazmağa son qoyduq.

*İstifadə etdiyim audio jaklarda yaşadığım bəzi problemləri qeyd etmək istərdim. Kişi jakını konnektora daxil edərkən, GND və digər iki sancaqdan biri bəzən qısa olardı. Bu dərhal və yalnız konnektoru qoyarkən baş verir, ancaq Arduinonun qısa müddətdə qeydiyyatdan keçməsi üçün kifayət qədər uzun müddətdir ki, Arduino sadəcə yenidən başlasın. Bu tez -tez baş vermir, amma yenə də təhlükə ola bilər və Arduinonu məhv etmək potensialı var, buna görə də istifadə etdiyim bağlayıcılardan çəkinin.

Addım 10: Mesajı ehtiva edin

Şəkillərdən çörək taxtasının səliqəsizləşdiyini və işimizi bitirdiyimizi görə bilərik, buna görə hər şeyi bir taxta/PCB -yə köçürməliyik. PCB üçün getdim, çünki bunları daha çox edəcəyimi düşünürəm, beləliklə onları asanlıqla çoxalda bilərəm.

PCB dizaynı üçün Eagle -dən istifadə etdim və istifadə etdiyim bütün hissələr üçün dizayn tapdım. Dizaynımda etməməyimi istədiyim kiçik bir şey var və bu, ekranın Vcc üçün bir tel yastığıdır. Çox gec gördüm və əvvəllər hazırladığımı məhv etmək istəmədim və tel yastıqları əlavə etmək üçün tənbəl bir şəkildə getdim və daha sonra mis izləri əvəzinə bu əlaqələrə tel əlavə etmək məcburiyyətində qaldım..

Arduino lövhəsi və ekran, aydın səbəblərə görə birbaşa PCB -yə lehimlənmək əvəzinə, qadın pin başlıqları vasitəsi ilə PCB -yə bağlanır. Bu şəkildə, rezistorlar, tranzistorlar və hətta audio jakı kimi digər komponentlər üçün ekranın altında digər komponentlər üçün çox yer var.

Dizaynına görə birbaşa lehimlənməli olan mikro düymələri qoydum, ancaq qadın pin başlıqları üçün deliklərdən istifadə edə və düymələri PCB -yə deyil, korpusa quraşdırmaq istəyirsinizsə tellə bağlaya bilərsiniz.

Kameraya qoşulan kabeli bağlamaq üçün başqa bir qadın audio jakı da qoyacağıq. Bu şəkildə lövhə daha çox yönlü olur, beləliklə digər kameralarla digər bağlayıcıları birləşdirə biləcəyik.

Addım 11: Sens0rs

Sensoru tətbiq etməyin yollarını nəzərdən keçirək.

Beləliklə, sensor 5V təchizatı gərginliyinə sahib olacaq və kameranı işə salmaq istədikdə onun siqnal pinində rəqəmsal YÜKSƏK təmin etməliyik. Ağlıma gələn ilk şey, konkret olmaq üçün bir hərəkət sensoru. Arduino üçün bu sensoru olan və istədiyimizi edən modullar var. 5V ilə təchiz olunmuşdur və işə salındıqda 5V qoyduqları bir çıxış pininə sahibik, sadəcə onun pinlərini 3,5 mm -lik bir səs yuvasına bağlamalıyıq və lövhəyə qoşa bilərik. Diqqət yetirməli bir şey, bu sensorun istiləşməsi və düzgün işləməyə başlaması üçün zamana ehtiyacı olmasıdır, buna görə onu bağladığınız anda düzgün işləyəcəyini gözləməyin, bir az vaxt verin, sonra qurun və diri nə daxil olursa olsun diapazonu kameranı işə salacaq.

Artıq hazırlanan Arduino sensor lövhələri istiqamətində düşündüyümüz üçün ağla başqa bir səs gəlir. Bu lövhələr, adətən tutduqları səsin analoq dəyərini çıxaran bir pinlə, tutduğu səs müəyyən bir səviyyəni keçdiyi təqdirdə məntiqi YÜKSEK çıxan rəqəmsal bir pinlə təchiz edilmişdir. Bu səviyyəni elə təyin edə bilərik ki, sensor səsimizə məhəl qoymasın, ancaq bir alqış qeyd etsin. Bu şəkildə, nə vaxt əl çalsanız, kameranı işə salırsınız.

Addım 12: PoweeEeEer

Düşünürəm ki, bu işi gücləndirməyin ən asan yolu güc bankıdır və xaricdən deyil. Telefonumuzu və ya hər hansı bir şeyi doldurma funksiyasını saxlayacağıq və bir keçid vasitəsi ilə lövhəyə olan axını idarə edəcəyik. GND və Vcc (5V) və Lehim telləri olan güc bankında, çıxış USB konnektorunun pinlərini elektrik lövhəsində birbaşa onların üzərinə və oradan lövhəmizə yerləşdirəcəyik.

Addım 13: Mühafizə.. Necə ki

Mən bununla həqiqətən mübarizə apardım. Mövcud PCB -ni qoymaq istədiyim qutuya girəndə, hər şeyi istədiyim kimi yerləşdirməyin gözəl bir yolunun olmadığını başa düşdüm və sonra bu dəfə optokupllarla yeni bir PCB dizayn etmək qərarına gəldim. PCB -ni görmək/toxunmaq lazım olan bəzi komponentlər üçün deliklər qazacağım tərəfin altına yerləşdirmək istədim. Bunun işləməsi üçün ekranı və Arduino'yu prizlərə və başlıqlar olmadan birbaşa lövhəyə lehimləməliyəm və burada ilk problem var. Hər şeyin işlədiyini yoxlayana qədər dərhal lehimləməyə hazır olmadığım üçün bir şeyi düzəltmək tamamilə dəhşətli idi və lehim edə bilmədiyim üçün heç bir şeyi sınaya bilmədim və s. bunu etmə. Problem numero dos, qutuda deşiklər açmaq. Ölçmələri səhv etdiyimi düşünürəm, çünki korpusdakı deliklərin heç biri PCB -nin komponentləri ilə üst -üstə düşməmişdi və onları böyütmək məcburiyyətində qaldım və düymələr PCB -də çox yüksək idi və lövhəni yerinə qoyanda həmişə basıldı. aaand yan tərəfdəki audio jakları istədiyim üçün əvvəlcə krikolara uyğunlaşmaq üçün bu delikləri genişləndirməli idim və sonra ekran və düymələrin keçməsi üçün lövhəni aşağı saldım.. nəticə dəhşətlidir.

Komponentlər üçün daha ağlabatan deliklər kəsdiyim bir neçə nazik kartonla üstü örtərək qorxunc deşikləri daha az qorxunc hala gətirdim və bu hələ də qorxunc olsa da gözümdə daha asandır.

Hökm, bunu birbaşa PCB -yə deyil, korpusa quraşdırılan komponentlər alaraq etmənizi təklif edirəm. Beləliklə, komponentlərin yerləşdirilməsində daha çox sərbəstliyə və səhv etmək üçün daha az yerə sahibsiniz.

Addım 14: Fin

İşim bitdi, amma fərqli bir şey edərdim:

Daha keyfiyyətli 3.5 mm audio jaklardan istifadə edin. İstifadə etdiklərim jakı daxil edərkən və ya çəkərkən terminalları qısaltmağa meyllidir, bu da ya təchizatı qısaldır, beləliklə Arduino sıfırlanır və ya sadəcə saxta tetikleyicilər yaradır. Bunu əvvəlki addımda demişəm, amma bir daha deyim.. Arduino lövhəsini başlıq/yuva olmadan lehimləməyin, bu, hər hansı bir problemi həll etməyi və ya yeni kodu yükləməyi və s. Həm də düşünürəm ki, işin açıldığını bildirən bir LED siqnalının olması faydalı olardı, çünki ekran sönəndən bəri düyməni basmadan tez -tez deyə bilmərəm. Və son şey, fasilə funksiyasıdır. Təsəvvür edirəm ki, məsələn, PIR sensorunu bağladığınızda, istiləşmək üçün vaxt lazım olduğu üçün və ya sadəcə hərəkət etdirdiyiniz zaman onu işə salmaq istəmirsiniz, buna görə də hər şeyi dayandıra bilərsiniz, ancaq çevirə bilərsiniz kameradan belə.. nə olursa olsun.

Başqa bir səliqəli şey, tripodda Velcro etməkdir, çünki orada istifadə oluna bilər.

Şərhlərdə bu layihə ilə bağlı hər hansı bir şey soruşmaqdan çekinmeyin və bunu qursanız və bunun sizin üçün necə baş verdiyini bilmək istərdim.