ESP32 Wi-Fi Robot Car
สร้างรถหุ่นยนต์ควบคุมผ่าน Wi-Fi ด้วย ESP32 และ L298N Motor Driver

ในโปรเจคนี้เราจะสร้างรถหุ่นยนต์ที่สามารถควบคุมผ่าน Wi-Fi ได้ โดยใช้ ESP32 เป็นตัวควบคุมหลัก และ L298N Motor Driver สำหรับขับเคลื่อนมอเตอร์ DC 2 ตัว คุณสามารถควบคุมรถผ่าน Web Browser บนมือถือหรือคอมพิวเตอร์ได้ทันที โดยไม่ต้องติดตั้งแอปพิเคชันเพิ่มเติม โปรเจคนี้เหมาะสำหรับผู้ที่เริ่มต้นเรียนรู้ IoT และ Robotics เพราะใช้อุปกรณ์ไม่มาก ประกอบง่าย และสามารถต่อยอดได้หลากหลาย
อุปกรณ์ที่ต้องใช้
สำหรับโปรเจคนี้ คุณจะต้องเตรียมอุปกรณ์ดังต่อไปนี้:
🔷 ESP32 Development Board
ไมโครคอนโทรลเลอร์ที่มี Wi-Fi และ Bluetooth ในตัว ใช้เป็นสมองของรถหุ่นยนต์
⚡ L298N Motor Driver
โมดูลขับมอเตอร์ DC ที่รองรับกระแสสูง สามารถควบคุมมอเตอร์ได้ 2 ตัว
🚗 2WD Robot Car Chassis
ชุดโครงรถหุ่นยนต์ 2 ล้อ พร้อมมอเตอร์ DC 2 ตัวและล้อ
🔋 Power Bank หรือ Battery Pack
แบตเตอรี่สำหรับจ่ายไฟให้ ESP32 และมอเตอร์ (แนะนำ 5V 2A ขึ้นไป)
🔌 สายจั๊มเปอร์
สายไฟสำหรับเชื่อมต่อวงจร (แบบ Male-to-Male และ Male-to-Female)
🔧 อุปกรณ์เสริม
Breadboard หรือ Stripboard, สายไฟ, สกรู, และอุปกรณ์ประกอบ
ชุดโครงรถหุ่นยนต์ 2WD พร้อมมอเตอร์และล้อ
💡 ข้อแนะนำ:
- เลือก Power Bank ที่มีกระแสออกอย่างน้อย 2A เพื่อให้มอเตอร์ทำงานได้เต็มประสิทธิภาพ
- ตรวจสอบว่า L298N Motor Driver รองรับแรงดันไฟของแบตเตอรี่ที่คุณใช้
- ควรมี USB Cable สำหรับอัปโหลดโค้ดไปยัง ESP32
- สามารถซื้ออุปกรณ์ได้ที่ GlobalByte Shop (ลิงก์ด้านล่าง)
L298N Motor Driver Module - ใช้ควบคุมมอเตอร์ DC
วงจรและการต่อสาย
การต่อวงจรของโปรเจคนี้ค่อนข้างตรงไปตรงมา เราจะเชื่อมต่อ ESP32 กับ L298N Motor Driver และมอเตอร์ 2 ตัว
L298N เป็นโมดูลขับมอเตอร์ที่สามารถควบคุมมอเตอร์ DC ได้ 2 ตัว หรือมอเตอร์ Stepper 1 ตัว โดยมีขาสำคัญดังนี้:
Pinout ของ L298N Motor Driver
- Motor A (OUT1, OUT2) - ต่อกับมอเตอร์ซ้าย
- Motor B (OUT3, OUT4) - ต่อกับมอเตอร์ขวา
- IN1, IN2 - ควบคุมทิศทางของ Motor A
- IN3, IN4 - ควบคุมทิศทางของ Motor B
- ENA, ENB - ควบคุมความเร็วด้วย PWM (ถอด Jumper ออกถ้าต้องการควบคุมความเร็ว)
- 12V - จ่ายไฟให้มอเตอร์ (รองรับ 5V-35V)
- GND - กราวด์
- 5V - เอาต์พุต 5V สำหรับจ่ายไฟให้ ESP32 (ใช้ได้เมื่อจ่ายไฟ 12V เข้า)
Circuit Diagram - การต่อวงจร ESP32 กับ L298N
การเชื่อมต่อ ESP32 กับ L298N:
- GPIO 27 → IN1 (Motor A - ซ้าย)
- GPIO 26 → IN2 (Motor A - ซ้าย)
- GPIO 25 → IN3 (Motor B - ขวา)
- GPIO 33 → IN4 (Motor B - ขวา)
- GPIO 14 → ENA (PWM สำหรับควบคุมความเร็ว Motor A)
- GPIO 12 → ENB (PWM สำหรับควบคุมความเร็ว Motor B)
- GND (ESP32) → GND (L298N)
การจ่ายไฟ:
- ต่อ Power Bank เข้ากับ ESP32 ผ่านพอร์ต USB หรือขา VIN
- ต่อแบตเตอรี่ (6V-12V) เข้ากับขา 12V และ GND ของ L298N
- ถ้าใช้แบตเตอรี่ 12V สามารถใช้เอาต์พุต 5V จาก L298N จ่ายไฟให้ ESP32 ได้
การต่อมอเตอร์:
- มอเตอร์ซ้าย → OUT1 และ OUT2
- มอเตอร์ขวา → OUT3 และ OUT4
- ถ้ามอเตอร์หมุนผิดทิศทาง ให้สลับสายทั้ง 2 เส้นของมอเตอร์นั้น
⚠️ ข้อควรระวัง:
- ต้องต่อ GND ของ ESP32 และ L298N เข้าด้วยกัน (Common Ground)
- อย่าจ่ายไฟแรงดันสูงเกิน 35V เข้า L298N
- ถอด Jumper ENA และ ENB ออกถ้าต้องการควบคุมความเร็วด้วย PWM
- ตรวจสอบขั้วบวก-ลบของแบตเตอรี่ให้ถูกต้อง
การประกอบ
หลังจากเข้าใจวงจรแล้ว มาเริ่มประกอบรถหุ่นยนต์กันเลย
- ประกอบชุดโครงรถ 2WD ตามคู่มือที่มาพร้อมกับชุด
- ติดตั้งมอเตอร์ DC 2 ตัวเข้ากับโครงรถ
- ใส่ล้อเข้ากับเพลามอเตอร์
- ติดตั้งล้อหน้า (Caster Wheel) ด้านหน้าหรือด้านหลัง
เพื่อความเรียบร้อยและแข็งแรง แนะนำให้บัดกรีวงจรบน Stripboard หรือ PCB
วงจร ESP32 และ L298N บน Stripboard
- วางตำแหน่ง ESP32 และ L298N บน Stripboard
- บัดกรีสายเชื่อมต่อตามวงจรที่วางแผนไว้
- ใช้สายจั๊มเปอร์เชื่อมต่อขาที่จำเป็น
- ตรวจสอบการต่อสายให้ถูกต้องก่อนจ่ายไฟ
ติดตั้งวงจรบนโครงรถ
- ยึด Stripboard เข้ากับโครงรถด้วยสกรูหรือเทปกาว
- เชื่อมต่อสายมอเตอร์เข้ากับ L298N (OUT1-OUT4)
- วาง Power Bank หรือ Battery Pack บนโครงรถ
- เชื่อมต่อสายไฟจากแบตเตอรี่เข้ากับวงจร
รถหุ่นยนต์ที่ประกอบเสร็จแล้ว
- ตรวจสอบการต่อสายทั้งหมดอีกครั้ง
- ตรวจสอบว่าไม่มีสายลัดวงจร
- ตรวจสอบขั้วบวก-ลบของแบตเตอรี่
- เตรียมพร้อมสำหรับการอัปโหลดโค้ด
💡 เคล็ดลับ:
- ใช้เทปกาวสองหน้าหรือเวลโครยึด Power Bank เพื่อง่ายต่อการถอดชาร์จ
- จัดเก็บสายให้เรียบร้อยด้วยเคเบิลไทร์
- ทิ้งพื้นที่ว่างสำหรับเพิ่มเซ็นเซอร์ในอนาคต
- ติดสติกเกอร์หรือตกแต่งรถให้สวยงาม
โค้ดและการอัปโหลด
ตอนนี้มาถึงส่วนที่สนุกที่สุด - การเขียนโค้ดและอัปโหลดไปยัง ESP32
- ดาวน์โหลด Arduino IDE จาก arduino.cc
- ติดตั้ง ESP32 Board ใน Arduino IDE (ดูวิธีการที่ Random Nerd Tutorials)
- เลือก Board: "ESP32 Dev Module"
- เลือก Port ที่เชื่อมต่อกับ ESP32
คัดลอกโค้ดด้านล่างนี้ไปยัง Arduino IDE:
- เชื่อมต่อ ESP32 กับคอมพิวเตอร์ผ่าน USB Cable
- เลือก Board และ Port ที่ถูกต้องใน Arduino IDE
- กดปุ่ม Upload (ลูกศรชี้ขวา)
- รอจนกว่าจะอัปโหลดเสร็จ (ประมาณ 30 วินาที)
- เปิด Serial Monitor (Ctrl+Shift+M) เพื่อดู IP Address
📝 หมายเหตุ:
- SSID เริ่มต้นคือ "ESP32-Robot-Car" และรหัสผ่านคือ "12345678"
- สามารถเปลี่ยน SSID และรหัสผ่านได้ในโค้ด
- ความเร็วเริ่มต้นคือ 200 (ปรับได้ 0-255)
- ถ้ามอเตอร์หมุนผิดทิศทาง ให้สลับค่า HIGH/LOW ในฟังก์ชันนั้นๆ
การทดสอบและใช้งาน
หลังจากอัปโหลดโค้ดเสร็จแล้ว มาทดสอบรถหุ่นยนต์กัน
- จ่ายไฟให้ ESP32 และรถหุ่นยนต์
- เปิด Wi-Fi บนมือถือหรือคอมพิวเตอร์
- มองหา Wi-Fi ชื่อ "ESP32-Robot-Car"
- เชื่อมต่อด้วยรหัสผ่าน "12345678"
จ่ายไฟให้รถหุ่นยนต์ด้วย Power Bank
- เปิด Web Browser (Chrome, Safari, Firefox)
- พิมพ์ IP Address: 192.168.4.1
- จะเห็นหน้าควบคุมรถหุ่นยนต์
หน้าควบคุมรถหุ่นยนต์ผ่าน Web Browser
- ⬆️ ปุ่มบน - เดินหน้า
- ⬇️ ปุ่มล่าง - ถอยหลัง
- ⬅️ ปุ่มซ้าย - เลี้ยวซ้าย
- ➡️ ปุ่มขวา - เลี้ยวขวา
- ⏹️ ปุ่มหยุด - หยุดรถ
- 🎚️ Slider - ปรับความเร็ว (0-255)
ควบคุมรถผ่านมือถือ
- วางรถบนพื้นราบ
- ทดสอบปุ่มเดินหน้า - รถควรเคลื่อนที่ไปข้างหน้า
- ทดสอบปุ่มถอยหลัง - รถควรถอยหลัง
- ทดสอบปุ่มเลี้ยวซ้าย/ขวา - รถควรหมุนตัว
- ทดสอบปุ่มหยุด - รถควรหยุดทันที
- ทดสอบ Slider ความเร็ว - รถควรเร็วขึ้นหรือช้าลง
รถหุ่นยนต์ที่ทำงานได้สมบูรณ์
🎉 ยินดีด้วย!
ตอนนี้คุณมีรถหุ่นยนต์ควบคุมผ่าน Wi-Fi ของตัวเองแล้ว สามารถควบคุมได้จากมือถือหรือคอมพิวเตอร์ภายในระยะ Wi-Fi (ประมาณ 10-30 เมตร)
แก้ปัญหาที่พบบ่อย
หากพบปัญหาในการใช้งาน ลองตรวจสอบตามนี้:
- ตรวจสอบว่า ESP32 ได้รับไฟเลี้ยงแล้ว (LED บนบอร์ดควรติด)
- รอประมาณ 10 วินาทีหลังจากเปิดเครื่อง
- ตรวจสอบว่าพิมพ์ชื่อ Wi-Fi และรหัสผ่านถูกต้อง
- ลองรีสตาร์ท ESP32 โดยกดปุ่ม RESET
- ตรวจสอบว่าโค้ดอัปโหลดสำเร็จ (ดูใน Serial Monitor)
- ตรวจสอบว่าเชื่อมต่อ Wi-Fi "ESP32-Robot-Car" แล้ว
- ลองพิมพ์ IP Address ใหม่: 192.168.4.1
- ลองเปิดด้วย Browser อื่น
- ปิด Mobile Data หรือ Cellular Data ก่อนเปิดหน้าเว็บ
- ลองรีสตาร์ท ESP32
- ตรวจสอบว่าแบตเตอรี่มีไฟเพียงพอ
- ตรวจสอบการต่อสายมอเตอร์กับ L298N
- ตรวจสอบว่าถอด Jumper ENA และ ENB ออกแล้ว
- ตรวจสอบว่า GND ของ ESP32 และ L298N ต่อกัน
- ลองเพิ่มความเร็วด้วย Slider
- สลับสายมอเตอร์ทั้ง 2 เส้นของมอเตอร์นั้น
- หรือแก้ไขโค้ดโดยสลับค่า HIGH/LOW ในฟังก์ชันนั้นๆ
- ปรับความเร็วของมอเตอร์แต่ละข้างให้เท่ากัน
- ตรวจสอบว่าล้อทั้งสองข้างมีขนาดเท่ากัน
- ตรวจสอบว่ามอเตอร์ทั้งสองมีสภาพดี
- อาจต้องปรับค่า PWM ในโค้ดให้แตกต่างกันเล็กน้อย
- ใช้ Power Bank ที่มีความจุสูงกว่า (10,000 mAh ขึ้นไป)
- ลดความเร็วมอเตอร์ลง
- ปิดรถเมื่อไม่ใช้งาน
- ใช้มอเตอร์ที่กินไฟน้อยกว่า
⚠️ ข้อควรระวัง:
- อย่าลัดวงจรขณะจ่ายไฟ
- อย่าจ่ายไฟแรงดันสูงเกินกว่าที่กำหนด
- ตรวจสอบอุณหภูมิของ L298N - ถ้าร้อนมากให้หยุดใช้งาน
- ใช้แบตเตอรี่ที่มีคุณภาพดี
การพัฒนาต่อยอด
หลังจากที่รถหุ่นยนต์ทำงานได้แล้ว คุณสามารถพัฒนาต่อยอดได้หลายแบบ:
- Ultrasonic Sensor (HC-SR04) - หลบหลีกสิ่งกีดขวางอัตโนมัติ
- IR Sensor - ตามเส้นสีดำ (Line Follower)
- MPU6050 - วัดความเอียงและทรงตัว
- Light Sensor (LDR) - ตามแสง
- ESP32-CAM - ดูภาพแบบ Real-time
- FPV Camera - ขับรถแบบ First Person View
- Object Detection - ตรวจจับวัตถุด้วย AI
- Joystick Control - ควบคุมด้วย Joystick แทนปุ่ม
- Keyboard Control - ใช้แป้นพิมพ์ควบคุม (WASD)
- Voice Control - สั่งงานด้วยเสียง
- Bluetooth Control - ควบคุมผ่าน Bluetooth
- LED Strip - ไฟประดับสีสันสวยงาม
- Buzzer - เสียงเตือนหรือเพลง
- OLED Display - แสดงสถานะและข้อมูล
- Servo Motor - แขนหุ่นยนต์หรือกล้องหมุนได้
- Solar Panel - ชาร์จด้วยพลังงานแสงอาทิตย์
- Battery Management - แสดงระดับแบตเตอรี่
- Auto Sleep Mode - ประหยัดพลังงานเมื่อไม่ใช้งาน
- Obstacle Avoidance - หลบสิ่งกีดขวางอัตโนมัติ
- Line Following - ตามเส้นอัตโนมัติ
- Maze Solver - หาทางออกจากเขาวงกต
- Patrol Mode - ลาดตระเวนอัตโนมัติ
💡 แนวคิดโปรเจคขั้นสูง:
- Delivery Robot - หุ่นยนต์ส่งของภายในบ้าน
- Security Robot - หุ่นยนต์รักษาความปลอดภัย
- Pet Robot - หุ่นยนต์สัตว์เลี้ยงอัจฉริยะ
- Racing Robot - รถแข่งควบคุมระยะไกล
- Educational Robot - หุ่นยนต์สอนเขียนโปรแกรม
ช้อปอุปกรณ์ / เข้าร่วม Community
หากคุณสนใจอุปกรณ์สำหรับสร้างรถหุ่นยนต์ เช่น ESP32, L298N Motor Driver, Robot Chassis Kit หรืออยากพูดคุยแลกเปลี่ยนความรู้กับเพื่อนๆ ในสาย IoT และ Robotics สามารถกดปุ่มด้านล่างนี้ได้เลย