Inhaltsverzeichnis:

Wasserblaster mit automatischer Verfolgung - Gunook
Wasserblaster mit automatischer Verfolgung - Gunook

Video: Wasserblaster mit automatischer Verfolgung - Gunook

Video: Wasserblaster mit automatischer Verfolgung - Gunook
Video: Die gehypteste WASSERPISTOLE wurde WEITERENTWICKELT! - Wasserschlacht mit der ELEKTRISCHEN SPYRA 3! 2024, November
Anonim
Wasserblaster mit automatischer Verfolgung
Wasserblaster mit automatischer Verfolgung

Rosenfressende Hirsche motivierten mich, einen Wasserblaster zur Zielverfolgung zu bauen, um die gefräßigen Kreaturen abzuschrecken… Dieser Wasserblaster verwendet videobasierte Bewegungserkennung, um ein Servo auszurichten und kurze Wasserstöße auf das Ziel auszulösen. Es schießt erst, nachdem ein erfasstes Ziel einige Sekunden lang stillsteht (die Verzögerung kann im Code angepasst werden). Es ist mir egal, ob die Rehe nur vorbeigehen, aber wenn sie für einen Snack anhalten, ploosh!

Hier ist ein Video, in dem ich den Wasserstrahler teste:

Der Wasserstrahler ist eine eigenständige Box, die von jedem Computer in Ihrem Netzwerk (über Wi-Fi/VNC) aus der Ferne verbunden werden kann, um zu überwachen, was er tut. Es macht jedes Mal ein Bild, wenn es ausgelöst wird, damit Sie später sehen können, was gesprengt wurde.

Ich habe einen Raspberry Pi, eine NoIR-Kamera, einen IR-Strahler, ein Standard-Linearservo und ein Wasserventil verwendet, um diesen Tag / Nacht-Wasserstrahler mit Zielverfolgung zu erstellen. Der Code ist in Python geschrieben und lehnt sich stark an Adrian Rosebrocks cv2-Codebeispiele für die Bildverarbeitung an. Sie können sein Schreiben sehen unter:

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

Da ich nach relativ großen, bodengestützten Zielen (Hirschen) suche, ist mein Problem etwas vereinfacht. Ich benötige nur horizontales Zielen, damit ich mit nur einem Servo davonkommen kann. Das Warten darauf, dass das Reh stillsteht, hilft mir, viele falsche Auslöser zu eliminieren. Dies ist mein Versuch von Rev-0 und ich habe ein paar Dinge gefunden, die ich ändern würde, wenn ich einen anderen bauen würde. Ich habe diese Dinge in der folgenden ausführlichen Beschreibung notiert.

Schritt 1: Der Code

Der Wasserstrahler nutzt den Raspberry Pi 3 zur Bearbeitung. Für die Videoaufnahme wird eine NoIR Raspberry Pi-Kamera zusammen mit einem IR-Strahler für Nachtvideos verwendet. Das OpenCV/cv2-Python-Paket wird verwendet, um Bildinformationen zu erfassen und zu verarbeiten und Zielkoordinaten zu berechnen. Die pigpio-Bibliothek wird verwendet, um den gpio für einen stabilen Servobetrieb zu steuern. Die Verwendung des regulären RPi. GPIO-Pakets führte zu einem wackeligen Servo. HINWEIS: Wenn Sie die pigpio-Bibliothek verwenden, müssen Sie den pigpio-Daemon ausführen. Fügen Sie dies der /etc/rc.local-Startdatei Ihres Pi für die pigpio-Bibliothek und die Raspberry Pi-Kameraschnittstelle hinzu:

/etc/rc.local# Richten Sie /dev/video0 ein, um eine Verbindung zum Raspberry Pi zu erstellen, integriertes Kamerainterfacemodprobe bcm2835-v4l2# Starten Sie den pigpio-Daemon für die Raspberry Pi IO-Steuerungsbibliothekpigpiod

Weitere Informationen finden Sie unter

Der Quellcode heißt: water_blaster.py und ist unten angehängt.

Haftungsausschluss: Ich bin neu in der Python-Codierung, also behandle es nicht als großartiges Modell des Python-Codierungsstils!

Der grundlegende Algorithmus lautet wie folgt:

  • Nehmen Sie ein erstes Videoreferenzbild auf. Dies wird zum Vergleichen verwendet, um eine Bewegung zu erkennen.
  • Schnappen Sie sich einen anderen Rahmen.
  • Konvertieren Sie den Rahmen in Graustufen, passen Sie die Größe an, verwischen Sie ihn.
  • Berechnen Sie die Differenz zum Referenzrahmen
  • Filtern Sie kleine Unterschiede heraus, erhalten Sie die Koordinaten der größten Differenz.
  • Stellen Sie einen Timer ein. Wenn sich die Zielkoordinate einige Sekunden lang nicht ändert, dann machen Sie ein Foto von dem, was wir schießen werden, und lösen Sie das Wasserventil für einen Wasserstrahl aus. Schwenken Sie das Servo ein paar Grad vor und zurück, um einen „Schrotflinten“-Schuss zu erzeugen.
  • Wenn wir drei Auslöser zu schnell erhalten, deaktivieren Sie die Aufnahme, pausieren Sie ein wenig und aktualisieren Sie dann das Referenzbild, da wir möglicherweise auf ein gerade eingeschaltetes Schatten- oder Verandalicht schießen …
  • Aktualisieren Sie den Referenzrahmen alle paar Minuten, um niederfrequente Änderungen zu berücksichtigen (Sonnenauf- und -untergang, Bewölkung, Einzug usw.)

Ich verwende nur einen horizontalen Zielmechanismus, aber viele Schwenk- / Neige-Servohalterungen sind bei EBay erhältlich und es wäre einfach, ein weiteres Servo zur Steuerung des vertikalen Zielens hinzuzufügen, wenn Sie ein genaueres Zielen wünschen.

Ich richte den Raspberry Pi so ein, dass er als VNC-Server läuft, und verbinde mich dann über VNC von meinem Laptop aus, um das Programm zu starten und das Video und die Protokolle zu überwachen. cd in das Verzeichnis, in dem Sie water_blaster.py speichern, und führen Sie es aus, indem Sie Folgendes eingeben:

./python water_blaster.py

Es öffnet ein Videomonitorfenster, startet eine Protokolldatei namens "./log_[date]_[time] und erstellt ein Unterverzeichnis namens "trigger_pictures", in dem JPG-Dateien (trigger_[date]_[time]) gespeichert werden für jede Aufnahme.

Hier sind einige Hinweise zum Einrichten von VNC auf Ihrem Raspberry Pi:

Beim ersten Einrichten des Raspberry Pi habe ich einen externen Monitor / eine Tastatur / eine Maus verwendet, um die Dinge einzurichten. Dort habe ich den VNC-Server in der RasPi-Konfiguration aktiviert (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC Option). Danach, wenn es hochfährt, können Sie über den VNC-Client (mit denselben Anmeldeinformationen wie der Standardbenutzer "pi") eine Verbindung zu seinem:0-Display herstellen.

Im Headless-Modus wird standardmäßig eine Anzeige mit sehr kleiner Auflösung verwendet (da keine Anzeige erkannt wird). Um eine höhere Auflösung zu erzwingen, fügen Sie dies zu /boot/config.txt hinzu und starten Sie neu:

# Verwenden Sie, wenn Sie display# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 mit 60Hz#hdmi_mode=42# 1356x768 mit 60Hzhdmi_mode=39. haben

Hier noch ein paar Infos:

Schritt 2: Die Elektronik

Die Anforderungen an die Elektronik des Wasserstrahlers sind minimal, wenn der Raspberry Pi 3 gpio verwendet wird, um ein Servo, ein Wasserventil und einen IR-Strahler über diskrete Transistorpuffer (aufgebaut auf einer kleinen Proto-Platine) anzusteuern. Eine Standard-NoIR-Kamera wird direkt an den Raspberry Pi angeschlossen.

Der Name des Schaltplans lautet: water_blaster_schematic.pdf und ist unten angehängt.

Ich habe eine dedizierte 5 V / 2,5 A-Versorgung für den Raspberry Pi und eine 12 V / 1 A-Versorgung zum Antreiben des IR-Strahlers und des Wasserventils verwendet. Die 12-V-Versorgung treibt auch einen 5-V-Regler an, um das 5-V-Servo mit Strom zu versorgen. Dies wurde getan, um die "geräuschvolle" Motorsteuerungsleistung von der Raspberry Pi 5V-Versorgung isoliert zu halten. Es stellte sich heraus, dass die 12V / 1A-Versorgung genau am Limit war (eigentlich etwas mehr, als ich den Lüfter hinzufügte). Der Code schaltet die IR-Beleuchtung aus, bevor das Wasserventilrelais eingeschaltet wird, um die Stromaufnahme innerhalb des Bereichs zu halten … Es wäre besser, wenn Sie eine 1,5-A-Versorgung verwenden. Achten Sie darauf, die Erdungsklemmen aller Netzteile miteinander zu verbinden.

Das Kameramodul ist eine Standard-NoIR-Version, die direkt an den Raspberry Pi angeschlossen wird. Es handelt sich um eine Raspberry Pi-Kamera, bei der der IR-Filter bereits entfernt wurde, sodass sie mit einem IR-Strahler zum Aufnehmen von Nachtvideos verwendet werden kann.

Das verwendete Servo ist ein 5-V-Linearservo in Standardgröße mit 3-4 kg-cm Drehmoment.

Der IR-Strahler war ein kostengünstiger 48-LED-Ring, den ich bei EBay für etwa 4 US-Dollar gefunden habe. Es ist nicht super stark und kann nur bis zu etwa 15 Fuß ausleuchten. Wenn Sie ein zusätzliches Budget haben, wäre ein stärkerer Illuminator eine gute Verbesserung.

Ich habe gpio23 einen "Debug-Switch" hinzugefügt. Der Code überprüft den Zustand des Schalters und deaktiviert, wenn er gedrückt wird, das Wasserventilrelais für Trockenzündungstests. Ich dachte, ich würde mehr mit diesem Schalter machen, aber am Ende habe ich ihn überhaupt nicht benutzt. Ich würde es entfernen und den Code, der danach sucht…

Schritt 3: Aufbau: Kamera und IR-Strahler

Konstruktion: Kamera und IR-Strahler
Konstruktion: Kamera und IR-Strahler

Als Gehäuse habe ich eine Kunststoff-Munitionskiste von Harbour Freight verwendet. Hauptsächlich brauchte ich etwas Wasserfestes, da viel Wasserspritzer / -ablauf unvermeidlich ist. Es gibt viele Löcher/Ausschnitte, aber sie sind mit Markisen, durchsichtigem Kunststoff bedeckt oder unter Überhängen gebohrt, um Wasser abzuleiten. Im Nachhinein hätte ich eine Metallbox mit Kühlkörpern verwenden sollen, die intern an den Hochleistungskomponenten angebracht sind. Auf diese Weise hätte ich es vermeiden können, den Lüfter hinzuzufügen. Die Plastikbox war zu isolierend und ließ die Innentemperatur zu stark ansteigen.

Am Ende wurde ein kleines Fenster geschnitten, damit die Kamera herausschauen konnte, und der IR-Strahler wurde in einem alten Plastikobjektivgehäuse montiert, das ich herumgelegt hatte.

Schritt 4: Aufbau: Wasserleitung

Konstruktion: Wasserleitungen
Konstruktion: Wasserleitungen
Konstruktion: Wasserleitungen
Konstruktion: Wasserleitungen

Der Wassereinlass wird in ein 12-V-Wasserventil geleitet, das an ein ¼” ID x 3/8” AD Vinylrohr angeschlossen ist. Das wiederum wird mit einem ¼-Zoll-Schlauchschlauch mit einem -Schlauch-PVC-Anschluss verbunden und an eine ¾-Zoll-PVC-Wasserkappe mit einem 1/16-Zoll-Loch für den Wasserstrom geklebt. Ich wollte das Wasserventilrelais vor dem Wetter schützen, damit es in der Box montiert ist. Es besteht die Gefahr, dass ich ein Leck bekomme, aber ich habe Abflusslöcher in den Boden der Box gebohrt und die Elektronik hoch montiert, um die Wahrscheinlichkeit eines möglichen Wasserschadens an der Elektronik zu minimieren, wenn dies passiert. Ein weniger ästhetisch ansprechender, aber sicherer Plan wäre, das Ventil außen zu montieren und die 12-V-Relaiskabel innen zu verlegen. Die durchsichtige Plastikscheibe über dem Servo war eine bequeme Möglichkeit, das Schlauchende zu montieren und verhindert, dass Wasser auf das Servo tropft. Der Lüfter war ein nachträglicher Gedanke, da sich die Box zu stark aufwärmte. Ich habe eine kleine Markise darüber gebaut, damit kein Wasser hineintropft.

Schritt 5: Aufbau: Zielservo

Konstruktion: Zielservo
Konstruktion: Zielservo

Ein Loch wird in die Oberseite der Box geschnitten und das Zielservo wird montiert und mit Silikon versiegelt, um Wasser abzuhalten.

Schritt 6: Aufbau: Montage der Netzteile, Lüfter, Raspberry Pi und Proto-Board

Aufbau: Montage der Netzteile, Lüfter, Raspberry Pi und Proto-Board
Aufbau: Montage der Netzteile, Lüfter, Raspberry Pi und Proto-Board

Die beiden Netzteile (5 V und 12 V) sind mit einem einzigen Netzkabel verbunden, das an der Seite der Box austritt. Der Raspberry Pi und ein Proto-Board sind an der Seite der Box im oberen Bereich montiert. Beachten Sie die unten gebohrten Abflusslöcher und die entlang der oberen Kante gebohrten Entlüftungslöcher. Der Lüfter ist gegenüber dem Raspberry Pi montiert. Es gibt keinen Ein- / Ausschalter, da ich nicht dazu ermutigen möchte, den Raspberry Pi ohne einen formellen Befehl "sudo shutdown now" auszuschalten (dh ich möchte nicht, dass der Strom zu leicht ausgeschaltet wird).

Schritt 7: Aufbau: das Proto Board

Konstruktion: das Proto Board
Konstruktion: das Proto Board

Die Proto-Platine enthält einen 5-V-Regler, eine Filterkappe, Leistungstransistoren (die das Servo- und Wasserventil ansteuern) und einen Debug-Schalter.

Schritt 8: Aufbau: Raspberry Pi Kamera

Konstruktion: Raspberry Pi Kamera
Konstruktion: Raspberry Pi Kamera

Die Raspberry Pi Cam wird über das Flachbandkabel direkt mit dem Raspberry Pi verbunden und auf der durchsichtigen Kunststoffplatte montiert, die den Sichtausschnitt an der Vorderseite der Box abdeckt.

Schritt 9: Teileliste

Das Projekt kostete am Ende etwa 120 US-Dollar. Der Großteil der Kosten des Projekts entfällt auf Raspberry Pi, Kamera, Servo und Netzteile. Die meisten Teile habe ich bei EBay oder Amazon gefunden und die Sanitärteile im örtlichen Baumarkt.

  • Raspberry Pi 3 (Amazon) $ 38
  • NoIR-Kamera (EBay) $30
  • 5V Analog Servo (4kg-cm Drehmoment) (EBay) $10
  • 5V / 2,4A Wandnetzteil (EBay) $8
  • 12v ½" Wasserventil (EBay) 5
  • Schläuche, Rohrkupplungen (Osh) $5
  • Munitionskiste aus Kunststoff (Hafenfracht) $5
  • 12V/1.5A Netzteil (EBay) 5
  • IR-Strahler (EBay) $4
  • Sonstiges Komponenten (Widerstände, Schalter, Dioden) $2
  • CPU-Lüfter (EBay) 2
  • Proto Board, Abstandshalter, Schrauben (EBay) 2
  • (2) Leistungstransistoren (2n5296) (EBay) $1
  • 5V-Regler (LM7805) (EBay) $1
  • Durchsichtiger Kunststoff 3/32” (Tap Plastics Misc. Bin) $1
  • Netzkabel (Osh) $1

Geschäfte/Sites, auf denen ich Artikel gekauft habe:

  • Alice1101983 EBay-Site:
  • 2bevoque EBay-Site:
  • Hafenfracht
  • Obstgarten-Versorgungshardware
  • Amazonas
  • Tippen Sie auf Kunststoffe

Empfohlen: