جدول المحتويات:

مرشة Cat-a-way - مرشة Cat للكمبيوتر: 6 خطوات (مع صور)
مرشة Cat-a-way - مرشة Cat للكمبيوتر: 6 خطوات (مع صور)

فيديو: مرشة Cat-a-way - مرشة Cat للكمبيوتر: 6 خطوات (مع صور)

فيديو: مرشة Cat-a-way - مرشة Cat للكمبيوتر: 6 خطوات (مع صور)
فيديو: تجديد سيارة مرسيدس واقفه 16 سنه🔥🚙 (من الصفر للأخير )🤩♥️..! 2024, يونيو
Anonim
Cat-a-way - مرشة Cat ذات الرؤية الحاسوبية
Cat-a-way - مرشة Cat ذات الرؤية الحاسوبية

مشكلة - القطط تستخدم حديقتك كمرحاض

الحل - اقضِ وقتًا طويلاً في هندسة رشاش القطط بميزة التحميل التلقائي على youtube

هذه ليست خطوة بخطوة ، ولكنها نظرة عامة على البناء وبعض التعليمات البرمجية

#BeforeYouCallPETA - القطط بخير ، إنها رشاش منخفض الضغط تمامًا مثل المطر ، ويمكنها تجاوزها قبل أن تدور حولها. المشروع ليس نقع قطة ، ولكن لإظهارها بعيدًا قبل أن يملأ حديقتي بنسخة القط من Barkers Eggs.

الخطوة 1: العناصر الرئيسية المطلوبة

العناصر الرئيسية مطلوبة
العناصر الرئيسية مطلوبة

بطاقة Raspberry Pi Zero و SD

كاميرا Raspberry Pi

تناوب

مؤقت 555…. (أو اردوينو ومرحل آخر إذا لم يصل جهاز ضبط الوقت 555 الخاص بك)

الملف اللولبي

مرشة

نوع من المساكن للإلكترونيات

استعداد لضرب مسمار مجازي بمطرقة ثقيلة 6 أطنان

كاميرا ذات دقة قليلة جدًا بحيث بالكاد تستطيع رؤية الماء ، ولكن لا يزال بإمكانك رؤية القطط وهي تعمل بحثًا عن غطاء

الخطوة الثانية: النظام

Image
Image

1 ، تكتشف كاميرا Pi كائنًا بحجم قطة يتحرك لبضعة إطارات للكاميرا (تم توضيحها في الخطوة التالية)

2 ، بي ينطلق الرش

3 ، يعمل القط للغطاء

4 ، يتم تحميل الفيديو تلقائيًا على youtube لمشاهدة متعة

الخطوة 3: وقت الترميز

نضعها معًا
نضعها معًا

باستخدام openCV باستخدام طرح الإطار ، يمكنك العثور على مناطق من الإطار تتغير بمرور الوقت ، باستخدام بعض الوظائف الرائعة ، يمكنك معرفة حجم هذه التغييرات وما إذا كانت تستمر بمرور الوقت ، والأهم من ذلك معرفة ما إذا كانت بحجم قطة.

هناك عدد غير قليل من البرامج التعليمية حول طرح الإطارات التي تدخل في تفاصيل كبيرة إذا أجريت بحثًا سريعًا على google.

نظرة عامة على كيفية عمل الكود

1 ، تستمر الكاميرا في التقاط الإطارات ومقارنتها بالآخر

2 ، إذا تم الكشف عن شكل بحجم قطة يتم ملاحظته

3 ، إذا استمر التغيير في حجم القط على مدى 4 إطارات تقريبًا ، فإن pi يستخدم GPIO الخاص به لتشغيل مرحل الطاقة لبدء اردوينو

4 ، يرسل اردوينو إشارة لتشغيل التتابع الثاني لمدة 5 ثوانٍ والذي ينشط الملف اللولبي

5 ، الملف اللولبي عند تشغيله يسمح للماء بالرش

6 ، أثناء تشغيل الرش ، تتوقف الكاميرا عن الكشف عن الفيديو وتسجيله

7 ، يتم تحميل الفيديو على يوتيوب

8 ، اللقطات التي تم تحميلها إلى Dropbox لنظام الضبط الدقيق

ملاحظة - لماذا انتهى بي الأمر باستخدام مرحلات 2 واردوينو لتشغيل ملف لولبي لمدة 5 ثوانٍ …..

1 ، لا يمكن لـ pi بدء تشغيل الملف اللولبي وإيقافه أثناء تسجيل الفيديو حيث يتوقف قرص python مؤقتًا حتى ينتهي الفيديو ، ومن هنا تأتي الحاجة إلى اردوينو (أو مؤقت 555) للسماح للملف اللولبي بالفتح والإغلاق بشكل مستقل عن البرنامج النصي أثناء الفيديو لا يزال قيد التسجيل.

2 ، يمكن استبدال التتابع الأول واردوينو بمؤقت 555 ولكن هذا لم يتم نشره في الوقت المناسب لهذا المشروع ، سيوفر 555 الكثير من الوقت والمال والخطوات.

3 ، لا يمكن لـ pi تشغيل الملف اللولبي مباشرة حيث يعمل Pi GPIO على 3.3 فولت و 51 مللي أمبير كحد أقصى ، ويريد الملف اللولبي 5 فولت وأكثر من 51 مللي أمبير لتشغيله.

4 ، يمكن اقتصاص كل إطار لإزالة كشف الحركة في المناطق غير المرغوب فيها ، مثل حديقة الجيران. سيؤدي عدم القيام بذلك إلى قيام الجار المذكور بإلقاء نظرة مشوشة على حديقتك لأن المرشة تنطلق في كل مرة يريد فيها الذهاب إلى كوخه.

5 ، ربما فاتني شيء واضح وأهدرت وقتي في إعداده على هذا النحو.

الرمز أدناه

استيراد cv2import numpy كـ np import argparse #cat استيراد وقت استيراد RPi. GPIO مثل صندوق إسقاط استيراد نظام التشغيل GPIO من picamera.array استيراد PiRGBArray من picamera استيراد PiCamera # ------------------ ------------------------------ تحميل على 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 ("أخذ الفيديو") حاول: #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)) #Remove ملف الفيديو عند الانتهاء os.remove ('vid {0}.h264'.format (vidname)) print ("تم تحميل الفيديو وإزالته من Pi") باستثناء: pass # -------------------- ---------------------------- الصور الثابتة إلى صندوق الإسقاط ------------------- -------------------- def St illsToDropbox (): print ("Uploading Still To Dropbox Function") access_token = 'آه آه آه ، لم تقل الكلمة السحرية … آه آه ، لم تقل الكلمة السحرية' ctime = time.strftime (" ٪ H:٪ M:٪ S ") cdate = time.strftime ("٪ d-٪ m-٪ Y ") جرب: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate ، ctime) print (filename) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg"، 'rb') client.put_file (اسم الملف ، صورة) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

الخطوة 4: ضعها معًا

نضعها معًا
نضعها معًا
نضعها معًا
نضعها معًا
نضعها معًا
نضعها معًا

حشر الكهرباء في غلاف مقاوم للماء ، ثم قم بلف الأشياء في الجدران واستخدم الكثير من الشريط اللاصق والصمغ الساخن

الخطوة 5: النتائج

Image
Image
نتائج
نتائج

عندما تعمل تعمل

الخطوة السادسة: الإيجابيات الكاذبة

ايجابيات مزيفة
ايجابيات مزيفة

عندما لا يتم رش ظلال القطط وزوجتك وابنتك.

Pro-tip - ضع مفتاحًا بجوار الباب يوقف برنامج اكتشاف الحركة مؤقتًا….. ثم انسى استخدامه وانقعه عند إخراج الصناديق.

آمل أن أكون قد جعلت أي خبراء في البرمجة والإلكترونيات والأعمال اليدوية يتذمرون مع كل الأخطاء التي ربما أرتكبها ، وأتمنى بشكل خاص أن تكون قد استمتعت بكل أخطائي الإملائية.

موصى به: