Inhoudsopgave:

Waterblaster automatisch volgen - Ajarnpa
Waterblaster automatisch volgen - Ajarnpa

Video: Waterblaster automatisch volgen - Ajarnpa

Video: Waterblaster automatisch volgen - Ajarnpa
Video: Elektrische Wasserpistole-Große Kapazität 2024, Juli-
Anonim
Auto-tracking Waterblaster
Auto-tracking Waterblaster

Rozenetende herten motiveerden me om een waterblaster voor het volgen van doelen te bouwen om de vraatzuchtige beestjes af te schrikken… Deze waterblaster gebruikt op video gebaseerde bewegingsdetectie om een servo te richten en korte waterstoten op het doelwit te veroorzaken. Het schiet pas nadat een verworven doelwit een paar seconden stilstaat (de vertraging kan in de code worden aangepast). Het maakt me niet uit of de herten gewoon voorbij lopen, maar als ze stoppen voor een hapje, splof!

Hier is een video waarin ik de waterblaster test:

De waterblaster is een stand-alone box die op afstand kan worden aangesloten (via wifi/VNC) vanaf elke computer in uw netwerk om te controleren wat hij doet. Elke keer dat het wordt geactiveerd, wordt een foto gemaakt, zodat u later kunt zien wat er werd gestraald.

Ik heb een Raspberry Pi, NoIR-cam, IR-illuminator, standaard lineaire servo en een waterklep gebruikt om deze dag/nacht-waterblaster voor het volgen van doelen te maken. De code is geschreven in Python en leent veel van Adrian Rosebrocks cv2 beeldverwerkingscodevoorbeelden. Je kunt zijn schrijven zien op:

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

Omdat ik achter relatief grote, op de grond gebaseerde doelen (herten) aanga, is mijn probleem enigszins vereenvoudigd. Ik heb alleen horizontaal richten nodig, dus ik kan wegkomen met slechts één servo. Wachten tot het hert stilstaat, helpt me om veel valse triggers te elimineren. Dit is mijn rev-0-poging en ik heb een paar dingen gevonden die ik zou aanpassen als ik er nog een zou bouwen. Ik heb deze dingen genoteerd in de gedetailleerde beschrijving die volgt.

Stap 1: De code

De waterblaster gebruikt de Raspberry Pi 3 voor de verwerking. Voor het vastleggen van video wordt een NoIR Raspberry Pi-cam gebruikt samen met een IR-illuminator voor nachtvideo. Het OpenCV/cv2 Python-pakket wordt gebruikt om beeldinformatie vast te leggen en te verwerken en om doelcoördinaten te berekenen. De pigpio-bibliotheek wordt gebruikt om de gpio te besturen voor een stabiele servowerking. Het gebruik van het reguliere RPi. GPIO-pakket resulteerde in een wankele servo. OPMERKING: Als u de pigpio-bibliotheek gebruikt, moet u de pigpio-daemon uitvoeren. Voeg dit toe aan je Pi's /etc/rc.local opstartbestand voor de pigpio lib en de Raspberry Pi camera-interface:

/etc/rc.local# Stel /dev/video0 in om te linken naar Raspberry Pi ingebouwde camera interfacemodprobe bcm2835-v4l2# Start de pigpio-daemon voor de Raspberry Pi IO-besturingsbibliotheekpigpiod

Zie https://pypi.python.org/pypi/pigpi voor meer details.

De broncode heet: water_blaster.py en is hieronder bijgevoegd.

Disclaimer: ik ben nieuw in Python-codering, dus behandel het niet als een geweldig model van Python-coderingsstijl!

Het basisalgoritme is als volgt:

  • Pak een eerste videoreferentieframe. Dit zal worden gebruikt om te vergelijken met het detecteren van beweging.
  • Pak een ander frame.
  • Converteer het frame naar grijsschaal, maak het groter, vervaag het.
  • Bereken het verschil met het referentiekader
  • Filter kleine verschillen uit, verkrijg de coördinaten van het grootste verschil.
  • Stel een timer in. Als de doelcoördinaat een paar seconden niet verandert, maak dan een foto van wat we gaan schieten en activeer de waterklep voor een waterstoot. Veeg de servo een paar graden heen en weer voor een "shotgun" -explosie.
  • Als we drie triggers te snel krijgen, schakelt u het fotograferen uit, pauzeert u een beetje en werkt u het referentiekader bij, aangezien we mogelijk fotograferen op een schaduw- of verandalicht dat net is ingeschakeld …
  • Werk om de paar minuten het referentiekader bij om rekening te houden met veranderingen in de lage frequentie (zon komt op/onder, bewolking die naar binnen trekt, enz.)

Ik gebruik alleen een horizontaal richtmechanisme, maar er zijn veel pan/tilt-servobevestigingen beschikbaar op EBay en het zou gemakkelijk zijn om nog een servo toe te voegen voor het regelen van verticaal richten als je nauwkeuriger wilt richten.

Ik heb de Raspberry Pi ingesteld om als een VNC-server te werken en maak er vervolgens via VNC vanaf mijn laptop verbinding mee om het programma te starten en de video en logs te controleren. cd in de map waar je water_blaster.py opslaat en voer het uit door te typen:

./python water_blaster.py

Het opent een videomonitorvenster, start een logbestand met de naam "./log_[datum]_[time] en maakt een submap met de naam "trigger_pictures" waar jpg-bestanden (trigger_[datum]_[time]) worden opgeslagen voor elke genomen opname.

Hier zijn enkele opmerkingen over het instellen van VNC op uw Raspberry Pi:

De eerste keer dat ik de Raspberry Pi instelde, gebruikte ik een externe monitor/toetsenbord/muis om dingen in te stellen. Daar heb ik de VNC-server ingeschakeld bij de RasPi-configuratie (Raspberry-logo / voorkeuren / Raspberry Pi-configuratie / interfaces / optie VNC controleren). Daarna, wanneer het opstart, kunt u verbinding maken met zijn:0-display via VNC-client (met dezelfde inloggegevens als de standaardgebruiker "pi").

In de headless-modus is het standaard een display met een zeer kleine resolutie (omdat het geen display detecteert), om het naar een grotere resolutie te forceren, voegt u dit toe aan /boot/config.txt en start u opnieuw:

# Gebruiken als je display# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 w/ 60Hz#hdmi_mode=42# 1356x768 w/ 60Hzhdmi_mode=39 hebt

Hier is wat meer info:

Stap 2: De elektronica

De elektronica-eisen van de waterblaster zijn minimaal als je de Raspberry Pi 3 gpio gebruikt om een servo, waterklep en IR-verlichting aan te sturen via discrete transistorbuffers (gebouwd op een klein protobord). Een standaard NoIR-camera wordt rechtstreeks op de Raspberry Pi aangesloten.

De naam van het schema is: water_blaster_schematic.pdf en is hieronder bijgevoegd.

Ik gebruikte een speciale voeding van 5v/2.5A voor de Raspberry Pi en een voeding van 12v/1A voor het aansturen van de IR-verlichting en de waterklep. De 12v-voeding drijft ook een 5v-regelaar aan om de 5v-servo van stroom te voorzien. Dit werd gedaan om de "luidruchtige" motorbesturingsstroom geïsoleerd te houden van de Raspberry Pi 5v-voeding. De 12v/1A-voeding bleek precies op zijn limiet te zitten (eigenlijk iets meer dan nadat ik de ventilator had toegevoegd). De code schakelt de IR-verlichting uit voordat het relais van de waterklep wordt ingeschakeld om de stroomafname binnen bereik te houden… Het zou beter zijn als u een voeding van 1,5 A gebruikt. Zorg ervoor dat u de aardingsklemmen van alle voedingen met elkaar verbindt.

De cameramodule is een standaard NoIR-versie die rechtstreeks op de Raspberry Pi wordt aangesloten. Het is een Raspberry Pi-camera waarvan het IR-filter al is verwijderd, waardoor het kan worden gebruikt met een IR-verlichting voor het maken van nachtvideo's.

De gebruikte servo is een standaard 5v lineaire servo met een koppel van 3-4 kg-cm.

De IR-verlichting was een goedkope 48 led-ring die ik op eBay vond voor ongeveer $ 4. Het is niet supersterk en kan slechts tot ongeveer 15 voet verlichten. Als je extra budget hebt, zou het een goede verbetering zijn om een sterkere verlichting te krijgen.

Ik heb een "debug-switch" toegevoegd aan gpio23. De code controleert de status van de schakelaar en als deze wordt ingedrukt, wordt het waterkleprelais uitgeschakeld voor droogvuurtests. Ik dacht dat ik meer met die schakelaar zou doen, maar uiteindelijk heb ik hem helemaal niet gebruikt. Ik zou het verwijderen en de code die ernaar zoekt …

Stap 3: Constructie: camera en IR-verlichting

Constructie: camera en IR-verlichting
Constructie: camera en IR-verlichting

Ik gebruikte een plastic munitiekist van Harbor Freight als behuizing. Ik had vooral iets waterbestendigs nodig, omdat veel waternevel/afvoer onvermijdelijk is. Er zijn veel gaten/uitsparingen, maar ze zijn afgedekt met luifels, doorzichtig plastic of worden onder overhangen geboord om water af te voeren. Achteraf gezien had ik een metalen doos moeten gebruiken met interne koellichamen aan de krachtige componenten. Door dat te doen, denk ik dat ik de ventilator had kunnen vermijden. De plastic doos was te isolerend en liet de binnentemperatuur te veel stijgen.

Aan het einde werd een klein venster uitgesneden zodat de camera naar buiten kon kijken en de IR-verlichting werd gemonteerd in een oude plastic lensbehuizing die ik had liggen.

Stap 4: Constructie: Waterleidingen

Constructie: Waterleidingen
Constructie: Waterleidingen
Constructie: Waterleidingen
Constructie: Waterleidingen

De waterinlaat wordt via een 12v waterklep aangesloten op een ¼” ID x 3/8” OD vinylbuis. Die is op zijn beurt verbonden met een ¼”-buis met weerhaken op ¾ slip-fit PVC-connector en vastgelijmd aan een ¾” PVC-waterdop met een gat van 1/16” geboord voor de waterstroom. Ik wilde het waterkleprelais buiten het weer houden, dus het is in de doos gemonteerd. Het gevaar bestaat dat ik een lek krijg, maar ik heb afvoergaten in de bodem van de doos geboord en de elektronica hoog gemonteerd om de kans op mogelijke waterschade aan de elektronica te minimaliseren als dat gebeurt. Een minder esthetisch, maar veiliger plan zou zijn om de klep aan de buitenkant te monteren en de 12v-relaisdraden naar binnen te leiden. De doorzichtige plastic schijf over de servo was een handige manier om het slanguiteinde te monteren en zorgt ervoor dat er geen water op de servo druppelt. De ventilator was een bijzaak omdat de doos te veel opwarmde. Ik heb er een luifel overheen gebouwd om te voorkomen dat er water naar binnen druppelt.

Stap 5: Constructie: Servo richten

Constructie: Gericht Servo
Constructie: Gericht Servo

Er wordt een gat in de bovenkant van de doos gesneden en de richtservo is gemonteerd en verzegeld met siliconen om water buiten te houden.

Stap 6: Constructie: Montage van de voedingen, ventilator, Raspberry Pi en Proto-board

Constructie: Montage van de voedingen, ventilator, Raspberry Pi en Proto-board
Constructie: Montage van de voedingen, ventilator, Raspberry Pi en Proto-board

De twee voedingen (5v en 12v) zijn aangesloten op een enkele voedingskabel die uit de zijkant van de doos komt. De Raspberry Pi en een proto-bord zijn aan de zijkant van de doos bij de bovenkant gemonteerd. Let op de afvoergaten die in de bodem zijn geboord en de ventilatiegaten die langs de bovenrand zijn geboord. De ventilator is tegenover de Raspberry Pi gemonteerd. Er is geen aan / uit-schakelaar omdat ik niet wil aanmoedigen om de Raspberry Pi uit te schakelen zonder een formeel "sudo shutdown now" -commando (d.w.z. ik wil niet dat de stroom te gemakkelijk wordt uitgeschakeld).

Stap 7: Constructie: het Proto Board

Constructie: het Proto-bord
Constructie: het Proto-bord

Het proto-bord bevat een 5v-regelaar, filterdop, vermogenstransistors (die de servo en waterklep aandrijven) en een debug-schakelaar.

Stap 8: Constructie: Raspberry Pi-camera

Constructie: Raspberry Pi-camera
Constructie: Raspberry Pi-camera

De Raspberry Pi-cam wordt rechtstreeks op de Raspberry Pi aangesloten via de lintkabel en is gemonteerd op de doorzichtige plastic plaat die de kijkuitsparing aan de voorkant van de doos bedekt.

Stap 9: Onderdelenlijst

Het project kostte uiteindelijk ongeveer $ 120. Het grootste deel van de kosten van het project zijn de Raspberry Pi, camera, servo en voedingen. Ik vond de meeste onderdelen op eBay of Amazon en de sanitaironderdelen bij de plaatselijke ijzerhandel.

  • Raspberry Pi 3 (Amazon) $ 38
  • NoIR-camera (EBay) $ 30
  • 5v analoge servo (4kg-cm koppel) (EBay) $10
  • 5v / 2.4A muurvoeding (EBay) $ 8
  • 12v ½” waterklep (EBay) $5
  • Buizen, pijpkoppelingen (Osh) $ 5
  • Plastic munitiedoos (havenvracht) $ 5
  • 12v / 1.5A muurvoeding (EBay) $ 5
  • IR-verlichting (EBay) $ 4
  • Diversen Componenten (weerstanden, schakelaars, diode) $ 2
  • CPU-ventilator (EBay) $ 2
  • Proto-bord, afstandhouders, schroeven (EBay) $ 2
  • (2) Vermogenstransistoren (2n5296) (EBay) $1
  • 5v-regelaar (LM7805) (EBay) $ 1
  • Doorzichtige plastic 3/32 "(Tap Plastics Misc. Bin) $1
  • Netsnoer (Osh) $1

Winkels/sites waar ik artikelen heb gekocht:

  • Alice1101983 eBay-site:
  • 2bevoque eBay-site:
  • Havenvracht
  • Hardware voor boomgaardlevering
  • Amazone
  • Kraan Kunststoffen

Aanbevolen: