본문 바로가기

ESP32

ESP32 Super Mini 보드 Blink 이상할 때

반응형

ESP32 Super Mini 보드(ESP32-C3 또는 S3 기반 초소형 보드)에서 delay() 함수가 예상대로 작동하지 않거나 시스템을 멈추게 하는 문제는 주로 WDT(Watchdog Timer) 타임아웃 또는 멀티태스킹 환경에서의 비효율적인 블로킹(Blocking) 때문에 발생합니다. 다음은 주요 원인과 해결 방안입니다.  

 

1. Watchdog Timer (WDT) 타임아웃 (가장 흔한 원인)
ESP32는 실시간 운영체제(FreeRTOS) 위에서 동작합니다. delay()는 코드를 멈추게 하는데, 너무 긴 시간(delay(10000) 등)을 멈추면 WDT가 시스템이 멈췄다고 판단하여 보드를 강제 리셋시킵니다.
  • 해결책: 아주 긴 지연이 필요하다면 delay() 대신 vTaskDelay()를 사용하거나, delay()를 짧게 여러 번 나눕니다.
2. 멀티코어/FreeRTOS 블로킹 문제
delay()를 사용하여 한 코어(또는 작업)를 멈추게 하면, Wi-Fi나 블루투스 같은 백그라운드 작업이 제대로 처리되지 않을 수 있습니다.
  • 해결책: delay() 대신 Millis() 함수를 사용하여 비동기(Non-blocking) 방식으로 코드를 작성하세요.

 

// 좋은 예: non-blocking delay
unsigned long previousMillis = 0;
const long interval = 1000;

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    // 동작할 내용
  }
}

 

3. ESP32-C3/S3 초소형 보드 특성 (Serial 관련)
Super Mini는 초기화 시 USB Serial을 연결하는 데 시간이 걸릴 수 있습니다. Serial.begin() 직후 delay() 없이 바로 Serial.println()을 호출하면 데이터가 유실될 수 있습니다.
  • 해결책: Serial.begin(115200); 바로 다음에 delay(1000);을 넣어 보드 인식 시간을 줍니다.
4. 다른 라이브러리와의 충돌
SPI나 I2C 통신 중 delay()를 사용하면 타이밍이 깨져 통신 오류가 발생할 수 있습니다.
  • 해결책: 통신 라이브러리 자체의 지연 함수(예: yield() 또는 라이브러리에서 권장하는 방식)를 사용하세요.

요약: delay() 사용을 최소화하고, millis() 기반의 논블로킹 코딩으로 전환하는 것이 ESP32 동작 안정화의 핵심입니다.

 

 

예제 코드

 

// ESP32 C3 Super Mini on-board LED (works with inverted logic)
const int ledPin = 8; 

unsigned long previousMillis = 0;
const long interval = 1000;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
}

void loop() {

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    digitalWrite(ledPin, !digitalRead(ledPin));
    Serial.println("LED ON OFF Toggle");
  }                  
}

 

 

 

 

ESP32 Super Mini 보드 Blink Test

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩