Cuprins:

Auto-tracking Water Blaster: 9 pași
Auto-tracking Water Blaster: 9 pași
Anonim
Auto-urmărire Water Blaster
Auto-urmărire Water Blaster

Căprioarele care mănâncă trandafiri m-au motivat să construiesc un blaster de apă care urmărește ținta pentru a ajuta la descurajarea creaturilor vorace … Acest blaster de apă folosește detectarea mișcării pe bază de video pentru a viza un servo și a declanșa scurte explozii de apă către țintă. Acesta trage numai după ce o țintă dobândită este staționară timp de câteva secunde (întârzierea poate fi ajustată în cod). Nu-mi pasă dacă căprioarele sunt doar pe jos, dar dacă se opresc pentru o gustare, sploosh!

Iată un videoclip cu mine care testează blasterul de apă:

Water blaster-ul este o cutie autonomă care poate fi conectată de la distanță (prin Wi-Fi / VNC) de pe orice computer din rețeaua dvs. pentru a monitoriza ceea ce face. Face o fotografie de fiecare dată când este declanșată, astfel încât să puteți vedea mai târziu ce se explodează.

Am folosit un Raspberry Pi, o cameră NoIR, un iluminator IR, un servo liniar standard și o supapă de apă pentru a crea acest blaster de apă zi / noapte, care urmărește ținta. Codul este scris în Python și împrumută mult din exemplele de cod de procesare a imaginilor cv2 ale lui Adrian Rosebrock. Puteți vedea cum scrie la:

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

Întrucât urmăresc ținte relativ mari, de la sol (cerbi), problema mea este oarecum simplificată. Am nevoie doar de vizare orizontală, astfel încât să reușesc să folosesc un singur servo. Așteptarea cerbului să stea în picioare mă ajută să elimin o mulțime de factori declanșatori falși. Aceasta este încercarea mea de rev-0 și am găsit câteva lucruri pe care le-aș modifica dacă aș construi alta. Am notat aceste lucruri în redactarea detaliată care urmează.

Pasul 1: Codul

Blasterul de apă folosește Raspberry Pi 3 pentru procesare. Pentru captarea video, o cameră NoIR Raspberry Pi este utilizată împreună cu un iluminator IR pentru video de noapte. Pachetul OpenCV / cv2 Python este utilizat pentru a captura și procesa informații despre imagine și pentru a calcula coordonatele țintă. Biblioteca pigpio este utilizată pentru a controla gpio pentru o operare stabilă a servo-ului. Utilizarea pachetului obișnuit RPi. GPIO a dus la un servo tremurat. NOTĂ: Când utilizați biblioteca pigpio, trebuie să rulați demonul pigpio. Adăugați acest lucru la fișierul de pornire /etc/rc.local al lui Pi pentru pigpio lib și interfața camerei Raspberry Pi:

/etc/rc.local# Configurați / dev / video0 pentru a vă conecta la Raspberry Pi, interfață integrată a camerei, modprobe bcm2835-v4l2 # Porniți daemonul pigpio pentru biblioteca de control Raspberry Pi IO

Consultați https://pypi.python.org/pypi/pigpi pentru mai multe detalii.

Codul sursă se numește: water_blaster.py și este atașat mai jos.

Declinare de responsabilitate: Sunt nou în codificarea Python, așa că nu o tratați ca pe un model grozav de stil de codare Python!

Algoritmul de bază este după cum urmează:

  • Prindeți un cadru de referință video inițial. Acesta va fi folosit pentru a compara împotriva pentru a detecta mișcarea.
  • Apucați un alt cadru.
  • Convertiți cadrul în scară de gri, dimensionați-l, estompați-l.
  • Calculați diferența față de cadrul de referință
  • Filtrează diferențele mici, obține coordonatele celei mai mari diferențe.
  • Setați un cronometru. Dacă coordonata țintă nu se schimbă timp de câteva secunde, atunci faceți o fotografie a ceea ce urmează să tragem și declanșați supapa de apă pentru o explozie de apă. Măturați servo-ul înainte și înapoi cu câteva grade pentru o explozie de „pușcă”.
  • Dacă primim trei declanșatoare prea repede, dezactivăm fotografierea, întrerupem puțin, apoi actualizăm cadrul de referință, deoarece putem trage la o lumină de umbră sau verandă care tocmai a fost aprinsă …
  • La fiecare câteva minute actualizați cadrul de referință pentru a ține cont de schimbările de frecvență joasă (răsăritul / apusul soarelui, mutarea acoperișului etc.)

Folosesc doar un mecanism de vizare orizontală, dar multe servomotoare pan / tilt sunt disponibile pe eBay și ar fi ușor să adăugați un alt servo pentru controlul vizării verticale dacă doriți o direcționare mai precisă.

Am configurat Raspberry Pi pentru a rula ca un server VNC, apoi mă conectez la acesta prin VNC de pe laptopul meu pentru a porni programul și a monitoriza videoclipurile și jurnalele. cd în directorul în care stocați water_blaster.py și îl rulați tastând:

./python water_blaster.py

Se va deschide o fereastră de monitorizare video, va începe un fișier jurnal numit „./log_[date[_[time] și va crea un subdirector numit„ trigger_pictures”unde sunt stocate fișierele-j.webp

Iată câteva note despre configurarea VNC pe Raspberry Pi:

Prima dată când am configurat Raspberry Pi, am folosit un monitor extern / tastatură / mouse pentru a configura lucrurile. Acolo am activat serverul VNC la configurația RasPi (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). Apoi, când pornește, vă permite să vă conectați la afișajul său: 0 prin client VNC (cu aceleași acreditări ca utilizatorul implicit „pi”).

În modul fără cap este implicit un afișaj cu rezoluție foarte mică (deoarece nu detectează niciun afișaj), pentru al forța la o rezoluție mai mare, adăugați acest lucru la /boot/config.txt și reporniți:

# Utilizați dacă aveți afișaj # hdmi_ignore_edid = 0xa5000080hdmi_group = 2 # 1400x1050 w / 60Hz # hdmi_mode = 42 # 1356x768 w / 60Hzhdmi_mode = 39

Iată câteva informații suplimentare:

Pasul 2: Electronica

Cerințele electronice pentru blasterul de apă sunt minime folosind Raspberry Pi 3 gpio pentru a conduce un servo, o supapă de apă și un iluminator IR prin tampoane de tranzistor discrete (construite pe o placă proto mică). O cameră NoIR standard se conectează direct la Raspberry Pi.

Numele schemei este: water_blaster_schematic.pdf și este atașat mai jos.

Am folosit o sursă dedicată de 5v / 2,5A pentru Raspberry Pi și o sursă de 12v / 1A pentru acționarea iluminatorului IR și a supapei de apă. Alimentarea de 12v acționează, de asemenea, un regulator de 5v pentru a furniza energie servo-ului de 5v. Acest lucru a fost făcut pentru a menține puterea de control a motorului „zgomotoasă” izolată de sursa de alimentare Raspberry Pi 5v. Alimentarea de 12v / 1A s-a dovedit a fi chiar la limita sa (de fapt puțin mai mare odată ce am adăugat ventilatorul). Codul oprește iluminatorul IR înainte de a alimenta releul supapei de apă pentru a menține consumul de curent în intervalul … Ar fi mai bine dacă ați utiliza o sursă de alimentare de 1,5 A. Asigurați-vă că conectați terminalele de masă ale tuturor surselor de alimentare împreună.

Modulul camerei este o versiune standard NoIR care se conectează direct la Raspberry Pi. Este o camă Raspberry Pi cu filtrul IR deja eliminat, permițând utilizarea acestuia cu un iluminator IR pentru înregistrarea videoclipurilor nocturne.

Servo-ul utilizat este un servo liniar de 5v de dimensiuni standard, cu cuplu de 3-4 kg-cm.

Iluminatorul IR a fost un inel cu 48 de leduri cu cost redus pe care l-am găsit pe eBay pentru aproximativ 4 USD. Nu este foarte puternic și poate lumina doar până la aproximativ 15 metri. Dacă aveți un buget suplimentar, obținerea unui iluminator mai puternic ar fi o bună îmbunătățire.

Am adăugat un „debug-switch” la gpio23. Codul verifică starea comutatorului și, dacă este apăsat, va dezactiva releul supapei de apă pentru testarea la foc uscat. M-am gândit să fac mai multe cu acel comutator, dar nu am ajuns să-l folosesc deloc. L-aș elimina și codul care îl caută …

Pasul 3: Construcție: aparat de fotografiat și iluminator IR

Construcție: cameră și iluminator IR
Construcție: cameră și iluminator IR

Am folosit o cutie de muniție din plastic Harbor Freight ca o incintă. În principal, aveam nevoie de ceva rezistent la apă, deoarece o mulțime de apă pulverizată / scurgeri este inevitabilă. Există o mulțime de găuri / decupaje, dar sunt acoperite de copertine, plastic transparent sau sunt găurite sub consoluri pentru a vărsa apă. În spate, ar fi trebuit să folosesc o cutie metalică cu radiatoare atașate intern la componentele de mare putere. Făcând asta, cred că aș fi putut evita adăugarea ventilatorului. Cutia de plastic era prea izolantă și permitea creșterii prea mari a temperaturii interioare.

O mică fereastră a fost tăiată la capăt pentru ca camera să poată fi văzută, iar iluminatorul IR a fost montat într-o carcasă veche de lentile din plastic pe care o aveam așezată în jur.

Pasul 4: Construcție: conducte de apă

Construcție: conducte de apă
Construcție: conducte de apă
Construcție: conducte de apă
Construcție: conducte de apă

Admisia de apă este conductată într-o supapă de apă de 12v care este conectată la un tub de vinil de Ø”ID x 3/8” OD. Acest lucru, la rândul său, este conectat la o țeavă ghimpată de ¼”la conectorul fit de fixare ¾ și lipit la un capac de apă din PVC de ¾” cu o gaură de 1/16”forată pentru fluxul de apă. Am vrut să mențin releul supapei de apă departe de intemperii, astfel încât să fie montat în cutie. Există pericolul că pot avea o scurgere, dar am făcut găuri de scurgere în partea de jos a cutiei și am montat dispozitivele electronice la înălțime pentru a minimiza șansele de deteriorare potențială a apei electronice, dacă se întâmplă acest lucru. Un plan mai puțin estetic, dar mai sigur, ar fi montarea supapei pe exterior și rularea firelor releului de 12v în interior. Discul din plastic transparent peste servo a fost un mod convenabil de a monta capătul furtunului și împiedică scurgerea apei în jos pe servo. Ventilatorul a fost un gând ulterior, deoarece cutia se încălzea prea mult. Am construit o mică copertină peste ea pentru a împiedica apa să se strecoare.

Pasul 5: Construcție: Servo de vizare

Construcție: Servo de vizare
Construcție: Servo de vizare

O gaură este tăiată în partea superioară a cutiei, iar servo-țintire este montat și sigilat cu siliciu pentru a menține apa.

Pasul 6: Construcție: Montarea surselor de alimentare, a ventilatorului, a Raspberry Pi și a Proto-plăcii

Construcție: Montarea surselor de alimentare, a ventilatorului, a Raspberry Pi și a proto-plăcii
Construcție: Montarea surselor de alimentare, a ventilatorului, a Raspberry Pi și a proto-plăcii

Cele două surse de alimentare (5v și 12v) sunt conectate la un singur cablu de alimentare care iese din partea laterală a cutiei. Raspberry Pi și o placă proto sunt montate pe partea laterală a cutiei, lângă partea superioară. Observați găurile de scurgere găurite în partea inferioară și găurile de aerisire găurite de-a lungul marginii superioare. Ventilatorul este montat vizavi de Raspberry Pi. Nu există comutator de pornire / oprire, deoarece nu vreau să încurajez oprirea Raspberry Pi fără o comandă oficială „sudo shutdown now” (adică nu doresc ca oprirea să fie prea ușoară).

Pasul 7: Construcție: placa Proto

Construcție: consiliul Proto
Construcție: consiliul Proto

Placa proto conține un regulator de 5V, capac de filtrare, tranzistoare de putere (care acționează servo și supapa de apă) și un comutator de depanare.

Pasul 8: Construcție: cameră Raspberry Pi

Construcție: cameră Raspberry Pi
Construcție: cameră Raspberry Pi

Camera Raspberry Pi se conectează direct la Raspberry Pi prin cablul cu bandă și este montată pe placa de plastic transparentă care acoperă decupajul de vizualizare din partea din față a cutiei.

Pasul 9: Lista pieselor

Proiectul a ajuns să coste aproximativ 120 de dolari. Cea mai mare parte a costului proiectului este Raspberry Pi, cameră, servo și surse de alimentare. Am găsit cele mai multe piese de pe eBay sau Amazon și piesele de instalații sanitare la magazinul de hardware local.

  • Raspberry Pi 3 (Amazon) 38 USD
  • Camera NoIR (eBay) 30 USD
  • Servo analogic 5v (cuplu de 4 kg-cm) (eBay) 10 USD
  • Sursă de alimentare de perete 5v / 2.4A (eBay) 8 USD
  • Supapă de apă de 12v ½”(EBay) 5 USD
  • Tuburi, cuplaje pentru țevi (Osh) 5 USD
  • Cutie de muniție din plastic (transport maritim) 5 USD
  • Sursă de alimentare de perete 12v / 1,5A (eBay) 5 USD
  • Iluminator IR (eBay) 4 USD
  • Diverse Componente (rezistențe, comutatoare, diodă) 2 USD
  • Ventilator CPU (eBay) 2 USD
  • Proto Board, Standoffs, Șuruburi (eBay) 2 USD
  • (2) Tranzistori de putere (2n5296) (EBay) 1 $
  • Regulator 5v (LM7805) (EBay) 1 USD
  • Plastic transparent 3/32”(Coș de plastic divers pentru robinet) 1 $
  • Cablu de alimentare (Osh) 1 $

Magazine / site-uri de unde am cumpărat articole:

  • Alice1101983 Site eBay:
  • 2bevoque EBay Site:
  • Transport maritim
  • Hardware pentru livrare de livadă
  • Amazon
  • Atingeți Plastic

Recomandat: