İçindekiler:

Nihai Kendin Yap Otomatik Balık Besleyici: 2. Aşama: 10 Adım (Resimlerle)
Nihai Kendin Yap Otomatik Balık Besleyici: 2. Aşama: 10 Adım (Resimlerle)

Video: Nihai Kendin Yap Otomatik Balık Besleyici: 2. Aşama: 10 Adım (Resimlerle)

Video: Nihai Kendin Yap Otomatik Balık Besleyici: 2. Aşama: 10 Adım (Resimlerle)
Video: Kadim Bir Medeniyetin İzlerinde mi? 🗿 Ya geçmişimizde yanıldıysak? 2024, Kasım
Anonim
Nihai Kendin Yap Otomatik Balık Besleyici: Tier 2
Nihai Kendin Yap Otomatik Balık Besleyici: Tier 2

Tier 2 Feeder, Tier 1'den büyük bir adımdır. Bu sürüm, besleme programını ve tankın aydınlatmasını kontrol etmek için arduino'nun saatini senkronize etmek için bir ESP8266 wifi modülü kullanır.

Adım 1: İhtiyacınız Olan Şeyler:

Işık zamanlayıcı dışında Katman 1'deki her şey

  • ESP8266-01
  • FTDI programcısı (ESP8266'yı programlamak için)
  • Havya
  • 5V RGBW LED şerit (SK6812 IP 65, gün ışığı beyazı, bunu kullandım)
  • Işık şeridinin su geçirmez olması gerekir, çünkü su tanktan buharlaşacak ve tank kapağında yoğuşarak kendilerini aydınlatacaktır.
  • 5V güç kaynağı (Bunu kullandım, arduino tüm ışıkları kendi başına çalıştıramaz.).
  • İstediğiniz herhangi bir 5V güç kaynağını kullanmaktan çekinmeyin, tüm ışıkları sağlamak için yeterli gücü sağladığından emin olun.
  • 3.3V voltaj regülatörü
  • ESP8266 3,3V'da çalışır, bu nedenle diğer her şey 5V'tur, 5'i 3,3'e düşürmek 12'den 3,3'e düşürmekten daha kolaydır
  • Dirençler (1kOhm x2, 2kOhm x2 (veya 1kOhm x4), 10kOhm x1)
  • Süper yapıştırıcı
  • Sıcak tutkal
  • 3D baskılı parçalar x8 (sağlanan STL dosyaları)
  • Tel sıyırıcılar (Bu faydalı şeyleri tavsiye ederim)
  • Breadboard (bir şeyleri prototiplemek için)
  • Protoboard/Proje panosu (son montaj için)
  • Standart 3 uçlu bilgisayar güç kablosu.
  • (opsiyonel) Cep telefonu vibrasyon motoru (hazneyi çalkalamak için) (Ben bunlardan birini kullandım)
  • Bu arduino kitaplıklarını yükleyin:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Sabır.

Adım 2: Nasıl Çalışır?

ESP8266, bir NIST sunucusundan Unix zamanını alır ve bunu arduinoya iletir. Arduino daha sonra yerel gün doğumu ve gün batımını belirlemek için bu zamanı kullanır ve gece yarısından bu yana kaç dakika geçtiğini belirlemek için dahili saatini senkronize eder. Gece yarısından beri geçen bu süreyi kullanan arduino, ışıkların rengini ayarlar ve Tier 1 freeder ile aynı mekanizma olan besleyiciyi ne zaman etkinleştireceğini bilir. Yazdığım arduino kodundaki varsayılan ayarlar, ışıklar, yumuşak solmalar için saniyeye kadar kontrol edilebilen bir gündüz/gece döngüsüne ayarlanmış ve bulunduğunuz yerin gün doğumu ve gün batımı ile senkronize edilmiştir. Arduino ayrıca NIST sunucusuyla kendini yeniden senkronize etmek ve herhangi bir zamanlayıcı taşması olmadığından emin olmak için günde bir kez kendini sıfırlar.

Adım 3: ESP8266'nın Programlanması

ESP8266'nın Programlanması
ESP8266'nın Programlanması

Tamam, yani ESP8266 programlamak için bir piç.

Breadboard dostu değildir ve dişi jumper kablolarınız varsa bunları kullanmanızı tavsiye ederim. ESP8266'nız benimki gibi herhangi bir bellenim yüklenmeden geldiyse, bellenimi flaş etmeniz gerekir. Bunu yapmak için FTDI programlayıcıyı kullanın, bunun başka bir yerde nasıl yapılacağına dair birçok talimat var, ancak kolaylık olması için bir bağlantı şeması sağladım. FTDI programlayıcısının 3.3V sağladığından EMİN OLUN! 5V, ESP8266'nızı kızartır. Diyagramımda, GPI01 ve GND arasında bağlanan turuncu, yalnızca ESP8266'nın bellenimi yanıp sönerken yapılmalıdır. Modüle gerçek arduino kodunu yüklerken GPI01 bağlantısız kalmalıdır.

Ardından, ESP8266'nın gerçek kodunu yüklemeniz gerekecek. Bu sefer arduino IDE ile birlikte FTDI programlayıcıyı kullanın. Ayrıca kullanılan tüm kitaplıkları indirmeniz ve yüklemeniz gerekecektir. Kodu arduino 1.8 ile yüklemek için kullanılan ayarlar, başlangıçta yorum yapılan kısımdadır. Kodu wifi ağınız ve şifrenizle güncellediğinizden EMİN OLUN.

Adım 4: ESP8266'yı Arduino'ya bağlayın

ESP8266'yı Arduino'ya bağlayın
ESP8266'yı Arduino'ya bağlayın
ESP8266'yı Arduino'ya bağlayın
ESP8266'yı Arduino'ya bağlayın

Kod yüklendikten sonra, FTDI programlayıcısının bağlantısını kesebilir ve ESP8266'yı şemada gösterildiği gibi bağlayabilirsiniz. Dirençler, arduino'nun ESP8266'nın iletişim ve sıfırlama pinlerine 5V pompalamadığından emin olmak için voltaj bölücüler olarak kullanılır. Bu adımı hata ayıklamak için bir breadboard üzerinde yapın, daha sonra proto-board'a koyacağız.

ESP8266 tamamen prize takıldığında, güce bağlandığında mavi bir ışık yanıp söndüğünü görmelisiniz, birkaç saniye sonra internetten Unix zamanını almalı ve bunu arduino'ya göndermeli, ardından boş bir boşluk döngüsüne sahip olmalıdır () tıpkı Tier 1 besleyici gibi sıfırlanana kadar oturur.

ESP8266'nın çalıştığından emin olmak için bir sonraki adımdaki kodu arduinoya yüklemeniz ve seri monitörü açmanız gerekecektir.

Adım 5: Arduino Kodunu Yükleme ve Sorun Giderme

Arduino Kodunu Yükleme ve Sorun Giderme
Arduino Kodunu Yükleme ve Sorun Giderme

Şimdi kodu arduino nano'ya yükleyin, seri monitörü açın, yukarıdaki örnek gibi bir şey görmelisiniz. Seri monitörü açtığınızda arduino sıfırlanır, böylece ESP8266 aynı anda sıfırlanır. seri monitör, 1 Ocak 1970 gece yarısından, ESP8266'nın mevcut Unix zamanını göndermesine kadar saniyeleri saymaya başlayacaktır. Bu olduğunda şunu görmelisiniz:

Bunun çalışması 3-15 saniye sürebilir, bu yüzden sabırlı olun. Nadiren 10 saniyeden uzun sürdüğünü gördüm, ancak sorun gidermeye başlamadan önce 15 verin.

ESP8266'nız zamanı arduinoya göndermiyorsa, şu adımları deneyin:

· Her şeyin TAM olması gerektiği gibi kablolandığından emin olun

· ESP8266'ya doğru wifi'nin SSID'sini ve parolasını koyduğunuzu iki kez kontrol edin, aksi takdirde doğru bilgiyi yüklemek için FTDI programlayıcısına yeniden bağlamanız ve ardından arduino'ya yeniden kablolamanız gerekecek. (süper uzun bir SSID veya parola bazı sorunlara neden olabilir, ancak kablosuz ağımın her iki alanda da 20'den fazla karakteri var, bu nedenle çoğu ev ağı iyi durumda olmalıdır)

· Yönlendiricinizin yönetici sayfasını (yapabiliyorsanız) yalnızca ESP8266 açıkken görünen bağlı bir cihaz için kontrol edin. Bunu kontrol ederken açık kaldığından emin olmak için (arduino devre dışı bırakır) ESP8266'nın sıfırlama pimine giden kabloyu doğrudan 3.3V'a yeniden bağlayın, YÜKSEK tutmak ESP8266'yı açık tutacaktır. Kontrol ettikten sonra bunu geri aldığınızdan emin olun.

Adım 6: Arduino Kodunu Özelleştirme

ESP8266'nız bağlandığında ve arduino'ya zaman gönderdiğinde, programlanmış arduino sadece zamanı sayar ve gün doğumu ve gün batımı gibi birkaç diğer hata ayıklama bilgisini görüntüler. Bu değerlerden bazılarını arduino'nun kodunda özelleştirebiliriz, gerisi sadece orada, böylece tüm sistemde hata ayıklayabilirim.

Arduino'nun gün doğumu ve gün batımını nasıl hesapladığını daha iyi anlamak için Dusk2Dawn Kitaplığı'ndaki belgeleri okuyun. Enlem ve boylamınızı girmeniz gerekecek (konumunuzun adını değiştirirseniz, kodun her yerinde değiştirildiğinden emin olun!) Dusk2Dawn, gps koordinatlarınızı (google haritalarda bulabileceğiniz) ve yerel saati kullanır. Güneşin ne zaman doğup battığını, gece yarısından dakikalar içinde belirleyin. minfromMid değişkeni gece yarısından itibaren geçerli dakikadır ve arduinoya ne zaman ne yapacağını söylemek için gün doğumu, gün batımı, beslenme süreleri ve alacakaranlık zamanı ile karşılaştırılır. Saat diliminizi de güncellediğinizden emin olun, varsayılan değer EST'dir.

Konumunuzu belirledikten sonra, arduino'ya alacakaranlığın ne kadar sürmesini istediğinizi söylemek için alacakaranlık zamanını ayarlayın. Bu, gündüz ve gece arasındaki sürenin ne kadar süreceğini kontrol eder ve dakika olarak verilir. Varsayılan 90 dakikadır, bu nedenle RGBW ışıkları bu süre içinde gündüzden geceye veya diğer şekilde sönecektir.

Ardından, istediğiniz besleme sürelerini ayarlayın. Gerçek besleme süreleri, beslemeleri gündüz/gece ile senkronize tutmak için getTime() yönteminde ayarlanır. Bunun yerine balığınızın her gün aynı saatte beslenmesini istiyorsanız, ilgili ayarları yorumlayın ve kodun başındaki başlangıç ayarlarını kullanın. Bu saatlerin gece yarısından itibaren dakikalar içinde olduğunu unutmayın. İlk, sabit kodlanmış besleme sürelerini kullanmak, eğer besleme süresi alacakaranlık ve gün ışığı arasındaki azalmaya (gün doğumu ve gün batımı) denk gelirse, aydınlatmayı etkileyebilir. Kodun varsayılan değeri, sırasıyla gün batımı ve gün doğumu öncesi ve sonrası 15 dakikadır. Dilerseniz ek besleme süreleri eklenebilir.

Ardından, arduino'nun sıfırlamasını istediğiniz zamanı ayarlayın. Bu, hiçbir zamanlamanın taşmamasını ve saati yeniden senkronize etmemesini sağlar. Bunu gün ortasında, siz uzaktayken yapmanızı öneririm, çünkü sıfırlama işlemi ışıkların tam parlaklığa gitmesine neden olur. Gündüzleri bu balıklar için bir sorun olmayacaktır, ancak gece veya sabah/akşam ışık parlaması balığınızı rahatsız edebilir veya siz keyfini çıkarırken birkaç saniyeliğine tankın görünümünü bozabilir.

Son olarak, sahip olduğunuz şeritteki LED sayısını kontrol edin, Şeritim 60'tır, ancak ne kadar çok LED kullanırsanız kullanın, kurulum kodunda bu değeri güncellemelisiniz.

Adım 7: Aydınlatma

Aydınlatma
Aydınlatma

Henüz yapmadıysanız, LED şeridinizi bağlayın.

Güç (kırmızı) ila 5V, toprak (beyaz) toprağa, sinyal (yeşil) pim 6'ya (veya her ne ayarladıysanız). Arduino sıfırlandığında, ESP8266 zamanı arduinoya gönderene ve aydınlatma döngüsünde nerede olduğunu belirleyene kadar ışıklar tam parlaklıkta olacaktır. Işık değişimi daha şiddetli olacağından bunu akşam veya gece ayarlamak en iyisidir. Işıklar 30 saniye içinde değişmezse, arduino'yu sıfırlayın. Sıfırlama kodum çalışıyor olmalı, ancak ticari olarak bir programcı değilim, bu yüzden burada veya orada hala birkaç hata olabilir. Kodu yeniden yükledikten ve bekledikten sonra sıfırlama süresini bir dakikaya ayarlayarak sıfırlamanın çalışıp çalışmadığını test edebilirsiniz (sıfırlama saniyesi rastgeledir, bu nedenle gerçekten sıfırlama 1-2 dakika sürebilir) Aynı numarayı daha sonra da yapabilirsiniz. Besleme süresini değiştirerek servonun çalıştığından emin olmak için. Çalıştırmadan önce bu süreleri değiştirdiğinizden emin olun.

Varsayılan aydınlatma programı oldukça basittir:

Geceleri, en düşük ayarda (2/255) olan mavi hariç tüm ışıklar kapalıdır. Zaman gün doğumuna yaklaştıkça mavi, alacakaranlığın başlangıcında ulaştığı tam yoğunluğuna (255) ulaşır. Alacakaranlık sırasında, kırmızı ve yeşil yükselişten 255'e kadar yükselir. Güneş doğarken, kırmızı, mavi ve yeşilin tümü 255'tedir, ancak gün ışığı beyazdır, bu nedenle sonraki 2 dakika boyunca kırmızı, mavi ve yeşil kaybolur ve beyaz kaybolur içinde. Günün geri kalanında beyaz tam yoğunlukta, gün batımından 2 dakika öncesine kadar, sönüp yerini tekrar kırmızı, mavi ve yeşile bıraktığında. Gün batımında, aydınlatma yeniden alacakaranlığa girer, ancak bu sefer kırmızı ve yeşil tam yoğunlukta başlar ve söner, gece geldiğinde maviyi tam yoğunlukta bırakır. Buradan mavi yavaş yavaş en düşük değerine geri döner ve gece yarısı ulaşır.

Diğer aydınlatma modları için arduino taslağının sonunda başka kodlar bulunur, bu nedenle aydınlatmanın farklı şekilde solmasını sağlamak veya günün farklı saatlerinde renkleri değiştirmek için matematikle oynamaktan çekinmeyin. Matematiğin kayan formatta yapıldığını, ancak renk değerlerinin int olması gerektiğini unutmayın, bu nedenle uyguladığınız herhangi bir yeni aydınlatma matematiği ile ikisi arasında dönüşüm gereklidir.

Adım 8: Parçaları Yazdırma

Bu Katman için parçaları henüz yazdırmadıysanız, bunu yapın. Muhafaza, orta boy bir filtre ünitesiyle hemen hemen aynı boyutta ve yazdırmam bütün gecemi aldı. Parçaları temizleyin, bölme duvarı ayırıcısını oluk yukarı ve yuvarlak kenar dışarı bakacak şekilde yerleştirin. Servo, Tier 1'dekiyle aynı şekilde kurulur ve Tier 1 sistemini değiştiriyorsanız, hazne, kapak ve besleme çarkı aynıdır, bu nedenle çalışıyorlarsa bunları yeniden yazdırmanız gerekmez.

.zip klasörü, biri kullandığım orijinal SM22 servo motor için ve diğeri çok daha yaygın olan SG90 servo için olmak üzere iki set STL dosyası içerir. Parçalardan herhangi birini değiştirmek istiyorsanız/ihtiyacınız varsa, her ikisi de Fusion 360 dosyalarını içerir. SM22 STL'ler, kullandıklarım oldukları için kesinlikle birbirine uyuyor. SG90 parçalarını yazdırmadım veya test etmedim.

Malzemeler için gıdaya uygun plastik kullanmanızı tavsiye ederim. Bir ton renkte gelen ve 10 dakika tavladıktan sonra süper güçlü olan makergeeks'ten Raptor PLA kullandım. Bu, parçaları kaynatarak yapılabilir, tavlama parçaları yaklaşık% 0,3 oranında küçülteceğinden, tam olarak uymazsa sadece tekerlek için yapmanızı tavsiye ederim.

Muhafazayı yan tarafına yazdırdım (üst tarafı yana ve açık tarafı yukarı bakacak şekilde) Bu, diğer yönlere göre çok daha az destek malzemesi kullanır. Üzerinde tüm destek malzemelerini önlemek için hazne baş aşağı yazdırılabilir. Hazne kapağı da baş aşağı yazdırılmalıdır, ancak büyük kapak sağ tarafı yukarı yazdırılmalıdır.

Ayrıca muhafazanın altına destek sağlamak için bir 'son durdurma' parçası vardır. Besleyiciyi birkaç hafta yerinde bıraktıktan sonra, güç kaynağının ağırlığından sarkmaya ve bükülmeye başladığını ve bunun haznenin çarka yiyecek besleme yeteneğini etkilediğini fark ettim. Her şeyi düz tutmak için muhafazanın altına sadece 1-2 uç durdurucuyu sıcak tutkalla yapıştırın.

Adım 9: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Her şeyi bağlamak için bir protokol kullanın. Çok fazla lehim yapmak zorunda kalmamak için jumper kullandım ama en çok lehim yapacağınız yer burası. Bağlantılar aynı olduğu sürece sistem breadboard üzerinde olduğu gibi çalışacaktır. Toprak, 5V, 3.3V için güç "rayları" oluşturmak için başlık pimlerini birbirine lehimledim ve ayrıca servo ve güç dışı 3.3V sinyallerini ESP8266'ya (RX, CH_PD ve RST) giden sinyal bağlantı noktalarına lehimledim. Tüm pimleri, bileşenler üstte olacak şekilde protokolün alt tarafına doğru yönlendirdim.

Protokolü tamamladıktan sonra, onu muhafazanın üst boşluğuna yerleştirin ve servo motoru bağlayın. Aydınlatma kabloları, muhafaza kapağındaki çentikten dışarı çıkar ve güç kaynağı alt boşluğa sığar. Alt boşluk yuvarlatılmıştır ve muhafazaya elektronik aksamdan bir şekilde girmeyi başaran herhangi bir suyu boşaltmak için hafif bir eğime sahiptir. Güç kaynağının artı ve eksi uçlarını sisteme bağlayın ve yan kapağı ekleyin.

Bunu güç kaynağınız için henüz yapmadıysanız, güç kablosunun duvara takılmayan ucunu kesin ve kabloları güç kaynağının doğru terminallerine yerleştirebilmeniz için yeterince soyun. Uçlarına takabileceğiniz kıvrımlı uçlarınız varsa, bunları kullanmanızı öneririm, yoksa çıplak bakır iyi olmaz, sadece hiçbir şeyin kısa devre olmadığından emin olun! Bunun evinizin duvar elektriğine takılacağını UNUTMAYIN, GÜVENLİ OLUN VE SİSTEM FİŞE TAKILIRKEN ASLA ÇALIŞMAYIN.

Ardından, ışık şeridinin tanka eklenmesi gerekir. Tankınızın kapağını çıkarın ve tamamen kurulayın. Işıkları eklemeden önce kapağın yüzeyinin temiz ve kuru olduğundan emin olun. Aldığım şeridin yapışkan bir arkası var, bu ışık şeridini sabitlemek için işe yaramayacak ama bunları kapağın kenarına (veya nereye yerleştirirseniz yerleştirin) yerleştirmeye çalışacak. Tank kapağım şeridim için doğru boyuttaydı, bu yüzden herhangi bir kablo uzatmak zorunda kalmadım. Kapağı tekrar tankın üzerine koymadan önce, açıkta kalan tüm kabloların su geçirmez malzemelerle kaplandığından emin olun. Uçları kapatmak için sıcak tutkal kullandım ama bu uzun vadede işe yaramayabilir. Işıklar istediğiniz gibi yerleştirildikten sonra, onları yerine yapıştırın. LED şerit yukarı kalktığı için köşelerde ekstra yapıştırıcı kullanmak zorunda kaldım. Kapağı tankın üzerine geri koymadan önce yapıştırıcının birkaç dakika kurumasını bekleyin, sadece hiçbir şeyin damlamadığından emin olun. Kapak tekrar açıldığında kabloları arduinoya bağlayın.

Besleyici tertibatı, Katman 1 besleyici ile tamamen aynıdır. Servo, kendisine yapıştırılmış besleme tekerleği ile boşluğuna sığar. Besleme çarkının cebi, servo 0 konumundayken hazneyi göstermelidir (ve 180 konumunda depoya doğru dönmelidir). Opsiyonel vibrasyon motorunu kullanıyorsanız, ona bazı kurşun teller lehimleyin ve hazneye yerleştirin, servo boşluğunda bunun için bir boşluk var. Motorun ana kablolarını servo kablolarıyla aynı yoldan gönderin ve bunları toprağa ve motorun arduino üzerindeki pimine bağlayın. Hazneyi tabana sıcak yapıştırın.

Her şey bağlandıktan sonra, güç kaynağını duvara takabilirsiniz. Arduino, başlatma sırasından geçmeli ve zamanı geldiğinde ışıklar değişecektir. Değilse, zamanı alana kadar kartı sıfırlayın. Muhafaza kapağını yerine sıcak yapıştırdım ancak yan kapağı yapıştırmadan bıraktım, böylece sıfırlamak veya yeniden programlamak için arduinoya erişebildim.

Tebrikler! Tier 2 balık besleyiciniz hazır! Güzel ışıklandırmaya hayret edin ve bu, siz yokken balığınızı besleme yeteneğidir! Her şeyin düzgün çalıştığından ve aslında balıklarınızın beslendiğinden emin olmak için önümüzdeki birkaç gün boyunca sistemi izlediğinizden emin olun.

Adım 10: İlk Başta Dikkat Edilmesi Gerekenler:

İlk Başta Dikkat Edilmesi Gerekenler
İlk Başta Dikkat Edilmesi Gerekenler
İlk Başta Dikkat Edilmesi Gerekenler
İlk Başta Dikkat Edilmesi Gerekenler
İlk Başta Dikkat Edilmesi Gerekenler
İlk Başta Dikkat Edilmesi Gerekenler

Benimkini ilk kurduğumda, servoyu yanlışlıkla yanlış sinyal pimine bağladım, bu yüzden hatayı fark edene kadar balıklar birkaç gün beslenmedi (bir sonraki hataya yanıt olarak geceleri onları manuel olarak besliyordum). Balığınızın beslendiğini doğrulamak için, yemleme zamanlarını en olası olduğunuz zamana ayarlamayı deneyin.

İzlenecek başka bir hata sıfırlamadır. Örneğin, gün batımından sonra eve varırsanız ve tankınız hala gündüz aydınlatmasındaysa, sıfırlama işlevi başarısız olmuş ve arduino ESP8266'dan hiç zaman alamamış olabilir. Bu aynı zamanda balıklarınızın sıfırlama zamanından beri beslenmediği anlamına gelir, bu nedenle muhtemelen arduino üzerindeki sıfırlama düğmesine basarken onları kendiniz beslemelisiniz. Bunu elimine ettiğime %99 eminim, ancak kodlama benim mesleğim değil, bu yüzden buna dikkat ettiğinizden emin olun.

Ayrıca, haznedeki yiyecekleri haftada bir veya iki haftada bir kontrol ettiğinizden, gerektiğinde tekrar doldurduğunuzdan ve hiçbir şeyin kötüye gitmediğinden emin olun.

Tatile gidiyorsanız, ayrılmadan önce su değişimi ve diğer temel tank bakımlarını yaptığınızdan emin olun. Yemlik, yalnızca çok uzun süre gitmezseniz, yem ve aydınlatmanın balığınızın sonu olmamasını sağlar. Bir daha asla tatil besleyicileri kullanmak zorunda kalmamalısınız!

Önerilen: