Table des matières:

Water Blaster à suivi automatique : 9 étapes
Water Blaster à suivi automatique : 9 étapes

Vidéo: Water Blaster à suivi automatique : 9 étapes

Vidéo: Water Blaster à suivi automatique : 9 étapes
Vidéo: Niska sur le tournage avec shay 2024, Juillet
Anonim
Pistolet à eau à suivi automatique
Pistolet à eau à suivi automatique

Le cerf mangeur de roses m'a motivé à construire un blaster à eau de suivi de cible pour aider à dissuader les créatures voraces… Ce blaster à eau utilise une détection de mouvement basée sur la vidéo pour viser un servo et déclencher de courtes rafales d'eau sur la cible. Il ne tire qu'après qu'une cible acquise soit immobile pendant quelques secondes (le délai peut être ajusté dans le code). Je m'en fiche si les cerfs ne font que passer, mais s'ils s'arrêtent pour une collation, sploosh!

Voici une vidéo de moi testant le jet d'eau:

Le water blaster est un boîtier autonome qui peut être connecté à distance (via wi-fi/VNC) à partir de n'importe quel ordinateur de votre réseau pour surveiller ce qu'il fait. Il prend une photo à chaque fois qu'il est déclenché afin que vous puissiez voir plus tard ce qui se faisait exploser.

J'ai utilisé un Raspberry Pi, une caméra NoIR, un illuminateur IR, un servo linéaire standard et une vanne d'eau pour créer ce blaster d'eau de suivi de cible jour/nuit. Le code est écrit en Python et emprunte beaucoup aux exemples de code de traitement d'images cv2 d'Adrian Rosebrock. Vous pouvez voir son article sur:

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

Comme je poursuis des cibles au sol relativement grandes (cerfs), mon problème est quelque peu simplifié. Je n'ai besoin que d'une visée horizontale pour pouvoir m'en tirer en n'utilisant qu'un seul servomoteur. Attendre que le cerf reste immobile m'aide à éliminer beaucoup de faux déclencheurs. C'est ma tentative rev-0 et j'ai trouvé quelques éléments que je modifierais si j'en construisais un autre. J'ai noté ces choses dans l'article détaillé qui suit.

Étape 1: le code

Le jet d'eau utilise le Raspberry Pi 3 pour le traitement. Pour capturer la vidéo, une caméra NoIR Raspberry Pi est utilisée avec un illuminateur IR pour la vidéo de nuit. Le package Python OpenCV/cv2 est utilisé pour capturer et traiter les informations d'image et calculer les coordonnées cibles. La bibliothèque pigpio est utilisée pour contrôler le gpio pour un fonctionnement servo stable. L'utilisation du package RPi. GPIO standard a entraîné un servo tremblant. REMARQUE: lorsque vous utilisez la bibliothèque pigpio, vous devez exécuter le démon pigpio. Ajoutez ceci au fichier de démarrage /etc/rc.local de votre Pi pour la bibliothèque pigpio et l'interface de la caméra Raspberry Pi:

/etc/rc.local# Configurez /dev/video0 pour établir un lien avec l'interface de caméra intégrée de Raspberry Pi modprobe bcm2835-v4l2# Démarrez le démon pigpio pour la bibliothèque de contrôle Raspberry Pi IOpigpiod

Voir https://pypi.python.org/pypi/pigpi pour plus de détails.

Le code source est nommé: water_blaster.py et est joint ci-dessous.

Avis de non-responsabilité: je suis nouveau dans le codage Python, alors ne le traitez pas comme un excellent modèle de style de codage Python !

L'algorithme de base est le suivant:

  • Prenez une image de référence vidéo initiale. Cela sera utilisé pour comparer pour détecter un mouvement.
  • Prenez un autre cadre.
  • Convertissez le cadre en niveaux de gris, redimensionnez-le, floutez-le.
  • Calculer la différence par rapport au référentiel
  • Filtrez les petites différences, obtenez les coordonnées de la plus grande différence.
  • Réglez une minuterie. Si la coordonnée de la cible ne change pas pendant quelques secondes, prenez une photo de ce que nous sommes sur le point de tirer et déclenchez la vanne d'eau pour un jet d'eau. Balayez le servo d'avant en arrière de quelques degrés pour un coup de « fusil de chasse ».
  • Si nous obtenons trois déclencheurs trop rapidement, désactivez la prise de vue, faites une pause un peu, puis mettez à jour le cadre de référence car nous pouvons tirer sur une ombre ou une lumière de porche qui vient d'être allumée…
  • Toutes les quelques minutes, mettez à jour le cadre de référence pour tenir compte des changements de basse fréquence (le lever/coucher du soleil, le temps couvert, etc.)

J'utilise uniquement un mécanisme de visée horizontale, mais de nombreux supports de servomoteurs panoramiques / inclinables sont disponibles sur EBay et il serait facile d'ajouter un autre servomoteur pour contrôler la visée verticale si vous vouliez un ciblage plus précis.

J'ai configuré le Raspberry Pi pour qu'il s'exécute en tant que serveur VNC, puis je m'y connecte via VNC depuis mon ordinateur portable pour démarrer le programme et surveiller la vidéo et les journaux. cd dans le répertoire où vous stockez water_blaster.py et exécutez-le en tapant:

./python water_blaster.py

Il ouvrira une fenêtre de moniteur vidéo, démarrera un fichier journal nommé "./log_[date]_[time] et créera un sous-répertoire nommé "trigger_pictures" où les fichiers-j.webp

Voici quelques notes sur la configuration de VNC sur votre Raspberry Pi:

La première fois que j'ai configuré le Raspberry Pi, j'ai utilisé un moniteur/clavier/souris externe pour configurer les choses. Là, j'ai activé le serveur VNC dans la configuration RasPi (Logo Raspberry / Préférences / Configuration Raspberry Pi / Interfaces / Option Vérifier VNC). Ensuite, lorsqu'il démarre, il vous permet de vous connecter à son affichage:0 via le client VNC (avec les mêmes informations d'identification que l'utilisateur par défaut "pi").

En mode sans tête, il affiche par défaut une très petite résolution (car il ne détecte aucun affichage), pour le forcer à une résolution plus grande, vous ajoutez ceci à /boot/config.txt et redémarrez:

# À utiliser si vous avez un affichage# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 w/ 60Hz#hdmi_mode=42# 1356x768 w/ 60Hzhdmi_mode=39

Voici quelques informations supplémentaires:

Étape 2: L'électronique

Les exigences en matière d'électronique de jet d'eau sont minimes en utilisant le Raspberry Pi 3 gpio pour piloter un servo, une vanne d'eau et un illuminateur IR via des tampons à transistors discrets (construits sur une petite carte proto). Une caméra NoIR standard se branche directement sur le Raspberry Pi.

Le nom du schéma est: water_blaster_schematic.pdf et est joint ci-dessous.

J'ai utilisé une alimentation dédiée 5v/2,5A pour le Raspberry Pi et une alimentation 12v/1A pour piloter l'illuminateur IR et la vanne d'eau. L'alimentation 12v entraîne également un régulateur 5v pour alimenter le servo 5v. Cela a été fait pour garder la puissance de commande du moteur «bruyante» isolée de l'alimentation Raspberry Pi 5v. L'alimentation 12v/1A s'est avérée être juste à sa limite (en fait un peu plus une fois que j'ai ajouté le ventilateur). Le code éteint l'illuminateur IR avant d'alimenter le relais de la vanne d'eau pour maintenir la consommation de courant dans la plage… Il serait préférable d'utiliser une alimentation de 1,5 A. Assurez-vous de connecter les bornes de terre de toutes les alimentations ensemble.

Le module caméra est une version NoIR standard qui se branche directement sur le Raspberry Pi. Il s'agit d'une caméra Raspberry Pi avec le filtre IR déjà retiré, ce qui lui permet d'être utilisé avec un illuminateur IR pour prendre des vidéos de nuit.

Le servo utilisé est un servo linéaire 5v de taille standard avec un couple de 3 à 4 kg-cm.

L'illuminateur IR était un anneau à 48 LED à faible coût que j'ai trouvé sur eBay pour environ 4 $. Ce n'est pas super fort et ne peut éclairer que jusqu'à environ 15 pieds. Si vous avez un budget supplémentaire, obtenir un illuminateur plus puissant serait une bonne amélioration.

J'ai ajouté un "debug-switch" à gpio23. Le code vérifie l'état de l'interrupteur et, s'il est enfoncé, désactivera le relais de la vanne d'eau pour les tests à feu sec. Je pensais en faire plus avec ce commutateur, mais je ne l'ai pas vraiment utilisé du tout. Je le supprimerais et le code qui le recherche…

Étape 3: Construction: Caméra et illuminateur IR

Construction: Caméra et illuminateur IR
Construction: Caméra et illuminateur IR

J'ai utilisé une boîte de munitions en plastique Harbor Freight comme boîtier. J'avais principalement besoin de quelque chose de résistant à l'eau, car beaucoup d'eau pulvérisée/ruisselante est inévitable. Il y a beaucoup de trous/découpes, mais ils sont recouverts d'auvents, de plastique transparent ou sont percés sous les surplombs pour évacuer l'eau. Avec le recul, j'aurais dû utiliser une boîte en métal avec des dissipateurs thermiques fixés à l'intérieur des composants haute puissance. En faisant cela, je pense que j'aurais pu éviter d'ajouter le ventilateur. La boîte en plastique était trop isolante et laissait trop monter la température intérieure.

Une petite fenêtre a été coupée à la fin pour que la caméra puisse voir et l'illuminateur IR a été monté à l'intérieur d'un vieux boîtier d'objectif en plastique que j'avais autour.

Étape 4: Construction: Tuyauterie d'eau

Construction: Conduite d'eau
Construction: Conduite d'eau
Construction: Conduite d'eau
Construction: Conduite d'eau

L'entrée d'eau est raccordée à une vanne d'eau 12v qui est connectée à un tube en vinyle de ¼" ID x 3/8" OD. Celui-ci est à son tour connecté à un tube cannelé de " à un connecteur en PVC à ajustement coulissant et collé à un bouchon d'eau en PVC de ¾" avec un trou de 1/16" percé pour le jet d'eau. Je voulais garder le relais de la vanne d'eau à l'abri des intempéries afin qu'il soit monté à l'intérieur de la boîte. Il y a un risque de fuite, mais j'ai percé des trous de drainage au fond de la boîte et monté l'électronique en hauteur pour minimiser les risques de dégâts d'eau potentiels sur l'électronique si cela se produit. Un plan moins esthétique, mais plus sûr, serait de monter la vanne à l'extérieur et de faire passer les fils de relais 12v à l'intérieur. Le disque en plastique transparent sur le servo était un moyen pratique de monter l'extrémité du tuyau et il empêche l'eau de s'égoutter sur le servo. Le ventilateur était une réflexion après coup car la boîte se réchauffait trop. J'ai construit un petit auvent dessus pour empêcher l'eau de s'égoutter.

Étape 5: Construction: Servo de visée

Construction: Servo de visée
Construction: Servo de visée

Un trou est découpé dans le haut de la boîte et le servo de visée est monté et scellé avec du silicone pour empêcher l'eau d'entrer.

Étape 6: construction: montage des alimentations, du ventilateur, du Raspberry Pi et de la carte proto

Construction: montage des alimentations, du ventilateur, du Raspberry Pi et de la carte proto
Construction: montage des alimentations, du ventilateur, du Raspberry Pi et de la carte proto

Les deux alimentations (5v et 12v) sont câblées à un seul cordon d'alimentation sortant du côté de la box. Le Raspberry Pi et une carte proto sont montés sur le côté de la boîte près du haut. Remarquez les trous de drainage percés dans le bas et les trous d'aération percés le long du bord supérieur. Le ventilateur est monté en face du Raspberry Pi. Il n'y a pas d'interrupteur marche/arrêt car je ne veux pas encourager l'arrêt du Raspberry Pi sans une commande formelle "sudo shutdown now" (c'est-à-dire que je ne veux pas que l'alimentation soit coupée trop facilement).

Étape 7: Construction: la Proto Board

Construction: la Proto Board
Construction: la Proto Board

La carte proto contient un régulateur 5v, un capuchon de filtre, des transistors de puissance (qui pilotent le servo et la vanne d'eau) et un commutateur de débogage.

Étape 8: Construction: Caméra Raspberry Pi

Construction: Caméra Raspberry Pi
Construction: Caméra Raspberry Pi

La caméra Raspberry Pi se connecte directement au Raspberry Pi via le câble plat et est montée sur la plaque en plastique transparent recouvrant la découpe de visualisation à l'avant du boîtier.

Étape 9: Liste des pièces

Le projet a finalement coûté environ 120 $. La majeure partie du coût du projet est le Raspberry Pi, la caméra, le servo et les alimentations. J'ai trouvé la plupart des pièces sur eBay ou Amazon et les pièces de plomberie à la quincaillerie locale.

  • Raspberry Pi 3 (Amazon) 38 $
  • Caméra NoIR (EBay) 30 $
  • Servo analogique 5v (couple de 4 kg-cm) (EBay) 10 $
  • Alimentation murale 5v/2.4A (EBay) $8
  • Vanne d'eau 12v ½" (EBay) 5 $
  • Tubes, raccords de tuyaux (Osh) 5 $
  • Boîte de munitions en plastique (fret portuaire) 5 $
  • Alimentation murale 12 v/1,5 A (EBay) 5 $
  • Illuminateur IR (EBay) 4 $
  • Divers Composants (Résistances, Commutateurs, Diode) $2
  • Ventilateur CPU (EBay) $2
  • Carte proto, entretoises, vis (EBay) 2 $
  • (2) Transistors de puissance (2n5296) (EBay) 1 $
  • Régulateur 5v (LM7805) (EBay) 1 $
  • Plastique transparent 3/32" (Tap Plastics Misc. Bin) 1 $
  • Cordon d'alimentation (Osh) 1 $

Magasins/sites où j'ai acheté des articles:

  • Alice1101983 Site eBay:
  • Site EBay de 2bevoque:
  • Fret portuaire
  • Matériel d'approvisionnement de verger
  • Amazone
  • Robinet Plastiques

Conseillé: