Inhaltsverzeichnis:
- Schritt 1: Der Code
- Schritt 2: Die Elektronik
- Schritt 3: Aufbau: Kamera und IR-Strahler
- Schritt 4: Aufbau: Wasserleitung
- Schritt 5: Aufbau: Zielservo
- Schritt 6: Aufbau: Montage der Netzteile, Lüfter, Raspberry Pi und Proto-Board
- Schritt 7: Aufbau: das Proto Board
- Schritt 8: Aufbau: Raspberry Pi Kamera
- Schritt 9: Teileliste
Video: Wasserblaster mit automatischer Verfolgung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
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
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
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
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
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
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
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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Automatischer Anrufbeantworter V1.0: 17 Schritte (mit Bildern)
Automated Answering System V1.0: Manchmal habe ich einfach keine Lust, ans Telefon zu gehen. Okay, okay… die meiste Zeit ist es mir wirklich egal, ans Telefon zu gehen. Was soll ich sagen, ich bin ein beschäftigter Mann. Ich habe mir schon lange ein System gewünscht, das dem ähnlich ist, das die Telefongesellschaft für die
Automatischer Sucher: 4 Schritte
Auto-Searcher: Also las ich eines Tages Fanfiction in meinem Bett, um meinen Stress abzubauen. Aber ich hatte das Gefühl, dass es ein bisschen mühsam war, die Seite weiter zu scrollen, um weiterzulesen. Ich muss auch klicken, um das nächste Kapitel zu sehen und das Ganze vorher suchen
Automatischer Gartenbewässerer - 3D gedruckt - Arduino: 10 Schritte (mit Bildern)
Automatischer Gartenbewässerer | 3D gedruckt | Arduino: Ich bin ein begeisterter Gärtner, aber Ihre Pflanzen während Trockenperioden von Hand zu gießen, dauert einige Zeit. Dieses Projekt befreit mich vom Gießen, damit ich an meinen anderen Projekten arbeiten kann. Es ist auch großartig, sich um den Garten zu kümmern, während Sie nicht zu Hause sind, und die Pflanze