Table des matières:
- Étape 1: Principaux éléments requis
- Étape 2: Le système
- Étape 3: Temps de codage
- Étape 4: Assembler
- Étape 5: Résultats
- Étape 6: Faux positifs
Vidéo: Cat-a-way - Arroseur pour chat par vision par ordinateur : 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Problème - Les chats utilisent votre jardin comme toilette
Solution - Passez trop de temps à concevoir un arroseur pour chat avec la fonction de téléchargement automatique sur youtube
Ce n'est pas une étape par étape, mais un aperçu de la construction et du code
#BeforeYouCallPETA - Les chats vont bien, c'est un arroseur à basse pression tout comme la pluie, qu'ils peuvent dépasser avant même qu'il ne pivote autour d'eux. Le projet n'est pas de faire tremper un chat, mais de le montrer avant qu'il ne jonche mon jardin avec la version pour chat de Barkers Eggs.
Étape 1: Principaux éléments requis
Raspberry Pi zéro & carte SD
Caméra Raspberry Pi
Relais
555 minuterie…. (ou un arduino et un autre relais si vos 555 timers n'arrivent pas)
Solénoïde
Arroseur
Une sorte de boîtier pour l'électronique
Une volonté de frapper un clou métaphorique avec un marteau de 6 tonnes
Une caméra avec si peu de résolution que vous pouvez à peine voir l'eau, mais pouvez toujours voir les chats courir pour se mettre à l'abri
Étape 2: Le système
1, la caméra Pi détecte un objet de la taille d'un chat se déplaçant pendant quelques images de la caméra (expliqué à l'étape suivante)
2, Pi déclenche l'arroseur
3, le chat court pour se mettre à l'abri
4, vidéo automatiquement téléchargée sur youtube pour le plaisir de visionner
Étape 3: Temps de codage
En utilisant openCV en utilisant la soustraction de cadre, vous pouvez trouver des zones du cadre qui changent au fil du temps, en utilisant quelques fonctions astucieuses, vous pouvez déterminer l'ampleur de ces changements et s'ils persistent dans le temps, et surtout savoir s'ils sont de la taille d'un chat.
Il existe de nombreux tutoriels sur la soustraction d'images qui entrent dans les moindres détails si vous effectuez une recherche rapide sur Google.
Présentation du fonctionnement du code
1, la caméra continue de prendre des images et de les comparer à la dernière
2, si une forme de la taille d'un chat est détectée, elle est notée
3, si le changement de taille du chat persiste sur environ 4 images, le pi utilise son GPIO pour alimenter le relais pour démarrer l'arduino
4, l'arduino envoie un signal pour alimenter le deuxième relais pendant 5 secondes qui active le solénoïde
5, le solénoïde lorsqu'il est alimenté permet à l'eau de l'arroseur
6, pendant que l'arroseur est actif, la caméra arrête de détecter et enregistre la vidéo
7, la vidéo est téléchargée sur Youtube
8, images fixes téléchargées dans la boîte de dépôt pour le système de réglage fin
Remarque - Pourquoi j'ai fini par utiliser 2 relais et un arduino pour allumer un solénoïde pendant 5 secondes…..
1, le pi ne peut pas démarrer et arrêter le solénoïde pendant l'enregistrement de la vidéo car les scripts python s'interrompent jusqu'à ce que la vidéo soit terminée, d'où la nécessité pour l'arduino (ou la minuterie 555) de permettre au solénoïde de s'ouvrir et de se fermer indépendamment du script pendant que le la vidéo est toujours en cours d'enregistrement.
2, le premier relais et l'arduino peuvent être remplacés par une minuterie 555 mais cela n'est pas arrivé à temps pour ce projet, 555 permettrait d'économiser beaucoup de temps, d'argent et d'étapes.
3, le pi ne peut pas déclencher le solénoïde directement car le Pi GPIO fonctionne sur 3.3v et 51mA max, et le solénoïde veut 5V et bien plus que 51mA pour se déclencher.
4, chaque image peut être recadrée pour supprimer la détection de mouvement dans les zones indésirables, telles que le jardin des voisins. Si vous ne le faites pas, le voisin donnera un regard confus sur votre jardin, car l'arroseur se déclenche à chaque fois qu'il veut entrer dans son cabanon.
5, j'ai probablement raté quelque chose d'évident et j'ai perdu mon temps à le configurer comme ça.
Code ci-dessous
importer cv2import numpy as np import argparse #cat import time importer RPi. GPIO as GPIO importer os importer dropbox depuis picamera.array importer PiRGBArray depuis picamera importer PiCamera #------------------ -------------------------------Télécharger sur youtube----------------- ---------------------- def HDtoYoutube(): ctime = time.strftime("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger relay GPIO.output(11, True) time.sleep(.5) GPIO.output(11, False) print("Taking Video") essayez: #Take Video os.system('raspivid -w 1640 -h 922 -o vid{0}.h264 -t 15000'.format(vidname)) #Upload to youtube print("Uploading to YouTube") os. system('sudo youtube-upload --title="Cat Got Wet {0}" --client-secrets=client_secret.json vid{0}.h264'.format(vidname)) #Supprimer le fichier vidéo une fois terminé os.remove ('vid{0}.h264'.format(vidname)) print("Vidéo téléchargée et supprimée de Pi") sauf: pass #-------------------- ----------------------------Toujours dans la boîte de dépôt------------------- -------------------- def St illsToDropbox(): print("Téléchargement de toujours vers la fonction Dropbox") access_token = 'Ah ah ah, tu n'as pas dit le mot magique…Ah ah ah, tu n'as pas dit le mot magique' ctime = time.strftime(" %H:%M:%S") cdate = time.strftime("%d-%m-%Y") essayez: filename = "/Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print(nom de fichier) client = dropbox.client. DropboxClient(access_token) image = open("ToDropbox.jpg", 'rb') client.put_file(nom de fichier, image) image.close() os.remove("ToDropbox.jpg") sauf: pass #------------------------------------------- ------Détecter le mouvement---------------------------- def DetectMotion(): #Define vars min_area = 400 tolarance = 25 #change in pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones((5, 5), np.uint8) #used for dialate MotionCounter = 0 MinTargetArea = 600 # plus petite taille à détecter MaxTargetArea = 5000 #Plus grande taille à détecter maintenant = time.time() then = time.time() #initialiser la caméra camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray(camera, size=(640, 480)) #warmup camera time.sleep(1) #Saisissez la première image et préparez-la à aller dans cv2.acumulate weight camera.capture(rawCapture, format="bgr") avg = rawCapture.array #Recadrer la région indésirable PolyCrop = np.array(
#HowToTriggerRealProgrammersWithBadCode
Étape 4: Assembler
Enfoncez l'électricité dans un boîtier étanche, vissez les choses dans les murs et utilisez beaucoup de ruban adhésif et de colle chaude
Étape 5: Résultats
Quand ça marche ça marche
Étape 6: Faux positifs
Quand ce n'est pas le cas, il pulvérise des ombres de chat, votre femme et votre fille.
Astuce de pro - Placez un interrupteur près de la porte qui met en pause le programme de détection de mouvement….. puis oubliez de l'utiliser et soyez trempé en sortant les poubelles.
J'espère que j'ai fait grincer des dents à tous les experts en programmation, en électronique et en bricolage avec toutes les erreurs que j'ai probablement commises, et surtout j'espère que vous avez apprécié toutes mes fautes d'orthographe.
Conseillé:
Piratage du Hexbug Spider XL pour ajouter une vision par ordinateur à l'aide d'un smartphone Android : 9 étapes (avec photos)
Piratage du Hexbug Spider XL pour ajouter une vision par ordinateur à l'aide d'un smartphone Android : je suis un grand fan du Hexbug™ Araignée. J'en ai possédé plus d'une douzaine et je les ai tous piratés. Chaque fois qu'un de mes fils va chez un ami’ fête d'anniversaire, l'ami reçoit un Hexbug™ araignée en cadeau. J'ai piraté le ou
Réutilisez le pavé tactile d'un vieil ordinateur portable pour contrôler un ordinateur ! : 11 étapes (avec photos)
Réutilisez le pavé tactile d'un ancien ordinateur portable pour contrôler un ordinateur ! : Les pavés tactiles pour ordinateur portable PS/2 sont parmi les dispositifs d'interface utilisateur les plus cool à utiliser avec un microcontrôleur. Les gestes de glissement et de tapotement des doigts peuvent s'avérer permettre de contrôler des choses de manière assez simple et amusante. Dans ce Instructable, combinons un avec
Tapis de refroidissement pour ordinateur portable DIY - Awesome Life Hacks avec ventilateur CPU - Idées créatives - Ventilateur d'ordinateur : 12 étapes (avec photos)
Tapis de refroidissement pour ordinateur portable DIY | Awesome Life Hacks avec ventilateur CPU | Idées créatives | Fan d'ordinateur : vous devez regarder cette vidéo jusqu'à la fin. pour comprendre la vidéo
Fauteuil roulant contrôlé par vision par ordinateur avec mannequin : 6 étapes (avec photos)
Fauteuil roulant contrôlé par vision par ordinateur avec mannequin : projet de AJ Sapala, Fanyun Peng, Kuldeep Gohel, Ray LC.Instructable par AJ Sapala, Fanyun Peng, Ray LC.Nous avons créé un fauteuil roulant avec des roues contrôlées par une carte Arduino, qui est à son tour contrôlée par un raspberry pi exécutant openCV via Processing
Comment mettre à niveau un processeur d'ordinateur portable (et d'autres trucs sympas !) pour transformer un ordinateur portable SLOW/DEAD en un ordinateur portable RAPIDE ! : 4 étapes
Comment mettre à niveau un processeur PORTABLE (et d'autres trucs sympas !) pour transformer un ordinateur portable SLOW/DEAD en un ordinateur portable RAPIDE ! très obsolète. . . L'écran LCD a été brisé et le disque dur principal s'est grippé, de sorte que l'ordinateur portable était essentiellement mort