İçindekiler:

Otomatik İzlemeli Su Püskürtücü: 9 Adım
Otomatik İzlemeli Su Püskürtücü: 9 Adım

Video: Otomatik İzlemeli Su Püskürtücü: 9 Adım

Video: Otomatik İzlemeli Su Püskürtücü: 9 Adım
Video: Şerit Takip Sistemi Kaza Anı 🚘 Lane Tracking System Accident ⚡️🆘⚠️⛔️ 2024, Kasım
Anonim
Otomatik izlemeli Su Püskürtücü
Otomatik izlemeli Su Püskürtücü

Gül yiyen geyik, açgözlü yaratıkları caydırmak için hedefi takip eden bir su püskürtücüsü yapmaya beni motive etti… Bu su püskürtücü, bir servoyu hedeflemek ve hedefe kısa süreli su patlamalarını tetiklemek için video tabanlı hareket algılama kullanır. Yalnızca alınan hedef birkaç saniye sabit kaldıktan sonra ateş eder (gecikme kodda ayarlanabilir). Geyiklerin geçip gitmesi umurumda değil ama bir şeyler atıştırmak için dururlarsa, sloosh!

İşte su püskürtücüyü test ettiğim bir video:

Su püskürtücü, ne yaptığını izlemek için ağınızdaki herhangi bir bilgisayardan (wi-fi/VNC aracılığıyla) uzaktan bağlanabilen bağımsız bir kutudur. Her tetiklendiğinde bir fotoğraf çeker, böylece daha sonra neyin patladığını görebilirsiniz.

Bu gündüz/gece hedef izlemeli su püskürtücüyü oluşturmak için bir Raspberry Pi, NoIR kamera, IR aydınlatıcı, standart lineer servo ve bir su valfi kullandım. Kod Python'da yazılmıştır ve Adrian Rosebrock'un cv2 görüntü işleme kod örneklerinden büyük ölçüde ödünç alınmıştır. Yazısını şurada görebilirsiniz:

www.pyimagesearch.com/2015/06/01/home-surv…

Nispeten büyük, yer tabanlı hedeflerin (geyik) peşinden gittiğim için sorunum biraz basitleştirilmiş. Sadece yatay hedeflemeye ihtiyacım var, böylece sadece bir servo kullanarak kurtulabilirim. Geyiğin hareketsiz durmasını beklemek birçok yanlış tetikleyiciyi ortadan kaldırmama yardımcı oluyor. Bu benim rev-0 denemem ve bir tane daha yaparsam değiştireceğim birkaç şey buldum. Bunları aşağıdaki ayrıntılı yazımda not ettim.

Adım 1: Kod

Su püskürtücü, işleme için Raspberry Pi 3'ü kullanır. Video çekmek için, gece videosu için bir IR aydınlatıcı ile birlikte bir NoIR Raspberry Pi kamerası kullanılır. OpenCV/cv2 Python paketi, görüntü bilgilerini yakalamak ve işlemek ve hedef koordinatları hesaplamak için kullanılır. Pigpio kitaplığı, kararlı servo çalışması için gpio'yu kontrol etmek için kullanılır. Normal RPi. GPIO paketini kullanmak titrek bir servo ile sonuçlandı. NOT: Pigpio kitaplığını kullanırken pigpio arka plan programını çalıştırmanız gerekir. Bunu, pigpio lib ve Raspberry Pi kamera arayüzü için Pi'nizin /etc/rc.local başlangıç dosyasına ekleyin:

/etc/rc.local# /dev/video0'ı yerleşik Raspberry Pi'ye bağlanacak şekilde ayarlayın modprobe bcm2835-v4l2# Raspberry Pi IO kontrol kitaplığı için pigpio arka plan programını başlatınpigpiod

Daha fazla ayrıntı için https://pypi.python.org/pypi/pigpi adresine bakın.

Kaynak kodun adı: water_blaster.py ve aşağıda eklenmiştir.

Feragatname: Python kodlamasında yeniyim, bu yüzden onu Python kodlama stilinin harika bir modeli olarak görmeyin!

Temel algoritma aşağıdaki gibidir:

  • Bir başlangıç video referans çerçevesi alın. Bu, hareketi algılamak için karşılaştırmak için kullanılacaktır.
  • Başka bir çerçeve al.
  • Çerçeveyi gri skalaya dönüştürün, boyutlandırın, bulanıklaştırın.
  • Referans çerçevesinden farkı hesaplayın
  • Küçük farkları filtreleyin, en büyük farkın koordinatlarını alın.
  • Bir zamanlayıcı ayarlayın. Hedef koordinatı birkaç saniye değişmezse, çekmek üzere olduğumuz şeyin bir resmini çekin ve su vanasını bir su patlaması için tetikleyin. Bir "av tüfeği" patlaması için servoyu birkaç derece ileri geri hareket ettirin.
  • Üç tetikleyiciyi çok hızlı bir şekilde alırsak, çekimi devre dışı bırakın, biraz duraklayın, ardından yeni açılan bir gölgede veya sundurma ışığında çekim yapıyor olabileceğimiz için referans çerçevesini güncelleyin…
  • Birkaç dakikada bir, düşük frekans değişikliklerini hesaba katmak için referans çerçevesini güncelleyin (güneşin doğuşu/ayarlanması, bulutlu havanın içeri girmesi vb.)

Ben sadece yatay bir hedefleme mekanizması kullanıyorum ama EBay'de birçok pan/tilt servo montajı mevcut ve daha hassas hedefleme istiyorsanız, dikey hedeflemeyi kontrol etmek için başka bir servo eklemek kolay olurdu.

Raspberry Pi'yi bir VNC sunucusu olarak çalışacak şekilde kurdum, ardından programı başlatmak ve videoyu ve günlükleri izlemek için dizüstü bilgisayarımdan VNC aracılığıyla bağlandım. water_blaster.py dosyasını sakladığınız dizine cd atın ve şunu yazarak çalıştırın:

./python su_blaster.py

Bir video monitör penceresi açacak, "./log_[date]_[time] adlı bir günlük dosyası başlatacak ve-j.webp

Raspberry Pi'nizde VNC kurulumu hakkında bazı notlar:

Raspberry Pi'yi ilk kurduğumda, ayarları yapmak için harici bir monitör/klavye/fare kullandım. Orada RasPi yapılandırmasında VNC sunucusunu etkinleştirdim (Raspberry Logo / Preferences / Raspberry Pi Configuration/Interfaces/ Check VNC seçeneği). Daha sonra, başlatıldığında, VNC istemcisi (varsayılan "pi" kullanıcısı ile aynı kimlik bilgileriyle) aracılığıyla:0 ekranına bağlanmanızı sağlar.

Başsız modda varsayılan olarak çok küçük çözünürlüklü bir ekrana ayarlanır (herhangi bir görüntü algılamadığından), daha büyük bir çözünürlüğe zorlamak için bunu /boot/config.txt dosyasına ekleyin ve yeniden başlatın:

# Ekranınız varsa kullanın# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 w/ 60Hz#hdmi_mode=42# 1356x768 w/ 60Hzhdmi_mode=39

İşte biraz daha bilgi:

2. Adım: Elektronik

Raspberry Pi 3 gpio'yu ayrı transistör tamponları (küçük bir ön kart üzerine kurulu) aracılığıyla bir servo, su valfi ve IR aydınlatıcıyı sürmek için kullanırken su püskürtücü elektroniği gereksinimleri minimum düzeydedir. Standart bir NoIR kamera doğrudan Raspberry Pi'ye takılır.

Şematik adı: water_blaster_schematic.pdf ve aşağıda eklenmiştir.

Raspberry Pi için 5v/2.5A özel besleme ve IR aydınlatıcıyı ve su vanasını sürmek için 12v/1A besleme kullandım. 12v kaynağı ayrıca 5v servoya güç sağlamak için bir 5v regülatörü çalıştırır. Bu, "gürültülü" motor kontrol gücünü Raspberry Pi 5v kaynağından izole etmek için yapıldı. 12v/1A kaynağının tam sınırında olduğu ortaya çıktı (aslında fanı eklediğimde biraz fazla). Kod, akım çekişini aralık dahilinde tutmak için su vanası rölesine güç vermeden önce IR aydınlatıcıyı kapatır… 1.5A'lık bir besleme kullanmanız daha iyi olur. Tüm güç kaynaklarının toprak terminallerini birbirine bağladığınızdan emin olun.

Kamera modülü, Raspberry Pi'ye doğrudan bağlanan standart bir NoIR sürümüdür. Bu, IR filtresi zaten çıkarılmış ve gece videosu çekmek için bir IR aydınlatıcı ile kullanılmasını sağlayan bir Raspberry Pi kamerasıdır.

Kullanılan servo standart boyutlu 5v lineer servo olup 3-4 kg-cm torka sahiptir.

IR aydınlatıcı, EBay'de yaklaşık 4 dolara bulduğum düşük maliyetli 48 ledli bir halkaydı. Süper güçlü değil ve sadece yaklaşık 15 fit kadar aydınlatabilir. Fazladan bütçeniz varsa, daha güçlü bir aydınlatıcı almak iyi bir gelişme olacaktır.

gpio23'e bir "hata ayıklama anahtarı" ekledim. Kod, anahtarın durumunu kontrol eder ve basılırsa kuru yangın testi için su vanası rölesini devre dışı bırakır. Bu anahtarla daha fazlasını yapacağımı düşündüm ama aslında hiç kullanmadım. Onu ve onu arayan kodu kaldırırdım…

Adım 3: İnşaat: Kamera ve IR Aydınlatıcı

İnşaat: Kamera ve IR Aydınlatıcı
İnşaat: Kamera ve IR Aydınlatıcı

Muhafaza olarak bir Harbour Freight plastik cephane kutusu kullandım. Esas olarak, çok fazla su spreyi/akıntısı kaçınılmaz olduğu için suya dayanıklı bir şeye ihtiyacım vardı. Çok sayıda delik/kesik var, ancak bunlar tentelerle, şeffaf plastikle kapatılmış veya su dökmek için çıkıntıların altında delinmiş. Geriye dönüp baktığımda, yüksek güçlü bileşenlere dahili olarak bağlı soğutucuları olan metal bir kutu kullanmalıydım. Bunu yaparak fan eklemekten kaçınabileceğimi düşünüyorum. Plastik kutu çok yalıtkandı ve iç sıcaklığın çok fazla yükselmesine izin verdi.

Sonunda kameranın dışarıyı görebilmesi için küçük bir pencere kesildi ve IR aydınlatıcı, etrafta bıraktığım eski bir plastik lens kutusunun içine monte edildi.

Adım 4: İnşaat: Su Boruları

İnşaat: Su Boruları
İnşaat: Su Boruları
İnşaat: Su Boruları
İnşaat: Su Boruları

Su girişi, ¼” ID x 3/8” OD vinil boruya bağlı 12v su vanasına boru ile bağlanır. Bu da ¼” tırtıklı boruya ¾ slip fit PVC konektöre bağlanır ve su akışı için delinmiş 1/16” delikli ¾” PVC su başlığına yapıştırılır. Su vanası rölesini hava şartlarından uzak tutmak istedim, böylece kutunun içine monte edildi. Sızıntı yapma tehlikesi var ama kutunun altına tahliye delikleri açtım ve elektronik aksama olası su hasarı olasılığını en aza indirmek için elektroniği yükseğe monte ettim. Estetik açıdan daha az hoş, ancak daha güvenli bir plan, valfi dış tarafa monte etmek ve 12v röle kablolarını içeride çalıştırmak olacaktır. Servo üzerindeki şeffaf plastik disk, hortum ucunu monte etmenin uygun bir yoluydu ve suyun servo üzerine damlamasını engelliyor. Kutu çok fazla ısındığı için fan sonradan akla geldi. Üzerine su damlamasın diye küçük bir tente yaptım.

Adım 5: İnşaat: Hedefleme Servosu

İnşaat: Hedefleme Servo
İnşaat: Hedefleme Servo

Kutunun üst kısmına bir delik açılmıştır ve nişan alma servosu, suyu dışarıda tutmak için silikonla monte edilmiş ve kapatılmıştır.

Adım 6: İnşaat: Güç Kaynaklarının, Fanın, Raspberry Pi'nin ve Proto-board'un Montajı

Yapı: Güç Kaynakları, Fan, Raspberry Pi ve Proto-board Montajı
Yapı: Güç Kaynakları, Fan, Raspberry Pi ve Proto-board Montajı

İki güç kaynağı (5v ve 12v), kutunun yanından çıkan tek bir güç kablosuna bağlanmıştır. Raspberry Pi ve bir proto kartı, kutunun üst kısmına yakın bir yere monte edilmiştir. Altta açılan tahliye deliklerine ve üst kenar boyunca açılan havalandırma deliklerine dikkat edin. Fan, Raspberry Pi'nin karşısına monte edilmiştir. Raspberry Pi'yi resmi bir "sudo kapatma şimdi" komutu olmadan kapatmayı teşvik etmek istemediğim için açma/kapama düğmesi yok (yani gücün çok kolay kapatılmasını istemiyorum).

Adım 7: İnşaat: Proto Panosu

İnşaat: Proto Kurulu
İnşaat: Proto Kurulu

Proto kartı bir 5v regülatör, filtre kapağı, güç transistörleri (servoyu ve su vanasını çalıştıran) ve bir hata ayıklama anahtarı içerir.

Adım 8: İnşaat: Raspberry Pi Kamera

İnşaat: Ahududu Pi Kamera
İnşaat: Ahududu Pi Kamera

Raspberry Pi kamerası, şerit kablo aracılığıyla doğrudan Raspberry Pi'ye bağlanır ve kutunun önündeki görüntüleme deliğini kapatan şeffaf plastik plaka üzerine monte edilir.

Adım 9: Parça Listesi

Proje yaklaşık 120 dolara mal oldu. Projenin maliyetinin büyük kısmını Raspberry Pi, kamera, servo ve güç kaynakları oluşturuyor. Parçaların çoğunu EBay veya Amazon'da ve sıhhi tesisat parçalarını yerel hırdavatçıda buldum.

  • Ahududu Pi 3 (Amazon) 38 $
  • NoIR Kamera (EBay) 30 $
  • 5v Analog Servo (4kg-cm tork) (EBay) $10
  • 5v/2.4A Duvar Güç Kaynağı (EBay) 8 $
  • 12v ½” Su Vanası (EBay) $5
  • Boru, Boru Bağlantı Elemanları (Osh) $5
  • Plastik Cephane Kutusu (Liman Navlun) $5
  • 12v/1.5A Duvar Güç Kaynağı (EBay) $5
  • IR Aydınlatıcı (EBay) $4
  • Çeşitli Bileşenler (Dirençler, Anahtarlar, Diyot) $2
  • CPU Fanı (EBay) 2 $
  • Proto Board, Ayırıcılar, Vidalar (EBay) $2
  • (2) Güç Transistörleri (2n5296) (EBay) $1
  • 5v Regülatör (LM7805) (EBay) $1
  • Şeffaf Plastik 3/32” (Tap Plastics Çeşitli Çöp Kutusu) $1
  • Güç Kablosu (Oş) $1

Eşya aldığım mağazalar/siteler:

  • Alice1101983 EBay Sitesi:
  • 2bevoque EBay Sitesi:
  • Liman Taşımacılığı
  • Meyve Bahçesi Tedarik Donanımı
  • Amazon
  • Dokunun Plastikler

Önerilen: