본문 바로가기
모두의 ESP32-ESP8288

[ESP32] ESP32 아두이노 IDE 에서 사용하기

by 로니킴 2021. 12. 15.


본 절은 ESP32를 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설합니다. ESP32 특징, 동작원리, 사양, 연결 핀 배열, 출력 값, 주의사항을 알아본비다. ESP32를 연결하고, 간단한 코딩으로 쉽게 실습할 수 있습니다. 

 

목차

     

     

     


    ESP32 아두이노 IDE에서 사용하기

    ESP32는 고성능 저전력 시스템온칩(SoC)으로, Wi-Fi 및 블루투스 기능이 통합되어 다양한 IoT 응용 분야에 적합합니다. 240MHz 듀얼 코어 프로세서와 최대 4MB의 확장 가능한 메모리를 갖추고 있으며, 다양한 핀배열과 통신 프로토콜을 지원합니다. ESP32는 아두이노 IDE 및 기타 개발 환경에서 프로그래밍이 가능하며, 프로젝트 완성을 위해 철저한 테스트와 디버깅이 필요합니다.

     

     

     

    esp32-wroom-32_datasheet_en.pdf
    0.39MB

     

     

     


    (1) ESP32 란?

     

    Espressif 의 ESP32 공식 모듈 ESP32-WROOM-32D를 사용한 BNE-MINI-ESP32-A1 ESP32 개발보드를 아두이노 IDE에서 사용할 수 있습니다.  ESP32는 저전력, 고성능의 시스템온칩(SoC)으로, 다양한 IoT 응용 분야에 적합합니다.

     

     

     

    이 칩은 두 개의 Tensilica Xtensa LX6 마이크로프로세서 코어를 갖추고 있으며, 최대 240MHz에서 작동합니다. ESP3는 520KB의 SRAM을 제공하며, 외부 스파이럼(SPIRAM)을 추가하여 최대 4MB의 RAM까지 확장할 수 있습니다.

     

    내장된 Wi-Fi 및 블루투스 기능은 ESP32를 스마트 홈 디바이스, 웨어러블 기술, 또는 위치 추적 장치 등과 같은 다양한 제품에 이상적인 선택으로 만듭니다.

     

    ESP32는 또한 낮은 전력 소비 모드를 지원하여, 배터리 수명을 최적화하고 효율적인 에너지 관리를 가능하게 합니다. 이 외에도, 다수의 입출력 포트를 통해 센서, 모터, 디스플레이 등과 같은 다양한 주변 장치와의 연결이 용이하며, 실시간 운영 시스템을 위한 다양한 프로그래밍 옵션을 제공합니다.

     

     

     

     


    (2) ESP32  vs ESP8266 비교

     

    ESP32와 ESP8266을 비교하면 다음과 같습니다. ESP32는 ESP8266에 비해 다양한 면에서 더 우수한 성능을 제공하며, 다음과 같은 차별점을 가지고 있습니다.

     

    https://makeradvisor.com/esp32-vs-esp8266/

     

    1. MCU (마이크로컨트롤러 유닛):
       - ESP32는 Xtensa 듀얼 코어 32비트 LX6 MCU를 사용하여 600 DMIPS의 성능을 제공합니다. 반면 ESP8266은 Xtensa 싱글 코어 32비트 L106을 사용합니다. 이는 ESP32가 더 높은 처리 능력을 가지고 있음을 의미합니다.

    2. 블루투스:
       - ESP32는 Bluetooth 4.2 및 BLE(Bluetooth Low Energy)를 지원하지만, ESP8266은 블루투스를 지원하지 않습니다. 이는 ESP32가 더 다양한 무선 통신 옵션을 제공함을 나타냅니다.

    3. 작동 주파수:
       - ESP32는 160 MHz의 주파수로 동작하는 반면, ESP8266은 80 MHz로 동작합니다. 이는 ESP32가 더 빠른 연산 속도를 가짐을 보여줍니다.

    4. SRAM 및 플래시 메모리:
       - ESP32는 더 많은 SRAM 및 플래시 메모리를 지원하여 더 큰 데이터를 처리하고 저장할 수 있습니다.

    5. GPIO:
       - ESP32는 34개의 GPIO를 제공하지만, ESP8266은 17개만 제공합니다. 이는 더 많은 입력 및 출력 핀을 사용할 수 있게 해 줍니다.

    6. PWM 채널:

       - ESP32는 16개의 하드웨어/소프트웨어 PWM 채널을 지원하지만, ESP8266은 8개만 지원합니다.

    7. ADC (아날로그-디지털 변환기):

       - ESP32는 12비트 ADC를 제공하지만, ESP8266은 10비트 ADC를 제공합니다. 이는 더 정밀한 아날로그 신호 처리가 가능함을 의미합니다.

    8. CAN 및 이더넷 MAC 인터페이스:

       - ESP32는 CAN(Controller Area Network) 및 이더넷 MAC 인터페이스를 지원하지만, ESP8266은 이들을 지원하지 않습니다. 이는 ESP32가 더 넓은 통신 인터페이스를 제공함을 나타냅니다.

    9. 터치 센서 및 홀 효과 센서:

       - ESP32는 터치 센서 및 홀 효과 센서를 포함하여 다양한 센서를 지원합니다. 반면 ESP8266은 이러한 센서를 지원하지 않습니다.

    10. 온도 센서:
        - ESP32의 경우, 일부 구형 버전에서는 온도 센서를 지원합니다. ESP8266은 온도 센서를 지원하지 않습니다.

    11. 작동 온도 범위:
        - 두 모델 모두 -40℃에서 125℃까지의 작동 온도 범위를 지원합니다.

    이와 같은 차별점들을 통해 ESP32는 더 많은 기능과 더 높은 성능을 제공하며, 다양한 애플리케이션에서 더욱 유용하게 사용될 수 있습니다. 가격 면에서는 ESP32가 ESP8266보다 약간 더 비싸지만, 그만큼의 추가 기능과 성능을 제공합니다.

     

     

    ESP32는 블루투스를 지원합니다.

    https://youtu.be/SwsSZYibNeM


     

    (3) ESP32 핀배열

    ESP32의 핀배열은 매우 다양하고 유연하여, 여러 가지 유형의 응용 프로그램을 지원할 수 있습니다. 모듈에는 일반적으로 30개 또는 36개의 핀이 있으며, 이 중 GPIO 핀은 디지털 신호를 읽고 쓰는 데 사용됩니다.

     

     

    GPIO 핀은 PWM, ADC, DAC 기능을 지원하고, UART, SPI, I2C 등 여러 통신 프로토콜을 위한 핀도 포함되어 있습니다. 이러한 핀들은 각각 특정 기능에 맞게 설정할 수 있어, 예를 들어 아날로그 센서에서 데이터를 읽거나 모터 속도를 조절하는 등의 작업에 활용할 수 있습니다.

     

    핀의 유연성은 ESP32를 센서 네트워크, 사용자 인터페이스, 로봇 제어 시스템 등 다양한 전자 프로젝트에 적합하게 합니다. 추가적으로, ESP32는 내부적으로 여러 보안 기능과 오류 검출 기능을 갖추고 있어, 외부 환경의 간섭이나 데이터 손상으로부터 시스템을 보호할 수 있습니다.

     

    ESP32 핀 배열은 다음과 같다. 

     

     

     

     


    (4) ESP32 구입하기

    [ESP32 ]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있습니다. ESP32는 30핀, 38핀 등 핀 배열, 종류 등 다양하게 판매되고 있습니다.

     

     

    ESP32를 구입할 때는 몇 가지 주요 사항을 고려해야 합니다. 먼저, 사용할 모듈의 종류를 결정해야 합니다. ESP32는 다양한 모델로 제공되며, 각 모델은 메모리 크기, GPIO 핀의 수, 내장 기능 등에서 차이가 있습니다. 

     

    예를 들어, 일부 모델은 추가 메모리나 보다 높은 처리 능력을 제공하며, 특정 응용 프로그램에 더 적합할 수 있습니다. 제품을 구입할 때는 공식 유통업체 또는 신뢰할 수 있는 온라인 판매처를 통하는 것이 중요합니다. 이렇게 하면 정품 제품을 보장받을 수 있으며, 제품에 대한 지원도 받을 수 있습니다. 또한, 프로젝트의 요구 사항에 맞게 장치를 구매할 때는 프로젝트 요구 사항에 맞는 모듈을 선택하는 것이 중요합니다. 

     

    특정 프로젝트에서 요구하는 특성(예: 추가적인 메모리, 특정 I/O 포트의 필요성)에 따라 선택해야 할 모델이 달라질 수 있습니다. ESP32를 구매할 때는 제품의 사양, 가격, 배송 옵션 등을 비교하여 최적의 선택을 할 수 있습니다. 또한, 제품 구입 후 적절한 기술 지원을 받을 수 있는지도 고려해야 합니다. 이는 향후 프로젝트의 진행에 있어 중요한 부분이 될 수 있습니다.

     



     

    ESP32-30PIN, ESP38PIN, ESP32-WROOM-32U, ESP32-WROOM-32D의 차이점을 설명드리겠습니다.

    ESP32-30PIN vs. ESP38PIN
    - ESP32-30PIN: 30개의 GPIO 핀을 제공하는 개발 보드입니다. 간단한 프로젝트에 적합하며, 핀 수가 적기 때문에 사용이 더 간편합니다.
    - ESP38PIN: 38개의 GPIO 핀을 제공하여, 더 많은 입출력 핀이 필요한 복잡한 프로젝트에 적합합니다.

    ESP32-WROOM-32U vs. ESP32-WROOM-32D
    - ESP32-WROOM-32U: 외부 안테나 연결을 위한 U.FL 커넥터가 있는 모듈입니다. 신호 강도를 높이거나 특정 인클로저에 맞추기 위해 외부 안테나를 사용하는 경우에 적합합니다.
    - ESP32-WROOM-32D: 온보드 PCB 안테나를 사용합니다. 외부 안테나가 필요하지 않아 설계와 통합 과정이 더 간단합니다.

    공통 사양 및 특징
    - 두 모듈 모두 ESP32-D0WD 칩을 기반으로 하며, Wi-Fi와 블루투스를 지원합니다.

    - 4 MB의 외부 SPI 플래시 메모리를 통합하여 대부분의 애플리케이션에 충분합니다.

    - 안테나 유형만 다르며, 소프트웨어 관점에서 서로 호환됩니다.

    - 다양한 애플리케이션, IoT 디바이스부터 복잡한 센서 네트워크까지 폭넓게 사용될 수 있는 하드웨어를 갖추고 있습니다.

    이 모듈들은 각각의 프로젝트 요구사항에 따라 GPIO 핀 수와 안테나 유형 등을 고려하여 선택하면 됩니다.

     

     


     

    (5) ESP32 CP210x USB to UART DRIVER 설치하기

    CP210x usb 드라이버를 다운로드하여 설치합니다. ESP32를 컴퓨터와 연결하기 위해서는 CP210x USB to UART 드라이버를 설치해야 합니다. 

     

    이 드라이버는 ESP32와 컴퓨터 간의 데이터 통신을 가능하게 해 주며, 프로그래밍 및 데이터 전송을 위한 필수 요소입니다. 드라이버 설치는 간단하며, 제조사 웹사이트에서 드라이버를 다운로드 후 설치할 수 있습니다. 

     

    설치 과정에서 컴퓨터의 운영 체제에 맞는 드라이버 버전을 선택해야 하며, 드라이버가 올바르게 설치되었는지 확인하기 위해 설치 후 장치 관리자에서 드라이버 상태를 검토해야 합니다.

     

     

    CP210x_Windows_Drivers.zip
    6.84MB

     

    https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers

     

    CP210x USB to UART Bridge VCP Drivers - Silicon Labs

    The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the direct access driver.

    www.silabs.com

     

     

     

    드라이버를 다운로드하고 설치파일을 실행합니다.

     

     

     

     

     

     

     

     

     

     


     

    (6) ESP32 사용을 위한 아두이노 IDE 설정하기

    ESP32를 프로그래밍하기 위해 아두이노 IDE를 설정하는 과정은 몇 단계로 이루어집니다. 먼저, 아두이노 IDE에 ESP32 보드 매니저를 추가해야 합니다. 이를 위해 IDE의 "환경 설정"에 들어가 "추가 보드 관리자 URL"에 ESP32 보드 매니저의 URL을 입력합니다. 그 후 "보드 관리자"에서 ESP32를 검색하여 설치할 수 있습니다. 이 과정을 통해 ESP32에 맞는 다양한 라이브러리와 예제 코드를 사용할 수 있게 되며, IDE 내에서 직접 ESP32 보드에 프로그램을 업로드할 수 있습니다.

     

     

     

     

    [환경설정]

    아두이노 IDE에서 ESP32를 사용하기 위해서는 환경설정이 필요합니다. 

     

     

    다음과 같이 환경설정에서 추가적인 보드 매니저 urls에서 주소를 입력합니다. 

     

    https://dl.espressif.com/dl/package_esp32_index.json

     

     

     

    [라이브러리 설치]

    보드 매니저를 실행합니다. 

     

     

    ESP32를 검색하고 설치합니다.

     

     

     

    [보드 설정]

     

     

     

    [업로드 설정]

    업로드 속도를 115200으로 세팅합니다.

     

     


     

    (07) ESP32 소프트웨어 코딩

     

    ESP32를 위한 소프트웨어 개발은 주로 C++을 사용하며, 아두이노 IDE 뿐만 아니라 다른 개발 환경에서도 진행할 수 있습니다. ESP32는 다양한 내장 기능과 라이브러리를 지원하여, 네트워크 기능, 센서 데이터 처리, 디바이스 제어 등 다양한 프로그래밍이 가능합니다. 

     

     

    개발 중에는 코드를 통해 ESP32의 다양한 하드웨어 기능을 제어하고, 외부 센서나 장치들과의 인터페이스를 구현할 수 있습니다. 효과적인 디버깅과 테스트를 통해 프로그램의 오류를 최소화하고 최적의 성능을 보장할 수 있습니다.


    하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 소스코드를 코딩할 수 있습니다. 

    Blink.ino
    0.00MB

     

    코드는 다음과 같습니다. 

    void setup() {
      pinMode(2, OUTPUT);
    }
    
    
    void loop() {
      digitalWrite(2, HIGH);   
      delay(1000);             
      digitalWrite(2, LOW);    
      delay(1000);             
    }

     

     

     

     

     


     

    ESP32 동작확인

    하드웨어 설치와 소프트웨어 프로그래밍을 마친 후에는 모듈이 정상적으로 작동하는지 확인하는 절차가 필요합니다. ESP32 센서 연결하고, 간단한 코딩으로 를 쉽게 실습할 수 있습니다.  ESP32 프로젝트를 완성하기 위해서는 코드의 효율성과 안정성을 확인하는 테스트 및 디버깅 과정이 필수적입니다. 시리얼 모니터링 도구를 사용하여 로그를 확인하고, 문제가 발생하는 부분을 진단할 수 있습니다. 

     

     

     

     

    [동작 시나리오]
    01 연결
     - eps32 와 PC 연결 
     - 아두이노 IDE 실행 
     - 메뉴 → 툴 → 보드: 확인 
      - 메뉴 → 스케치 → 확인/컴파일 

     

    02 컴파일 확인 

    스케치> 확인/컴파일(CTRL+R)을 선택해서 컴파일을 진행합니다.

     


    03 업로드 

    컴파일이 이상 없이 완료되면 스케치> 업로드(CTRL+U)를 선택해서 컴파일 파일을 업로드합니다. 

     


    04 동작 확인

    다음과 같이 동작을 확인할 수 있습니다. 

     

     

     

     

    '모두의 메이커'에서 업로드한 동영상

     

    makerspace.steamedu123.com

     

     


     

    마무리

    ESP32 센서 연결하고, 간단한 코딩으로 를 쉽게 실습할 수 있습니다.  ESP32 프로젝트를 완성하기 위해서는 코드의 효율성과 안정성을 확인하는 테스트 및 디버깅 과정이 필수적입니다. 시리얼 모니터링 도구를 사용하여 로그를 확인하고, 문제가 발생하는 부분을 진단할 수 있습니다. 

     

    프로젝트의 최종 단계에서는 하드웨어와 소프트웨어의 통합을 검토하고, 필요에 따라 성능 최적화를 수행합니. ESP32 기반 시스템이 실제 환경에서도 안정적으로 작동하는지 충분히 테스트한 후에, 프로젝트를 마무리하고 사용자에게 배포할 준비를 합니다. 이러한 단계를 거쳐서만 ESP32를 활용한 고품질의 제품이나 설루션을 제공할 수 있습니다.

     

     

    https://youtu.be/RfgpF0eznyY

     

     


     

    업로드 문제점 발생 시



    업로드가 안 되는 문제를 발생할 수 있습니다. A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

     

     

    #방법 1 : 업로드할 때(CONNTING....)에 BOOT 버튼울 계속 누르면 연결이 된다. 

    #방법 2 : EN + GND에 10uf 캐패시터를 연결한다. 

     

     

     

     

    https://n2infotech.co.kr/352

     

    Failed to connect to ESP32: Timed out waiting for packet header

    Learn how to fix the Fatal Error Occurred: “Failed to connect to ESP32: Timed out waiting for packet header” error when trying to upload new code to your ESP32 board once for all. Why are you get..

    n2infotech.co.kr

     

     

     

     

    반응형


    댓글