행복한 하루
Arducam 5MP 1080p Zoom Camera + RaspberryPi 4 Test (mmal: mmal_vc_port_enable: failed to enable port 해결방법(?)) 본문
Arducam 5MP 1080p Zoom Camera + RaspberryPi 4 Test (mmal: mmal_vc_port_enable: failed to enable port 해결방법(?))
변화의 물결 2021. 11. 10. 00:56
안녕하세요.
일반적으로 얇은 CMOS 카메라는 줌 기능이 없기 때문에 주로 고정된 거리의 물체를 촬영하게 됩니다. 디지털 줌이 된다고 할 수 있지만, 여기서 말하는 것은 실제 광학줌으로 렌즈의 배율을 조절하는 줌을 말합니다.
그래서 찾아보다 라즈베리파이에 소형 모듈 형태로 만들어 놓은 제품이 있어 확인해보았습니다.
1. PTZ 카메라란
PTZ는 팬(pan), 틸트(tilt), 줌(zoom)의 준말이며 카메라의 동작 옵션을 반영한다. 다른 종류의 카메라들로는 ePTZ 또는 가상 팬-틸트-줌(virtual pan-tilt-zoom, PTZ)이 있으며 고해상도 카메라가 물리적인 카메라 움직임 없이 디지털 방식으로 이미지의 일부분에 줌/패닝을 수행한다.
<wiki>
그런데, 테스트하는 Arducam PTZ 카메라는 Pan과 Tilt는 서보(Servo) 모터 모듈을 별도로 구매해야 했기 때문에 이번에는 Zoom 기능만으로 테스트하였습니다.
2. ArduCam PTZ 부품 구성
- 컨트롤 보드, Zoom 렌즈, CMOS 카메라 보드, 케이블, 플라스틱 스탠드로 구성되어 있습니다.
- 간단하게 조립해주고 배선만 하면 됩니다.
3. 라즈베리파이 연결하기
- 전선의 색상으로 보고 연결해도 되지만 헷갈릴 수 있기 때문에 핀 맵을 보면 연결하는 것이 도움이 될 것입니다. 순서는 카메라단에서 케이블 보면 SDA(주황), SCL(노랑), GND(갈색), 5V(흰색), GND(검은색), 5V(빨간색)으로 6가닥 선으로 이루어져 있습니다.
- 참고 삼아 라즈베리파이 핀 맵을 올려보았습니다.
4. 프로그램 설치하기
1) python 버전의 opencv 라이브러리를 설치합니다. (시간이 조금 걸립니다.)
pi@raspberrypi:~ $ sudo apt-get install python-opencv
2) github에 있는 카메라 제어 소스를 다운로드합니다.
pi@raspberrypi:~ $ git clone https://github.com/ArduCAM/PTZ-Camera-Controller.git
3) 경로를 이동해서 프로그램을 실행시킵니다.
pi@raspberrypi:~ $ cd PTZ-Camera-Controller/pyCode/
pi@raspberrypi:~/PTZ-Camera-Controller/pyCode $ python FocuserExample.py
5. 에러 발생할 경우
- 바로 실행되면 좋겠지만, mmal: mmal_vc_port_enable: failed to enable port vc.null_sink 에러가 발생할 수 있습니다. 구글링 해서 해결하는 방법들을 찾아보았지만 해결되지 않았습니다. 이것 때문에 하루의 시간을 보내었습니다.
- 인터넷에 나와 있는 해결 방법들은
(1) 업데이트해보기(full로 할 경우 시간이 너무 오래 걸리고 해결되지 않으니 비추천)
sudo apt full-upgrade
(2) 그래픽 메모리 설정 변경(안됨)
/boot/cmdline.txt
gpu_mem=144
(3) 프로그램 코드 수정 (안됨)
camera.stop_preview() 다음에
camera.close() 추가하라고 했지만 이미 소스상에 추가되어 있었으며 raspstill -v 해도 동일한 현상이 발생했습니다.
(4) 물리적 문제(환경에 따라서 다를 수 있을 듯함)
카메라 고장일 수 있다. 케이블 문제일 수 있다 등 있었습니다.
그런데 하드웨어 문제라고 생각하지 않았던 이유는 vcgencmd get_camera를 실행했을 때
supported=1 detected=1로 나타나 인식 문제는 아니라고 생각했기 때문입니다.
(5) 라즈베리파이 OS 재설치 (해결됨)
현재 버전으로 다운로드하여 새로 SD카드에 설치한 후 2의 과정을 할 경우 문제없이 작동하였습니다.
https://www.raspberrypi.com/software/operating-systems/
- 어떤 라이브러리 혹은 프로그램과 충돌하여 원인이 발생하는지 알지는 못했지만, 향후 개발업체에서 확인해주면 좋지 않을까 합니다. 혹은 이 제품을 사용해야 하는 곳이라면 특정 라이브러리를 설치하고 한 번씩 다시 실행해보면서 확인해보는 것이 필요할 듯합니다.
혹시 제가 구글링 해서 못 찾은 부분이라면 답글 부탁드립니다.
참고 글을 작성하면서 발생할 수 있는 경우를 발견했는데, 다른 프로그램에서 캠을 사용하고 제대로 해제하지 않은 경우이다. 예를 들어, 원격 데스크톱에서 실행 중인데, 라즈베리파이에 직접 실행할 경우 동일한 현상 발생했습니다.
그래서 어딘가에서 카메라를 로드할 경우 위의 에러 상황이 발생할 수 있다는 것을 이유 하나 찾았습니다.
6. 작동시켜보기
- 전원을 인가하면 초기 ZOOM 초기화 모터가 작동하는데, DC 모터라서 그런지 처음 부분에 있는데도 불구하고 처음 위치로 이동합니다. 초기 프로그램이 그렇게 해 놓은 듯합니다.
- Putty로 실행하거나, 원격 데스크 톱 연결로 할 경우 영상이 나타나지 않습니다. HDMI 케이블로 연결해서 실제로 출력 단자에 연결해야 영상을 볼 수 있습니다.
- 현재 소스로 출력할 경우 영상화면이 너무 크게 나와서 화면 위치와 크기를 줄여 줄 수 있게 코드를 조금 수정해줍니다. vim 설치한 후 vim FocuserExample.py의 camera.start_preview() 함수에 인수를 추가합니다.
camera.start_preview(fullscreen=False, window=(800,200,640,480))
감사합니다.
<참고사이트>
1. Software User Guide
https://www.arducam.com/docs/cameras-for-raspberry-pi/ptz-camera/user-guide/
2. 5MP OV5647 PT&PTZ Camera Module
3. 팬틸트줌 카메라
https://ko.wikipedia.org/wiki/%ED%8C%AC%ED%8B%B8%ED%8A%B8%EC%A4%8C_%EC%B9%B4%EB%A9%94%EB%9D%BC
4. MMAL error ..failed to enable port
https://forums.raspberrypi.com/viewtopic.php?t=231898
5. Raspberry Pi Error with picamera.exc.PiCameraMMALError: Failed to enable connection: Out of resources
6. when i test the camera with raspistill -o image.jpg,show error below
https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/issues/116
7. 라즈베리파이에서 Python으로 PiCamera 카메라 심플하게 시작하기
'RaspberryPi' 카테고리의 다른 글
라즈베리 파이(Raspberry Pi) 4 Model B에 AnyDesk 설치 (0) | 2021.12.06 |
---|---|
라즈베리 파이(Raspberry Pi) 4 모델 B - Qt5 설치 및 Qt Creator 컴파일 환경 설정하기 (2) | 2021.12.04 |
RaspberryPi Pico에 i2c 0.96 인치 OLED 출력하기("ssd1306.py", line 118, in __init__ 에러 확인) (0) | 2021.10.14 |
RaspberryPi Pico에 연결된 I2C 모듈의 주소 알아내기 (0) | 2021.10.13 |
라즈베리파이 랜(UTP) 선으로 전원 공급하기 (PoE HAT 모듈 테스트) (0) | 2021.07.28 |