Seeed Studio XIAO ESP32S3 Sense는 카메라(OV2640)와 디지털 마이크가 내장된 ESP32-S3 기반 개발 보드로, Wi-Fi를 통해 영상 스트리밍이 가능합니다.
1. Arduino IDE 기본 세팅
Arduino IDE 실행 > 파일 > 기본 설정 > (중간) Language 에 한국어 선택 후 확인.
Arduino IDE 실행 > 파일 > 기본 설정 > (맨아래) 추가 보드 관리자 URL 에 아래 내용입력 후 확인.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Arduino IDE 실행 > 도구 > 보드 > 보드매니저 실행해서 아래 두개 설치
- Arduino ESP32 Boards
- esp32
Arduino IDE 실행 > 도구 > 보드 > esp32 > ESP32S3 Dev Module Octal (WROOM2) 선택
USB 에 기기 연결 후, 상단 셀렉트 옵션에서 기기 선택해 놓습니다.
2. 시리얼 포트 접근 권한 추가
리눅스 시스템에서 시리얼 포트에 대한 접근 권한을 주어야 합니다.
다음과 같이 사용자를 dialout 그룹에 추가합니다.
명령을 실행한 후 시스템에서 로그아웃했다가 다시 로그인해야 변경사항이 적용됩니다. (생략 가능)
$ sudo usermod -a -G dialout $USER
시리얼 포트에 직접 권한 부여하는 방법도 있습니다.
$ sudo chmod 666 /dev/ttyACM0
하지만 이 방법은 임시적인 해결책으로, 재부팅 후에는 다시 권한을 설정해야 합니다.
3. 예제 입력 및 컴파일
Arduino IDE에는 여러가지 예제가 준비되어 있습니다.
ESP32S3 카메라를 올바르게 사용하기 위해 기본 제공되는 예제를 사용해 봅니다.
Arduino IDE 실행 > 파일 > 예제 > ESP32 > Camera > CameraWebServer 선택
열려진 예제 코드에서 WiFi 설정만 수정합니다.
const char* ssid = "CDH"; // Wi-Fi SSID
const char* password = "12345678"; // Wi-Fi 비밀번호
보드 선택이 "ESP32S3 Dev Module" 또는 "ESP32S3 Sense"로 설정되어 있는지 확인합니다.
업로드를 실행 합니다.
아래와 같은 결과가 출력되면 성공한 것입니다.
[출력]
스케치는 프로그램 저장 공간 1000446 바이트(76%)를 사용. 최대 1310720 바이트.
전역 변수는 동적 메모리 62908바이트(19%)를 사용, 264772바이트의 지역변수가 남음. 최대는 327680 바이트.
esptool.py v4.8.1
Serial port /dev/ttyACM0
Connecting...
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: d8:3b:da:45:d2:7c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00004fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00104fff...
Compressed 18976 bytes to 12282...
Writing at 0x00000000... (100 %)
Wrote 18976 bytes (12282 compressed) at 0x00000000 in 0.3 seconds (effective 499.2 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 134...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (134 compressed) at 0x00008000 in 0.0 seconds (effective 568.3 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 756.9 kbit/s)...
Hash of data verified.
Compressed 1000592 bytes to 653189...
Writing at 0x00010000... (2 %)
Writing at 0x0001c4b8... (5 %)
Writing at 0x000253f6... (7 %)
Writing at 0x0002926d... (10 %)
Writing at 0x00030be0... (12 %)
Writing at 0x0003b4c8... (15 %)
Writing at 0x000449a9... (17 %)
Writing at 0x0004a26a... (20 %)
Writing at 0x0004f8be... (22 %)
Writing at 0x0005531c... (25 %)
Writing at 0x0005aabf... (27 %)
Writing at 0x0005fd0b... (30 %)
Writing at 0x00065104... (32 %)
Writing at 0x0006a55c... (35 %)
Writing at 0x0006fc7e... (37 %)
Writing at 0x00075228... (40 %)
Writing at 0x0007a3d1... (42 %)
Writing at 0x0007f636... (45 %)
Writing at 0x00084d7b... (47 %)
Writing at 0x0008aafd... (50 %)
Writing at 0x0009111e... (52 %)
Writing at 0x0009695f... (55 %)
Writing at 0x0009be10... (57 %)
Writing at 0x000a13d3... (60 %)
Writing at 0x000a6810... (62 %)
Writing at 0x000ab6c9... (65 %)
Writing at 0x000b0853... (67 %)
Writing at 0x000b5c6b... (70 %)
Writing at 0x000baf83... (72 %)
Writing at 0x000bffbe... (75 %)
Writing at 0x000c5188... (77 %)
Writing at 0x000cac39... (80 %)
Writing at 0x000d07d9... (82 %)
Writing at 0x000d5cc7... (85 %)
Writing at 0x000e0b33... (87 %)
Writing at 0x000e64ab... (90 %)
Writing at 0x000eb3f0... (92 %)
Writing at 0x000f35f3... (95 %)
Writing at 0x000f92d7... (97 %)
Writing at 0x000fee95... (100 %)
Wrote 1000592 bytes (653189 compressed) at 0x00010000 in 6.9 seconds (effective 1154.1 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting with RTC WDT...
[ 에러조치 ]
/dev/ttyACM0 가 보였다 안보였다 하는 증상은 Arduino IDE 에서 포트가 보였다 안보였다 하는 증상과 같습니다.
이는 업로드를 이미 했거나, 하는중 오류가 발생하였거나 기타 등등의 문제로 인해 생기는데,
해결책은 아래와 같습니다.
데이터 케이블과 ESP32S3 Sense (기기) 와 분리합니다.
C-Type 머리가 보이게, 그리고 위로 올린 방향으로 두면 C-Type 오른쪽으로 보이는 버튼이 BOOT 버튼입니다.
BOOT 버튼을 누른채 데이터 케이블을 연결하면 불이 깜빡이며, 멈추었을때 손을 떼면 초기화 됩니다.
초기화 된 상태에서 다시 케이블을 분리하면 원래대로 돌아갑니다.
그러므로 연결된 상태 그대로 소스코드를 수정하고 업로드 해야 합니다.
※ BootLoader 모드란?
- 공장 초기화가 아닌, 새로운 펌웨어를 강제로 업로드할 수 있도록 하는 모드
- 기존의 프로그램이 손상되었거나 업로드가 실패할 때, 이 모드를 통해 새로운 펌웨어를 강제로 설치 가능
- 일반적인 운영 중에는 사용되지 않으며, 포트 인식 오류나 업로드 문제 해결 시 사용