HARDWARE | ESP32-CAM Breakout 보드 사용해 보기

지금까지 ESP32-CAM 에 대한 글은 다음을 참고 하세요.

* Hardware | ESP32-CAM 을 비디오 스트리밍 서버로 활용해 보기

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



1. ESP32-CAM-MB

ESP32-CAM 을 사용할 때, source upload 할 때와, 이후 운용할 때의 pin out 구성이 다릅니다. 이로 인하여 번거롭게 pin 구성을 바꿔 가면서 작업해야 하는데, 이를 해결해 줄 breakout board 가 출시 되어 있었습니다.

USB 를 통하여 serial 통신을 해주는 chip 과 전원 regulator 가 붙어 있어서, 따로 신경쓰지 않아도 되는 구성 입니다.


원래는 아래 그림처럼 source upload 와 운용시, 필요에 따라 serial to USB 를 붙여 줘야 합니다.




2. Purchase

다음 링크에서 구매 했습니다. 저는 이미 ESP32-CAM 을 가지고 있어서, breakout board 만 따로 구매 했네요. 구매 옵션으로는 USB serial 관리 chip 을 FT232 로 정했습니다. 중국에서 카피품인 CH340 도 옵션으로 선택할 수 있습니다. 저는 요즘 추세인 C-Type USB portFT232 로 선택하고 주문 하였습니다.

* Type-C ESP32-CAM WiFi Bluetooth Module ESP32 Serial to WiFi ESP32 CAM Development Board With OV2640 Camera ESP32-CAM-MB


잘 도착 했습니다.


HW-381B V0.0.5 라고 되어 있네요. 매우 단순한 구조라, 이 이상 revision 이 업데이트 될 필요는 없어 보입니다.


USB serial 통신에서 중요한 controller chip 을 확인해 봤으나, FT232 marking 이 없는 것을 보니, 중국 copy chip 으로 보입니다. 동작에 문제는 없겠지만, 그래도 좀 그렇습니다. 나중에 마음에 안들면, 가지고 있는 FT232 chip 으로 바꿔도 좋을 듯.




3. Overall

빵판도 필요 없고, 그냥 이렇게 USB C port 에 연결하면 끝 입니다. 뒤에 이야기 하겠지만, 그럼 source upload 할 때는 GPIO 0 + GND 연결은 어떻게 해야 하나? 부분은 따로 설명 하겠습니다.


ESP32-CAM 에서 중요한 부분인 전원 부분을 확인해 보았습니다. 5V 는 문제 없군요.


3.3V 도 문제 없어 보입니다.




4. FTDI Driver

요즘 Mac OS 는 자동으로 드라이버를 잡아 주므로 필요가 없겠지만, device 인식 부분에 혹시 문제가 있으면, 아래 사이트에서 driver 를 다운로드 받아 설치하면 된다고 합니다.

* Virtual COM Port Drivers

저의 경우는 아래와 같은 에러 이후, 지시 대로 Application 폴더에서 실행하면, Waiting Approval 이라고만 뜨고, 더 이상 진행이 되지 않았습니다. 뭔가 쉽지 않네요.


여러가지 조사해 본 결과, Mac OS 의 경우는 homebrew 를 이용해서 library 를 설치하면 된다고 합니다. 그래서 다음을 참고하여 설치 하였습니다. 다만, 최신 Mac OS 에서는 자동으로 인식할 것이라 필요 없는 액션일 수 있습니다. 저는 제대로 upload 가 되지 않아, 이것 저것 해 보다 보니, libftdi 설치도 진행 했습니다.



brew install libftdi



Source upload 시에, RST 와 IO0 버튼을 누르면서 USB 에 연결하면 upload mode 가 되니, 위의 driver 설치하지 않고, 문제없이 진행 되었다면, 따로 FTDI driver / library 설치는 필요 없습니다. 저는 여러가지 시도해 보다가 된 경우라, 처음부터 upload mode 로 잘 했으면, 문제 없을 것이라 예상 합니다.



5. Board Choice

Arduino IDE 에서 보드 선택을 AI Thinker ESP32-CAM 로 하면 됩니다.

Tools > Board > esp32 > AI Thinker ESP32-CAM


아마, ESP32 Dev Board 등으로 선택해도 잘 될리라 예상합니다. 그래도 최대한 맞춰서 선택하는 것이 좋다고 생각합니다.



6. Source

매우 단순한 확인용 소스로 다음을 사용 했습니다. 소스의 출처는 다음과 같습니다.

* Upload Code to ESP32-CAM AI-Thinker using ESP32-CAM-MB USB Programmer (easiest way)
/*********
  Rui Santos
  Complete instructions at https://RandomNerdTutorials.com/esp32-cam-projects-ebook/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/

// ledPin refers to ESP32-CAM GPIO 4 (flashlight)
const int ledPin = 4;

void setup() {
  // initialize digital pin ledPin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(2000);
  digitalWrite(ledPin, LOW);
  delay(2000);
}

ESP32-CAM 에 있는 Flash 용 LED 를 2초동안 불을 켰다 껐다 하는 기능을 합니다.



7. Verbose

Source 가 잘 올라가면, 아래와 같이 소스가 올라 갑니다.


그리고, 정상 동작 하면서 다음과 같은 log 를 Monitor 에서 확인할 수 있습니다.

               ap : addr: 0x00010000, size:  3072. KB, type:  APP, subtype: OTA_0
             spiffs : addr: 0x00310000, size:   896.0 KB, type: DATA, subtype: SPIFFS
           coredump : addr: 0x003F0000, size:    64.0 KB, type: DATA, subtype: COREDUMP
------------------------------------------
Software Info:
------------------------------------------
  Compile Date/Time : Feb 16 2025 20:31:27
  Compile Host OS   : macosx
  ESP-IDF Version   : v5.3.2-282-gcfea4f7c98-dirty
  Arduino Version   : 3.1.1
------------------------------------------
Board Info:
------------------------------------------
  Arduino Board     : ESP32_DEV
  Arduino Variant   : esp32
  Arduino FQBN      : esp32:esp32:esp32cam:CPUFreq=240,FlashFreq=80,FlashMode=qio,PartitionScheme=huge_app,DebugLevel=verbose,EraseFlash=none
============ Before Setup End ============
[   763][V][esp32-hal-periman.c:235] perimanSetBusDeinit(): Deinit function for type GPIO (1) successfully set to 0x400f1f00
[   774][V][esp32-hal-periman.c:160] perimanSetPinBus(): Pin 4 successfully set to type GPIO (1) with bus 0x5
=========== After Setup Start ============
INTERNAL Memory Info:
------------------------------------------
  Total Size        :   378640 B ( 369.8 KB)
  Free Bytes        :   338408 B ( 330.5 KB)
  Allocated Bytes   :    32884 B (  32.1 KB)
  Minimum Free Bytes:   332432 B ( 324.6 KB)
  Largest Free Block:   110580 B ( 108.0 KB)
------------------------------------------
SPIRAM Memory Info:
------------------------------------------
  Total Size        :  4194304 B (4096.0 KB)
  Free Bytes        :  4192124 B (4093.9 KB)
  Allocated Bytes   :        0 B (   0.0 KB)
  Minimum Free Bytes:  4192124 B (4093.9 KB)
  Largest Free Block:  4128756 B (4032.0 KB)
------------------------------------------
GPIO Info:
------------------------------------------
  GPIO : BUS_TYPE[bus/unit][chan]
  --------------------------------------  
     1 : UART_TX[0]
     3 : UART_RX[0]
     4 : GPIO
============ After Setup End =============



8. Result

결과 동영상 입니다. Flash LED 광량이 강력하여, 그걸 2초동안 키는 것은 많은 전력을 소모 합니다. 눈뽕도 되지만, 손으로 LED 를 만져 보면, 불이 켜질 때 손끝에 화상 입을 정도 입니다.




9. Check Point

Pin out 이 따로 필요 없고, USB 연결 만을 통해, 전원과 source upload 가 가능한 breakout board 입니다.
다만, 주의해야 할 것은 source upload 시에, GPIO 0 + GND 를 short 시켜야 하는 사양 때문에, source 를 upload 할 경우에는, RST + IO0 버튼을 누르면서 USB 에 연결해야 합니다.

연결만 되면, 그 후에는 손을 떼고 작업해도 되나, USB 연결하기 전에는, 꼭 이 두 버튼을 누르면서 연결해야만 upload mode 로 동작하고, source 도 잘 올라 갑니다. Source upload 이후에는 다시 USB 에 연결하여 upload mode (flash mode) 에서 벗어난 상태로 사용해야 합니다.

Source upload 시에 이 부분이 불편하다는 것 외에는 장점이 많은 breakout board 라고 하겠습니다.



10. IO0

IO0 스위치가 GPIO 0 + GND 를 연결하는 스위치 였습니다.


그러므로 Source Upload 할 경우는, 이 IO0 스위치를 누른 상태로 USB 를 연결하면, flash mode 로 연결이 되는 것을 확인 하였습니다. RST 는 다시 reboot 하는 용도로 사용하면 되겠습니다. Source upload 한 이후, 정상 가동 시키려면, USB 에 IO0 누르지 않고 다시 연결하거나, 전원을 인가하면 되겠습니다.



FIN

댓글