본문 바로가기

ESP32

Arduino IDE로 ESP32를 프로그래밍하는 방법

반응형

 

 

Arduino IDE로 ESP32를 프로그래밍하는 방법

 

이 튜토리얼에서는 Arduino 환경 내에 ESP32 Core를 설치하여 Arduino IDE를 사용하여 ESP32를 프로그래밍하는 방법을 알아봅니다.

 

https://www.makerguides.com/how-to-install-the-esp32-arduino-core-in-the-arduino/

 

Arduino IDE(통합 개발 환경)는 Arduino 보드에 코드를 작성, 컴파일 및 업로드하는 데 사용되는 소프트웨어 애플리케이션입니다. Arduino 프로젝트를 프로그래밍하기 위한 사용자 친화적인 인터페이스를 제공하며 코드 강조 표시, 자동 완성 및 디버깅을 위한 직렬 모니터와 같은 기능이 포함되어 있습니다.

 

기본적으로 Arduino 보드에 초점을 맞추고 있으며 ESP32 또는 ESP8266과 같은 다른 인기 있는 마이크로프로세서를 프로그래밍하는 데 즉시 사용할 수 없습니다. 그러나 ESP32는 더 강력하고 기본적으로 WiFi를 지원하므로 많은 애플리케이션에서 선호되는 선택입니다. 게시물 ESP32 대 Arduino 속도 비교를 참조하세요. ESP32를 처음 사용하는 경우 ESP32 초보자 가이드도 참조하세요.

 

ESP32에는 자체 통합 개발 환경인 esp-idf가 함께 제공되며, 이는 훌륭하지만 Arduino IDE보다 사용하기 훨씬 어렵습니다. 특히 소규모 프로젝트나 초보자의 경우 더욱 그렇습니다. 그러나 Arduino IDE 환경 내에 ESP32 코어 라이브러리를 설치하면 두 가지 장점을 모두 얻을 수 있습니다. 이를 통해 간단한 Arduino IDE를 사용하여 강력한 ESP32를 프로그래밍할 수 있습니다.

 

이 튜토리얼에서는 ESP32 Arduino 코어를 설치하는 과정을 안내하고 Arduino IDE를 사용하여 ESP32에 대한 세 가지 프로그래밍 예제를 제공합니다. 초보자이든 Arduino에 대한 경험이 있든 이 단계별 가이드는 ESP32를 시작하고 그 잠재력을 최대한 활용하는 데 도움이 될 것입니다.

 

설치 과정과 프로그래밍 예제를 살펴보기 전에 이 튜토리얼을 따라야 하는 부분을 간단히 살펴보겠습니다.

 

개요

필수 부품

ESP32 lite

USB 데이터 케이블

Arduino IDE

ESP32 코어 설치

추가 보드 관리자 URL

보드 관리자

보드 선택

Blink 예제

보드 사양 예제

WIFI 예제

도우미 함수

설정 함수

루프 함수

출력 예제

결론

자주 묻는 질문

Q: Arduino IDE를 사용하여 ESP32를 프로그래밍할 수 있습니까?

Q: Arduino IDE에 ESP32 코어를 설치하려면 어떻게 해야 합니까?

Q: ESP32를 프로그래밍하는 데 필요한 부품은 무엇입니까?

Q: ESP32에 동일한 Arduino 코드를 사용할 수 있습니까?

Q: ESP32를 Wi-Fi에 연결하려면 어떻게 해야 합니까?

Q: Arduino IDE로 ESP32를 프로그래밍할 때 제한 사항이 있습니까?

링크

 

필수 부품

 

아래에서 필요한 구성 요소를 찾을 수 있습니다. 이 튜토리얼에서는 더 이상 사용되지 않는 오래된 ESP32 보드를 사용하지만 여전히 매우 저렴한 가격으로 구입할 수 있습니다. 아래에 나열된 것이 바로 그것입니다. 사양이 개선된 후속 모델이 있는데, 여기에서 찾을 수 있습니다. 하지만 다른 ESP32 기반 보드도 괜찮습니다.

 

ESP32 lite

USB 데이터 케이블

 

Arduino IDE 2.x

https://www.arduino.cc/en/software

 

ESP32 Core 설치

ESP32 Core 설치는 매우 간단합니다. Arduino IDE를 시작하고 아래에 설명된 단계를 따르기만 하면 됩니다.

 

추가 보드 관리자 URL

 

먼저 "파일" 메뉴에서 "환경 설정..."을 선택하여 환경 설정 대화 상자를 엽니다.

 

 

환경 설정 대화 상자 열기

 

 

아래에 표시된 환경 설정 대화 상자가 열립니다. 설정 탭에서 대화 상자 하단에 "추가 보드 관리자 URL"이라는 레이블이 붙은 편집 상자를 찾을 수 있습니다.

 

이 입력 필드에 다음 URL을 복사합니다. "https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json"

 

 

 

 

이렇게 하면 Arduino IDE에서 ESP32 코어 라이브러리를 찾을 위치를 알 수 있습니다. 다음으로 보드 관리자를 사용하여 실제로 ESP32 코어 라이브러리를 설치합니다.

 

보드 관리자

 

도구 메뉴를 통해 보드 관리자를 엽니다. 아래 스크린샷에서 "WEMOS LOLIN32 Lite" 보드를 선택한 것을 볼 수 있습니다. 거기에 다른 보드가 표시되지만 괜찮습니다. 보이는 보드를 선택하고 "보드 관리자..."를 클릭하기만 하면 됩니다.

 

보드 관리자 열기

 

 

왼쪽 사이드바에 보드 관리자가 나타납니다. 상단의 검색 필드에 "ESP32"를 입력하면 두 가지 유형의 ESP32 보드가 표시됩니다. "Arduino ESP32 Boards"와 "esp32 by Espressif" 보드. Espressif의 esp32 라이브러리가 필요합니다. INSTALL 버튼을 클릭하고 다운로드 및 설치가 완료될 때까지 기다리세요.

 

ESP32 Core 라이브러리 설치

 

 

설치가 완료되면 Boards Manager가 이와 같이 표시되어야 하지만 실제 버전(여기서는 3.0.0-a)은 다를 수 있습니다.

 

 

ESP32 코어 설치

 

 

ESP32 코어와 함께 또는 ESP8266을 설치하는 데 동일한 프로세스를 사용할 수 있습니다. 다음 URL을 사용하기만 하면 됩니다. https://arduino.esp8266.com/stable/package_esp8266com_index.json.

 

 

다음 단계에서는 프로그래밍하려는 ESP32 보드를 선택하는 방법을 보여드리겠습니다.

 

보드 선택

 

보드를 선택하려면 도구 메뉴로 이동합니다. 보드: "XXX"를 클릭합니다. 다시 한번 아래에 표시된 것과 다른 보드가 보일 것입니다. 괜찮습니다. 하위 메뉴로 이동하면 "Arduino AVR 보드"가 표시되고 그 아래에 "esp32"가 표시됩니다(보시다시피 esp8266 보드도 설치했습니다). "esp32"를 클릭하면 사용 가능한 보드 목록이 크게 표시됩니다.

 

WEMOS LOLIN32 Lite 보드 선택

 

 

목록에서 보드를 찾으세요. 이 예에서는 WEMOS LOLIN32 Lite 보드를 사용하므로 이를 선택합니다. 그러나 다음 프로그래밍 예에서는 거의 모든 다른 ESP32 보드가 작동합니다. 실제로 컴퓨터에 연결한 보드를 선택했는지 확인하세요.

 

Blink 예제

 

ESP32 코어 라이브러리의 올바른 설치를 테스트하기 위해 클래식 Blink 예제를 사용합니다. 코드에 익숙해야 합니다.

 

 

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

void loop() {
  Serial.println("On");
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(1000);           
    
  Serial.println("Off");         
  digitalWrite(LED_BUILTIN, LOW);   
  delay(1000);                     
}

 

 

Arduino IDE를 통해 코드를 컴파일하고 보드로 다운로드하는 일반적인 단계를 따르세요.

 

코드 컴파일 및 업로드

 

 

직렬 모니터에서 올바른 통신 속도를 선택했는지 확인하세요. 프로그램이 실행되면 내장 LED가 깜박이고 직렬 모니터에 "켜짐", "꺼짐" 메시지가 순서대로 표시됩니다.

모든 것이 제대로 작동하면 축하합니다! ESP32 코어를 성공적으로 설치했으며 이제 ESP32 보드를 프로그래밍할 수 있습니다.

 

보드 사양 예제

 

이 예제에서는 ESP32를 프로그래밍하여 사양을 알려줍니다. 다음 스케치는 칩 모델 및 개정판, 코어 수, CPU 주파수 등의 정보를 인쇄합니다. 새 보드가 있는 경우 유용합니다.

 

// 기반: https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Esp.h

 

// Based on: https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Esp.h

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

void loop() {
  Serial.printf("Specs -------------------------------\n");
  Serial.printf("Model              : %s\n", ESP.getChipModel());
  Serial.printf("Revision           : %d\n", ESP.getChipRevision());
  Serial.printf("Cores              : %d\n", ESP.getChipCores());
  Serial.printf("CPU Freq           : %d\n", ESP.getCpuFreqMHz());
  Serial.printf("Free Heap          : %d\n", ESP.getFreeHeap());
  Serial.printf("Flash Size         : %d\n", ESP.getFlashChipSize());
  Serial.printf("Sketch Size        : %d\n", ESP.getSketchSize());
  Serial.printf("Free Sketch Space  : %d\n", ESP.getFreeSketchSpace());
  Serial.printf("SDK Version        : %s\n", ESP.getSdkVersion());
  Serial.printf("Core Version       : %s\n", ESP.getCoreVersion());  
  delay(5000);  
}

 

 

이 코드를 실행하면 직렬 모니터에 WEMOS LOLIN32 Lite 보드에 대한 다음 정보가 표시됩니다.

 

// Based on: https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Esp.h

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

void loop() {
  Serial.printf("Specs -------------------------------\n");
  Serial.printf("Model              : %s\n", ESP.getChipModel());
  Serial.printf("Revision           : %d\n", ESP.getChipRevision());
  Serial.printf("Cores              : %d\n", ESP.getChipCores());
  Serial.printf("CPU Freq           : %d\n", ESP.getCpuFreqMHz());
  Serial.printf("Free Heap          : %d\n", ESP.getFreeHeap());
  Serial.printf("Flash Size         : %d\n", ESP.getFlashChipSize());
  Serial.printf("Sketch Size        : %d\n", ESP.getSketchSize());
  Serial.printf("Free Sketch Space  : %d\n", ESP.getFreeSketchSpace());
  Serial.printf("SDK Version        : %s\n", ESP.getSdkVersion());
  Serial.printf("Core Version       : %s\n", ESP.getCoreVersion());  
  delay(5000);  
}

 

 

직렬 모니터에 표시된 WEMOS LOLIN32 Lite 보드의 사양 특히 유용한 정보는 스케치 크기와 여유 스케치 공간에 대한 정보입니다. 메모리가 부족해지기 전에 얼마나 많은 코드를 추가할 수 있는지 알려줍니다.

다음 예제에서는 ESP32 보드의 WIFI 기능을 활용합니다.

 

WIFI 예제

 

다음 코드는 https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiScan/WiFiScan.ino에서 찾을 수 있는 ESP32 예제 코드를 기반으로 합니다.

 

코드를 조금 더 구조화하고 읽기 쉽게 만들기 위해 두 가지 함수를 인수분해했습니다. 모든 WIFI 네트워크, SSID, 채널, 강도 및 암호화 유형을 보고하는 간단한 WIFI 스캐너입니다.

 

 

#include "WiFi.h"

void print_network_info(int i) {
  Serial.printf("%2d", i + 1);
  Serial.print(" | ");
  Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
  Serial.print(" | ");
  Serial.printf("%4ld", WiFi.RSSI(i));
  Serial.print(" | ");
  Serial.printf("%2ld", WiFi.channel(i));
  Serial.print(" | ");
}

void print_auth_type(int i) {
  switch (WiFi.encryptionType(i)) {
    case WIFI_AUTH_OPEN:
      Serial.print("open");
      break;
    case WIFI_AUTH_WEP:
      Serial.print("WEP");
      break;
    case WIFI_AUTH_WPA_PSK:
      Serial.print("WPA");
      break;
    case WIFI_AUTH_WPA2_PSK:
      Serial.print("WPA2");
      break;
    case WIFI_AUTH_WPA_WPA2_PSK:
      Serial.print("WPA+WPA2");
      break;
    case WIFI_AUTH_WPA2_ENTERPRISE:
      Serial.print("WPA2-EAP");
      break;
    case WIFI_AUTH_WPA3_PSK:
      Serial.print("WPA3");
      break;
    case WIFI_AUTH_WPA2_WPA3_PSK:
      Serial.print("WPA2+WPA3");
      break;
    case WIFI_AUTH_WAPI_PSK:
      Serial.print("WAPI");
      break;
    default:
      Serial.print("unknown");
  }
  Serial.println();
}

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);
}

void loop() {
  Serial.print("Scanning ... ");
  int n = WiFi.scanNetworks();
  Serial.println("done.");
  if (n == 0) {
    Serial.println("no networks found");
  } else {
    Serial.printf("%d networks found\n", n);
    Serial.println("Nr | SSID                             | RSSI | CH | Encryption");
    for (int i = 0; i < n; ++i) {
      print_network_info(i);
      print_auth_type(i);
      delay(10);
    }
  }
  WiFi.scanDelete();
  delay(5000);
}

 

 

다음은 코드에 대한 간단한 설명입니다. 도우미 함수부터 시작합니다.

 

도우미 함수

 

print_network_info() 함수는 스캔 중에 발견된 각 Wi-Fi 네트워크의 정보를 인쇄하는 역할을 합니다. 스캔된 네트워크 목록에서 네트워크의 인덱스를 나타내는 정수 매개변수 i를 사용합니다.

 

print_auth_type() 함수는 스캔 중에 발견된 각 Wi-Fi 네트워크의 인증 유형을 인쇄합니다. 스캔된 네트워크 목록에서 네트워크의 인덱스를 나타내는 정수 매개변수 i를 사용합니다. switch 문을 사용하여 WiFi.encryptionType(i)에서 반환된 값을 기반으로 인증 유형을 결정합니다.

 

Setup 함수

setup() 함수에서 115200의 전송 속도로 직렬 통신을 초기화하고 ESP32를 스테이션 모드(WIFI_STA)에서 작동하도록 구성합니다. 또한 WiFi.disconnect()를 사용하여 이전에 연결된 모든 액세스 포인트(AP)에서 연결을 끊습니다.

 

Loop 함수

loop() 함수에서 스캔이 진행 중임을 나타내기 위해 "Scanning … "을 인쇄하여 시작합니다. 그런 다음 WiFi.scanNetworks()를 호출하여 사용 가능한 Wi-Fi 네트워크를 스캔하고 발견된 네트워크 수를 변수 n에 저장합니다. 발견된 네트워크 수와 네트워크 정보 표의 헤더를 인쇄합니다.

 

그런 다음 각 네트워크를 반복하고 print_network_info() 및 print_auth_type() 함수를 호출하여 네트워크 정보를 인쇄합니다. 직렬 출력이 과부하되는 것을 방지하기 위해 각 네트워크 간에 10밀리초 동안 지연합니다. 모든 네트워크를 스캔한 후 WiFi.scanDelete()를 호출하여 스캔 결과에 사용된 메모리를 해제합니다. 마지막으로 다음 스캔을 시작하기 전에 5초 동안 지연합니다.

 

출력 예제

 

아래는 스캐너가 감지한 WIFI 네트워크의 예입니다. 가장 강력한 네트워크는 일반적으로 사용자의 WIFI 네트워크입니다.

 

스캐너가 감지한 WiFi 네트워크

 

 

 

WEMOS LOLIN32 Lite 보드에는 LiPo 배터리 커넥터가 있으므로 이 코드를 사용하여 휴대용 WIFI 네트워크 스캐너를 직접 만들 수 있습니다. 분명히 디스플레이에 스캔 결과를 표시해야 합니다. 다음 튜토리얼을 살펴보세요: I2C LCD를 ESP32에 연결하는 방법 – 간단한 가이드.

 

결론

 

Arduino IDE를 사용하여 ESP32를 프로그래밍하는 것은 쉽습니다. ESP32 Arduino Core를 설치하고 이 블로그 게시물에 제공된 단계별 가이드를 따르면 ESP32 프로젝트를 빠르게 시작할 수 있습니다.

 

이 튜토리얼 전체에서 ESP32 보드 자체와 Arduino IDE를 포함하여 ESP32를 프로그래밍하는 데 필요한 부분을 다루었습니다. 또한 ESP32에 대한 Arduino IDE 지원을 활성화하는 데 필수적인 ESP32 Core를 설치하는 방법도 설명했습니다.

 

그런 다음 다양한 코드 예제를 살펴보아 ESP32의 기능을 시연했습니다. Blink Code Example을 사용하여 ESP32 코어의 올바른 설치와 기능을 확인했습니다. ESP32 Spec Example은 ESP32 보드에 대한 정보를 검색하고 표시하는 방법을 시연했습니다. 마지막으로 WiFi Example은 ESP32를 Wi-Fi 네트워크에 연결하는 방법을 보여 주어 ESP32의 무선 기능을 활용할 수 있도록 했습니다.

 

문제가 발생하거나 진행 중에 질문이 있는 경우 자주 묻는 질문 섹션에서 추가 지침을 참조하세요. 또한 제공된 링크를 통해 공식 문서, 포럼, 커뮤니티 지원을 포함한 추가 리소스로 이동할 수 있습니다.

이제 ESP32를 즐겨보세요 ; )

 

자주 묻는 질문

 

Arduino IDE로 ESP32를 프로그래밍하는 것에 대한 자주 묻는 질문은 다음과 같습니다.

 

Q: Arduino IDE를 사용하여 ESP32를 프로그래밍할 수 있나요?

A: 네, Arduino IDE는 ESP32 프로그래밍을 지원하는 인기 있고 사용자 친화적인 개발 환경입니다. 익숙한 인터페이스와 다양한 라이브러리 및 예제를 제공하여 시작할 수 있습니다.

 

Q: Arduino IDE에 ESP32 Core를 설치하려면 어떻게 해야 하나요?

A: Arduino IDE에 ESP32 Core를 설치하려면 다음 단계를 따르세요.

 

1. Arduino IDE를 엽니다. 2. "파일" > "환경 설정"으로 이동합니다.

3. "추가 보드 관리자 URL" 필드에 다음 URL을 입력합니다. https://dl.espressif.com/dl/package_esp32_index.json

4. "확인"을 클릭하여 환경 설정을 저장합니다.

5. "도구" > "보드" > "보드 관리자"로 이동합니다.

6. 보드 관리자에서 "esp32"를 검색합니다.

7. "esp32" 항목을 클릭하고 "설치" 버튼을 클릭합니다.

8. 설치가 완료될 때까지 기다립니다.

9. 설치가 완료되면 "도구" > "보드" 메뉴에서 ESP32 보드를 선택할 수 있습니다.

 

질문: ESP32를 프로그래밍하는 데 필요한 부품은 무엇입니까?

답변: ESP32를 프로그래밍하려면 다음 부품이 필요합니다.

– ESP32 개발 보드

– 보드를 컴퓨터에 연결하기 위한 USB 케이블

– Arduino IDE가 설치된 컴퓨터

 

질문: ESP32에 동일한 Arduino 코드를 사용할 수 있나요?

답변: 대부분의 경우 사소한 수정을 통해 ESP32에 동일한 Arduino 코드를 사용할 수 있습니다. ESP32는 Arduino 보드와 유사한 아키텍처를 가지고 있으며 많은 Arduino 라이브러리와 호환됩니다. 그러나 핀 할당과 라이브러리 지원에 약간의 차이가 있을 수 있으므로 특정 세부 정보는 ESP32 설명서와 예제를 참조하는 것이 좋습니다.

 

질문: ESP32를 Wi-Fi에 연결하려면 어떻게 해야 하나요?

답변: ESP32에는 내장 Wi-Fi 기능이 있으며 Arduino IDE를 사용하여 Wi-Fi 네트워크에 쉽게 연결할 수 있습니다. ESP32를 Wi-Fi에 연결하고 HTTP 요청을 보내거나 웹 서버를 만드는 것과 같은 작업을 수행하는 방법을 보여주는 몇 가지 예제가 있습니다. 이러한 예제는 Arduino IDE의 "파일" > "예제" > "WiFi"에서 찾을 수 있습니다.

 

질문: Arduino IDE로 ESP32를 프로그래밍할 때 제한 사항이 있나요?

A: Arduino IDE는 ESP32를 프로그래밍하는 편리한 방법을 제공하지만, 알아야 할 몇 가지 제한과 과제가 있습니다. ESP32는 기존 Arduino 보드에 비해 더 고급 기능과 성능을 제공하므로 일부 고급 기능에는 추가 구성이나 사용자 정의 라이브러리가 필요할 수 있습니다.

 

링크

 

esp-idf arduino-esp32 ESP32용 Arduino 코어 Arduino에 ESP8266 및 ESP32 코어 설치 

 

 

늘 그렇듯이 이 링크를 따라가면 처음 문서를 만날 수 있습니다. 배움을 멈추지 마세요. 이렇게 작업을 하면 눈이 좀 아픈데 참을 수 있습니다. 오히려 참을 수 없는 것은 이 상황입니다.

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^