Hardware | ESP32-CAM 기본 사용법 확인해 보기

지금까지 ESP32 에 대해서는 여러가지 활용해 보았습니다.

* Hardware | ESP32 간단 사용기
  - https://chocoball.tistory.com/entry/Hardware-simple-review-ESP32

* Hardware | ESP32 스펙 확인해 보기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-spec-check

* Hardware | ESP32 의 Dual core 확인해 보기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-Dual-core

* Hardware | ESP32 의 internal sensor 확인해 보기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-internal-sensors

* Hardware | EPS32 PWM 기능 확인해 보기
  - https://chocoball.tistory.com/entry/Hardware-EPS32-PWM

* Hardware | ESP32 Cryptographic HW 가속 확인해 보기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-Cryptographic-HW-acceleration

* Hardware | ESP32 Deep sleep 알아보기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-Deep-sleep

* Hardware | ESP32 NTP Server 이용한 시간 맞추기
  - https://chocoball.tistory.com/entry/Hardware-ESP32-NTP-Server

카메라가 달려 있는 ESP32-CAM 은 써보지 않아, 비교를 위해해 구매해 봅니다.




1. Purchase

AliExpress 에서 비교적 적당한 판매처를 선택합니다. 배송비 포함 약 5 USD 정도 합니다. 특별히 신경 쓴 부분은, EPS32 쉴드 부분에 새겨진 로고. AI Thinker 제품도 있어서, ESPRESSIF 를 찾았습니다.

* ESP32-CAM ESP-32S WiFi Module ESP32 serial to WiFi ESP32 CAM Development Board 5V Bluetooth with OV2640 Camera Module
  - https://www.aliexpress.com/item/32992663411.html

배송비가 책정되어 있는 만큼, 연말 연시 임에도 불구하고 10일 조금 더 걸렸습니다.




2. Exterior

본체와 카메라 모듈로 구성되어 있습니다. 카메라는 OV2460 이라고 합니다. ESP32 chip 은 ESP-32S 라고 쓰여 있네요.


Wikipedia 에서 확인해 본 결과, AI-Thinker 제품이었습니다. ESPRESSIF 의 ESP-WROOM-32 의 짝퉁이라고 하네요. 하... AI-Thinker 를 피하려 했으나, 결국 AI-Thinker 군요. 정품 구입은 정식 루트 아니면 fake 라 생각해야 겠습니다.

* ESP32

카메라는 플렉스 케이블로 되어 있어 낭창낭창 하지만, 너무 짧네요. OV2460 카메라 모듈에는 제품 분류번호로 보이는 RH21-M1510-40 이 쓰여 있습니다.

PCB 에 새겨진 안테나를 기본으로 사용할 수 있고, 전파 도달 거리를 확장하고 싶으면 외부 안테나를 사용할 수 있습니다.

외부 안테나를 사용하려면, R3 저항을 외부 안테나 커넥터 쪽으로 변경해 줘야 합니다.

RAM 모듈로는 ESP-PSRAM64H 가 실장되어 있습니다.

* ESP-PSRAM64H Chip – 64 Mbit Serial Pseudo SRAM – 3.3V 133 MHz
  - https://blog.adafruit.com/2020/08/06/new-product-esp-psram64h-chip-64-mbit-serial-pseudo-sram-3-3v-133-mhz/

Flash 나 EEPROM 이 아닌 RAM 으로, 8MiB 용량과 QPI 의 고속 통신이 가능합니다. ESP32 와는 다르게, 화상 처리를 위해 대용량 RAM 을 사용한 듯 보입니다.

ESP-32S 라고 되어 있지만, ESPRESSIF 의 ESP-WROOM-32 의 fake 제품인 AI-Thinker ESP-32S 를 소개합니다... -_-;

카메라는 다음 사진 처럼 장착할 수 있습니다.

어떤 글들을 보면, 아래 사진 처럼 연결해야 동작하는 제품도 있다고 하네요. 다행히 제가 구입한 제품은 이 상태로는 동작하지 않았습니다.

조그마한 regulator 에 54FK 로 적혀 있네요. 정확한 회사는 알 수 없으나 SOT-23 2.8V 54FK transistor 계열 입니다.

지금까지 자주 봐오던 AMS1117 3.3V 용 레귤레이터도 붙어 있습니다.

전체적인 구성도는 다음과 같아요.


카메라 모듈은 정면을 바라보게끔 설치하게 됩니다.


특이하게 microSD 슬롯도 있어서 microSD 를 끼울 수 있습니다. CCD 카메라로 활용하면 영상 기록 위해 활용 가능할 듯 하네요.




3. Arduino IDE

Arduino IDE 와 연동하여 활용하려면, 아래 두 라인을 "Preference > Seetings > Additional Boards Manager URLs" 에 등록해줄 필요가 있습니다.

https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json 


위처럼 작업하면, 관련 보드 정보를 repository 에서 찾을 수 있게 됩니다.

Tools > Board > Board Manager


검색 라인에 "esp32" 로 검색하면, 관련 라이브러리를 설치 가능하게 됩니다. 이 글을 처음 쓰기 시작하여 정보를 취합한 시기가 2021년 이어서, 지금은 고를 수 있는 버전이 더 높을 것으로 예상됩니다.


이제 적당한 보드를 선택하여 구동시키면 됩니다.


공장 출하 초기에 들어가 있는 버전은, 뭔지 모르겠습니다. 연결은 115200 baud 로 설정하면 됩니다. 요즘은 모두 115200 baud 네요.


이제 Arduino IDE 에서 기본 준비할 것은 끝났습니다.



4. Source Upload

Wifi 와 연동하여 구동할 수 있으므로, 수많은 소스 프로그램 중, 가장 기본적인 Wifi Scan 을 실행해 보도록 합니다.


소스를 업로드 하기 위해서는 GPIO 0 와 GND 를 연결해 놔야 합니다.


그리고, 소스 업로드 버튼을 Arduino IDE 에서 클릭하기 전에 ESP32-CAM 본체의 Reset 버튼을 먼저 눌러 놔야 제대로 소스 업로드가 가능 합니다. 참고로 소스 업로드 및 ESP32-CAM 은 전원을 많이 먹으므로, 3.3V 로 동작 하지만 5V 를 추천 합니다. 가능한 USB 와 연결된 FTDI 도 동일하게 5V 를 활용하는 것이 좋다고 합니다.


Please make sure that GPIO 0 is connected to GND and that you press the RST button before clicking the upload button. Try powering the ESP32-CAM with 5V as well as set the FTDI programmer to 5V.




5. Wifi Scan

가장 대표적인 소스인 Wifi Scan 소스 입니다.


/*
 *  This sketch demonstrates how to scan WiFi networks.
 *  The API is almost the same as with the WiFi Shield library,
 *  the most obvious difference being the different file you need to include:
 */
#include "WiFi.h"

void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    Serial.println("Setup done");
}

void loop()
{
    Serial.println("scan start");

    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial.println("");

    // Wait a bit before scanning again
    delay(5000);
}

위의 소스를 업로드 하고, 실행한 화면 입니다. 신소 세기가 가장 강한것 부터 보여주네요. 저희 집 Wifi 도 잘 보여 줍니다.


하드웨어 구성도 궁금하니, 예전에 했던 ESP32 스펙 확인하는 소스를 올려 봅니다. 관련 정보는 아래 글에 있습니다.

* Hardware | ESP32 스펙 확인해 보기

ESP32 Chip ID 정보도 주네요. "BC9E884ECE8C" 는 해당 chip 의 고유 번호로 보입니다.


좀더 많은 정보를 볼 수 있게 소스를 확장하여, 표시되도록 했습니다.


Arduino 보다 성능이 좋은 (2021년도 기준) ESP32 로 Wifi + Bluetooth 가 가능하며, 추가로 microSD + Camera 까지 구비된 ESP32-CAM 은 그 활용도가 매우 넓습니다. 다만 아쉬운 것은 화면 처리에 있어, 아직 높은 해상도 구현은 안되는 것 같네요.

동봉된 카메라는 OV2640 = 2 megapixel 이어서, OV5640 = 5 megapixel 도 활용해 보고자 합니다.


참고로 ESP32 를 이용하여, 온갖 Wifi 연동과 컨트롤이 가능한 라이브러리를 공개하고 있는 사이트를 공유 합니다.

* ESP32 Useful Wi-Fi Library Functions (Arduino IDE)


FIN

댓글