자동차 제어 코드
// ==========================================
// 핀 번호 설정 (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** 가 뜨면 클릭해서 연결(페어링)합니다.

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("테스트 끝!")
'아두이노 프로젝트' 카테고리의 다른 글
| Maker - esp32 - pro 개발환경 설정과 활용 (2) | 2026.05.17 |
|---|---|
| Maker - esp32 - pro 보드 설명 (0) | 2026.05.17 |
| 자율주행자동차 (0) | 2026.04.14 |
| FTC 로봇 구조 이해 (1) | 2026.03.17 |
| I Built an AI Desk Buddy with ESP32 (Xiaozhi + Custom Face UI) (0) | 2026.03.12 |