विषयसूची:

कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर: 6 कदम (चित्रों के साथ)
कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर: 6 कदम (चित्रों के साथ)

वीडियो: कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर: 6 कदम (चित्रों के साथ)

वीडियो: कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर: 6 कदम (चित्रों के साथ)
वीडियो: Cutting Bricks With Water | पानी से ईंट काट डाली | Very Shocking Experiment 2024, जून
Anonim
कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर
कैट-ए-वे - कंप्यूटर विजन कैट स्प्रिंकलर

समस्या - बिल्लियाँ आपके बगीचे को शौचालय के रूप में उपयोग करती हैं

समाधान - ऑटो यूट्यूब अपलोड सुविधा के साथ कैट स्प्रिंकलर इंजीनियरिंग पर बहुत अधिक समय बिताएं

यह एक कदम दर कदम नहीं है, बल्कि निर्माण और कुछ कोड का अवलोकन है

#BeforeYouCallPETA - बिल्लियाँ ठीक हैं, यह बारिश की तरह ही एक कम दबाव का छिड़काव है, कि इससे पहले कि वे अपने चारों ओर पिवट भी कर सकें, वे आगे निकल सकते हैं। परियोजना एक बिल्ली को भिगोने के लिए नहीं है, लेकिन इससे पहले कि वे मेरे बगीचे को बार्कर अंडे के बिल्ली संस्करण के साथ कूड़ेदान में दिखा दें।

चरण 1: मुख्य आवश्यक वस्तुएँ

मुख्य आवश्यक वस्तुएँ
मुख्य आवश्यक वस्तुएँ

रास्पबेरी पाई शून्य और एसडी कार्ड

रास्पबेरी पाई कैमरा

रिले

555 टाइमर…. (या एक arduino और दूसरा रिले यदि आपके 555 टाइमर नहीं आते हैं)

solenoid

बुझानेवाला

इलेक्ट्रॉनिक्स के लिए किसी प्रकार का आवास

एक ६ टन स्लेज हैमर के साथ एक लाक्षणिक कील मारने की इच्छा

इतने कम रिज़ॉल्यूशन वाला कैमरा आप मुश्किल से पानी देख सकते हैं, लेकिन फिर भी बिल्लियों को कवर के लिए दौड़ते हुए देख सकते हैं

चरण 2: सिस्टम

Image
Image

1, पाई कैमरा कुछ कैमरा फ्रेम के लिए चलती बिल्ली के आकार की वस्तु का पता लगाता है (अगले चरण में समझाया गया है)

2, पाई स्प्रिंकलर सेट करता है

3, बिल्ली कवर के लिए दौड़ती है

4, आनंद देखने के लिए वीडियो स्वचालित रूप से यूट्यूब पर अपलोड हो जाता है

चरण 3: कोडिंग समय

एक साथ रखते हुए
एक साथ रखते हुए

फ्रेम घटाव का उपयोग करके ओपनसीवी का उपयोग करके आप समय के साथ बदलते फ्रेम के क्षेत्रों को ढूंढ सकते हैं, कुछ निफ्टी फ़ंक्शंस का उपयोग करके आप यह पता लगा सकते हैं कि ये परिवर्तन कितने बड़े हैं और यदि वे समय के साथ बने रहते हैं, और सबसे महत्वपूर्ण बात यह है कि वे बिल्ली के आकार के हैं या नहीं।

फ्रेम घटाव पर काफी कुछ ट्यूटोरियल हैं जो यदि आप एक त्वरित Google खोज करते हैं तो बहुत विस्तार से जाते हैं।

कोड कैसे काम करता है इसका अवलोकन

1, कैमरा फ्रेम लेता रहता है और उनकी तुलना आखिरी से करता है

2, यदि एक बिल्ली के आकार का आकार पाया जाता है तो यह नोट किया जाता है

3, यदि बिल्ली के आकार का परिवर्तन लगभग 4 फ्रेम पर बना रहता है, तो पाई अपने GPIO का उपयोग बिजली रिले के लिए arduino शुरू करने के लिए करती है

4, आर्डिनो 5 सेकंड के लिए दूसरे रिले को बिजली देने के लिए एक संकेत भेजता है जो सोलनॉइड को सक्रिय करता है

5, संचालित होने पर सोलनॉइड स्प्रिंकलर को पानी की अनुमति देता है

6, जबकि स्प्रिंकलर सक्रिय है, कैमरा वीडियो का पता लगाना और रिकॉर्ड करना बंद कर देता है

7, वीडियो यूट्यूब पर अपलोड किया जाता है

8, ठीक ट्यूनिंग सिस्टम के लिए ड्रॉपबॉक्स पर स्टिल अपलोड किए गए

नोट - मैंने 5 सेकंड के लिए सोलनॉइड को चालू करने के लिए 2 रिले और एक आर्डिनो का उपयोग क्यों किया…..

1, वीडियो रिकॉर्ड करते समय पीआई सोलनॉइड को शुरू और बंद नहीं कर सकता है क्योंकि वीडियो समाप्त होने तक पाइथन स्क्रिप्स रुक जाता है, इसलिए आर्डिनो (या 555 टाइमर) की आवश्यकता होती है ताकि सोलनॉइड को स्क्रिप्ट से स्वतंत्र रूप से खोलने और बंद करने की अनुमति मिल सके। वीडियो अभी भी रिकॉर्ड हो रहा है।

2, पहले रिले और आर्डिनो को ५५५ टाइमर से बदला जा सकता है, लेकिन वह इस परियोजना के लिए समय पर पोस्ट में नहीं आया, ५५५ बहुत समय के पैसे और कदमों की बचत करेगा।

3, पीआई सीधे सोलनॉइड को ट्रिगर नहीं कर सकता क्योंकि पीआई जीपीआईओ 3.3v और 51mA अधिकतम पर काम करता है, और सोलनॉइड 5V और 51mA से अधिक ट्रिगर करना चाहता है।

4, अवांछित क्षेत्रों में गति का पता लगाने के लिए प्रत्येक फ्रेम को क्रॉप किया जा सकता है, जैसे कि नेगबोर गार्डन। ऐसा करने में विफलता के परिणामस्वरूप उक्त पड़ोसी आपके बगीचे में भ्रमित हो जाएगा क्योंकि हर बार जब वह अपने शेड में जाना चाहता है तो स्प्रिंकलर बंद हो जाता है।

5, मुझे शायद कुछ स्पष्ट याद आया और इसे इस तरह स्थापित करने में अपना समय बर्बाद कर दिया।

नीचे कोड

एनपी आयात argparse के रूप में cv2import numpy आयात करें #cat आयात समय RPi. GPIO GPIO के रूप में आयात करें os picamera.array से आयात ड्रॉपबॉक्स पिकामेरा आयात PiCamera से आयात करें #--------------------- ----------------------------यूट्यूब पर अपलोड करें--------------------- ---------------------- डीईएफ़ एचडीटूयूट्यूब(): ctime = time.strftime("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger रिले GPIO.output(11, True) time.sleep(.5) GPIO.output(11, False) Print ("वीडियो लेना") कोशिश करें: #वीडियो लें os.system('raspivid -w 1640 -h 922 -o vid{0}.h264 -t 15000'.format(vidname)) # youtube प्रिंट पर अपलोड करें ("YouTube पर अपलोड करना") os. system('sudo youtube-upload --title="Cat Got Wet {0}" --client-secrets=client_secret.json vid{0}.h264'.format(vidname)) # os.remove हो जाने पर वीडियो फ़ाइल निकालें ('vid{0}.h264'.format(vidname)) प्रिंट ("वीडियो अपलोड किया गया और Pi से हटाया गया") सिवाय: पास #--------------------- ----------------------------- स्टिल टू ड्रॉपबॉक्स--------------------- ------------------------ डीईएफ़ St ilsToDropbox (): प्रिंट ("अभी भी ड्रॉपबॉक्स फ़ंक्शन पर अपलोड करना") access_token = 'आह आह आह, आपने जादू शब्द नहीं कहा … आह आह आह, आपने जादू शब्द नहीं कहा' ctime = time.strftime (" %H:%M:%S") cdate = time.strftime("%d-%m-%Y") कोशिश करें: filename = "/Motion/{0}/DetectedAt_{1}.jpg"format(cdate, ctime) प्रिंट (फ़ाइल नाम) क्लाइंट = dropbox.client. DropboxClient(access_token) छवि = खुला ("ToDropbox.jpg", 'rb') client.put_file(filename, image) image.close() os.remove("ToDropbox.jpg") को छोड़कर: पास #------------------------------------------ ------ गति का पता लगाएं----------------------------------------------------- def डिटेक्टमोशन (): # डिफाइन वर्र्स मिन_एरिया = ४०० टॉलरेंस = २५ #पिक्सेल ब्लरमाउंट में बदलाव = २१ टाइमटोफॉरगेट = ०.५ कर्नेल = एनपी। MaxTargetArea का पता लगाने के लिए सबसे छोटा आकार = 5000 # अब पता लगाने के लिए सबसे बड़ा आकार = समय। समय () फिर = समय। समय () # कैमरा कैमरा शुरू करें = PiCamera () कैमरा। संकल्प = (640, 480) कैमरा। फ्रेमरेट = 10 कच्चा कैप्चर = PiRGBArray (कैमरा, आकार = (640, 480)) # वार्मअप कैमरा समय। सो (1) # पहला फ्रेम पकड़ो और इसे cv2.acumulate weight camera.capture(rawCapture, format="bgr") औसत में जाने के लिए तैयार करें = rawCapture.array # अवांछित क्षेत्र को क्रॉप करें PolyCrop = np.array(

#HowToTriggerRealProgrammersWithBadCode

चरण 4: इसे एक साथ रखना

एक साथ रखते हुए
एक साथ रखते हुए
एक साथ रखते हुए
एक साथ रखते हुए
एक साथ रखते हुए
एक साथ रखते हुए

इलेक्ट्रिक्स को वाटरप्रूफ हाउसिंग में रटना, चीजों को दीवारों में पेंच करना और बहुत सारे डक्ट टेप और गर्म गोंद का उपयोग करना

चरण 5: परिणाम

Image
Image
परिणाम
परिणाम

जब यह काम करता है तो यह काम करता है

चरण 6: झूठी सकारात्मक

झूठी सकारात्मक
झूठी सकारात्मक

जब यह नहीं होता है तो यह बिल्ली की छाया, आपकी पत्नी और आपकी बेटी को छिड़कता है।

प्रो-टिप - दरवाजे के पास एक स्विच लगाएं जो मोशन डिटेक्शन प्रोग्राम को रोक देता है….. फिर इसका इस्तेमाल करना भूल जाएं और डिब्बे को बाहर निकालते समय भीग जाएं।

आशा है कि मैंने अपनी सभी गलतियों के साथ प्रोग्रामिंग, इलेक्ट्रॉनिक्स और DIY क्रिंग में कोई विशेषज्ञ बनाया है, और विशेष रूप से आशा है कि आपने मेरी सभी वर्तनी गलतियों का आनंद लिया है।

सिफारिश की: