Mục lục:

Phát hiện Zombie Cú an ninh thông minh (Học sâu): 10 bước (có hình ảnh)
Phát hiện Zombie Cú an ninh thông minh (Học sâu): 10 bước (có hình ảnh)

Video: Phát hiện Zombie Cú an ninh thông minh (Học sâu): 10 bước (có hình ảnh)

Video: Phát hiện Zombie Cú an ninh thông minh (Học sâu): 10 bước (có hình ảnh)
Video: Sự Tiến Hoá của Zombie 2024, Tháng mười một
Anonim

Xin chào tất cả các bạn, chào mừng đến với T3chFlicks! Trong hướng dẫn Halloween này, chúng tôi sẽ chỉ cho bạn cách chúng tôi đưa một bước ngoặt siêu ma quái vào một tác phẩm kinh điển gia dụng bình thường: camera an ninh.

Thế nào?! Chúng tôi đã tạo ra một con cú tầm nhìn ban đêm sử dụng xử lý hình ảnh để theo dõi mọi người. Ồ, và nó rất hay, giống như thật!

Chúng tôi vô cùng hào hứng với dự án này và chúng tôi đã chờ đợi để thực hiện nó kể từ khi Raspberry Pi 4 mới bị loại bỏ. Nó có RAM 4GB, mở ra cánh cửa cho vô số khả năng thực sự thú vị, bao gồm thực hiện một số xử lý hình ảnh với các mô hình học sâu trong thời gian thực.

Nếu bạn muốn theo dõi những thây ma tiếp cận vào dịp Halloween, hoặc chỉ cần kiểm tra khu vườn của bạn trong thời gian còn lại của năm, đây là một trong những dành cho bạn. Bảo mật không cần phải nhàm chán để trở nên hiệu quả!

Quân nhu

Đối với bản dựng này, bạn sẽ cần:

  • Raspberry Pi 4 (4GB Ram) Amazon
  • Máy ảnh tầm nhìn ban đêm Amazon
  • Micro Servo Amazon
  • Cú giả Amazon
  • Keo Amazon
  • Sơn Amazon
  • Vít Amazon
  • Loa USB Amazon
  • Bộ nguồn di động lớn (5v +) Amazon
  • Máy in 3D Amazon

Bước 1: Bước 1: Chặt đầu

Bước 1: Chặt đầu
Bước 1: Chặt đầu
Bước 1: Chặt đầu
Bước 1: Chặt đầu
Bước 1: Chặt đầu
Bước 1: Chặt đầu

Một. Kéo đầu cú ra khỏi đầu con cú (đôi khi bạn chỉ cần phải thô bạo) bằng cách kéo mạnh đầu của nó ở nơi nó gắn vào lò xo.

NS. Đầu của con cú kết nối với cơ thể bằng một hình trụ nằm trên đầu một lò xo lớn. Tháo xi lanh này bằng cách lấy vít ra.

NS. Hình trụ bạn vừa lấy ra được làm bằng hai phần, một cốc nhựa và một ổ trục nằm bên trong nó. Tháo ổ trục ra khỏi xi lanh bằng tuốc nơ vít (hoặc dụng cụ tương tự).

NS. Sử dụng vít kết nối xi lanh với lò xo, gắn servo vào xi lanh.

e. Tháo lò xo bằng cách tháo ba vít đang cố định nó vào thân.

NS. Tạo một lỗ trên đầu của thân cú đủ lớn để lắp một số dây và cáp máy ảnh. Chúng tôi đã sử dụng sự kết hợp không hợp lý giữa máy khoan và tuốc nơ vít để làm điều này.

Bước 2: Bước 2: Thêm thông minh

Bước 2: Thêm thông minh
Bước 2: Thêm thông minh
Bước 2: Thêm thông minh
Bước 2: Thêm thông minh
Bước 2: Thêm thông minh
Bước 2: Thêm thông minh

Một. In 3D vỏ máy ảnh và sơn nó để phù hợp với con cú - chúng tôi đã sử dụng một số loại sơn acrylic rẻ tiền. Vẽ tranh không phải là một bước quan trọng, nhưng nó giúp cải thiện đáng kể diện mạo tổng thể!

NS. Với đầu của con cú lộn ngược, hãy vặn đỉnh của hộp máy ảnh vào bên trong đầu của nó, nơi mỏ của nó nhô ra.

NS. Đặt máy ảnh vào hộp và kết nối cáp máy ảnh.

NS. Dán servo vào bảng điều khiển trên cùng của lò xo.

e. Kết nối dây dài với chân servo (5V, Gnd, tín hiệu)

NS. Đưa cáp máy ảnh và dây dẫn cho servo qua lò xo và qua lỗ bạn đã tạo ở trên cùng của thân để chúng nằm bên trong phần thân rỗng của con cú.

Bước 3: Bước 3: Làm đầy cô ấy

Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy
Bước 3: Làm đầy cô ấy

Một. Tháo phích cắm ở dưới cùng của con cú và tăng kích thước của lỗ này bằng cách cắt nhựa. Tiếp tục tăng kích thước cho đến khi Raspberry Pi và loa có thể vừa với thân của con cú.

NS. Khi lỗ đủ lớn để tất cả các thành phần có thể nằm gọn bên trong, hãy kéo cáp máy ảnh mà bạn đã cấp qua đầu con cú ra khỏi đế và cắm nó vào Raspberry Pi.

NS. Tương tự, kéo dây servo qua và cắm chúng vào Raspberry Pi:

  • + 5v trên servo => + 5V trên Pi
  • Gnd servo => gnd Pi
  • Tín hiệu servo => chân 12 Pi

NS. Cắm loa USB vào Pi.

e. Gắn thẻ SD vào Pi.

NS. Power Pi sử dụng nguồn điện di động.

NS. Cắm Pi, bộ nguồn và loa vào cú qua lỗ trên đế.

Bước 4: Bước 4: Thiết lập Pi

Bước 4: Thiết lập Pi
Bước 4: Thiết lập Pi

TẤT CẢ MÃ CÓ THỂ ĐƯỢC TÌM HIỂU TẠI

Một. Tải xuống Raspian và tải nó lên thẻ SD của bạn bằng Balena Etcher.

NS. Để truy cập số pi của bạn từ xa

  • Thêm một tệp có tên ssh vào thẻ sd khởi động của bạn
  • Thêm một tệp có tên wpa_supplicant.conf và nhập thông tin đăng nhập wifi của bạn vào

    ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1

    mạng = {ssid = "MySSID" psk = "MyPassword"}

NS. Cắm thẻ SD vào pi và thử truy cập qua ssh.

Bước 5: Bước 5: Di chuyển đầu

Bước 5: Di chuyển đầu
Bước 5: Di chuyển đầu

Hướng dẫn mã để di chuyển đầu (điều khiển servo bằng mâm xôi pi)

Để điều khiển một servo chạy trên Pi, chúng ta sẽ tạo tập lệnh điều khiển các chân GPIO mà servo được kết nối với.

Một. Kết nối servo với Pi:

  • + 5v trên servo => + 5V trên Pi
  • Gnd servo => gnd trên Pi
  • Tín hiệu servo => chân 12 trên Pi

NS. Trước tiên, bạn phải thiết lập các chân gpio để sử dụng PWM trên chân tín hiệu của servo.

NS. Sau đó, chỉ cần chọn chu kỳ làm việc (giải thích ở đây) của chân tín hiệu để di chuyển servo từ 90 độ với chu kỳ làm việc 7,5 đến 0 độ khi chu kỳ làm việc là 2,5 và đến 180 độ với chu kỳ làm việc là 12,5

nhập RPi. GPIO dưới dạng GPIO

thời gian nhập GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (Sai) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 độ time.sleep (1) p. ChangeDutyCycle (2.5) # 0 độ thời gian.sleep (1) p. ChangeDutyCycle (12.5) # 180 độ thời gian.sleep (1) ngoại trừ KeyboardInterrupt: p.stop () GPIO.cleanup ()

Bước 6: Bước 6: Hoàn thiện

Bước 6: Làm cho nó hoạt động
Bước 6: Làm cho nó hoạt động
Bước 6: Làm cho nó hoạt động tốt
Bước 6: Làm cho nó hoạt động tốt

Hướng dẫn viết mã để tạo ra cú hoot (phát âm thanh với pi raspberry)

Một. Cắm loa USB.

NS. Tải xuống âm thanh - chúng tôi đã chọn một tiếng kêu ma quái.

NS. Phát âm thanh bằng cách chạy lệnh này: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[NS. Nếu cách này không hiệu quả, hãy kiểm tra xem Pi của bạn đang sử dụng đầu ra nào và ở mức âm lượng nào bằng cách sử dụng lệnh alsamixer - bạn sẽ được chào đón với màn hình bộ trộn nơi bạn có thể thay đổi âm lượng và chọn thiết bị phương tiện của mình. Để tăng âm lượng của âm thanh, hãy thực hiện lệnh như sau omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Để phát âm thanh này bằng Python, hãy xem tập lệnh thử nghiệm của chúng tôi.]

nhập quy trình con

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen (command.split (''), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. ĐƯỜNG ỐNG)

Bước 7: Bước 7: Phát trực tuyến video từ Pi

Bước 7: Phát trực tuyến video từ Pi
Bước 7: Phát trực tuyến video từ Pi
Bước 7: Phát trực tuyến video từ Pi
Bước 7: Phát trực tuyến video từ Pi

Hướng dẫn viết mã tạo luồng camera raspberry pi

Một. Chạy python app.py và xem trên mạng cục bộ của bạn tại https://raspberrypi.local: 5000

NS. Mã này được lấy và điều chỉnh một chút từ Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… anh ấy giải thích một cách độc đáo về cách nó được thực hiện và hướng dẫn của anh ấy rất tuyệt - deffo hãy xem anh ấy! Khái niệm cơ bản là chúng tôi sử dụng phân luồng và bộ tạo để cải thiện tốc độ phát trực tuyến.

Bước 8: Bước 8: Phát hiện cơ thể

Bước 8: Phát hiện cơ thể
Bước 8: Phát hiện cơ thể

Mã phát hiện cơ thể (ImageNetSSD trên luồng video với raspberry pi)

Một. Vì chúng tôi đang sử dụng Raspberry Pi 4, chúng tôi nghĩ tốt nhất là nên thử một số mô hình học sâu trên nó thay vì phương pháp HaarCascade cơ bản mà chúng tôi đã giới hạn cho đến nay.

NS. Chúng tôi đã xem xét một số người mẫu được đào tạo trước, như YOLOv3, trông rất tuyệt. Trọng lượng siêu nhỏ của YOLOv3, lẽ ra là vật hoàn hảo cho Pi, nhưng chúng tôi không thể làm cho nó chạy được:(NS. Thay vào đó, chúng tôi đã chọn mô hình MobileSSD mà chúng tôi có thể chạy bằng mô-đun openCVs DNN (deep neural net), như chúng tôi đã học được từ mã này: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 và từ người hùng của hướng dẫn xử lý hình ảnh, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv /

NS. Tuy nhiên, vì chúng tôi đang cố gắng phát trực tuyến nội dung này và chạy các mô hình trên mọi khung hình, điều này dẫn đến video bị phân mảnh, lag. Chúng tôi đã học lại từ Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ và sử dụng mô-đun đa xử lý Python để đưa hình ảnh của chúng tôi vào hàng đợi nơi chúng có thể được xử lý mà không chặn quá nhiều luồng camera.

e. Hãy thử tự chạy mã:)

Bước 9: Bước 9: Gửi thông báo Zombie

Bước 9: Gửi thông báo Zombie
Bước 9: Gửi thông báo Zombie
Bước 9: Gửi thông báo Zombie
Bước 9: Gửi thông báo Zombie

Mã để gửi thông báo (python tới điện thoại)

Một. Chúng tôi quyết định sử dụng dịch vụ thông báo

NS. Bạn có thể có một tài khoản miễn phí và tải xuống ứng dụng và thực sự nhanh chóng bắt đầu thiết lập thông báo trên thiết bị di động. Chúng tôi đã tạo các thông báo bằng cách sử dụng tập lệnh python như thế này.

yêu cầu nhập khẩu

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Cú đã phát hiện ra một thây ma." } r = request.post ("https://api.pushing.co/1/push", data = payload)

Nó cực kỳ đơn giản và bạn có thể tùy chỉnh tên thông báo của mình!

Bước 10: Thật đáng tiếc

Thật là một Hoot!
Thật là một Hoot!

Chúng tôi hy vọng bạn thích dự án Smart Security Owl của chúng tôi! Đây là một trò chơi siêu thú vị và tôi cảm thấy an toàn hơn rất nhiều khi biết ngôi nhà của tôi đang được canh gác bởi con cú đáng tin cậy của chúng tôi.

Nếu bạn nghĩ rằng đây sẽ là một sự bổ sung tuyệt vời của Halloween cho ngôi nhà thông minh của mình, hãy bình chọn cho chúng tôi trong cuộc thi Halloween của Người dạy và như thường lệ, hãy nhớ thích, bình luận và đăng ký!

Đăng ký vào danh sách gửi thư của chúng tôi!

Đề xuất: