İçindekiler:
- Adım 1: Ama.. Nasıl?
- 2. Adım: Kamerayı Nasıl Tetikleyeceğinizi Öğrenmek
- 3. Adım: Tetiklemenin Yolları
- Adım 4: Tetikleme Kodu Yazma
- Adım 5: Sınıf Aralığı{};
- Adım 6: Aralığın Arduino Üzerinden Manipüle Edilmesi
- 7. Adım: Aralığın Görüntülenmesi
- 8. Adım: Hepsini Bir Araya Getirmek
- 9. Adım: Son Bir Şey Ekleme
- Adım 10: Kargaşayı İçerme
- Adım 11: Sens0rs
- Adım 12: PoweeEeEer
- Adım 13: Muhafaza.. Biraz
- Adım 14: Fin
Video: Kameramı Pezevenk Etme: 14 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:22
İşte bu proje nereden geliyor.
Bir süre önce bazı timelapse'ler çekmeyi düşündüm. "Nasıl?" Kendime sordum? İlk cevap "Pekala.. sen sadece bir şey çekiyorsun ve hızlandırıyorsun, hepsi bu" oldu. Ama gerçekten bu kadar basit mi? Öncelikle bunun için DSLR'mi kullanmak istiyorum ve Nikon D3100'üm video çekmek için 10 dakikalık bir zaman sınırına sahip. İkincisi, video çekerken zaman sınırı olmayan bir kameram olsa bile, 12 saat gibi gerçekten uzun bir timelapse yapmak istersem ne olur? 12 saatlik 1080p video çekiyorum. Pilin o kadar uzun süre dayanacağından şüpheliyim ve çok pratik değil, değil mi? Pekala, "video çekme fikri"ni geçiyoruz. Peki, o zaman resimler var. Belli aralıklarla kamerada fotoğraf çekmek ve yazılım üzerinden işleyerek video haline getirdiğim yüzlerce görüntü ile sonuçlanıyor.. ?
İyi bir fikir gibi görünüyordu, ben de bir şans vermeye karar verdim. Sonunda içine bir zaman periyodu girebileceğim bir cihaz yapmak istedim ve bu periyoda bağlı olarak kameramı sürekli tetikleyecekti. Ve hazır buradayken, neden hareket tetikleyici gibi başka şeyler eklemiyorsunuz?
Adım 1: Ama.. Nasıl?
NASIL? cevabı eksik olan bir sonraki sorumuz. Zamanlama, tetikleme, sensörler ve benzeri şeyler nedeniyle akla ilk gelenin elbette bir Arduino olması şaşırtıcı olmayacaktır. Pekala, ama yine de kameramızın deklanşörünü nasıl tetikleyeceğimizi öğrenmemiz gerekiyor. Hm.. servo gövde kamerasına sıcak yapıştırılmış mı? Kesinlikle hayır, bunun sessiz ve güç açısından verimli olmasını istiyoruz. Güç verimli - neden? Taşınabilir hale getirmek ve içine bir pil takmak istediğim için her seferinde bir elektrik fişinin yanında olmayacağım. Peki o zaman nasıl tetikleyeceğiz.. aslında oldukça basit.
Nikon senin uzaktan kumanda ve diğer aksesuarları isteyeceğini zaten biliyordu ve "tamam hepsini vereceğiz ama o aksesuarlardan daha fazla para kazanabilmemiz için özel bir port yapacağız" dediler, yazık sana Nikon. Bu bağlantı noktası (benim durumumda) MC-DC2 olarak adlandırılır ve onu ele geçirmenin en ucuz yolu, eBay'den 2-3 $ karşılığında uzaktan deklanşör satın almak ve sadece kabloyu kullanmaktır.
*Canon gibi diğer bazı kameralarda, aynı kullanım için yapılmış basit bir 3,5 mm kulaklık jakı bulunur, böylece eski hoparlörlerden/kulaklıklardan bazı kabloları kullanabilirsiniz.
2. Adım: Kamerayı Nasıl Tetikleyeceğinizi Öğrenmek
Her neyse, anlaşma şu, bağlantı noktası ilgimizi çekecek 3 bağlantıya sahip olacak (Toprak, Odak ve Deklanşör) ve yeni satın aldığınız ve az önce yok ettiğiniz uzaktan kumandalı kepenk kablonuzun ucunda bunlar olacak. Bu üç bağlantı bizim için önemlidir, çünkü Ground ve Focus'u kısa devre yaparsak, kamera tıpkı sizin odak düğmesine bastığınız gibi odaklanır ve ardından, bu bağlantı devam ederken, Ground ve Shutter'ı kısa devre yapabilir ve kamera bir fotoğraf çekecektir. tıpkı kameradaki deklanşöre basmış gibi.
Hangi telin hangisi olduğunu belirlemek için kablonun ucundaki canlı telleri tam anlamıyla kısaltarak bunu test edebilirsiniz. Bunu yaptıktan sonra, daha kolay tanımlama adına onları şu şekilde renklendireceğiz:
Zemin = SİYAH; Odak = BEYAZ; Deklanşör = KIRMIZI.
Pekala, şimdi Arduino'ya bunu bizim için yapmasını öğretmeliyiz.
3. Adım: Tetiklemenin Yolları
Bir Arduino'ya dış dünyaya göndermesini söyleyebileceğimiz en basit şey, dijital çıkış sinyalidir. Bu sinyal YÜKSEK(mantıksal '1') veya DÜŞÜK(mantıksal '0') olabilir, bu nedenle "dijital" adı veya temel anlamına dönüştürüldüğünde: mantıksal YÜKSEK için 5V ve mantıksal DÜŞÜK için 0V olabilir.
Bu dijital sinyallerle ne yapacağız? Onları öylece kameraya bağlayıp kameranın ne istediğimizi bilmesini bekleyemeyiz. Gördüğümüz gibi, tepki vermesi için kamera üzerindeki bağlantıları kısa devre yapmamız gerekiyor, bu yüzden gönderdiğimiz bu elektrik sinyaline bağlı olarak terminallerini kısa devre yapabilen bazı bileşenleri sürmek için Arduino'nun dijital sinyallerini kullanmamız gerekiyor.. * Anlattığım şekilde, "Ah, Relays!" Diye düşünüyor olabilirsiniz. ama hayır hayır. Röle işi yapardı ama o kadar küçük akımlarla uğraşıyoruz ki yarı iletkenlerin kara büyüsünü kolayca kullanabiliriz.
Deneyeceğim ilk bileşen bir optokuplör. Bunun için en çok uyguladıklarını gördüm ve muhtemelen en iyi çözüm. Optokuplör, giriş devresi ondan tamamen yalıtılmışken çıkış devresini kontrol ettiğiniz elektrikli bir bileşendir. Bu, bilgilerin ışıkla iletilmesiyle elde edilir, giriş devresi bir LED'i yakar ve çıkıştaki fototransistör buna göre değişir.
Bu yüzden optokuplörü şu şekilde kullanacağız: Arduino'muza, eğer dijital pinler ise bir dijital YÜKSEK göndermesini söylüyoruz, bu sinyal pratik olarak 5V'dur ve bu, optokuplörün içindeki LED'i sürecek ve içindeki fototransistör "kısa" olacaktır. bu ışığı algıladığında çıkış terminalleridir ve tam tersi, Arduino üzerinden dijital bir DÜŞÜK gönderdiğimizde LED'den ışık olmadığından terminallerini "ayıracaktır".
Pratik olarak bu şu anlama gelir: Arduino'nun dijital pinlerinden biri optokuplörün ANODE pinine bağlıdır, Arduino'nun GND'si CATHODE'a bağlıdır, kameranın GND'si EMITTER'a ve FOCUS(veya SHUTTER) KOLLEKTÖR'e bağlıdır. Bu pinleri sizinkinde bulmak için kullandığınız optokuplörün veri sayfasına bakın. 4N35 kullanıyorum, böylece optokuplörün içinde ne olduğunu gerçekten umursamıyorsanız, benim şemamı körü körüne takip edebilirsiniz. Söylemeye gerek yok, hem kameranın ODAK hem de SHUTTER'ı kontrol etmemiz gerektiğinden, bunlardan ikisine ihtiyacımız olacak.
Çıkışta bir fototransistörle bunun nasıl çalıştığını gördüğümüze göre, neden sadece basit bir NPN transistörle denemiyoruz. Bu sefer, dijital sinyali doğrudan (bir direnç üzerinden) transistörün tabanına getireceğiz ve hem kameranın hem de Arduino'nun GND'sini emitöre ve kameranın odak/deklanşörünü transistörün toplayıcısına bağlayacağız.
Yine, iki sinyali kontrol ettiğimiz için bunlardan ikisine ihtiyacımız olacak. BC547B kullanıyorum ve kontrol ettiğimiz akım tek bir miliamper olduğundan, bunun için temelde herhangi bir NPN kullanabilirsiniz.
Bu bileşenlerin her ikisi de çalışacaktır, ancak optokuplörü seçmek muhtemelen daha iyi bir fikirdir çünkü daha güvenlidir. Transistörleri yalnızca ne yaptığınızı biliyorsanız seçin.
Adım 4: Tetikleme Kodu Yazma
Daha önce de söylediğimiz gibi sinyalizasyon için Arduino'nun dijital pinlerini kullanacağız. Arduino bunları hem ondan veri okumak için hem de ona yazmak için kullanabilir, böylece setup() işlevinde belirtmemiz gereken ilk şey, çıktı için Arduino'nun iki dijital pinini kullanacağımız:
pinMode(ODAK_PIN, ÇIKIŞ);
pinMode(SHUTTER_PIN, ÇIKIŞ);
FOCUS_PIN ve SHUTTER_PIN, "#define NAME değeri" ile veya setup() işlevinden önce bir int olarak tanımlanabilir, çünkü pini değiştirebilirsiniz, böylece değeri sonradan tüm kod yerine tek bir noktada değiştirmek daha kolay olur.
Sonraki yapacağımız şey, çalıştırıldığında tam da bunu yapacak olan bir trigger() işlevi yazmak. Sadece kodla birlikte bir resim ekleyeceğim. Bilmeniz gereken tek şey, önce FOCUS_PIN'i belirli bir süre YÜKSEK olarak tuttuğumuzdur, çünkü kameranın yönelttiğimiz nesneye odaklanmasını beklememiz gerekir ve sonra bir an için (FOCUS_PIN hala YÜKSEK iken)) sadece fotoğrafı çekmek için SHUTTER_PIN'i YÜKSEK olarak ayarlayın.
Ayrıca odaklamayı atlama özelliğini de ekledim çünkü kameraya olan mesafesini zaman içinde değiştirmeyen bir şeyin zaman atlamalı çekimini yapıyorsak buna gerek kalmayacak.
Adım 5: Sınıf Aralığı{};
Artık kamerayı tetiklemeyi ortadan kaldırdığımıza göre, bunu iki çekim arasındaki süreyi değiştirme işlevini ekleyerek bunu bir intervalometreye dönüştürmemiz gerekiyor. Yaptığımız şeyin resmini görmeniz için burada istediğimiz işlevselliği göstermek için bazı ilkel kodlar var:
boşluk döngüsü(){
Gecikme aralığı); tetiklemek(); }
Bu aralığı, diyelim ki 5 saniyeden 20-30 dakikaya kadar değiştirebilmek istiyorum. Ve işte sorun şu, eğer onu 5s'den 16s'ye veya aralarında herhangi bir şey değiştirmek istersem 1s'lik artış kullanacağım, burada her benim isteğimin aralığı artırma isteği için aralık 1s artacaktır. Bu harika, ama ya 5 saniyeden 5 dakikaya geçmek istersem? Bana 1s'lik artışlarla 295 istek alacaktı, bu yüzden açıkça artış değerini daha büyük bir şeye yükseltmem gerekiyor ve artışı hangi aralık değerinde (eşik) değiştireceğimi tanımlamam gerekiyor. Bunu uyguladım:
5s-60s: 1s artış; 60s-300s: 10s artış; 300s-3600s: 60s artış;
ancak bu sınıfı ayarlanabilir olacak şekilde yazdım, böylece kendi eşiklerinizi ve artışlarınızı tanımlayabilirsiniz (her şey.h dosyasında yorumlanmıştır, böylece hangi değerleri nerede değiştireceğinizi bilebilirsiniz).
Aralığı manipüle etmek için verdiğim örnek belli ki bir PC'de yapıldı, şimdi onu Arduino'ya taşımamız gerekiyor. Tüm bu sınıf, Interval, sınıfımızın/işlevlerimizin bildirimlerini ve tanımlarını (gerçekten değil, ancak bu örnekte herhangi bir zarar vermeden yapılabilir) depolamak için kullanılan bir başlık dosyasına konur. Bu başlık dosyasını arduino kodumuza tanıtmak için " #include "Interval.h" (dosyalar aynı dizinde olmalıdır) kullanıyoruz, bu da ana kodumuzda başlık dosyasında tanımlanan işlevleri kullanabilmemizi sağlıyor.
Adım 6: Aralığın Arduino Üzerinden Manipüle Edilmesi
Şimdi, aralığın değerini değiştirebilmek, artırmak veya azaltmak istiyoruz. Yani bu iki şey, bu yüzden iki düğme ile kontrol edilecek iki dijital sinyal kullanacağız. Butonlara atadığımız dijital pinlerdeki değerleri tekrar tekrar okuyacağız ve bu değerleri checkButtons(int, int); bu, "yukarı" düğmesine basıldığında aralığı artıracak ve "aşağı" düğmesine basıldığında aralığı azaltacaktır. Ayrıca, her iki düğmeye de basılırsa, tetikleme sırasında odaklama yapılıp yapılmayacağını kontrol eden değişken odak değerini değiştirecektir.
Geri dönme için kodun bir kısmı ((millis() - prevBtnPress) >= debounceTime) kullanılır. Bunu yazma şeklim, ilk butona basışımı btnPressed boolean değişkeni ile kaydettiğim ve ne zaman gerçekleştiğini hatırladığım anlamına geliyor. Daha sonra belirli bir süre (debounceTime) beklerim ve düğmeye hala basılırsa tepki veririm. Ayrıca, düğmeye her basış arasında bir "duraklama" yapar, böylece hiçbirinin olmadığı yerde birden fazla basmayı önler.
Ve son olarak:
if ((millis() - prevTrigger) / 1000 >= interval.getVal()) {
prevTrigger = millis(); tetiklemek(); }
öncelikle son tetikleme(prevTrigger) ile o anki zaman(millis()) arasındaki sürenin (milisaniye cinsinden olduğu ve aralık saniye cinsinden olduğu için her şey 1000'e bölünür) aralığa eşit veya daha büyük olup olmadığını kontrol ederiz. istiyoruz ve eğer öyleyse, şimdiki zamanı kamerayı en son tetiklediğimiz ve ardından tetiklediğimiz zaman olarak hatırlıyoruz.
Bu tamamlama ile, temelde bir intervalometre yaptık, ama henüz bitmedi. Hala intervalometrenin değerini görmüyoruz. Yalnızca Seri Monitörde görüntülenir ve her zaman bir bilgisayarın yakınında olmayacağız, bu nedenle şimdi, aralığı değiştirdikçe bize gösterecek bir şey uygulayacağız.
7. Adım: Aralığın Görüntülenmesi
Ekranı tanıttığımız yer burasıdır. TM1637 tarafından sürülen 4 haneli modülü kullandım çünkü onu sadece zamanı göstermek için kullanmam gerekiyor, başka bir şey değil. Arduino için yapılmış bu modülleri kullanmanın en kolay yolu, onlar için hazırlanmış kütüphaneleri kullanmaktır. Arduino sitesinde TM1673 yongasını açıklayan bir sayfa ve önerilen bir kitaplığa bağlantı var. Bu kütüphaneyi indirdim ve bu kütüphaneleri Arduino IDE'ye tanıtmanın iki yolu var:
- Arduino yazılımından Sketch>Include Library>Add. ZIP library'e gidin ve az önce indirdiğiniz.zip dosyasını bulun
- Arduino'nun manuel olarak yaptığını yapabilir ve Windows'ta Arduino'nun kitaplıkları depoladığı klasördeki kitaplığı açmanız yeterlidir: C:\Users\Username\Documents\Arduino\libraries\.
Kitaplığı ekledikten sonra, çeşitli işlevlerin ne yaptığının özetini bulacağınız "Beni Oku" dosyasını okumalısınız. Bazen bu yeterli olmaz, bu nedenle biraz daha derine inmek ve işlevlerin nasıl uygulandığını ve girdi argümanları olarak neye ihtiyaç duyduklarını görebileceğiniz başlık dosyalarını keşfetmek isteyeceksiniz. Ve elbette bir kütüphanenin neler yapabileceğini anlamanın en iyi yolu, genellikle Arduino yazılımından File>Examples>LibraryName>ExampleName aracılığıyla çalıştırabileceğiniz bir örnek sunar. Bu kitaplık, yalnızca ekranınızın düzgün çalışıp çalışmadığını görmek için ekranınızda çalıştırmanızı önerdiğim bir örnek sunar ve örnekte gördüğünüz kodu değiştirmenizi ve her bir işlevin ne yaptığını ve ekranın nasıl tepki verdiğini kendiniz görmenizi tavsiye ederim. o. Bunu yaptım ve şunu anladım:
her basamak için 8 bitlik 4 işaretsiz tamsayı (0bB7, B6, B5, B4, B3, B2, B1, B0) kullanır. Ve bu B6-B0 bitlerinin her biri, belirli bir basamağın her bir bölümü için kullanılır ve bit 1 ise, onun tarafından kontrol edilen bölüm yanar. Bu tamsayılar, data adlı bir dizide saklanır. Bu bitlerin ekrana ayarlanması display.setSegments(data); ya da özellikle herhangi bir haneye doğal olarak erişebilir ve bunları manuel olarak ayarlayabilir (data[0] = 0b01111001) veya encodeDigit(int); işlevini kullanabilirsiniz; ve gönderdiğiniz basamağı uygun bitlere dönüştürün(data[0] = display.encodeDigit(3));. Bit B7, kolonu etkinleştirmek için yalnızca ikinci basamak veya veri[1] tarafından kullanılır.
Aralığın belirli basamaklarını M1M0:S1S0 şeklinde alabileceğim INTERVAL sınıfındaki witch fonksiyonlarında M dakika ve S saniye anlamına geldiği için encodeDigitFunction(int); aralığı şu şekilde görüntülemek için:
displayInterval(){
data[0] = display.encodeDigit(interval.getM1()); veri[1] = 0x80 | display.encodeDigit(interval.getM0()); data[2] = display.encodeDigit(interval.getS1()); data[3] = display.encodeDigit(interval.getS0()); display.setSegments(veri); }
Şimdi, Aralığı ekranda görüntülemem gerektiğinde, displayInterval() işlevini çağırabilirim.
*Veri[1] üzerindeki " 0x80 | … " işaretine dikkat edin. Verinin[1] bit B7'sinin her zaman 1 olduğundan emin olmak için kullanılır, böylece iki nokta üst üste yanar.
Ekranla ilgili son şey, güç tüketimi. Uzun süre açık tutmayacağımız için çok önemli olmayabilir, ancak bunu daha da pil dostu yapmakla ilgileniyorsanız, maksimum parlaklıkta 3 kat daha fazla akım çektiği için ekranın parlaklığını düşürmeyi düşünün. en düşükten daha.
8. Adım: Hepsini Bir Araya Getirmek
Kameranın nasıl tetikleneceğini, aralığın nasıl değiştirileceğini ve aynı aralığın bir ekranda nasıl görüntüleneceğini biliyoruz. Şimdi tüm bunları bir araya getirmemiz gerekiyor. Elbette, loop() işlevinden başlayacağız. Sürekli olarak düğme basışlarını kontrol edeceğiz ve checkButtons(int, int) ile buna göre tepki vereceğiz ve aralığı buna göre değiştirip değiştirilen aralığı görüntüleyeceğiz. Ayrıca döngü() içinde, son tetiklemeden veya düğmeye basılmasından sonra yeterli sürenin geçip geçmediğini sürekli olarak kontrol edeceğiz ve gerekirse trigger() işlevini çağıracağız. Daha düşük güç tüketimi için bir süre sonra ekranı kapatacağız.
Tetik () iken yeşil yanacak ve odaklama açıksa ekranla birlikte kırmızı yanacak ve odaklama açıksa kapalı kalacak iki renkli bir led (Kırmızı ve Yeşil, ortak katot) ekledim. kapalı.
Ayrıca, daha da küçük bir Arduino olan Pro Mini'ye geçeceğiz.
9. Adım: Son Bir Şey Ekleme
Şimdiye kadar.. sadece bir Intervalometer oluşturduk. Faydalı, ama daha iyisini yapabiliriz.
İşte aklımda olan şey: Aralıkölçer, bir tür harici anahtar/sensör taktığımızda, daha sonra aralık ölçeri durduran ve anahtar/sensörün girişine yanıt veren, varsayılan olarak bir şeyi yapar. Buna sensör diyelim, mutlaka bağlı bir sensör olmayacak ama ben buna böyle değineceğim.
İlk olarak, sensörü taktığımızı nasıl anlarız?
Kullanacağımız/yapacağımız sensörlerin hepsinin, onları arduino'ya bağlayan üç kabloya ihtiyacı olacak (Vcc, GND, Signal). Bu, sensör için giriş jakı olarak 3,5 mm ses jakı kullanabileceğimiz anlamına gelir. Ve bu sorunumuzu nasıl çözüyor? Eh, içinde erkek konektör yoksa konektörün pinlerine kısa devre yapan ve bir konektör mevcut olduğunda ayrılan pinlere sahip "anahtarlı" 3,5 mm jak türleri vardır. Bu, sensörün varlığına dayalı bilgilere sahip olduğumuz anlamına gelir. Resimde gösterildiği gibi aşağı çekme direncini kullanacağım (dijital pim sensör olmadan YÜKSEK ve sensör takılıyken DÜŞÜK okuyacaktır) veya dijital pime normalde konektörün pimine de takabilirsiniz. toprağa bağlı ve bu dijital pini INPUT_PULLUP olarak tanımlayın, her iki şekilde de çalışacaktır. Şimdi kodumuzu ince ayar yapmalıyız, böylece şimdiye kadar yazdığımız her şeyi sadece sensör mevcut değilse veya dijital pin kontrolü YÜKSEK olduğunda yapar. Ayrıca, bu modda işe yaramaz olan aralık yerine ekranda "SENS" görünecek şekilde ayarladım, ancak odaklama hala bizim için alakalı, biz her iki düğmeye basarak alternatif odaklama işlevselliğini koruyacağız ve odak durumunu kırmızı led ile gösterir.
Sensör gerçekte ne yapar?
Tek yapmamız gereken kamerayı tetiklemek istediğimizde Sinyal pinine 5V koymak. Bu, Arduino'nun bu pinin durumunu kontrol eden başka bir dijital pinine ihtiyacımız olacağı ve HIGH kaydettiğinde, tek yapması gereken trigger() işlevini çağırmak ve kamera bir resim çekecek demektir. Bunun işe yarayıp yaramadığını test etmek için kullanacağımız en kolay örnek, aşağı çekme direncine sahip basit bir düğmedir. Sensörün Vcc'si ile Sinyal pini arasına butonu takın ve Sinyal pini ile GND arasına bir direnç ekleyin, bu şekilde butona basılmadığında rezistörden akım geçmediği için Sinyal pini GND'de olacaktır. butona basıldığında Sinyal pinini direkt olarak YÜKSEK üzerine koyarız ve Arduino bunu okur ve kamerayı tetikler.
Bununla kodu yazmayı bitirdik.
*Kullandığım ses jaklarıyla ilgili yaşadığım bazı sorunları belirtmek isterim. Erkek jakı konektöre takarken, GND ve diğer iki pinden biri bazen kısa devre yapıyordu. Bu anında ve yalnızca konektörü takarken gerçekleşir, ancak Arduino'nun bir kısa devre kaydetmesi için hala yeterince uzun, böylece Arduino yeniden başlatılır. Bu o kadar sık olmaz ama yine de bir tehlike olabilir ve Arduino'yu yok etme potansiyeli var, bu yüzden kullandığım konektörlerden kaçının.
Adım 10: Kargaşayı İçerme
Görüntülerden breadboard'un dağınık hale geldiğini görebilirsiniz ve işimiz bitti, bu yüzden her şeyi bir perfboard/PCB'ye aktarmamız gerekiyor. PCB'ye gittim çünkü sanırım bunlardan daha fazlasını yapacağım, böylece onları kolayca çoğaltabilirim.
PCB'yi tasarlamak için Eagle kullandım ve kullandığım tüm parçalar için tasarımlar buldum. Tasarımımda keşke yapmasaydım dediğim küçük bir şey var ve o da ekranın Vcc'si için bir tel ped. Bunu çok geç gördüm ve daha önce tasarladığım şeyi mahvetmek istemedim ve tembel tel pedleri ekleme yoluna gittim ve daha sonra bakır izleri yerine bu bağlantılara tel eklemek zorunda kaldım, bu yüzden maden tasarımı kullanıyorsanız dikkat edin..
Arduino Kartı ve ekran, belirgin nedenlerden dolayı doğrudan PCB'ye lehimlenmek yerine dişi pin başlıkları aracılığıyla PCB'ye bağlanır. Bu şekilde, dirençler, transistörler ve hatta ses jakı gibi diğer bileşenler için ekranın altında diğer bileşenler için bolca alan olur.
Tasarım gereği doğrudan lehimlenmesi gereken mikro butonları koydum, ancak dişi pin başlıkları için delikleri de kullanabilir ve PCB'ye değil muhafazaya monte edilmesini istiyorsanız butonları telle bağlayabilirsiniz.
Ayrıca kameraya bağlanan kabloyu takmak için başka bir dişi ses jakı koyacağız. Bu şekilde kart daha çok yönlü hale gelir, çünkü bu şekilde diğer kameralara diğer konektörlerle bağlanabileceğiz.
Adım 11: Sens0rs
Sensörü uygulamanın yollarını düşünelim.
Yani sensör 5V besleme gerilimine sahip olacak ve kamerayı tetiklemek istediğimizde sinyal pininde dijital YÜKSEK sağlayabilmesi gerekecek. Aklıma ilk gelen şey bir hareket sensörü, spesifik olmak gerekirse PIR. Arduino için satılan ve üzerinde bu sensöre sahip olan ve tam istediğimizi yapan modüller var. 5V ile çalışırlar ve tetiklendiklerinde 5V koydukları bir çıkış pinleri vardır, pinlerini 3,5 mm ses jakına bağlamamız yeterlidir ve doğrudan panoya takabiliriz. Unutulmaması gereken bir şey, bu sensörün ısınması ve düzgün çalışmaya başlaması için zamana ihtiyacı olduğudur, bu nedenle, fişi takar takmaz düzgün çalışmasını beklemeyin, biraz zaman verin ve ardından kurun ve içine canlı ne gelirse gelsin. aralığı kamerayı tetikleyecektir.
Zaten yapılmış Arduino sensör kartları yönünde düşündüğümüz için akla bir başkası geliyor, ses. Bu kartlar genellikle, aldığı sesin analog değerini veren bir pime ve aldığı ses belirli bir seviyeyi geçerse mantıksal YÜKSEK çıkış veren bir diğeri dijital olana sahip olacak şekilde yapılır. Bu seviyeyi, sensörün sesimizi görmezden gelip bir alkış kaydedeceği şekilde ayarlayabiliriz. Bu şekilde, her alkışladığınızda kamerayı tetiklersiniz.
Adım 12: PoweeEeEer
Bu şeye güç vermenin en kolay yolunun harici olarak değil, bir güç bankası olduğunu düşünüyorum. Telefonumuzu veya her neyse şarj etme işlevselliğini koruyacağız ve panoya giden akımı bir anahtar aracılığıyla kontrol edeceğiz. Güç bankasındaki devre kartındaki çıkış USB konektörünün pinlerini GND ve Vcc(5V) ve Lehim telleri doğrudan bunlara ve oradan kartımıza yerleştireceğiz.
Adım 13: Muhafaza.. Biraz
Bununla gerçekten mücadele ettim. Mevcut PCB'yi koymak istediğim kutuyu aldığımda, her şeyi istediğim gibi sığdırmanın güzel bir yolu olmadığını fark ettim ve sonra bu sefer optokuplörlerle yeni bir PCB tasarlamaya karar verdim. PCB'yi, görülmesi/dokunulması gereken belirli bileşenler için delik açacağım tarafın hemen altına yerleştirmek istedim. Bunun çalışması için ekranı ve Arduino'yu soketler veya başlıklar olmadan doğrudan tahtaya lehimlemem gerekecek ve ilk problem burada yatıyor. Her şeyin çalıştığını test edene kadar hemen lehimlemeye hazır olmadığım için herhangi bir sorunu gidermek kesinlikle korkunçtu ve lehimleyemediğim için hiçbir şeyi gerçekten test edemedim. bunu yapma. Sorun numero dos, kasada delikler açmak. Sanırım yanlış ölçüm yaptım çünkü kasadaki deliklerin hiçbiri PCB'deki bileşenlerle aynı hizada değildi ve onları büyütmek zorunda kaldım ve PCB'deki düğmeler çok yüksekti ve kartı yerine koyduğumda her zaman basılıyorlardı. aaa ve ses jaklarını yanda istediğim için, önce bu delikleri jaklara uyacak şekilde büyütmek zorunda kaldım ve ardından ekran ve düğmelerin geçmesi için kartı indirdim.. sonuç korkunç.
Bileşenler için daha makul delikler kestiğim ince bir kartonla üstünü kaplayarak korkunç delikleri daha az korkunç hale getirdim ve.. yine de korkunç ama bence göze daha kolay.
Karar, bunu doğrudan PCB'ye değil, kasaya monte edilen bileşenleri satın alarak yapmanızı öneririm. Bu şekilde, bileşenlerin yerleştirilmesinde daha fazla özgürlüğe ve hata yapabileceğiniz daha az yere sahip olursunuz.
Adım 14: Fin
Bitirdim, ama burada farklı şekilde yapardım bazı şeyler:
Daha kaliteli 3,5 mm ses jakları kullanın. Kullandıklarım, krikoyu takarken veya çekerken terminalleri kısa devre yapma eğilimindedir, bu da kaynağın kısa devre yapmasına ve böylece Arduino'nun sıfırlanmasına neden olur veya sadece sahte tetikler üretir. Bunu bir önceki adımda söylemiştim ama tekrar söyleyeceğim.. Ayrıca, bir şeyin açık olduğunu gösteren bir led'e sahip olmanın faydalı olacağını düşünüyorum çünkü ekran kapandığı için genellikle düğmeye basmadan söyleyemem. Ve son şey, bir duraklama işlevi. Örneğin, ısınması için zamana ihtiyaç duyduğu için PIR sensörünü takarken veya sadece hareket ettirirken tetiklenmesini istemediğiniz için her şeyi duraklatabilmeniz için yararlı olduğunu hayal ediyorum, ancak aynı zamanda basitçe çevirebilirsiniz. kamera kapalı yani.. her neyse.
Bir başka güzel şey, orada kullanılması muhtemel olduğundan, onu tripod üzerinde cırt cırtlamaktır.
Yorumlarda bu proje hakkında herhangi bir şey sormaktan çekinmeyin ve bunu yapıp yapmadığınızı ve sizin için nasıl sonuçlandığını bilmek isterim.
Önerilen:
LED Lambanızı Pezevenk Edin: 4 Adım
LED Lambanızı Süsleyin: Hollanda'daki Lidl süpermarkette yiyecek satın alırken, karım çok ucuza (2.99 Euro) üst kısmında fiberleri olan bir LED Lamba ile karşılaştı. Bu LED Lambada, basit ama hoş bir etki yaratan bir Kırmızı, bir Yeşil ve bir Mavi olmak üzere üç LED vardır
Enkazımı Pezevenk Et: 9 Adım
Pimp My Wreck: Giriş Herkese merhaba! Biz IDC'den iki bilgisayar bilimi öğrencisiyiz ve öğrenciler olarak vasat araçlarla yetiniyoruz (en azından bir iş bulana kadar). O zamana kadar, en azından elimizdekilerle serinlemek için enkazlarımızı yükseltme tutkumuz var.Şanslı
Gözleri Parlayan Pezevenk Zombi: 5 Adım (Resimlerle)
Parlayan Gözlerle Pezevenk Zombi: Mevcut bir şekle parlayan göz efektine sahip LED'leri nasıl ekleyeceğinizi öğrenin. Benim durumumda Cadılar Bayramı için bir zombi figürü kullandım. Bunu yapmak oldukça kolaydır ve herhangi bir ileri düzey beceri gerektirmez
Epe Kordonunu Test Etme ve Tamir Etme: 9 Adım (Resimlerle)
Bir Epe Bodycord'un Test Edilmesi ve Onarılması: Modern, Olimpik tarzdaki eskrim sporunda, puanlama elektrikle yapılır. Elektrik sinyalinin silahınızdan puanlama makinesine gitmesi için, sinyalin silahınızdaki bir tel aracılığıyla (kılıç hariç) kolunuzdan yukarı ve aşağı hareket etmesi gerekir
Klavyenizi Nasıl Pezevenk Edebilirsiniz: 8 Adım
Klavyenizi Nasıl Pezevenk Edebilirsiniz: Eski, sıkıcı bir 90'ların klavyesine mi takıldınız? Ucuza serin bir mavi arkadan aydınlatmalı klavye ister misiniz? Daha fazlasını söyleme…Uyku uyandıran sıkıcı eski klavyenizi gelecek yüzyıla nasıl yükselteceğinizi göstereceğim