안녕하세요.
이번에는 저가형 CCTV을 만들어 볼 수 있게 다 생각되어 ESP32-Cam + OV2640 확인해 보았습니다.
ESP32-CAM 제품이고 약 8,000원 대에 판매하고 있습니다.
사실 이것만 있어서는 안 되고 TTL To USB 그리고 승압 모듈, 배터리를 포함해야 가능합니다. 그러면 배터리 용량에 따라 다르겠지만, 5000원에서 10,000원 정도 추가하면 소형 무선 CCTV로 가능하지 않을까 생각됩니다.
1. ESP32-CAM 스펙
1) ESP32-CAM
- 크기 : 27×40.5×4.5(±0.2)mm
- SPI Flash : 32Mbit
- RAM : internal520KB + external 4M PSRAM
- 블루투스 : bluetooth4.2BR/EDR and BLE standards
- 와이파이 : 802.11 b/g/n/e/i
- 인터페이스 : UART, SPI, I2C, PWM
- microSD 지원 : 최대 4GB
- IO 포트 : 9핀
- 시리얼 통신 속도 : 115200 bps (default)
- 이미지 출력 포맷 : JPEG(OV2640만 지원), BMP, GRAYSCALE
- 안테나 : PCB 온보드 안테나, gain 2 dBi
2) OV2640 스펙
- 2 Megapixel
- Array size: UXGA 1622X1200
- Power supply: 3.3V
- IO voltage level: 1.7V~3.3V DC
- Output formats:
> YUV(422/420)/YCnCr422
> RGB565/555
> 8-bit compressed data
2. ESP32-CAM 핀맵
3. 설정 방법
1) 보드 매니저 경로 추가
- 환경설정 -> 추가적인 보드 매니저 URLs
https://dl.espressif.com/dl/package_esp32_index.json 입력해 줍니다.
2) ESP32 보드 설치
툴-> 보드-> 보드 관리자 눌러 "esp32"를 검색합니다. "설치" 눌러 보드 라이브러리와 예제 등을 설치합니다.
3) 보드 변경
- 툴 -> 보드 -> ESP32 Arduino -> "ESP32 Wrover Module" 선택합니다.
- 툴 -> Partition Scheme -> "Huge APP (3MB No OTA/1MB SPIFFS)"를 선택합니다.
4) 예제 소스 수정
- 파일-> 예제-> ESP32-> Camera->CameraWebServer에서 CameraWebServer.ino 파일을 수정합니다.
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT => 1) 예제 코드 이 카메라로 선택되어 있지만, 주석 처리하고
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER // 1) 대신에 AI_THINKER를 주석 제거합니다.
//연결할 무선공유기(AP)의 SSID와 password를 입력해 줍니다.
const char* ssid = "*********";
const char* password = "*********";
ESP32-CAM을 연결하고 다운로드합니다.
단, 다운로드하려면 GPIO 0번 핀과 GND를 연결해 주고 보드에 장착된 리셋 버튼을 눌러서 다운로드 모드로 변경시켜 줍니다. 그 이후 업로드가 가능합니다.
위의 설정만 해도 작동했습니다.
만약 안되신 다면 추가로 설정해 보기 바랍니다.
툴-> 보드-> ESP32 Arduino->AI Thinker ESP32-CAM으로 변경해 봅니다.
4. 연결하기
ESP32-CAM | TTL Converter |
5V | 5V |
GND | GND |
UOR | TX |
UOT | RX |
GPIO 0 (업로드 할 때 연결) | GND |
ESP32의 GND와 GPIO0 연결 -> 업로드 모드가 됩니다. (제거하면 일반 모드)
디바이스마트 동영상에서는 3.3V에서 5V로 중간에 변경하라고 나오지만, 처음부터 5V로 전원을 인가해주면 핀을 다시 핀을 바꿀 필요가 없었습니다.
다운로드가 시작되면 컴파일 후 1%씩 다운로드가 진행됩니다.
업로드 완료 후 GND와 GPIO 0 연결 제거 (일반 모드). 그리고 다시 보드에 부착된 리셋 버튼을 누르면 자신이 접속할 수 있는 아이피 주소가 나옵니다. (SSID 혹은 password가 잘못되었다면 대기가 혹은 접속 에러가 발생합니다.)
브라우저에 주소 입력해서 들어가면 설정할 수 있는 화면과 영상 스트리밍 되는 화면 나옵니다.
웹 접속이 아닌, 스트림 주소로 바로 볼 수 있는 방법은 VLC 혹은 곰플레이에 스트리밍 주소를 입력하는 것입니다. 아래와 같이 입력하면 플레이어에서 mjepg 형태로 변환되어 전달되는 영상을 확인할 수 있습니다.
http://192.168.0.84:81/stream
5. 작동 영상
해상도 설정 등 할 수 있고 캡처도 할 수 있도록 되어 있습니다. 그러나 얼굴인식도 하게 되어 있는데 설정하고 해보려고 하니 영상이 정지되어 사용하지 못했습니다.
6. 사용후기
기본 영상은 잘 나옵니다. 그런데 PCB On Board Antenna로 할 경우 15m 정도 거리까지 가능한 것으로 보입니다. 그 이상 가면 끊김 현상이 나타나고 화면이 나오지 않습니다.
프로그램 소스 문제인 건지 회로 설계상 문제인지 영상에 검은 줄 울렁임 현상 발생합니다. 옛날 TV처럼. 최근 나온 카메라처럼 화질이 괜찮겠지 생각하시면 실망하실 수도 있습니다. (참조 동영상 참고)
현재 소스로 서버에 여러 개의 영상을 스트림을 할 수 없습니다. 하나의 영상 스트리밍을 끊어야 다른 사람이 볼 수 있습니다.
7. 추가로 영상을 재생하는 방법
VLC와 같은 프로그램을 통하지 않고 웹에서 보려면 간단하게 아래의 <html> Tag로 웹 브라우저로 볼 수 있습니다. 현재 ESP32-CAM 같은 경우 자체 웹서버 80번 말고 스트리밍만 하는 81번 포트가 별도로 있기 때문에 이것을 이용하면 가능합니다.
아래 소스와 같이 간단하게 HTML 파일 만들면 웹 브라우저에서 제어 컨트롤 없이 화면만 볼 수 있습니다.
(스트리밍 IP 주소는 업로드 후 나오는 주소를 입력하면 됩니다. )
<html>
<head></head>
<body>
<img id="stream" src="http://192.168.0.217:81/stream" style="width:600px; height:600px;"> </img>
</body>
</html>
ESP32 카메라 드라이버 관련한 소스를 좀 더 알고 싶다면, 참고 사이트 3번, 4번 내용을 보시면 조금이나마 도움이 되지 않을까 합니다.
감사합니다.
<참고사이트>
1. ESP32-CAM 블루투스·와이파이
https://www.devicemart.co.kr/goods/view?no=12496229
2. 30+ ESP32-CAM Projects, Tutorials and Guides with Arduino IDE
https://randomnerdtutorials.com/projects-esp32-cam/
3. ESP32 Camera Driver
https://github.com/espressif/esp32-camera
4. Esp32-cam 이미지 처리 질문
https://www.esp32.com/viewtopic.php?t=10405
'IT' 카테고리의 다른 글
TUF 노트북 GPU FAN 교체해 보기 (FX506LU) (2) | 2024.12.20 |
---|---|
YF-B10-S(유량센서) 확인해 보기 (0) | 2024.11.13 |
USB to RS485(MFA-02) 모듈을 이용해서 불꽃 감지기 IRT-020-K(IR-3 Digital)와 통신하기 (6) | 2024.11.07 |
불꽃감지기 IRT-020-K(IR-3Digital 50m) 제품 확인 (10) | 2024.11.01 |
eMMC 타입 micro SD Card 테스트 ( 32GB eMMC Module for Rock Pi ) (2) | 2024.10.30 |