สารบัญ:
- ขั้นตอนที่ 1: รายการหลักที่จำเป็น
- ขั้นตอนที่ 2: ระบบ
- ขั้นตอนที่ 3: เวลาการเข้ารหัส
- ขั้นตอนที่ 4: นำมันมารวมกัน
- ขั้นตอนที่ 5: ผลลัพธ์
- ขั้นตอนที่ 6: ผลบวกที่ผิดพลาด
วีดีโอ: Cat-a-way - Computer Vision Cat Sprinkler: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ปัญหา - แมวใช้สวนของคุณเป็นห้องน้ำ
วิธีแก้ปัญหา - ใช้เวลามากเกินไปในการออกแบบสปริงเกลอร์แมวด้วยคุณสมบัติอัปโหลด youtube อัตโนมัติ
นี่ไม่ใช่ทีละขั้นตอน แต่เป็นภาพรวมของการก่อสร้างและรหัสบางส่วน
#BeforeYouCallPETA - แมวสบายดี เพราะเป็นสปริงเกอร์แรงดันต่ำเหมือนสายฝน ที่พวกมันวิ่งได้เร็วกว่าที่มันจะหมุนรอบตัวพวกมัน โปรเจ็กต์นี้ไม่ใช่การแช่แมว แต่เพื่อเอาพวกมันออกไปก่อนที่พวกมันจะทิ้งขยะในสวนของฉันด้วย Barkers Eggs เวอร์ชั่นแมว
ขั้นตอนที่ 1: รายการหลักที่จำเป็น
Raspberry Pi zero & การ์ด SD
กล้อง Raspberry Pi
รีเลย์
555 จับเวลา…. (หรือ Arduino และรีเลย์อื่นหากตัวจับเวลา 555 ของคุณไม่มาถึง)
โซลินอยด์
สปริงเกลอร์
ที่อยู่อาศัยบางชนิดสำหรับอุปกรณ์อิเล็กทรอนิกส์
ความเต็มใจที่จะตอกตะปูเปรียบเทียบด้วยค้อนเลื่อนขนาด 6 ตัน
กล้องความละเอียดน้อยจนแทบไม่เห็นน้ำ แต่ยังเห็นแมววิ่งหาที่กำบัง
ขั้นตอนที่ 2: ระบบ
1, กล้อง Pi ตรวจพบวัตถุขนาดแมวที่เคลื่อนไหวสำหรับเฟรมกล้องสองสามเฟรม (อธิบายในขั้นตอนต่อไป)
2, Pi ออกสปริงเกอร์
3 แมววิ่งหาที่กำบัง
4 อัปโหลดวิดีโอไปยัง youtube โดยอัตโนมัติเพื่อความเพลิดเพลินในการรับชม
ขั้นตอนที่ 3: เวลาการเข้ารหัส
การใช้ openCV โดยใช้การลบเฟรม คุณสามารถค้นหาพื้นที่ของเฟรมที่เปลี่ยนแปลงเมื่อเวลาผ่านไป โดยใช้ฟังก์ชันที่ดี คุณจะสามารถทราบได้ว่าการเปลี่ยนแปลงเหล่านี้มีขนาดใหญ่เพียงใดและยังคงมีอยู่เมื่อเวลาผ่านไปหรือไม่ และที่สำคัญที่สุดคือตรวจสอบว่ามีขนาดเท่าแมวหรือไม่
มีบทแนะนำเกี่ยวกับการลบเฟรมค่อนข้างน้อยซึ่งมีรายละเอียดมากหากคุณทำการค้นหาโดย Google อย่างรวดเร็ว
ภาพรวมวิธีการทำงานของโค้ด
1, กล้องยังคงถ่ายเฟรมและเปรียบเทียบกับเฟรมสุดท้าย
2 ถ้าตรวจพบรูปร่างขนาดแมว จะสังเกตเห็น
3 หากการเปลี่ยนแปลงขนาดของแมวยังคงมีอยู่ประมาณ 4 เฟรม pi จะใช้ GPIO เพื่อถ่ายทอดพลังงานเพื่อเริ่ม Arduino
4, Arduino ส่งสัญญาณไปยังรีเลย์ตัวที่สองเป็นเวลา 5 วินาทีซึ่งเปิดใช้งานโซลินอยด์
5, โซลินอยด์เมื่อขับเคลื่อนช่วยให้น้ำไปยังสปริงเกลอร์
6 ในขณะที่สปริงเกอร์กำลังทำงานอยู่ กล้องจะหยุดตรวจจับและบันทึกวิดีโอ
7, วิดีโอถูกอัปโหลดไปยัง Youtube
8, อัปโหลดภาพนิ่งไปยังดรอปบ็อกซ์สำหรับระบบปรับแต่งอย่างละเอียด
หมายเหตุ - ทำไมฉันถึงลงเอยด้วยการใช้รีเลย์ 2 ตัวและ Arduino เพื่อเปิดโซลินอยด์เป็นเวลา 5 วินาที…..
1, pi ไม่สามารถเริ่มและหยุดโซลินอยด์ขณะบันทึกวิดีโอเนื่องจาก python scrips หยุดชั่วคราวจนกว่าวิดีโอจะเสร็จสิ้น ดังนั้นจึงจำเป็นต้องใช้ Arduino (หรือ 555 timer) เพื่อให้โซลินอยด์เปิดและปิดโดยอิสระกับสคริปต์ในขณะที่ วิดีโอยังคงบันทึกอยู่
2, รีเลย์และ Arduino ตัวแรกสามารถแทนที่ด้วยตัวจับเวลา 555 ตัว แต่มาไม่ทันสำหรับโครงการนี้ 555 จะช่วยประหยัดเวลาและขั้นตอนได้มาก
3, pi ไม่สามารถกระตุ้นโซลินอยด์ได้โดยตรงเนื่องจาก Pi GPIO ทำงานบนสูงสุด 3.3v และ 51mA และโซลินอยด์ต้องการ 5V และมากกว่า 51mA เพื่อทริกเกอร์
4 แต่ละเฟรมสามารถครอบตัดเพื่อลบการตรวจจับการเคลื่อนไหวในพื้นที่ที่ไม่ต้องการ เช่น สวนข้างบ้าน หากไม่ทำเช่นนี้จะส่งผลให้เพื่อนบ้านกล่าวว่ามองดูสวนของคุณสับสนเพราะสปริงเกลอร์ดับทุกครั้งที่เขาต้องการเข้าไปในโรงเก็บของ
5 ฉันอาจพลาดบางสิ่งที่ชัดเจนและเสียเวลาตั้งค่าเช่นนี้
รหัสด้านล่าง
นำเข้า cv2import numpy เป็น np นำเข้า 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) พิมพ์ ("การถ่ายวิดีโอ") ลอง: #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)) #ลบไฟล์วิดีโอเมื่อเสร็จแล้ว os.remove ('vid{0}.h264'.format(vidname)) print("วิดีโอที่อัปโหลดและนำออกจาก Pi") ยกเว้น: ผ่าน #-------------------- ------------------------------------ ยังคงดรอปบ็อกซ์ -------------------- -------------------- def St illsToDropbox(): print("Uploading Still To Dropbox Function") access_token = 'Ah ah ah คุณไม่ได้พูดคำวิเศษณ์…อ้า อ้า อ้า คุณไม่ได้พูดคำวิเศษณ์' 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 (ชื่อไฟล์, รูปภาพ) image.close () os.remove ("ToDropbox.jpg") ยกเว้น: ผ่าน #----------------------------- ------ตรวจจับการเคลื่อนไหว----------------------------------------- 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 # ขนาดที่เล็กที่สุดในการตรวจจับ MaxTargetArea = 5000 #ขนาดที่ใหญ่ที่สุดในการตรวจจับตอนนี้ = time.time() จากนั้น = time.time() #initialise camera camera = PiCamera() camera. resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray(camera, size=(640, 480)) #warmup camera time.sleep(1) #Grab first frame & prep it to go in cv2.acumulate weight camera.capture(rawCapture, format="bgr") เฉลี่ย = rawCapture.array #ครอบตัดส่วนที่ไม่ต้องการ PolyCrop = np.array(
#HowToTriggerRealProgrammersWithBadCode
ขั้นตอนที่ 4: นำมันมารวมกัน
ยัดอุปกรณ์ไฟฟ้าลงในกล่องกันน้ำ ขันสกรูเข้ากับผนัง และใช้เทปพันสายไฟและกาวร้อนจำนวนมาก
ขั้นตอนที่ 5: ผลลัพธ์
เมื่อมันทำงานมันทำงาน
ขั้นตอนที่ 6: ผลบวกที่ผิดพลาด
เมื่อไม่พ่นเงาแมว ภรรยาและลูกสาวของคุณ
เคล็ดลับจากมือโปร - วางสวิตช์ข้างประตูเพื่อหยุดโปรแกรมตรวจจับการเคลื่อนไหวชั่วคราว….. จากนั้นลืมใช้และเปียกน้ำเมื่อนำถังขยะออก
หวังว่าฉันจะทำให้ผู้เชี่ยวชาญในการเขียนโปรแกรม อิเล็กทรอนิกส์ และ DIY ประนีประนอมกับข้อผิดพลาดทั้งหมดที่ฉันอาจทำ และโดยเฉพาะอย่างยิ่งหวังว่าคุณจะสนุกกับการสะกดคำผิดทั้งหมดของฉัน
แนะนำ:
ความคงอยู่ของ Vision LED Staff: 11 ขั้นตอน (พร้อมรูปภาพ)
ความคงอยู่ของพนักงาน LED ของ Vision: เป็นที่ทราบกันดีว่าแม้หลังจากปิดไฟแล้ว ดวงตาของมนุษย์ก็ยัง "มองเห็น" เป็นเสี้ยววินาที สิ่งนี้เรียกว่าการคงอยู่ของการมองเห็นหรือ POV และอนุญาตให้ "ระบายสี" รูปภาพโดยเลื่อนแถบ o อย่างรวดเร็ว
Night Vision Goggles สำหรับ Google Cardboard: 10 ขั้นตอน (พร้อมรูปภาพ)
แว่นตา Night Vision สำหรับ Google Cardboard: ข้อจำกัดความรับผิดชอบ: การใช้อุปกรณ์นี้มีขึ้นเพื่อความบันเทิง การศึกษา และการใช้งานทางวิทยาศาสตร์เท่านั้น ไม่ใช่เพื่อการสอดแนมและ/หรือการเฝ้าระวัง "แกดเจ็ตสอดแนม" ฟีเจอร์ต่าง ๆ ถูกเพิ่มเข้ามาในแอพเพื่อความสนุกสนานเท่านั้น และจะไม่มีประโยชน์อะไรสำหรับ
Raspberry PI Vision Processor (SpartaCam): 8 ขั้นตอน (พร้อมรูปภาพ)
Raspberry PI Vision Processor (SpartaCam): ระบบประมวลผลการมองเห็น Raspberry PI สำหรับหุ่นยนต์ FIRST Robotics Competition เกี่ยวกับ FIRSTจากวิกิพีเดีย สารานุกรมเสรี https://en.wikipedia.org/wiki/FIRST_Robotics_Compe…The FIRST Robotics Competition (FRC) เป็นการแข่งขันระดับสูงระดับนานาชาติ
Sad Cat Fixer, Catch-Me Cat Toy - โครงการโรงเรียน: 3 ขั้นตอน
Sad Cat Fixer, Catch-Me Cat Toy - โครงการโรงเรียน: นี่คือผลิตภัณฑ์ของเรา มันเป็นเมาส์ของเล่นแบบโต้ตอบ: Catch-Me Cat Toy นี่คือรายการปัญหาที่แมวจำนวนมากในสังคมของเรากำลังเผชิญอยู่: แมวในปัจจุบันเริ่มไม่เคลื่อนไหวและหดหู่โดยที่ไม่มีอะไรทำ เจ้าของส่วนใหญ่ยุ่งกับงานหรือโรงเรียนและสัตว์เลี้ยงของคุณ
การสร้าง: Een Mini Sprinkler Meting (กลุ่ม 12): 8 ขั้นตอน
The Making Of: Een Mini Sprinkler Meting (กลุ่ม 12): Groep 12Noortje Romeijn 4651464Milton Fox 4652622Deze Instructable is geschreven door Milton Fox (นักเรียน Maritieme Techniek, TU Delft) en Noortje Romeijn (นักเรียน Civile Techniek, TU Delft) Allebei volgen we de civiele minor 'De delta denker, วา