สารบัญ:

Water Blaster ติดตามอัตโนมัติ: 9 ขั้นตอน
Water Blaster ติดตามอัตโนมัติ: 9 ขั้นตอน

วีดีโอ: Water Blaster ติดตามอัตโนมัติ: 9 ขั้นตอน

วีดีโอ: Water Blaster ติดตามอัตโนมัติ: 9 ขั้นตอน
วีดีโอ: เจอสไนเปอร์ ซุ่มยิง งานนี้ไม่มีใครรอด!! แกล้งป่วนป่วน EP.8 | ชีต้าพาชิว 2024, กรกฎาคม
Anonim
ติดตามอัตโนมัติ Water Blaster
ติดตามอัตโนมัติ Water Blaster

กวางกินกุหลาบกระตุ้นให้ฉันสร้างปืนฉีดน้ำเพื่อติดตามเป้าหมายเพื่อช่วยยับยั้งสัตว์ร้ายที่โลภ… Water Blaster นี้ใช้การตรวจจับการเคลื่อนไหวแบบวิดีโอเพื่อเล็งเซอร์โวและกระตุ้นให้น้ำพุ่งไปที่เป้าหมายในเวลาสั้นๆ โดยจะยิงหลังจากที่เป้าหมายที่ได้รับนั้นหยุดนิ่งเป็นเวลาสองสามวินาทีเท่านั้น (การหน่วงเวลาสามารถปรับได้ในโค้ด) ฉันไม่สนหรอกว่ากวางจะแค่เดินผ่านไปหรือเปล่า แต่ถ้าพวกมันหยุดกินขนมล่ะก็ sploosh!

นี่คือวิดีโอของฉันในการทดสอบ Water Blaster:

Water Blaster เป็นกล่องแบบสแตนด์อโลนที่สามารถเชื่อมต่อจากระยะไกล (ผ่าน wi-fi/VNC) จากคอมพิวเตอร์เครื่องใดก็ได้ในเครือข่ายของคุณ เพื่อตรวจสอบสิ่งที่กำลังทำ ระบบจะถ่ายภาพทุกครั้งที่มีการทริกเกอร์ เพื่อให้คุณดูได้ในภายหลังว่าสิ่งใดถูกโจมตี

ฉันใช้ Raspberry Pi, NoIR cam, IR illuminator, เซอร์โวเชิงเส้นมาตรฐาน และวาล์วน้ำเพื่อสร้างวัน/คืน เป้าหมายติดตาม water blaster โค้ดนี้เขียนด้วยภาษา Python และยืมมาจากตัวอย่างโค้ดประมวลผลรูปภาพ cv2 ของ Adrian Rosebrock คุณสามารถดูการเขียนของเขาได้ที่:

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

เนื่องจากฉันกำลังไล่ตามเป้าหมายที่ค่อนข้างใหญ่ (กวาง) ปัญหาของฉันจึงค่อนข้างง่าย ฉันต้องการการเล็งในแนวนอนเท่านั้นเพื่อที่ฉันจะได้ใช้เซอร์โวเพียงตัวเดียว การรอให้กวางยืนนิ่งช่วยให้ฉันขจัดสิ่งกระตุ้นที่ผิดพลาดได้มากมาย นี่คือความพยายาม rev-0 ของฉันและฉันพบบางสิ่งที่ฉันจะแก้ไขหากฉันสร้างอย่างอื่น ฉันได้สังเกตสิ่งเหล่านี้ในการเขียนรายละเอียดที่ตามมา

ขั้นตอนที่ 1: รหัส

Water Blaster ใช้ Raspberry Pi 3 ในการแปรรูป สำหรับการจับภาพวิดีโอ กล้อง NoIR Raspberry Pi จะใช้ร่วมกับไฟเรืองแสง IR สำหรับวิดีโอตอนกลางคืน แพ็คเกจ OpenCV/cv2 Python ใช้เพื่อจับภาพและประมวลผลข้อมูลภาพและคำนวณพิกัดเป้าหมาย ไลบรารี pigpio ใช้เพื่อควบคุม gpio สำหรับการทำงานของเซอร์โวที่เสถียร การใช้แพ็คเกจ RPi. GPIO ปกติส่งผลให้เซอร์โวสั่นคลอน หมายเหตุ: เมื่อใช้ไลบรารี pigpio คุณต้องเรียกใช้ pigpio daemon เพิ่มสิ่งนี้ลงในไฟล์เริ่มต้น /etc/rc.local ของ Pi สำหรับ pigpio lib และอินเทอร์เฟซกล้อง Raspberry Pi:

/etc/rc.local# ตั้งค่า /dev/video0 เพื่อลิงก์ไปยัง Raspberry Pi ในตัวกล้อง interfacemodprobe bcm2835-v4l2# เริ่ม pigpio daemon สำหรับ Raspberry Pi IO control librarypigpiod

ดู https://pypi.python.org/pypi/pigpi สำหรับรายละเอียดเพิ่มเติม

ชื่อซอร์สโค้ด: water_blaster.py และแนบมาด้านล่าง

ข้อจำกัดความรับผิดชอบ: ฉันยังใหม่กับการเข้ารหัส Python ดังนั้นอย่าถือว่าเป็นรูปแบบการเข้ารหัส Python ที่ยอดเยี่ยม!

อัลกอริทึมพื้นฐานมีดังนี้:

  • หยิบกรอบอ้างอิงวิดีโอเริ่มต้น ซึ่งจะใช้เพื่อเปรียบเทียบกับการตรวจจับการเคลื่อนไหว
  • คว้าอีกกรอบ
  • แปลงเฟรมเป็นสเกลสีเทา ปรับขนาด เบลอ
  • คำนวณความแตกต่างจากหน้าต่างอ้างอิง
  • กรองความแตกต่างเล็กน้อย รับพิกัดของส่วนต่างที่ใหญ่ที่สุด
  • ตั้งเวลา หากพิกัดเป้าหมายไม่เปลี่ยนแปลงเป็นเวลาสองสามวินาที ให้ถ่ายภาพสิ่งที่เรากำลังจะยิงและกระตุ้นวาล์วน้ำเพื่อให้เกิดการระเบิดของน้ำ กวาดเซอร์โวไปมาสักสองสามองศาเพื่อระเบิด "ปืนลูกซอง"
  • หากเราได้รับทริกเกอร์สามตัวเร็วเกินไป ปิดใช้งานการถ่ายภาพ หยุดชั่วคราว จากนั้นอัปเดตหน้าต่างอ้างอิง เนื่องจากเราอาจถ่ายภาพที่เงาหรือแสงระเบียงที่เพิ่งเปิด…
  • อัปเดตหน้าต่างอ้างอิงทุก ๆ สองสามนาทีเพื่อพิจารณาการเปลี่ยนแปลงความถี่ต่ำ (ดวงอาทิตย์ขึ้น/ตก มืดครึ้มเคลื่อนเข้ามา ฯลฯ)

ฉันใช้กลไกการเล็งในแนวนอนเท่านั้น แต่มีการติดตั้งเซอร์โวแบบแพน/เอียงหลายตัวบน EBay และมันจะง่ายต่อการเพิ่มเซอร์โวอีกตัวสำหรับควบคุมการเล็งแนวตั้งหากคุณต้องการการกำหนดเป้าหมายที่แม่นยำยิ่งขึ้น

ฉันตั้งค่า Raspberry Pi ให้ทำงานเป็นเซิร์ฟเวอร์ VNC จากนั้นเชื่อมต่อผ่าน VNC จากแล็ปท็อปของฉันเพื่อเริ่มโปรแกรมและตรวจสอบวิดีโอและบันทึก cd ลงในไดเร็กทอรีที่คุณเก็บ water_blaster.py และเรียกใช้โดยพิมพ์:

./python water_blaster.py

มันจะเปิดหน้าต่างมอนิเตอร์วิดีโอ เริ่มไฟล์บันทึกชื่อ "./log_[date]_[time] และสร้างไดร์ย่อยชื่อ "trigger_pictures" ซึ่งเก็บไฟล์-j.webp

ต่อไปนี้คือหมายเหตุบางประการเกี่ยวกับการตั้งค่า VNC บน Raspberry Pi ของคุณ:

ครั้งแรกที่ฉันตั้งค่า Raspberry Pi ฉันใช้จอภาพภายนอก/แป้นพิมพ์/เมาส์เพื่อตั้งค่าต่างๆ ที่นั่นฉันเปิดใช้งานเซิร์ฟเวอร์ VNC ที่การกำหนดค่า RasPi (โลโก้ราสเบอร์รี่ / การตั้งค่า / การกำหนดค่า Raspberry Pi / อินเทอร์เฟซ / ตรวจสอบตัวเลือก VNC) หลังจากนั้น เมื่อบูทเครื่องขึ้นมา จะช่วยให้คุณสามารถเชื่อมต่อกับการแสดงผล:0 ผ่านไคลเอ็นต์ VNC (ด้วยข้อมูลประจำตัวเดียวกันกับผู้ใช้เริ่มต้น "pi")

ในโหมดหัวขาด จะมีค่าเริ่มต้นเป็นจอแสดงผลความละเอียดขนาดเล็กมาก (เนื่องจากตรวจไม่พบจอแสดงผลใดๆ) หากต้องการบังคับให้มีความละเอียดที่ใหญ่กว่า ให้เพิ่มสิ่งนี้ใน /boot/config.txt แล้วรีสตาร์ท:

# ใช้ถ้าคุณมี display# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 w/ 60Hz#hdmi_mode=42# 1356x768 w/ 60Hzhdmi_mode=39

ข้อมูลเพิ่มเติม:

ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์

ข้อกำหนดทางอิเล็กทรอนิกส์ของ Water Blaster นั้นน้อยมากโดยใช้ Raspberry Pi 3 gpio เพื่อขับเคลื่อนเซอร์โว วาล์วน้ำ และไฟ IR ผ่านบัฟเฟอร์ทรานซิสเตอร์แบบแยก (สร้างขึ้นบนบอร์ดโปรโตขนาดเล็ก) กล้อง NoIR มาตรฐานเสียบเข้ากับ Raspberry Pi โดยตรง

ชื่อของแผนผังคือ: water_blaster_schematic.pdf และแนบมาด้านล่าง

ฉันใช้แหล่งจ่ายไฟเฉพาะ 5v/2.5A สำหรับ Raspberry Pi และแหล่งจ่ายไฟ 12v/1A สำหรับขับไฟ IR และวาล์วน้ำ แหล่งจ่ายไฟ 12v ยังขับตัวควบคุม 5v เพื่อจ่ายพลังงานให้กับเซอร์โว 5v สิ่งนี้ทำขึ้นเพื่อแยกกำลังควบคุมมอเตอร์ "ที่มีเสียงดัง" ออกจากแหล่งจ่าย Raspberry Pi 5v การจ่ายไฟ 12v/1A กลับกลายเป็นว่าถึงขีดจำกัดแล้ว (จริง ๆ แล้วมากกว่าเล็กน้อยเมื่อฉันเพิ่มพัดลม) รหัสจะปิดไฟ IR ก่อนที่จะเปิดรีเลย์วาล์วน้ำเพื่อให้กระแสดึงอยู่ภายในช่วง… มันจะดีกว่าถ้าคุณใช้แหล่งจ่าย 1.5A ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อขั้วต่อกราวด์ของอุปกรณ์จ่ายไฟทั้งหมดเข้าด้วยกัน

โมดูลกล้องเป็นรุ่น NoIR มาตรฐานที่เสียบเข้ากับ Raspberry Pi โดยตรง เป็นกล้อง Raspberry Pi ที่ถอดฟิลเตอร์ IR ออกแล้ว ทำให้สามารถใช้กับไฟส่องอินฟราเรดเพื่อถ่ายวิดีโอตอนกลางคืนได้

เซอร์โวที่ใช้คือเซอร์โวเชิงเส้นขนาด 5v ขนาดมาตรฐานที่มีแรงบิด 3-4 กก.-ซม.

IR illuminator เป็นวงแหวน LED 48 ดวงราคาประหยัดที่ฉันพบใน EBay ในราคาประมาณ $4 ไม่แข็งแรงมากและสามารถส่องสว่างได้ไกลถึง 15 ฟุตเท่านั้น หากคุณมีงบประมาณเพิ่มขึ้น การได้รับไฟส่องสว่างที่แรงขึ้นจะเป็นการปรับปรุงที่ดี

ฉันเพิ่ม "debug-switch" ลงใน gpio23 รหัสตรวจสอบสถานะของสวิตช์และหากกดจะเป็นการปิดใช้งานรีเลย์วาล์วน้ำสำหรับการทดสอบไฟแห้ง ฉันคิดว่าฉันจะทำมากกว่านี้ด้วยสวิตช์นั้น แต่ไม่ได้ใช้งานเลยจริงๆ ฉันจะลบมันและรหัสที่ค้นหา …

ขั้นตอนที่ 3: การสร้าง: กล้องและไฟเรืองแสง IR

โครงสร้าง: กล้องและไฟเรืองแสง IR
โครงสร้าง: กล้องและไฟเรืองแสง IR

ฉันใช้กล่องกระสุนพลาสติกของ Harbor Freight เป็นตู้ ส่วนใหญ่ฉันต้องการสิ่งที่กันน้ำได้เนื่องจากสเปรย์น้ำ / น้ำไหลบ่าจำนวนมากหลีกเลี่ยงไม่ได้ มีรู/ช่องเจาะจำนวนมากแต่ถูกบังด้วยกันสาด พลาสติกใส หรือเจาะใต้ส่วนที่ยื่นออกมาเพื่อระบายน้ำ เมื่อมองย้อนกลับไป ฉันควรใช้กล่องโลหะที่มีฮีทซิงค์ติดอยู่กับส่วนประกอบกำลังสูงภายใน การทำเช่นนี้ฉันคิดว่าฉันสามารถหลีกเลี่ยงการเพิ่มพัดลมได้ กล่องพลาสติกเป็นฉนวนเกินไปและทำให้อุณหภูมิภายในสูงขึ้นมากเกินไป

หน้าต่างเล็ก ๆ ถูกตัดออกในตอนท้ายเพื่อให้กล้องมองออกไป และติดตั้งไฟอินฟราเรดไว้ในกล่องใส่เลนส์พลาสติกเก่าที่ฉันวางไว้

ขั้นตอนที่ 4: การก่อสร้าง: ท่อน้ำ

การก่อสร้าง: ท่อน้ำ
การก่อสร้าง: ท่อน้ำ
การก่อสร้าง: ท่อน้ำ
การก่อสร้าง: ท่อน้ำ

ช่องเติมน้ำเข้าในวาล์วน้ำ 12v ที่เชื่อมต่อกับท่อไวนิล OD ขนาด ¼” ID x 3/8” ซึ่งจะเชื่อมต่อกับท่อหนามขนาด ¼” กับขั้วต่อ PVC แบบสวมพอดี ¾ และติดกาวเข้ากับฝาน้ำ PVC ขนาด ¾” ที่มีรูขนาด 1/16” ที่เจาะสำหรับกระแสน้ำ ฉันต้องการเก็บรีเลย์ของวาล์วน้ำให้พ้นจากสภาพอากาศจึงติดตั้งไว้ในกล่อง มีอันตรายที่อาจเกิดรอยรั่วได้ แต่ฉันได้เจาะรูระบายน้ำที่ด้านล่างของกล่องและติดตั้งอุปกรณ์อิเล็กทรอนิกส์ในระดับสูง เพื่อลดโอกาสที่น้ำจะเกิดความเสียหายต่ออุปกรณ์อิเล็กทรอนิกส์หากเกิดขึ้น แผนผังที่น่าพึงพอใจน้อยกว่า แต่ปลอดภัยกว่าคือการติดตั้งวาล์วที่ด้านนอกและเรียกใช้สายรีเลย์ 12v ด้านใน แผ่นพลาสติกใสเหนือเซอร์โวเป็นวิธีที่สะดวกในการติดตั้งปลายสายยาง และป้องกันไม่ให้น้ำหยดลงบนเซอร์โว พัดลมเป็นความคิดภายหลังเนื่องจากกล่องร้อนมากเกินไป ฉันสร้างกันสาดเล็กน้อยเพื่อกันไม่ให้น้ำหยดเข้ามา

ขั้นตอนที่ 5: การก่อสร้าง: เล็งเซอร์โว

การก่อสร้าง: เล็งเซอร์โว
การก่อสร้าง: เล็งเซอร์โว

รูถูกตัดที่ด้านบนของกล่องและติดตั้งเซอร์โวเล็งและปิดผนึกด้วยซิลิกอนเพื่อป้องกันไม่ให้น้ำไหลออก

ขั้นตอนที่ 6: การก่อสร้าง: การติดตั้งพาวเวอร์ซัพพลาย พัดลม Raspberry Pi และ Proto-board

โครงสร้าง: ติดตั้งพาวเวอร์ซัพพลาย พัดลม Raspberry Pi และ Proto-board
โครงสร้าง: ติดตั้งพาวเวอร์ซัพพลาย พัดลม Raspberry Pi และ Proto-board

อุปกรณ์จ่ายไฟสองตัว (5v และ 12v) ต่อเข้ากับสายไฟเส้นเดียวที่ออกจากด้านข้างของกล่อง Raspberry Pi และบอร์ดโปรโตติดตั้งอยู่ที่ด้านข้างของกล่องใกล้กับด้านบน สังเกตรูระบายน้ำที่ด้านล่างและรูระบายอากาศที่เจาะตามขอบด้านบน พัดลมติดตั้งอยู่ตรงข้าม Raspberry Pi ไม่มีสวิตช์เปิด/ปิดเนื่องจากฉันไม่ต้องการที่จะสนับสนุนให้ปิด Raspberry Pi โดยไม่มีคำสั่ง "sudo shutdown now" อย่างเป็นทางการ (เช่น ไม่ต้องการให้ปิดเครื่องง่ายเกินไป)

ขั้นตอนที่ 7: การก่อสร้าง: Proto Board

การก่อสร้าง: Proto Board
การก่อสร้าง: Proto Board

บอร์ดโปรโตประกอบด้วยตัวควบคุม 5v, ฝาปิดตัวกรอง, ทรานซิสเตอร์กำลัง (ที่ขับเคลื่อนเซอร์โวและวาล์วน้ำ) และสวิตช์ดีบัก

ขั้นตอนที่ 8: การสร้าง: กล้อง Raspberry Pi

โครงสร้าง: กล้อง Raspberry Pi
โครงสร้าง: กล้อง Raspberry Pi

กล้อง Raspberry Pi เชื่อมต่อโดยตรงกับ Raspberry Pi ผ่านสายริบบิ้นและติดตั้งบนแผ่นพลาสติกใสที่ปิดช่องมองที่ด้านหน้าของกล่อง

ขั้นตอนที่ 9: รายการชิ้นส่วน

โครงการจบลงด้วยต้นทุนประมาณ 120 เหรียญ ค่าใช้จ่ายส่วนใหญ่ของโครงการคือ Raspberry Pi, กล้อง, เซอร์โวและแหล่งจ่ายไฟ ฉันพบชิ้นส่วนส่วนใหญ่ใน EBay หรือ Amazon และชิ้นส่วนประปาที่ร้านฮาร์ดแวร์ในพื้นที่

  • Raspberry Pi 3 (อเมซอน) $38
  • กล้อง NoIR (อีเบย์) $30
  • 5v อะนาล็อกเซอร์โว (แรงบิด 4 กก. ซม.) (อีเบย์) $10
  • พาวเวอร์ซัพพลายแบบติดผนัง 5v/2.4A (อีเบย์) $8
  • วาล์วน้ำ 12v ½” (อีเบย์) $5
  • ท่อ, ข้อต่อท่อ (Osh) $5
  • กล่องกระสุนพลาสติก (ขนส่งสินค้าทางท่าเรือ) $5
  • พาวเวอร์ซัพพลายแบบติดผนัง 12v/1.5A (อีเบย์) $5
  • ไฟเรืองแสงอินฟราเรด (อีเบย์) $4
  • อื่น ๆ. ส่วนประกอบ (ตัวต้านทาน สวิตช์ ไดโอด) $2
  • พัดลมซีพียู (อีเบย์) $2
  • Proto Board, Standoffs, Screws (อีเบย์) $2
  • (2) เพาเวอร์ทรานซิสเตอร์ (2n5296) (อีเบย์) $1
  • เครื่องปรับลม 5v (LM7805) (อีเบย์) $1
  • พลาสติกใส 3/32” (Tap Plastics Misc. Bin) $1
  • สายไฟ (Osh) $1

ร้านค้า/ไซต์ที่ฉันซื้อสินค้า:

  • Alice1101983 เว็บไซต์อีเบย์:
  • เว็บไซต์ 2bevoque EBay:
  • ขนส่งสินค้าทางเรือ
  • ฮาร์ดแวร์ซัพพลายออร์ชาร์ด
  • อเมซอน
  • แตะพลาสติก

แนะนำ: