본문 바로가기
아두이노 프로젝트

Maker - esp32 - pro 개발환경 설정과 활용

by SwMaker_Jun 2026. 5. 17.
728x90
반응형

1. USB 드라이버 설치 (CH341)

보드는 CH341 USB-Serial 칩을 사용합니다. 아래 링크에서 드라이버를 다운로드하여 설치하세요.

 

드라이버 URL

https://www.wch-ic.com/downloads/CH341SER_ZIP.html

 

Nanjing Qinheng Microelectronics Co., Ltd.

 

www.wch-ic.com

 

압축파일 다운로드

 


압축파일 --> 압축 풀기 파일속 SETUP.EXE 파일 실행.
INSTALL 클릭하여 설치 완료 확인하기.

 

 

2. Arduino IDE에 ESP32 보드 추가

환경설정 → 추가 보드 관리자 URL에 아래 주소를 입력하고, 보드 관리자에서 esp32 by Espressif (버전 3.x 이상) 을 설치합니다.

 

보드  URL

아레 주소를 복사하여 사용하기.

-->

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

 

환경설정에서 보드추가하기.

파일 - 환경설정 이동 아래 url 입력하기. 

 

보드 매니저에서 esp32 설치하기

 

3. 보드 선택 & 업로드 설정

도구 → 보드에서 ESP32 Dev Module을 선택하고, 포트를 보드가 연결된 COM 포트로 설정합니다. Upload Speed는 921600이 권장됩니다.

 

esp32 설치 완료하면 Board에 esp32 파트가 생김.

 

esp32 Dev Module 설정.

 

 

 

 

4. 인코더 모터 라이브러리 설치 (선택)

인코더 모터를 사용한다면 Emakefun 라이브러리를 설치합니다.

 

라이브러리 URL

https://emakefun-arduino-library.github.io/em_esp32_encoder_motor/html/en/index.html   

 

  1. 위 사이트 열기
    Emakefun ESP32 Encoder Motor Library 문서
  2. GitHub 다운로드 페이지로 이동 후 ZIP 다운로드 

    3. Arduino IDE에서:
        Sketch → Include Library → Add .ZIP Library...

   

    4. 다운로드한 ZIP 선택하면 설치됩니다.

 

5.  프로그램 실습.

 

DC 모터 기초 제어

SS6625E 드라이버는 각 모터 채널에 대해 2개의 PWM 핀으로 방향과 속도를 동시에 제어합니다.
두 핀 모두 analogWrite()(0~255) 또는 LEDC PWM을 사용합니다.

 

예제 1 · 단일 DC 모터 앞뒤 회전

// ==========================================
// 핀 번호 설정 (M2, M3 모터)
// ==========================================
const int M2_IN1 = 17;  // M2 모터 제어 핀 1
const int M2_IN2 = 12;  // M2 모터 제어 핀 2

const int M3_IN1 = 15;  // M3 모터 제어 핀 1
const int M3_IN2 = 14;  // M3 모터 제어 핀 2

// ==========================================
// 속도 설정 (0: 정지 ~ 255: 최고 속도)
// ==========================================
int motorSpeed = 200; // 원하는 속도로 이 숫자를 변경해 보세요 (예: 100, 200, 255)

void setup() {
  // 모터 제어 핀을 모두 출력(OUTPUT) 모드로 설정합니다.
  pinMode(M2_IN1, OUTPUT);
  pinMode(M2_IN2, OUTPUT);
  pinMode(M3_IN1, OUTPUT);
  pinMode(M3_IN2, OUTPUT);
}

void loop() {
  // 1. 앞으로 1초(1000ms) 이동
  moveForward();
  delay(1000);
  
  // 2. 잠시 정지 
  stopMotors();
  delay(500); // 0.5초 대기
  
  // 3. 뒤로 1초(1000ms) 이동
  moveBackward();
  delay(1000);
  
  // 4. 잠시 정지
  stopMotors();
  delay(500); // 0.5초 대기
}

// ==========================================
// 모터 제어 함수 모음
// ==========================================

void moveForward() {
  analogWrite(M2_IN1, motorSpeed);
  analogWrite(M2_IN2, 0);  // digitalWrite 대신 analogWrite(..., 0) 사용
  
  analogWrite(M3_IN1, motorSpeed);
  analogWrite(M3_IN2, 0);
}

// 후진 함수
void moveBackward() {
  analogWrite(M2_IN1, 0);  // digitalWrite 대신 analogWrite(..., 0) 사용
  analogWrite(M2_IN2, motorSpeed);
  
  analogWrite(M3_IN1, 0);
  analogWrite(M3_IN2, motorSpeed);
}

// 정지 함수
void stopMotors() {
  // 정지할 때도 모두 0을 줍니다.
  analogWrite(M2_IN1, 0);
  analogWrite(M2_IN2, 0);
  
  analogWrite(M3_IN1, 0);
  analogWrite(M3_IN2, 0);
}

 

 

 

서보 모터 제어
ESP32 서보 라이브러리ESP32 Arduino Core 3.x 이상에서는 #include <ESP32Servo.h> 사용을 권장합니다. Arduino의 기본 Servo.h는 ESP32에서 충돌이 발생할 수 있습니다.

 

 

  1. Arduino IDE 상단 메뉴
    Tools → Manage Libraries...

  2. 검색창에 : ESP32servo 검색하기.
ESP32Servo

 

       ESP32Servo by Kevin Harrington ... 설치

       설치 후 다시 컴파일하면 됩니다.

 

※ 추가로 : ESP32 보드 패키지도 이미 설치돼 있어야 함

  • 보드는 : Tools → Board → ESP32 Arduino → ESP32 Dev Module
    같은 걸로 선택해야 합니다.

       설치 끝났는데도 계속 에러 나면 Arduino IDE를 한 번 재시작하세요.

 

 

<<서보모터 제어 샘플코드>>

#include <ESP32Servo.h>

Servo servo0, servo1, servo2, servo3;

void setup() {
  Serial.begin(115200);
  
  // 서보 핀 할당 (25, 26, 32, 33)
  servo0.attach(25);
  servo1.attach(26);
  servo2.attach(32);
  servo3.attach(33);
  
  // 초기 위치: 90도 (중립)
  servo0.write(90);
  servo1.write(90);
  servo2.write(90);
  servo3.write(90);
  delay(1000);
}

void loop() {
  // 0° → 180° 스윕
  for (int angle = 0; angle <= 180; angle += 2) {
    servo0.write(angle);
    servo1.write(180 - angle);  // 반대 방향
    delay(15);
  }
  // 180° → 0° 스윕
  for (int angle = 180; angle >= 0; angle -= 2) {
    servo0.write(angle);
    servo1.write(180 - angle);
    delay(15);
  }
}

 

 

728x90
반응형