Mục lục:

Tự động theo dõi Water Blaster: 9 bước
Tự động theo dõi Water Blaster: 9 bước

Video: Tự động theo dõi Water Blaster: 9 bước

Video: Tự động theo dõi Water Blaster: 9 bước
Video: Đen - Nấu ăn cho em ft. PiaLinh (M/V) 2024, Tháng mười một
Anonim
Máy thổi nước tự động theo dõi
Máy thổi nước tự động theo dõi

Hươu ăn hoa hồng đã thúc đẩy tôi chế tạo một máy bắn nước theo dõi mục tiêu để giúp ngăn chặn những sinh vật phàm ăn… Máy bắn nước này sử dụng tính năng phát hiện chuyển động dựa trên video để nhắm mục tiêu một servo và kích hoạt các tia nước ngắn vào mục tiêu. Nó chỉ bắn sau khi mục tiêu thu được đứng yên trong vài giây (độ trễ có thể được điều chỉnh trong mã). Tôi không quan tâm liệu những con hươu có chỉ đi ngang qua hay không nhưng nếu chúng dừng lại để ăn nhẹ, thì tuyệt vời!

Đây là video tôi thử nghiệm máy thổi nước:

Máy thổi nước là một hộp độc lập có thể được kết nối từ xa với (qua wi-fi / VNC) từ bất kỳ máy tính nào trong mạng của bạn để theo dõi hoạt động của nó. Nó sẽ chụp ảnh mỗi khi nó được kích hoạt để sau này bạn có thể thấy những gì đang được phát nổ.

Tôi đã sử dụng Raspberry Pi, cam NoIR, đèn chiếu hồng ngoại, servo tuyến tính tiêu chuẩn và van nước để tạo ra máy thổi nước theo dõi mục tiêu ngày / đêm này. Mã được viết bằng Python và vay mượn nhiều từ các mẫu mã xử lý hình ảnh cv2 của Adrian Rosebrock. Bạn có thể xem bài viết của anh ấy tại:

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

Vì tôi đang theo đuổi các mục tiêu tương đối lớn, dựa trên mặt đất (hươu), nên vấn đề của tôi đã được đơn giản hóa một phần. Tôi chỉ yêu cầu nhắm mục tiêu theo chiều ngang để tôi có thể di chuyển bằng cách chỉ sử dụng một servo. Chờ cho hươu đứng yên giúp tôi loại bỏ rất nhiều yếu tố kích hoạt sai lầm. Đây là lần thử quay lại 0 của tôi và tôi đã tìm thấy một số điều tôi sẽ sửa đổi nếu tôi tạo một cái khác. Tôi đã ghi nhận những điều này trong phần viết chi tiết sau đây.

Bước 1: Mã

Máy thổi nước sử dụng Raspberry Pi 3 để xử lý. Để quay video, một cam NoIR Raspberry Pi được sử dụng cùng với đèn chiếu sáng hồng ngoại cho video ban đêm. Gói OpenCV / cv2 Python được sử dụng để nắm bắt và xử lý thông tin hình ảnh và tính toán tọa độ mục tiêu. Thư viện pigpio được sử dụng để điều khiển gpio cho hoạt động của servo ổn định. Sử dụng gói RPi. GPIO thông thường dẫn đến servo bị rung. LƯU Ý: Khi sử dụng thư viện pigpio, bạn cần chạy daemon pigpio. Thêm tệp này vào tệp khởi động Pi’s /etc/rc.local của bạn cho pigpio lib và giao diện máy ảnh Raspberry Pi:

/etc/rc.local# Thiết lập / dev / video0 để liên kết đến Raspberry Pi được xây dựng trong giao diện máy ảnhmodprobe bcm2835-v4l2 # Khởi động daemon pigpio cho thư viện điều khiển Raspberry Pi IOpigpiod

Xem https://pypi.python.org/pypi/pigpi để biết thêm chi tiết.

Mã nguồn có tên: water_blaster.py và được đính kèm bên dưới.

Tuyên bố từ chối trách nhiệm: Tôi mới sử dụng mã hóa Python vì vậy đừng coi nó như bất kỳ mô hình tuyệt vời nào của phong cách mã hóa Python!

Thuật toán cơ bản như sau:

  • Lấy khung tham chiếu video ban đầu. Điều này sẽ được sử dụng để so sánh với để phát hiện chuyển động.
  • Lấy khung hình khác.
  • Chuyển đổi khung hình sang tỷ lệ màu xám, kích thước nó, làm mờ nó.
  • Tính toán sự khác biệt so với hệ quy chiếu
  • Lọc ra các khác biệt nhỏ, lấy tọa độ của chênh lệch lớn nhất.
  • Đặt hẹn giờ. Nếu tọa độ mục tiêu không thay đổi trong vài giây, hãy chụp ảnh thứ chúng ta sắp bắn và kích hoạt van nước để tạo ra một luồng nước. Quét servo qua lại vài độ để phát ra tiếng nổ “shotgun”.
  • Nếu chúng tôi nhận được ba trình kích hoạt quá nhanh, hãy tắt tính năng chụp, tạm dừng một chút, sau đó cập nhật khung tham chiếu vì chúng tôi có thể đang chụp ở bóng tối hoặc đèn hiên vừa được bật…
  • Cứ sau vài phút, hãy cập nhật hệ quy chiếu để tính đến các thay đổi tần số thấp (mặt trời mọc / lặn, trời u ám di chuyển đến, v.v.)

Tôi chỉ đang sử dụng cơ chế nhắm ngang nhưng nhiều giá đỡ servo xoay / nghiêng có sẵn trên EBay và sẽ dễ dàng thêm một servo khác để điều khiển nhắm mục tiêu theo chiều dọc nếu bạn muốn nhắm mục tiêu chính xác hơn.

Tôi thiết lập Raspberry Pi để chạy dưới dạng máy chủ VNC, sau đó kết nối với nó qua VNC từ máy tính xách tay của mình để khởi động chương trình và theo dõi video cũng như nhật ký. cd vào thư mục nơi bạn lưu trữ water_blaster.py và chạy nó bằng cách gõ:

./python water_blaster.py

Nó sẽ mở một cửa sổ giám sát video, bắt đầu một tệp nhật ký có tên "./log_[date]_[time] và tạo một dir phụ có tên" trigger_pictures "nơi các tệp-j.webp

Dưới đây là một số lưu ý khi thiết lập VNC trên Raspberry Pi của bạn:

Lần đầu tiên thiết lập Raspberry Pi, tôi đã sử dụng màn hình / bàn phím / chuột ngoài để thiết lập mọi thứ. Ở đó, tôi đã bật máy chủ VNC tại cấu hình RasPi (Logo Raspberry / Tùy chọn / Cấu hình Raspberry Pi / Giao diện / Kiểm tra tùy chọn VNC). Sau đó, khi khởi động, nó cho phép bạn kết nối với màn hình hiển thị: 0 của nó thông qua ứng dụng khách VNC (có cùng thông tin xác thực với người dùng mặc định "pi").

Ở chế độ không đầu, nó mặc định hiển thị độ phân giải rất nhỏ (vì nó không phát hiện bất kỳ màn hình nào), để buộc nó ở độ phân giải lớn hơn, bạn thêm nó vào /boot/config.txt và khởi động lại:

# Sử dụng nếu bạn có màn hình # hdmi_ignore_edid = 0xa5000080hdmi_group = 2 # 1400x1050 w / 60Hz # hdmi_mode = 42 # 1356x768 w / 60Hzhdmi_mode = 39

Đây là một số thông tin thêm:

Bước 2: Điện tử

Yêu cầu về thiết bị điện tử của máy thổi nước là tối thiểu khi sử dụng Raspberry Pi 3 gpio để điều khiển servo, van nước và đèn chiếu sáng hồng ngoại thông qua bộ đệm bóng bán dẫn rời (được xây dựng trên một bảng proto nhỏ). Một máy ảnh NoIR tiêu chuẩn cắm trực tiếp vào Raspberry Pi.

Tên của giản đồ là: water_blaster_schematic.pdf và được đính kèm bên dưới.

Tôi đã sử dụng nguồn cung cấp chuyên dụng 5v / 2.5A cho Raspberry Pi và nguồn cung cấp 12v / 1A để điều khiển đèn chiếu sáng hồng ngoại và van nước. Nguồn cung cấp 12v cũng điều khiển bộ điều chỉnh 5v để cung cấp điện cho servo 5v. Điều này được thực hiện để giữ cho nguồn điều khiển động cơ "ồn ào" được cách ly khỏi nguồn cung cấp Raspberry Pi 5v. Nguồn cung cấp 12v / 1A hóa ra ở ngay giới hạn của nó (thực sự hơi quá một chút khi tôi thêm quạt). Mã tắt đèn chiếu sáng hồng ngoại trước khi cấp nguồn cho rơ le van nước để giữ dòng điện trong phạm vi … Sẽ tốt hơn nếu bạn sử dụng nguồn cung cấp 1,5A. Đảm bảo kết nối các cực nối đất của tất cả các bộ nguồn với nhau.

Mô-đun máy ảnh là phiên bản NoIR tiêu chuẩn cắm trực tiếp vào Raspberry Pi. Đó là một cam Raspberry Pi với bộ lọc IR đã được loại bỏ cho phép nó được sử dụng với đèn chiếu IR để quay video ban đêm.

Servo được sử dụng là servo tuyến tính 5v có kích thước tiêu chuẩn với mô-men xoắn 3-4 kg-cm.

Đèn chiếu sáng hồng ngoại là một vòng LED 48 chi phí thấp mà tôi tìm thấy trên EBay với giá khoảng 4 đô la. Nó không siêu mạnh và chỉ có thể chiếu sáng trong phạm vi khoảng 15 feet. Nếu bạn có thêm ngân sách, việc trang bị một đèn chiếu sáng mạnh hơn sẽ là một cải tiến tốt.

Tôi đã thêm một “công tắc gỡ lỗi” vào gpio23. Mã kiểm tra trạng thái của công tắc và nếu được nhấn sẽ vô hiệu hóa rơ le van nước để kiểm tra cháy khô. Tôi đã nghĩ rằng mình sẽ làm được nhiều việc hơn với công tắc đó nhưng cuối cùng lại không thực sự sử dụng nó. Tôi sẽ xóa nó và mã tìm kiếm nó…

Bước 3: Thi công: Camera và Đèn chiếu hồng ngoại

Cấu tạo: Máy ảnh và Đèn chiếu sáng hồng ngoại
Cấu tạo: Máy ảnh và Đèn chiếu sáng hồng ngoại

Tôi đã sử dụng một hộp đạn nhựa Harbour Freight làm vỏ bọc. Chủ yếu là tôi cần một thứ gì đó có khả năng chống nước vì rất nhiều nước phun / chảy là không thể tránh khỏi. Có rất nhiều lỗ / vết cắt nhưng chúng được che bằng mái hiên, nhựa trong hoặc được khoan dưới các phần nhô ra để thoát nước. Trong tầm nhìn xa, lẽ ra tôi nên sử dụng một hộp kim loại với các bộ tản nhiệt gắn bên trong cho các thành phần công suất cao. Bằng cách đó, tôi nghĩ rằng tôi có thể tránh được việc thêm người hâm mộ. Hộp nhựa quá cách nhiệt và khiến nhiệt độ bên trong tăng quá mức.

Cuối cùng một cửa sổ nhỏ đã được cắt để máy ảnh có thể nhìn ra ngoài và đèn chiếu sáng hồng ngoại được gắn bên trong một hộp thấu kính bằng nhựa cũ mà tôi đã đặt xung quanh.

Bước 4: Thi công: Đường ống nước

Xây dựng: Đường ống nước
Xây dựng: Đường ống nước
Xây dựng: Đường ống nước
Xây dựng: Đường ống nước

Đầu vào nước được dẫn vào van nước 12v được kết nối với ống vinyl ¼”ID x 3/8” OD. Đến lượt nó, nó được kết nối với một ống thép gai ¼”đến ¾ đầu nối PVC vừa vặn trượt và được dán vào một nắp nước PVC ¾” có khoan lỗ 1/16”cho dòng nước. Tôi muốn giữ cho rơ le van nước không bị ảnh hưởng bởi thời tiết nên nó được gắn bên trong hộp. Có nguy cơ là tôi có thể bị rò rỉ nhưng tôi đã khoan các lỗ thoát nước ở đáy hộp và lắp các thiết bị điện tử lên cao để giảm thiểu nguy cơ nước có thể làm hỏng thiết bị điện tử nếu điều đó xảy ra. Phương án kém thẩm mỹ hơn nhưng an toàn hơn sẽ là gắn van ở bên ngoài và chạy dây rơ le 12v bên trong. Đĩa nhựa trong suốt trên servo là một cách thuận tiện để gắn đầu vòi và nó giữ cho nước không nhỏ xuống servo. Người hâm mộ là một suy nghĩ sau khi chiếc hộp nóng lên quá nhiều. Tôi dựng một mái hiên nhỏ trên đó để ngăn nước chảy vào.

Bước 5: Xây dựng: Nhắm mục tiêu Servo

Xây dựng: Aiming Servo
Xây dựng: Aiming Servo

Một lỗ được khoét ở trên cùng của hộp và servo nhắm mục tiêu được gắn và bịt kín bằng silicon để giữ nước.

Bước 6: Xây dựng: Gắn bộ nguồn, Quạt, Raspberry Pi và Proto-board

Cấu tạo: Gắn bộ nguồn, Quạt, Raspberry Pi và Proto-board
Cấu tạo: Gắn bộ nguồn, Quạt, Raspberry Pi và Proto-board

Hai nguồn điện (5v và 12v) được nối với một dây nguồn duy nhất ra khỏi mặt bên của hộp. Raspberry Pi và một bảng proto được gắn ở bên cạnh hộp gần trên cùng. Chú ý các lỗ thoát nước được khoan ở phía dưới và lỗ thoát khí được khoan dọc theo cạnh trên. Quạt được gắn đối diện với Raspberry Pi. Không có nút bật / tắt vì tôi không muốn khuyến khích tắt Raspberry Pi mà không có lệnh chính thức “sudo shutdown now” (tức là không muốn tắt nguồn quá dễ dàng).

Bước 7: Xây dựng: Bảng Proto

Xây dựng: Ban Proto
Xây dựng: Ban Proto

Bảng proto chứa bộ điều chỉnh 5v, nắp bộ lọc, bóng bán dẫn nguồn (dẫn động servo và van nước), và công tắc gỡ lỗi.

Bước 8: Xây dựng: Máy ảnh Raspberry Pi

Cấu tạo: Máy ảnh Raspberry Pi
Cấu tạo: Máy ảnh Raspberry Pi

Raspberry Pi cam kết nối trực tiếp với Raspberry Pi thông qua cáp ribbon và được gắn trên tấm nhựa trong bao phủ phần cắt xem ở mặt trước của hộp.

Bước 9: Danh sách bộ phận

Dự án đã tiêu tốn khoảng 120 đô la. Phần lớn chi phí của dự án là Raspberry Pi, máy ảnh, servo và nguồn điện. Tôi tìm thấy hầu hết các bộ phận trên EBay hoặc Amazon và các bộ phận ống nước tại cửa hàng phần cứng địa phương.

  • Raspberry Pi 3 (Amazon) $ 38
  • Máy ảnh NoIR (EBay) $ 30
  • 5v Analog Servo (mô-men xoắn 4kg-cm) (EBay) $ 10
  • Nguồn điện treo tường 5v / 2.4A (EBay) $ 8
  • Van nước 12v ½”(EBay) $ 5
  • Ống, Bộ nối ống (Osh) $ 5
  • Hộp đạn nhựa (Vận chuyển hàng hóa tại cảng) $ 5
  • Nguồn điện treo tường 12v / 1.5A (EBay) $ 5
  • Đèn chiếu sáng IR (EBay) $ 4
  • Khác. Linh kiện (Điện trở, Công tắc, Diode) $ 2
  • Quạt CPU (EBay) $ 2
  • Proto Board, Standoffs, Screws (EBay) $ 2
  • (2) Bóng bán dẫn nguồn (2n5296) (EBay) $ 1
  • Bộ điều chỉnh 5v (LM7805) (EBay) $ 1
  • Nhựa trong suốt 3/32”(Thùng rác nhựa dẻo) $ 1
  • Dây nguồn (Osh) $ 1

Các cửa hàng / trang web nơi tôi đã mua các mặt hàng:

  • Alice1101983 Trang web EBay:
  • Trang web 2bevoque EBay:
  • vận chuyển cảng biển
  • Phần cứng Cung cấp Orchard
  • Amazon
  • Nhấn vào nhựa

Đề xuất: