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

ESP32 자율주행 차 제작 활동

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

 

자동차 제어 코드 

// ==========================================
// 핀 번호 설정 (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);
  stopMotors();
  delay(500);
  
  // 2. 뒤로 1초 이동
  moveBackward();
  delay(1000);
  stopMotors();
  delay(500);
  
  // 3. 왼쪽으로 1초 제자리 회전
  turnLeft();
  delay(1000);
  stopMotors();
  delay(500);

  // 4. 오른쪽으로 1초 제자리 회전
  turnRight();
  delay(1000);
  stopMotors();
  delay(500);
}

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

// 전진 함수
void moveForward() {
  analogWrite(M2_IN1, motorSpeed);
  analogWrite(M2_IN2, 0); 
  
  analogWrite(M3_IN1, motorSpeed);
  analogWrite(M3_IN2, 0);
}

// 후진 함수
void moveBackward() {
  analogWrite(M2_IN1, 0); 
  analogWrite(M2_IN2, motorSpeed);
  
  analogWrite(M3_IN1, 0);
  analogWrite(M3_IN2, motorSpeed);
}

// 좌회전 함수 (M2 후진, M3 전진)
void turnLeft() {
  analogWrite(M2_IN1, 0); 
  analogWrite(M2_IN2, motorSpeed);
  
  analogWrite(M3_IN1, motorSpeed);
  analogWrite(M3_IN2, 0);
}

// 우회전 함수 (M2 전진, M3 후진)
void turnRight() {
  analogWrite(M2_IN1, motorSpeed);
  analogWrite(M2_IN2, 0); 
  
  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);
}

 

 

 

 

 

블루투스 셋팅

#include "BluetoothSerial.h"

    // 블루투스 이름을 정해줍니다.
    BluetoothSerial SerialBT; 

    // 모터 핀 설정
    const int M2_IN1 = 17;
    const int M2_IN2 = 12;
    const int M3_IN1 = 15;
    const int M3_IN2 = 14;
    int motorSpeed = 200;

    void setup() {
      // 블루투스 이름을 "ESP32_CAR"로 설정해서 켭니다.
      SerialBT.begin("ESP32_CAR");      // <--  블루투스 이름 설정
      
      pinMode(M2_IN1, OUTPUT); pinMode(M2_IN2, OUTPUT);
      pinMode(M3_IN1, OUTPUT); pinMode(M3_IN2, OUTPUT);
    }

    void loop() {
      // 폰이나 컴퓨터에서 블루투스로 글자를 보냈는지 확인!
      if (SerialBT.available()) {
        // 엔터(\n)를 칠 때까지 글자를 읽어옵니다.
        String command = SerialBT.readStringUntil('\n');
        command.trim(); // 글자 주변의 공백이나 찌꺼기를 깔끔하게 지워줍니다.

        // 받은 글자가 "go"이면 전진!
        if (command == "go") {
          moveForward();
        } 
        // 받은 글자가 "stop"이면 정지!
        else if (command == "stop") {
          stopMotors();
        }
      }
    }

    // 전진 함수
    void moveForward() {
      analogWrite(M2_IN1, motorSpeed); analogWrite(M2_IN2, 0); 
      analogWrite(M3_IN1, motorSpeed); analogWrite(M3_IN2, 0);
    }

    // 정지 함수
    void stopMotors() {
      analogWrite(M2_IN1, 0); analogWrite(M2_IN2, 0);
      analogWrite(M3_IN1, 0); analogWrite(M3_IN2, 0);
    }

 

 

코드가 다 올라갔다면 ESP32의 전원을 켜둔 상태로 컴퓨터에서 다음을 따라 하세요.

    1. 컴퓨터의 **[설정] - [Bluetooth 및 장치]** 로 들어갑니다.

블루투스 설정 들어가기

 


    2. **[장치 추가]** 를 누르고 블루투스를 검색합니다.

블루투스 장치 추가.

 

장치추가 버튼 클릭

 

 

블루투스 클릭

 


    3. 목록에 **ESP32_CAR** 가 뜨면 클릭해서 연결(페어링)합니다.

ESP32_CAR 페어링

 


    4. 🚨 **가장 중요한 부분:** 연결 후 스크롤을 내려 **[추가 Bluetooth 설정]** 또는 **[기타 Bluetooth 옵션]** 을 누른 뒤, 

         **[COM 포트]** 탭을 클릭하세요.

블루투스 설정

 


    5. **ESP32_CAR     '송신'   ** 옆에 적힌 **COM 번호(예: COM5, COM8 등)**를 꼭 외워두거나 메모하세요!

         (파이썬 코드에서 이 번호로 전화를 걸게 됩니다.)    

 

송신 포트를 확인하기.

 

 

 

마지막으로 컴퓨터(Thonny)에서 블루투스로 'go'와 'stop' 편지를 보내볼 차례입니다.

    먼저 파이썬이 통신을 할 수 있게 라이브러리를 하나 깔아줍니다.
    1. Thonny 위쪽 메뉴에서 **[도구(Tools)] -> [패키지 관리(Manage plug-ins/packages)]** 클릭
    2. 검색창에 **`pyserial`** 이라고 치고 검색한 뒤 설치(Install)합니다.

    설치가 끝났다면 아래 코드를 복사해서 Thonny에 붙여넣습니다. `bluetooth_port` 부분에는 아까 메모해 둔 

    COM 번호를 적어주세요.

 

 

 

 

파이썬 블루투스 연결 코드 셋팅.

import serial
import time
# 아까 확인한 내 컴퓨터의 COM 번호로 꼭 바꿔주세요! (예: 'COM5')
bluetooth_port = 'COM12' 

print("블루투스 자동차에 연결하는 중...")
# 자동차와 블루투스 전화 연결!
car = serial.Serial(bluetooth_port, 9600)
time.sleep(2) # 연결될 때까지 2초 정도 기다려줍니다.

print("연결 완료!")

# 1. 자동차 출발 신호 보내기
print("전진해라!")
car.write(b"go\n") 
time.sleep(2) # 2초 동안 전진 상태 유지

# 2. 자동차 정지 신호 보내기
print("멈춰라!")
car.write(b"stop\n")

# 통신 종료
car.close()
print("테스트 끝!")

 

728x90
반응형