전체일치
 
 (주)레오콤은 당일출하 상품(재고)을 제외하곤 모두 수입품이므로 매장 방문전 확인 바랍니다.

플러그 앤 플레이 Raspberry Pi USB 웹캠

모든 성공 사례
메모
이 튜토리얼은 Raspberry Pi OS Bullseye용으로 작성되었으며 최신 운영 체제인 Bookworm용으로 아직 업데이트되지 않았습니다. 네트워킹 변경을 포함하여 두 OS 릴리스 간에는 주요 변경 사항이 있었습니다 . 이 튜토리얼을 계속 따라갈 수 있지만 운영 체제의 "레거시" 버전을 다운로드하여 설치해야 합니다.

우리 중 많은 사람들이 최근 몇 년 동안 Zoom, Teams, Skype 및 수많은 기타 화상 통화 응용 프로그램에 너무 익숙해졌습니다. 원격으로 일할 때 동료를 만나려면 꼭 필요합니다. 때때로, 그것은 우리가 사랑하는 사람들을 볼 수 있는 유일한 방법이었습니다. 불행하게도 많은 노트북과 USB 웹캠은 기껏해야 평범한 카메라를 사용합니다. 이 튜토리얼은 Raspberry Pi와 Raspberry Pi 카메라를 사용하여 USB 웹캠을 만드는 데 도움이 됩니다. Mac, Windows, Linux 컴퓨터에 연결하여 비디오 카메라로 사용할 수 있습니다.




용품

  • 라즈베리 파이

  • 전원 및 데이터를 위해 Raspberry Pi를 컴퓨터에 연결하는 케이블

  • microSD 카드

  • microSD 카드를 일반 컴퓨터 에 연결하는 어댑터

  • 라즈베리 파이 카메라

  • 라즈베리 파이 카메라 케이블

  • 카메라 마운트가 포함된 라즈베리 파이 케이스

  • 노트북 마운트 또는 삼각대

초기 SD 카드 설정에는 다음이 필요합니다.

  • 네트워크에 연결된 다른 컴퓨터. 웹캠으로 설정하는 Raspberry Pi 컴퓨터와 구별하기 위해 이 컴퓨터를 일반 컴퓨터 라고 부르겠습니다 .



올바른 라즈베리 파이를 선택하세요

이 튜토리얼에서는 Raspberry Pi Zero 2W를 사용합니다. 이 모델은 USB On-The-Go(OTG)를 지원하므로 전원과 데이터 모두에 하나의 케이블을 사용할 수 있습니다.



올바른 카메라를 선택하세요

이 튜토리얼에서는 Raspberry Pi 카메라 모듈 3을 사용합니다 .

카메라를 Raspberry Pi와 연결하려면 케이블도 필요합니다. 모든 Raspberry Pi Zero 모델에는 Raspberry Pi 카메라 케이블을 권장합니다 .



올바른 케이스를 선택하세요

카메라 마운트가 포함된 Raspberry Pi 케이스는 웹캠을 일상적인 마모로부터 안전하게 보호합니다.

이러한 Raspberry Pi Zero 2W 케이스 파일을 3D 인쇄할 수 있습니다 . 이 경우 조립을 위해 M2 및 M2.5 나일론 육각형 스페이서의 조합이 필요합니다 .

시중에 판매되는 타사 Raspberry Pi 케이스도 많이 있으며 일부에는 카메라 마운트가 포함되어 있습니다.

전체 설정을 컴퓨터에 웹캠으로 연결하게 되므로 웹캠을 더 쉽게 설정할 수 있도록 노트북 마운트 나 삼각대도 고려해야 합니다.



라즈베리 파이 구성

시작하려면 시작하기 설명서에 따라 Raspberry Pi를 설정하세요 . 운영 체제에 대해 Raspberry Pi OS(기타) > Raspberry Pi OS(레거시) Lite를 선택하여 헤드리스(마우스 및 키보드 없이)를 실행합니다.

OS 사용자 정의 단계에서 다음과 같이 설정을 편집합니다.

  • 원하는 호스트 이름을 입력하세요 ( pi-webcam이 튜토리얼에서는 권장됩니다).

  • 사용자 이름비밀번호를 입력하세요 . 나중에 인증하려면 이 정보가 필요합니다.

  • Pi가 자동으로 Wi-Fi에 연결할 수 있도록 무선 LAN 구성 옆의 확인란을 선택하십시오.

    • 네트워크 SSID (이름)와 비밀번호를 입력하세요 . Wi-Fi 설정이나 라우터의 스티커에서 찾을 수 있습니다.

  • 마우스와 키보드 없이 Pi에 연결할 수 있도록 SSH 활성화 옆의 확인란을 선택합니다.



Raspberry Pi에 원격으로 연결

SSH를 사용하면 Raspberry Pi에 무선으로 연결할 수 있으므로 키보드와 마우스가 필요하지 않습니다. Raspberry Pi가 기차 시간 표시 뒤와 같이 접근하기 어려운 위치에 있는 경우에 적합합니다.

메모

Raspberry Pi에 SSH로 연결하려면 Imager에서 설정한 호스트 이름을 사용합니다. 이 방법을 사용하여 연결하는 데 문제가 있는 경우 대신 Raspberry Pi의 IP 주소를 사용할 수 있습니다.

IP 주소 찾기 및 Raspberry Pi 원격 액세스에 대한 자세한 내용은 원격 액세스 설명서를 참조하세요 .



SSH를 통해 연결

평소 컴퓨터 에서 터미널 세션을 엽니다 . SSH를 통해 Raspberry Pi에 액세스하려면 다음 명령을 실행하고 <username>Imager에서 선택한 사용자 이름을 바꾸세요.

$ ssh <username>@pi-webcam.local

이 작업을 처음 수행하는 경우 연결을 확인하세요. 메시지가 표시되면 Raspberry Pi Imager에서 생성한 비밀번호를 사용하세요.

$ ssh <username>@pi-webcam.local
The authenticity of host 'pi-webcam.local (fd81:b8a1:261d:1:acd4:610c:b069:ac16)' can't be established.
ED25519 key fingerprint is SHA256:s6aWAEe8xrbPmJzhctei7/gEQitO9mj2ilXigelBm04.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/
[fingerprint])? yes
Warning: Permanently added 'pi-webcam.local' (ED25519) to the list of known hosts.

<username>@pi-webcam.local's password:
Linux pi-webcam 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Oct 26 09:41:00 2023
<username>@pi-webcam:~ $

이제 Raspberry Pi에 연결했으므로 두 가지 명령을 실행하여 모든 패키지가 최신 상태인지 확인하세요.

$ sudo apt update
$ sudo apt full-upgrade

패키지 업데이트 명령 실행이 완료되면 Raspberry Pi를 재부팅하여 모든 변경 사항이 적용되도록 하세요.

$ sudo reboot

이 명령을 실행하면 Raspberry Pi SSH 세션 연결이 끊어집니다. Raspberry Pi가 재부팅될 때까지 몇 초 정도 기다린 후 ssh연결 명령을 다시 입력하여 장치에 다시 연결하세요.

대부분의 터미널에서는 위쪽 화살표 키를 누른 다음 Enter 키를 눌러 가장 최근 명령을 다시 실행합니다.


필수 소프트웨어 설정 및 설치

이제 Raspberry Pi가 실행 중이므로 다른 컴퓨터에 연결할 때 Raspberry Pi가 OTG(On-The-Go) USB 장치로 작동하도록 지시해 보겠습니다. 파일 에 추가하여 이를 수행하겠습니다 /boot/firmware/config.txt. 다음 명령을 사용하여 파일에 추가합니다.

$ echo "dtoverlay=dwc2,dr_mode=otg" | sudo tee -a /boot/firmware/config.txt

다음 단계는 몇 가지 필수 프로그램을 설치하는 것입니다.

$ sudo apt install git meson libcamera-dev libjpeg-dev

Meson은 나중에 카메라 소프트웨어를 구성하는 데 사용할 오픈 소스 빌드 시스템입니다. LibcameraLibjpeg는 Raspberry Pi가 카메라를 사용할 수 있도록 도와줍니다. 프로그램 설치를 확인하려면 y를 입력하세요 .

다음으로 UVC 가젯 소프트웨어를 다운로드하세요. 이는 USB를 통해 Raspberry Pi가 비디오를 스트리밍하는 데 도움이 됩니다.

$ git clone https://gitlab.freedesktop.org/camera/uvc-gadget.git

다운로드한 폴더로 이동합니다.

$ cd uvc-gadget

이제 다음 명령을 사용하여 소프트웨어를 만들고, 빌드하고, 설치해야 합니다.

$ make uvc-gadget
$ cd build
$ sudo meson install
$ sudo ldconfig

마지막 명령인 은 ldconfig일반적으로 새 라이브러리를 설치하거나 기존 라이브러리를 업데이트한 후에 실행됩니다. Raspberry Pi OS가 새 라이브러리에 올바르게 연결하는 데 도움이 됩니다.

다음으로 모든 설정을 위해 Raspberry Pi의 전원을 켤 때마다 실행되는 스크립트를 만듭니다. 텍스트 편집기를 사용하여 nanobash 스크립트를 만듭니다.

$ sudo nano ~/.rpi-uvc-gadget.sh

다음 코드를 복사하여 텍스트 편집기에 붙여넣습니다.

#!/bin/bash

# Variables we need to make things easier later on.

CONFIGFS="/sys/kernel/config"
GADGET="$CONFIGFS/usb_gadget"
VID="0x0525"
PID="0xa4a2"
SERIAL="0123456789"
MANUF=$(hostname)
PRODUCT="UVC Gadget"
BOARD=$(strings /proc/device-tree/model)
UDC=`ls /sys/class/udc` # will identify the 'first' UDC

# Later on, this function is used to tell the usb subsystem that we want
# to support a particular format, framesize and frameintervals
create_frame() {
	# Example usage:
	# create_frame <function name> <width> <height> <format> <name> <intervals>

	FUNCTION=$1
	WIDTH=$2
	HEIGHT=$3
	FORMAT=$4
	NAME=$5

	wdir=functions/$FUNCTION/streaming/$FORMAT/$NAME/${HEIGHT}p

	mkdir -p $wdir
	echo $WIDTH > $wdir/wWidth
	echo $HEIGHT > $wdir/wHeight
	echo $(( $WIDTH * $HEIGHT * 2 )) > $wdir/dwMaxVideoFrameBufferSize
	cat <<EOF > $wdir/dwFrameInterval
$6
EOF
}

# This function sets up the UVC gadget function in configfs and binds us
# to the UVC gadget driver.
create_uvc() {
	CONFIG=$1
	FUNCTION=$2

	echo "	Creating UVC gadget functionality : $FUNCTION"
	mkdir functions/$FUNCTION

	create_frame $FUNCTION 640 480 uncompressed u "333333
416667
500000
666666
1000000
1333333
2000000
"
	create_frame $FUNCTION 1280 720 uncompressed u "1000000
1333333
2000000
"
	create_frame $FUNCTION 1920 1080 uncompressed u "2000000"
	create_frame $FUNCTION 640 480 mjpeg m "333333
416667
500000
666666
1000000
1333333
2000000
"
	create_frame $FUNCTION 1280 720 mjpeg m "333333
416667
500000
666666
1000000
1333333
2000000
"
	create_frame $FUNCTION 1920 1080 mjpeg m "333333
416667
500000
666666
1000000
1333333
2000000
"

	mkdir functions/$FUNCTION/streaming/header/h
	cd functions/$FUNCTION/streaming/header/h
	ln -s ../../uncompressed/u
	ln -s ../../mjpeg/m
	cd ../../class/fs
	ln -s ../../header/h
	cd ../../class/hs
	ln -s ../../header/h
	cd ../../class/ss
	ln -s ../../header/h
	cd ../../../control
	mkdir header/h
	ln -s header/h class/fs
	ln -s header/h class/ss
	cd ../../../

	# This configures the USB endpoint to allow 3x 1024 byte packets per
	# microframe, which gives us the maximum speed for USB 2.0. Other
	# valid values are 1024 and 2048, but these will result in a lower
	# supportable framerate.
	echo 2048 > functions/$FUNCTION/streaming_maxpacket

	ln -s functions/$FUNCTION configs/c.1
}

# This loads the module responsible for allowing USB Gadgets to be
# configured through configfs, without which we can't connect to the
# UVC gadget kernel driver
echo "Loading composite module"
modprobe libcomposite

# This section configures the gadget through configfs. We need to
# create a bunch of files and directories that describe the USB
# device we want to pretend to be.

if
[ ! -d $GADGET/g1 ]; then
	echo "Detecting platform:"
	echo "  board : $BOARD"
	echo "  udc   : $UDC"

	echo "Creating the USB gadget"

	echo "Creating gadget directory g1"
	mkdir -p $GADGET/g1

	cd $GADGET/g1
	if
[ $? -ne 0 ]; then
		echo "Error creating usb gadget in configfs"
		exit 1;
	else
		echo "OK"
	fi

	echo "Setting Vendor and Product ID's"
	echo $VID > idVendor
	echo $PID > idProduct
	echo "OK"

	echo "Setting English strings"
	mkdir -p strings/0x409
	echo $SERIAL > strings/0x409/serialnumber
	echo $MANUF > strings/0x409/manufacturer
	echo $PRODUCT > strings/0x409/product
	echo "OK"

	echo "Creating Config"
	mkdir configs/c.1
	mkdir configs/c.1/strings/0x409

	echo "Creating functions..."

	create_uvc configs/c.1 uvc.0

	echo "OK"

	echo "Binding USB Device Controller"
	echo $UDC > UDC
	echo "OK"
fi

# Run uvc-gadget. The -c flag sets libcamera as a source, arg 0 selects
# the first available camera on the system. All cameras will be listed,
# you can re-run with -c n to select camera n or -c ID to select via
# the camera ID.
uvc-gadget -c 0 uvc.0

Ctrl+X 를 누른 다음 Y 를 누르고 마지막으로 Enter 를 눌러 편집된 파일을 nano.

스크립트를 실행 가능하게 만들려면 다음 명령을 사용하십시오.

$ sudo chmod +x ~/.rpi-uvc-gadget.sh

장치가 부팅될 때마다 이 스크립트를 실행하려면 /etc/rc.local파일에 추가하세요. Raspberry Pi OS는 부팅 후 항상 이 파일을 실행합니다. /etc/rc.local다음 명령을 사용하여 편집합니다 .

$ sudo nano /etc/rc.local

다음 명령을 추가하여 줄 위의 스크립트를 실행하고 자리 표시자를 Imager에서 지정한 사용자 이름으로 exit 0바꿉니다 .<username>

$ /home/<username>/.rpi-uvc-gadget.sh &
사용자 이름이 무엇인지 확실하지 않은 경우 Ctrl+X , Y 를nano 차례로 누른 다음 마지막으로 Enter 를 누르고 명령을 실행하세요 . 이 명령은 사용자 이름을 출력합니다.whoami

Ctrl+X 를 누른 다음 Y 를 누르고 마지막으로 Enter 를 눌러 편집된 파일을 nano. 이제 파일은 다음과 같아야 합니다.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if
[ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

/home/<username>/.rpi-uvc-gadget.sh &

exit 0

마지막으로 Raspberry Pi를 종료합니다.

$ sudo shutdown -h now


케이스에 모두 담아서 포장하세요

리본 케이블을 사용하여 카메라를 Raspberry Pi에 연결합니다( 이 작업을 수행하는 방법은 여기 참조).

Raspberry Pi와 연결된 카메라를 케이스에 넣습니다. 케이스를 조립하려면 다음 이미지와 같이 M2.5 및 M2 육각 나일론 스탠드오프, 너트 및 볼트를 사용하여 카메라, Raspberry Pi, 3D 프린팅 케이스를 함께 고정하세요.

Packaging the entire webcam together in a 3D printed case

3D 프린팅된 케이스는 모든 표준 콜드슈 카메라 마운트에 맞습니다.

A laptop mount compatible with the recommended 3D printed case's cold shoe camera mount


Raspberry Pi 웹캠을 사용하세요.

Raspberry Pi를 컴퓨터에 연결할 때마다 USB 웹캠으로 실행되도록 구성하면 남은 것은 사용하는 것뿐입니다.

중요한

Raspberry Pi Zero 2W를 사용하는 경우 microUSB 케이블을 전원 포트가 아닌 Raspberry Pi의 microUSB 데이터 포트에 연결하세요. 전원 포트는 전원만 지원합니다.

라즈베리 파이를 컴퓨터에 연결하세요. 팝업되는 모든 OS 프롬프트에서 장치 액세스를 허용합니다. 즐겨 사용하는 화상 회의 소프트웨어를 열고 회의를 시작하세요. 비디오 옵션에서 Raspberry Pi 웹캠을 찾아 카메라로 설정하세요. 축하합니다. 이제 화상 통화에 새 웹캠을 사용할 준비가 되었습니다!



다음 단계

웹캠을 한 단계 더 발전시키고 싶으십니까? 웹캠을 더욱 향상시키려면 다음 아이디어를 확인하십시오.

바삭바삭한 고품질 카메라 피드로 친구들에게 깊은 인상을 남기고 싶으십니까? Raspberry Pi 고품질 카메라는 해상도가 더 높으며 모든 표준 삼각대와 호환됩니다.

Raspberry Pi High Quality M12 Mount Camera
Raspberry Pi 고품질 M12 마운트 카메라

웹캠 케이스가 마음에 들지 않나요? Max Braun의 piSight 프로젝트는 상징적 인 Apple iSight의 케이스를 사용합니다. 이 프로젝트는 25년 된 iSight의 내부를 Raspberry Pi Zero 2 W 및 카메라 모듈 3으로 교체합니다.

piSight. We think you're going to love it.
파이사이트. 우리는 당신이 그것을 좋아할 것이라고 생각합니다.
piSight innards
원래 iSight에 포함된 공간 히터 없이도 더 나은 카메라 품질을 위한 충분한 공간

여기 블로그를 확인하여 이에 대한 모든 내용을 읽어보고 여기에서 무료로 제공되는 모든 필수 3D 프린트 파일을 찾아보세요.

맨위로