개발자/라즈베리파이4

라즈베리파이4 스마트홈 카메라 실습 13

지구빵집 2023. 5. 26. 09:29
반응형

 

 

 

한 번도 가져본 적이 없는 것을 갖기 위해서는 한 번도 해본 적이 없는 일을 해야 한다. 다시 말해 새로운 위험에 뛰어들어야 한다. 늘 하던 일, 알고 있던 지식을 주야장천 써먹으면서 살 수 있다면 좋을 수는 있겠지만 금방 싫증을 내는 게 사람이다. 소위 소원을 이루려면 위험을 감수하고 그동안 하지 못했던, 하지 않았던 일을 시작한다. 

 

설명이 약간 낡았다. 이전 모델에 대한 설명이라 머쓱한 느낌이 들지만 어차피 순서에 맞게 올리는 글이라 진행하기로 한다. 새로운 실습 문서는 아마도 검색하면 찾을 수 있다. 쏘리~^^

 

 

라즈베리파이 스마트 홈 실습 과정 전체 포스팅 리스트 

 

라즈베리파이4 스마트홈 제품 특징 1

라즈베리파이4 스마트홈 불꽃 센서 코드 2

라즈베리파이4 스마트홈 가스센서 코드 3

라즈베리파이4 스마트홈 소리센서 코드 4

라즈베리파이4 스마트홈 조도센서 코드 5

라즈베리파이4 스마트홈 온도 습도센서 코드 6

라즈베리파이4 스마트홈 인체감지 모션센서 코드 7

라즈베리파이4 스마트홈 액츄에이터 디지털 도어록 실습 8

라즈베리파이4 스마트홈 가스타이머 실습 9

라즈베리파이4 스마트홈 전동볼밸브 실습 10

라즈베리파이4 스마트홈 RFID 실습 11

라즈베리파이4 스마트홈 RGB LED 실습 12

라즈베리파이4 스마트홈 카메라 실습 13

라즈베리파이4 스마트홈 조명 LED bar 실습 14

라즈베리파이4 스마트홈 서버 프로그램 실습 15

라즈베리파이4 스마트홈 안드로이드 앱 설명 16

 

 

궁금한 점이나 실습 시 문제가 있다면 언제든 답글에 문의하시면 해결해 드립니다.

 

라즈베리파이 카메라 모듈 

 

라즈베리 파이 카메라 모듈은 라즈베리 파이를 위한 부가 설계된 확장형 모듈이다. 보드의 상단 표면에 두 개의 작은 소켓 중 F-PCB 컨텍터를 통하여 라즈베리 파이에 연결된다. 

 

 

라즈베리 파이 카메라 모듈

 

이 인터페이스는 특히 카메라의 인터페이스를 위해 설계되었고, 전용 CSI 인터페이스를 사용하고, CSI 버스는 매우 높은 데이터 속도로 동영상을 실시간으로 보는데도 지장이 없다. 보드 자체는 약 25mm X 20mm X 9mm이며 , 무게는 3g이다. 카메라가 CSI 버스, 프로세서 카메라에서 픽셀 데이터를 전송하는 높은 대역폭 링크를 통해 파이의 BCM2835 프로세서에 연결되어 있다. 센서 자체는 5 메가 픽셀의 해상도를 가지고 있으며, 고정 초점 렌즈가 내장되어 있다. 스틸 이미지의 측면에서, 카메라는 2592 X 1944 픽셀의 정적인 이미지까지 촬영이 가능하다.  

 

아래에 라즈베리파이 카메라 모듈 사양은 아래 표를 참고한다. 

 

카메라 모듈 사양
센서 OmniVision OV5647(8.5 x 8.5 x 5mm)
PCB 크기                              25 x 20 x 9 mm
무게                                     3 g
해상도                                  5 Megapixels
지원 비디오 모드 1080p30, 720p60 and 640x480p60/90
영상/스팅 지원 정지영상 캡처 2592×1944
초당 30프레임의 1080p 지원
초당 60프레임의 720p 지원
초당 90프레임의 640x480p 지원

 

카메라 모듈 소프트웨어 특성은 아래 표를 참고한다. 

 

Picture formats JPEG (accelerated) , JPEG + RAW , GIF , BMP , PNG , YUV420 , RGB888
Video formats raw h.264 (accelerated)
Effects negative , solarise , posterize , whiteboard , blackboard , sketch , denoise , emboss , oilpaint , hatch , gpen , pastel , watercolour, film , blur , saturation
Exposure modes auto , night , nightpreview , backlight , spotlight , sports , snow , beach , verylong , fixedfps , antishake , fireworks
Metering modes average, spot, backlit, matrix
Automatic White Balance modes off, auto , sun , cloud, shade, tungsten, fluorescent , incandescent , flash, horizon
Triggers Keypress , UNIX signal , timeout
Extra modes demo , timelapse , circular buffer , video with motion vectors , segmented video , live preview on 3D models

 

카메라 모듈을 사용하기 위해 아래 명령어를 사용하여 OS 업데이트를 한다.

 

$sudo apt-get update
$sudo apt-get upgrade

라즈베리파이 설정화면에서 카메라를 enable 한다. 아래 이미지는 Raspberry Pi4 화면으로 안내한다. 원래 이렇게 왔다 갔다 설명한다. ^^ 아래 명령어를 입력하면 매우 아름다운 설정화면이 나온다.

 

 $ sudo raspi-config

 

Interface Option  선택

 

Camera 선택

 

예 선택으로 설정

 

라즈베리파이 카메라를 사용하기 위하여 ffmpeg 멀티미디어 라이브러리를 설치해주어야 한다. 

 

$sudo apt-get install mplayer netcat ffmpeg gpac 

 

명령을 실행하고 24M의 공간이 필요하다는 메시지가 나오면 ‘Y’ 입력하여 설치를 진행한다. 이제 카메라를 테스트할 수 있는 몇 가지 명령을 알아보자. 우선, jpg 포맷으로 이미지를 캡처하려면 다음과 같이 입력한다. 

 

$raspistill -o image.jpg 

 

화면에 카메라 영상이 보이면서 5초 후에 사진을 찍는 것을 확인할 수 있다. $ls 명령어로 image.jpg 파일이 생성된 것을 볼 수 있다. 이번에는 h.264 포맷으로 5초 동안 동영상을 캡처해 보는 명령이다.  

 

$raspivid -o video.h264 –fps 30 –t 10000 

 

-o : 출력파일 이름

-t : 촬영시간 밀리세컨드(10000 = 10초)

-fps : 초당프레임

 

$ls 명령어로 확인하면 video.h264 파일을 볼 수 있다.  

 

라즈베리 파이 카메라 프로그램은 H264 포맷을 사용하고 있기에 별도의 프로그램으로 보거나 일반적인 동영상 파일로 변환하려면 별도로 파일을 변환시켜줘야 한다. 다음의 명령어는 ffmpeg을 이용하여 H264 포맷을 mkv 포맷으로 변환하는 명령이다. 

 

$ffmpeg –r 30 –i video.h264 –vcodec copy video.mkv 

 

확인해 보면 video.mkv 파일이 생성되었다. 다음의 명령어로도 가능하다.  

 

$MP4Box –add video.h264 video.mp4 

 

카메라 모듈을 이용하여 Mjpg-Stream을 구현한다. 속도가 많이 느린 편이지만 현장 상황을 웹을 이용하여 모니터링하기에는 무리가 없다. 웹스트리밍 또는 기타 외부 기기에서 라즈베리 파이 카메라 모듈을 이용한 웹스트리밍 서비스를 하기 위해선 Mjpg-Stream 이 가장 최적화되어 있다. 

 

Mjpg-stream 컴파일을 위해 아래 영상 관련 라이브러리 및 cmake 패키지를 설치해 주도록 한다 

 

$sudo apt-get install git cmake libjpeg8-dev imagemagick -y 

 

mjpg-streamer를 컴파일 진행시에는 요구하는 videodev.h 헤더파일을 변경된 videodev2.h 파일로 링크하자 

 

$sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h 

 

mjpg-streamer 다운로드 및 컴파일 하기 

 

$git clone https://github.com/liamfraser/mjpg-streamer

Cloning into 'mjpg-streamer'...  

Git 툴을 사용하여 다운로드 하였다. 다운로드한 폴더로 이동하자  

$cd ~/mjpg-streamer/mjpg-streamer-experimental 

 

pi@raspberrypi ~/mjpg-streamer/mjpg-streamer-experimental $ make clean all 명령를 사용하면 컴파일이 실행된다. 앞의 과정들을 통해 mjpg-streamer를 실행할 수 있는 환경이 갖추어졌으니, 마지막으로 파이 캠에서 mjpg-streamer를 이용할 수 있도록 자동 스크립트를 작성하고 명령어를 입력하여 웹 스트리밍을 구현해 보자. 

 

mjpg.sh 파일을 생성하고 아래 코드를 입력한다.

 

$ pi@raspberrypi ~ $cd ~

$ pi@raspberrypi ~ $sudo nano mjpg.sh  

 

 

 

export STREAMER_PATH=$HOME/mjpg/mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=$STREAMER_PATH
$STREAMER_PATH/mjpg_streamer -i "input_raspicam.so -d 200" -o "output_http.so -w $STREAMER_PATH/www"

 

아래 명령어로 실행한다. 

$ pi@raspberrypi ~ $sh mjpg.sh 

 

mjpg-streamer 웹 스트리밍 영상확인 mjpg-streamer를 간단히 비유하자면 라즈베리파이 카메라를 통해 jpeg 파일로 생성된 이미지를 학창 시절에 교과서 귀퉁이에 손으로 자그마하게 그림을 그리고 빠른 속도로 책장을 넘겨가면서 정지된 이미지를 파노라마처럼 스틸 샷으로 만들어 마치 영상물처럼 보던 원리와 같은 이치로 구현된다 

 

영상을 확인하기 위해 브라우저에서 http://라즈베리파이 IP주소:8080 을 입력하면 아래와 같은 화면에서 stream을 선택해 실시간 동영상 파일을 볼 수 있다.

 

 

http://라즈베리파이 IP주소:8080 화면

 

지금 포스팅을 작성하는 모습 ㅎㅎ

 

 

 

반응형