Summary
Bài viết này sẽ hướng dẫn bạn cách thiết lập một hệ thống camera an ninh IoT độc đáo bằng Raspberry Pi Zero và webcam USB. Đây không chỉ là một dự án thú vị mà còn mang lại nhiều giá trị về an toàn và tiện ích cho ngôi nhà của bạn. Key Points:
- Tối ưu hóa năng lượng cho hệ thống giám sát IoT bằng cách sử dụng thư viện hiệu quả và chế độ tiết kiệm năng lượng của Raspberry Pi Zero.
- Cải thiện an ninh mạng với các biện pháp bảo mật như VPN, tường lửa và xác thực hai yếu tố để bảo vệ hệ thống giám sát.
- Thực hiện xử lý dữ liệu thông minh với công nghệ AI như phát hiện chuyển động và nhận diện khuôn mặt, cùng với chiến lược lưu trữ tối ưu.
Cài đặt camera an ninh IoT với Raspberry Pi Zero và webcam USB
Liệu chúng ta có thể chuyển tiếp video từ camera đến Home Assistant và sử dụng một thư viện hoặc module để phát hiện chuyển động? Hoặc liệu chúng ta có thể thực hiện phát hiện chuyển động bằng phần mềm xử lý video và theo cách nào đó tạo ra các sự kiện chuyển động để gửi đến Home Assistant? Bài viết này sẽ giúp bạn bắt đầu. Bạn sẽ học cách thiết lập một webcam bên ngoài kết nối với Raspberry Pi Zero, cùng với phần mềm nào có thể được sử dụng cho việc truyền video chung và phát hiện chuyển động.
Tổng quan phần cứng của Raspberry Pi Zero và webcam
- CPU đơn nhân ARMv6 1GHz
- RAM 512MB
- 40 chân kết nối
- Cổng Mini HDMI
- Cổng Mini USB2.0
- Hỗ trợ Wi-Fi 2.4GHz (802.11n)
- Kết nối camera CSI
Đối với camera, tôi đã chọn sử dụng một webcam USB2.0 từ thương hiệu không rõ, hỗ trợ độ phân giải lên đến 1920*1080 với tốc độ khung hình là 30FPS. Webcam này được kết nối thông qua một bộ chuyển đổi USB-B sang Micro-USB. Với một vỏ bọc tùy chỉnh, tất cả trông thật sự gọn gàng và bắt mắt.
Ngoài ra, Raspberry Pi Zero còn nổi bật nhờ vào thiết kế chắc chắn và khả năng tản nhiệt tốt, giúp nó hoạt động ổn định khi xử lý tín hiệu hình ảnh từ webcam qua giao thức USB. Việc lựa chọn giữa các loại webcam cũng quan trọng; bạn nên xem xét về độ phân giải và tốc độ khung hình để tìm ra thiết bị phù hợp nhất cho nhu cầu của mình.
Kết luận | Chi tiết |
---|---|
Cảm biến môi trường | Sử dụng cảm biến để thu thập dữ liệu về nhiệt độ, độ ẩm và chất lượng không khí. |
Phát hiện chuyển động | Có thể sử dụng camera USB để phát hiện chuyển động thông qua phần mềm xử lý video. |
Raspberry Pi Zero | Là một bo mạch nhỏ gọn với khả năng chạy hệ điều hành Linux, thích hợp cho các ứng dụng IoT. |
Phần mềm cần thiết | Cài đặt `motion` để tạo luồng video HTTP và ghi lại video khi phát hiện chuyển động. |
Tích hợp với Home Assistant | Sử dụng URL luồng MJPEG trong cấu hình Home Assistant để hiển thị camera trên dashboard. |
Cài đặt hệ điều hành Raspberry Pi OS cơ bản
Hệ điều hành cơ bản mà tôi chọn là phiên bản Raspberry Pi OS mặc định _`2024-11-19`_, dựa trên Debian. Tôi sẽ không đi sâu vào chi tiết cài đặt, bạn có thể tham khảo hướng dẫn tuyệt vời từ [Quỹ Raspberry Pi]. Sau khi hoàn tất, tôi đã cập nhật các gói hệ thống, thay đổi mật khẩu và kích hoạt SSH. Liệu webcam có hoạt động ngay lập tức hay tôi cần cài đặt thêm phần mềm?
## Kết nối Webcam
Trên tất cả các hệ thống Linux, công cụ CLI hữu ích `dmesg` cho thấy cách phần cứng được nhận diện và các mô-đun Kernel nào đã được kích hoạt. Khi kết nối webcam USB bên ngoài, tôi nhận được những thông điệp sau:
[ 599.766370] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
[ 599.897563] usb 1-1.3: config 1 interface 0 altsetting 0 endpoint 0x83 has an invalid bInterval 32, changing to 9
[ 599.898634] usb 1-1.3: New USB device found, idVendor=1b3f, idProduct=2247, bcdDevice= 1.00
[ 599.898671] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[ 599.898694] usb 1-1.3: Product: GENERAL WEBCAM
[ 599.898716] usb 1-1.3: Manufacturer: GENERAL
[ ... ]
Những thông điệp này chỉ ra rằng:
- Camera đã kết nối với Hub USB nội bộ của Raspberry Pi với ID là số “4”.
- Tốc độ kết nối là USB2.0 ("thiết bị USB tốc độ cao").
- Nó cung cấp tên và số seri của camera.
- Mô đun kernel `uvcvideo`, viết tắt của Lớp Video USB đã được tải lên và một tập tin thiết bị tương ứng đã được tạo ra.
- Microphone tích hợp của camera cũng đã được đăng ký (nhưng tôi sẽ không sử dụng nó).
Tóm lại, webcam dường như sẵn sàng để sử dụng mà không cần cài đặt thêm gì đặc biệt nữa!
Kết nối webcam với Raspberry Pi Zero
apt update
apt install v4l-utils
Sau khi cài đặt xong, chúng ta có thể kiểm tra đặc điểm chi tiết của camera đã kết nối bằng cách sử dụng công cụ này:
```yaml
> v4l2-ctl --all
Driver Info:
Tên driver : uvcvideo
Loại thẻ : GENERAL WEBCAM: GENERAL WEBCAM
Thông tin bus : usb-20980000.usb-1.3
Phiên bản driver: 5.10.92
Khả năng : 0x84a00001
Ghi video
Ghi siêu dữ liệu
Truyền phát
Định dạng pix mở rộng
Khả năng thiết bị:
Khả năng thiết bị:
0x04200001
Video Capture
Streaming
Extended Pix Format
Thông tin Media Driver:
Tên driver : uvcvideo
Mô hình : GENERAL WEBCAM: GENERAL WEBCAM
Serial : JH0319_20200710_v012
Thông tin bus : usb-20980000.usb-1.3
Phiên bản media : 5.10.92
Phiên bản phần cứng: 0x00000100 (256)
Phiên bản driver : 5.10.92
Thông tin giao diện:
ID : 0x03000002
Loại : V4L
Thông tin thực thể Video:
ID : 0x00000001 (1)
Tên : GENERAL WEBCAM: GENERAL WEBCAM
Chức năng : V4L2 I/O
Cờ : mặc định
Pad :
0x01000007 :
Sink
Liên kết :
0x02000013: từ pad từ xa
của thực thể 'Extension 7': Dữ liệu, Đã bật, Bất biến
Ưu tiên : 2
Video input : 0 (Camera 1: ok)
Định dạng Video Capture:
Chiều rộng/Cao :1920/1080
Định dạng pixel :'MJPG' (Motion-JPEG)
Trường : Không
Bytes mỗi dòng : Không
Kích thước hình ảnh :1843200
Không gian màu :sRGB
Hàm chuyển :Tái tạo màu Rec.709
Encoding :ITU-R601
Phân loại :Mặc định (phù hợp với Phạm vi đầy đủ)
Flags :
Khả năng Crop Video Capture:
Giới hạn :Bên trái , Bên trên , Chiều rộng , Chiều cao
:Là không và chiều rộng là không và chiều cao là không
Tình trạng mặc định:
Chiều dài = Khung hình tối đa
Tham số Streaming Video Capture:
Khả năng :
timeperframe
Tốc độ khung hình :<30> .<30>
Bộ đệm đọc = <đọc vào>
brightness = [15] <16>
contrast = [15] <16>
hue = [15] <16>
Có rất nhiều thông tin chi tiết! Những điều quan trọng nhất ở đây bao gồm chiều rộng/cao được báo cáo là `1920/1080` và tốc độ khung hình là `30 FPS`, xác nhận thông số kỹ thuật phần cứng và hỗ trợ phát trực tuyến `MJPG`. Giờ đây, hãy cùng xem cách sử dụng những thông tin này để tùy chỉnh camera nhé!

Xác định khả năng phần cứng của webcam
Tuy nhiên, để xem trực tiếp luồng video này, bạn không thể sử dụng công cụ tích hợp sẵn như `raspistill`, vì nó chỉ hoạt động với các camera được kết nối qua cổng CSI. Thay vào đó, bạn cần tìm kiếm một thư viện hoặc công cụ khác phù hợp hơn để có thể xem hình ảnh từ camera của mình một cách hiệu quả.
Truy cập luồng video từ camera
install ffmpeg
Sau đó, để tạo ra một hình ảnh JPEG từ camera cho mỗi luồng video được báo cáo, hãy sử dụng lệnh sau: -f v4l2 -video_size 1280x720 -i /dev/video0 -frames 1 out.jpg
Khi bạn đã xác định được tệp thiết bị nào là camera thực sự, chúng ta có thể tiến hành thiết lập phát trực tiếp. ## Phần mềm Ghi lại Video và Phát trực tuyến Video
Hệ điều hành Raspberry Pi là một phiên bản của Debian. Do đó, có rất nhiều phần mềm video sẵn có. Mục tiêu của bài viết này là khởi động việc ghi hình trên Raspberry Pi, chuyển đổi luồng video này thành định dạng tương thích với web và kết nối Home Assistant với luồng này.
Để cải thiện khả năng truy cập vào luồng video từ camera, bạn cũng nên hiểu về nguyên lý hoạt động của giao thức RTSP (Real-Time Streaming Protocol) và cách nó giúp truyền tải video một cách mượt mà hơn. Hơn nữa, việc chọn webcam USB với độ phân giải cao và khả năng tương thích tốt với Raspberry Pi Zero cũng rất quan trọng. Ngoài ra, đừng quên tinh chỉnh các tham số như bitrate và framerate để tối ưu hóa chất lượng hình ảnh trong những điều kiện mạng khác nhau nhé.
Phần mềm ghi hình và phát trực tiếp video
Cấu hình camera bằng gói motion
apt install motion
Tích hợp luồng camera vào Home Assistant
# Mức độ thông báo log [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).
log_level 7
# Thư mục đích để lưu ảnh chụp và video
target_dir /home/pi/camera
# Thiết bị video (ví dụ: /dev/video0) sẽ được sử dụng để ghi hình.
videodevice /dev/video0
# Chiều rộng của ảnh tính bằng pixel.
width 1280
# Chiều cao của ảnh tính bằng pixel.
height 720
# Số khung hình tối đa mỗi giây có thể được ghi lại.
framerate 30
# Xuất ảnh khi phát hiện chuyển động
picture_output best
# Tên tệp (không có phần mở rộng) cho ảnh tương đối với thư mục đích
picture_filename %Y%m%d%H%M%S-%q
# Tạo phim từ các sự kiện chuyển động.
movie_output on
# Thời gian tối đa của phim tính bằng giây.
movie_max_time 60
# Chất lượng mã hóa của phim. (0= sử dụng bitrate. 1= chất lượng tệ nhất, 100= chất lượng tốt nhất)
movie_quality 45
# Container/Codec sẽ dùng cho phim. Xem motion_guide.html
movie_codec mp4
# Tên tệp (không có phần mở rộng) cho phim tương đối với thư mục đích
movie_filename %Y%m%d%H%M%S-%v
# Loại video: 8=mjpg hoặc 15=YUYV
v4l2_palette=8
# Giới hạn kết nối stream chỉ đến localhost.
stream_localhost off
stream_maxrate 30
stream_motion on
Với cấu hình này, hãy chạy lệnh `sudo systemctl motion start`, sau đó kiểm tra xem không có lỗi nào báo cáo bằng cách theo dõi nhật ký dịch vụ systemd thông qua `journalctl -u motion.service`. Cuối cùng, từ mạng nội bộ của bạn, hãy truy cập Raspberry Pi Zero trên cổng motion đã cấu hình sẵn như `http://rasperry-zero.local:8080` và bạn sẽ thấy luồng video trực tiếp.
Kết luận về hệ thống camera an ninh DIY
camera:
- platform: mjpeg
mjpeg_url: http://192.168.178.22/
name: camera
Sau khi khởi động lại Home Assistant, bạn có thể thêm một thẻ dashboard mới với cấu hình như sau:
show_state: true
show_name: true
camera_view: auto
type: picture-entity
hold_action:
action: more-info
Thẻ mới sẽ hiển thị hình ảnh gần nhất từ camera, và nếu bạn nhấp vào nó, bạn sẽ thấy luồng video trực tiếp.
Kết luận là bằng cách kết hợp Raspberry Pi với một webcam bên ngoài, bạn có thể tạo ra một hệ thống truyền tải video trực tiếp đơn giản đồng thời ghi lại các đoạn phim khi phát hiện chuyển động. Bài viết này đã trình bày tất cả các bước cần thiết để thực hiện điều đó. Đầu tiên, hãy kiểm tra rằng camera đã được nhận diện đúng cách bằng cách theo dõi thông điệp kernel qua lệnh `dmesg`. Thứ hai, xem chi tiết về camera của bạn, khả năng và tệp thiết bị của nó thông qua lệnh `v4l2-ctl`. Cuối cùng, hãy sử dụng thư viện `motion` để truy cập vào camera và tạo ra một luồng HTTP nhằm cho phép xem các bản ghi của camera trong mạng nội bộ của bạn. Khi mọi thứ đã được thiết lập xong xuôi, bước cuối cùng là tích hợp nó vào Home Assistant.
Reference Articles
Các kỹ thuật cơ bản với Camera cho Raspberry Pi (Phần 1)
Sau khi mua mạch camera về. Đầu tiên các bạn hãy tháo case ra và lắp vào khe cắm camera trên board mạch của Raspberry Pi.
Source: pivietnam.com.vnKhóa thông minh nhận dạng khuôn mặt với Raspberry Pi ...
Đầu tiên ta phải dò xem OpenCV và máy tính của bạn giao tiếp qua webcam ID nào. Các bạn cắm webcam và chạy python multiple_camera.py. Nếu webcam ...
Source: Cộng đồng Arduino Việt NamStreaming video với Raspberry Pi Camera lên web server
Các bạn mở Raspberry Pi lên, sau đó nhấp chuột vào Menu, chọn Preferences(Tùy thích) , chọn Raspberry Pi Configuration. Một hộp thoại hiện lên, bạn chọn tab ...
Source: pivietnam.com.vnThiết kế hệ thống camera thông minh cảnh báo cháy ứng ...
Điều khiển ngoại vi USB trên SMT23F103C8 để tạo ra một cổng COM ảo để giao tiếp với driver trên RPi. · Điều khiển ngoại vi tạo xung nhịp tạo tần ...
Source: ÁNH SÁNG VÀ CUỘC SỐNGNên dùng cái gì thay cho motioneyeos để biến Raspberry ...
Mình định dùng một pi 3b+ (với hai webcam qua usb) và một pi ZeroW ... Tớ đã cài Pi OS, cài motionEye, và hai cái camera USB của tớ ...
Source: Reddit · r/selfhostedRaspberry Pi 3 - chiếc máy tính nhỏ nhưng có võ
Raspbian là OS chính thức dành cho Pi. Cách cài đặt rất đơn giản, chỉ cần tải Raspbian về, giải nén, copy vào thẻ nhớ microSD rồi gắn thẻ vào máy Pi cho nó chạy ...
Source: VibloNhững ứng dụng tiêu biểu của Raspberry Pi
Ngoài Raspberry Pi ta cần có thẻ microSD, nguồn cung cấp điện và cáp HDMI cùng màn hình hiển thị phù hợp. Thêm vào đó để có thể sử dụng như một máy tính ta cần ...
Source: BKAII6 phần mềm camera an ninh DIY tốt nhất dành cho Linux
Các tính năng chuyên nghiệp khiến cho ZoneMinder trở thành giải pháp hoàn hảo để đảm bảo an ninh cho cả gia đình và trong doanh nghiệp.
Source: Quantrimang.com
Related Discussions
Ôi bài viết này hay quá! Mình cũng từng setup camera an ninh bằng Pi Zero với webcam cũ, chạy ngon lành mà giá rẻ bèo. Ai muốn làm hệ thống DIY tiết kiệm thì cứ follow hướng dẫn này chuẩn chỉnh từ A-Z luôn. Nhất là phần tích hợp với Home Assistant, mình làm xong khoe cả xóm =))