สร้างรถหุ่นยนต์ควบคุมผ่าน Wi-Fi ด้วย ESP32 - ง่ายกว่าที่คิด!
คู่มือสมบูรณ์แบบสำหรับการสร้างรถหุ่นยนต์ที่ควบคุมผ่าน Wi-Fi ด้วย ESP32 และ Arduino IDE พร้อมรายละเอียดทุกขั้นตอนที่ทำตามได้จริง
🎯 เกี่ยวกับโปรเจกต์นี้
ในบทความนี้ คุณจะได้เรียนรู้วิธีสร้างรถหุ่นยนต์ที่ควบคุมผ่าน Wi-Fi โดยใช้ ESP32 และ Arduino IDE คุณสามารถควบคุมรถผ่าน Web Browser บนสมาร์ทโฟนหรือคอมพิวเตอร์ได้อย่างง่ายดาย โปรเจกต์นี้เหมาะสำหรับผู้เริ่มต้นที่ต้องการเรียนรู้การควบคุมมอเตอร์ DC และการสร้าง Web Server ด้วย ESP32
1️⃣ เตรียม Arduino IDE
ก่อนเริ่มโปรเจกต์ คุณต้องติดตั้ง Arduino IDE และเพิ่ม ESP32 boards เข้าไปก่อน หากคุณยังไม่ได้ติดตั้ง สามารถทำตามคู่มือด้านล่างนี้:
💡 ติดตั้ง ESP32 บน Arduino IDE
Arduino IDE เป็นโปรแกรมที่เราจะใช้เขียนโค้ดและอัปโหลดไปยัง ESP32 การติดตั้ง ESP32 boards จะทำให้เราสามารถเลือก ESP32 เป็น board ที่ต้องการใช้งานได้
📖 คู่มือติดตั้ง ESP32 บน Arduino IDE✅ เช็คลิสต์ก่อนเริ่ม
- ติดตั้ง Arduino IDE เวอร์ชันล่าสุดแล้ว
- เพิ่ม ESP32 boards ใน Arduino IDE แล้ว
- ทดสอบอัปโหลดโค้ดง่ายๆ ไปยัง ESP32 ได้สำเร็จ
2️⃣ อุปกรณ์ที่ต้องใช้
นี่คือรายการอุปกรณ์ทั้งหมดที่คุณต้องใช้ในการสร้างรถหุ่นยนต์ควบคุมผ่าน Wi-Fi:
อุปกรณ์ครบ คุณภาพดี พร้อมส่งทันใจ
บอร์ดหลักที่ใช้ควบคุมรถและสร้าง Wi-Fi Web Server
ชุดโครงรถพร้อมมอเตอร์ DC 2 ตัวและล้อ
ตัวขับมอเตอร์สำหรับควบคุมความเร็วและทิศทาง
สำหรับจ่ายไฟให้ ESP32 (แบบชาร์จมือถือ)
สำหรับจ่ายไฟให้มอเตอร์ DC
ช่วยลดสัญญาณรบกวนจากมอเตอร์
สวิตช์เปิด-ปิดไฟ
สายจั๊มเปอร์สำหรับต่อวงจร
บอร์ดทดลองสำหรับต่อวงจร
เทปกาวสำหรับติดอุปกรณ์บนรถ
⚠️ หมายเหตุสำคัญ
แบตเตอรี่ AA 1.5V จำนวน 4 ก้อน จะให้แรงดัน 6V ซึ่งเหมาะสำหรับมอเตอร์ DC ส่วนใหญ่ คุณอาจพิจารณาใช้แบตเตอรี่แบบชาร์จได้ (rechargeable) เพื่อประหยัดค่าใช้จ่ายในระยะยาว
3️⃣ มอเตอร์ DC และ L298N Motor Driver
ในโปรเจกต์นี้ เราจะใช้มอเตอร์ DC 2 ตัวควบคุมผ่าน L298N Motor Driver ซึ่งช่วยให้เราสามารถควบคุมความเร็วและทิศทางของมอเตอร์ได้อย่างง่ายดาย
ตัวขับมอเตอร์คุณภาพดี รองรับมอเตอร์ DC 2 ตัว
ทำความรู้จักกับ L298N Motor Driver
L298N เป็น Motor Driver ที่ได้รับความนิยมมากในการควบคุมมอเตอร์ DC เพราะ:
- ควบคุมได้ 2 มอเตอร์: สามารถควบคุมมอเตอร์ DC ได้ถึง 2 ตัวพร้อมกัน
- ควบคุมความเร็ว: ใช้ PWM ในการปรับความเร็วมอเตอร์
- ควบคุมทิศทาง: สามารถสั่งให้มอเตอร์หมุนไปข้างหน้าหรือถอยหลังได้
- แรงดันสูง: รองรับแรงดัน 5V-35V และกระแสสูงสุด 2A ต่อช่อง
📚 เรียนรู้เพิ่มเติม
ก่อนเริ่มโปรเจกต์ เราแนะนำให้คุณทำความเข้าใจวิธีการควบคุมมอเตอร์ DC ด้วย ESP32 และ L298N ก่อน:
📖 คู่มือควบคุมมอเตอร์ DC ด้วย ESP324️⃣ ชุดโครงรถหุ่นยนต์ (Robot Chassis Kit)
ในโปรเจกต์นี้ เราจะใช้ Smart Robot Chassis Kit ซึ่งเป็นชุดโครงรถที่มาพร้อมกับมอเตอร์ DC 2 ตัว ล้อ และอุปกรณ์ประกอบต่างๆ
ชุดโครงรถหุ่นยนต์ 2 ล้อ พร้อมมอเตอร์และอุปกรณ์ครบชุด
ประกอบชุดโครงรถ
หากคุณยังไม่เคยประกอบชุดโครงรถมาก่อน สามารถดูคู่มือการประกอบได้จากลิงก์ด้านล่าง:
🔧 คู่มือการประกอบ
คู่มือแสดงขั้นตอนการประกอบชุดโครงรถอย่างละเอียด ตั้งแต่การติดตั้งมอเตอร์ ล้อ และที่ใส่แบตเตอรี่:
📖 คู่มือประกอบ Robot Chassis Kit✅ เคล็ดลับการประกอบ
- ใช้ไขควงที่มีขนาดเหมาะสมกับสกรู
- ตรวจสอบว่ามอเตอร์ติดแน่นกับโครงรถ
- ทดสอบหมุนล้อให้แน่ใจว่าไม่มีอะไรขัดขวาง
- ติดเทปกาวใต้ที่ใส่แบตเตอรี่เพื่อไม่ให้เลื่อน
5️⃣ ภาพรวมโปรเจกต์
การทำงานของระบบ Wi-Fi
ESP32 จะสร้าง Wi-Fi Access Point ขึ้นมา คุณสามารถเชื่อมต่อสมาร์ทโฟนหรือคอมพิวเตอร์เข้ากับ Wi-Fi นี้ แล้วเปิด Web Browser เพื่อควบคุมรถผ่านหน้าเว็บที่ ESP32 สร้างขึ้น
ปุ่มควบคุมรถ
หน้าเว็บจะมีปุ่มควบคุมต่างๆ ดังนี้:
- ไปข้างหน้า (Forward): มอเตอร์ทั้งสองหมุนไปข้างหน้า
- ถอยหลัง (Backward): มอเตอร์ทั้งสองหมุนถอยหลัง
- เลี้ยวซ้าย (Left): มอเตอร์ขวาหมุนเร็วกว่าซ้าย
- เลี้ยวขวา (Right): มอเตอร์ซ้ายหมุนเร็วกว่าขวา
- หยุด (Stop): มอเตอร์ทั้งสองหยุดหมุน
แหล่งจ่ายไฟ (Power Supply)
มอเตอร์ DC ใช้กระแสไฟสูง ดังนั้นเราต้องใช้แหล่งจ่ายไฟแยกกัน 2 แหล่ง:
จ่ายไฟให้ ESP32
ใช้ Power Bank (แบบชาร์จมือถือ) เชื่อมต่อผ่านสาย USB กับ ESP32 วิธีนี้สะดวกและปลอดภัย
จ่ายไฟให้มอเตอร์ DC
ใช้แบตเตอรี่ AA 1.5V จำนวน 4 ก้อน (รวม 6V) เชื่อมต่อกับ L298N Motor Driver คุณอาจพิจารณาใช้แบตเตอรี่แบบชาร์จได้เพื่อประหยัดค่าใช้จ่าย
⚠️ ข้อควรระวัง
ห้ามใช้แหล่งจ่ายไฟเดียวกัน! หากคุณจ่ายไฟให้ทั้ง ESP32 และมอเตอร์จากแหล่งเดียวกัน มอเตอร์จะดึงกระแสมากเกินไปทำให้ ESP32 รีสตาร์ทหรือทำงานผิดพลาดได้
6️⃣ ควบคุมมอเตอร์ DC ด้วย L298N
ก่อนเริ่มประกอบรถ เราแนะนำให้คุณทำความเข้าใจวิธีการควบคุมมอเตอร์ DC ด้วย L298N Motor Driver ก่อน
ตัวขับมอเตอร์ที่จำเป็นสำหรับโปรเจกต์นี้
การควบคุมความเร็วและทิศทาง
L298N Motor Driver ใช้หลักการดังนี้:
ควบคุมทิศทาง
ใช้พิน IN1, IN2 สำหรับมอเตอร์ A และ IN3, IN4 สำหรับมอเตอร์ B โดยการส่งสัญญาณ HIGH/LOW เพื่อกำหนดทิศทางการหมุน
ควบคุมความเร็ว
ใช้พิน ENA และ ENB ด้วยสัญญาณ PWM (Pulse Width Modulation) เพื่อปรับความเร็วของมอเตอร์ ค่า PWM 0-255 (0 = หยุด, 255 = เร็วสุด)
📚 คู่มือเรียนรู้
เรียนรู้วิธีการควบคุมความเร็วและทิศทางของมอเตอร์ DC อย่างละเอียด พร้อมตัวอย่างโค้ด:
📖 ESP32 with DC Motor and L298N - Control Speed and Directionรายละเอียดพิน L298N Motor Driver
พิน Enable (ENA และ ENB)
พิน Enable ทำหน้าที่เหมือนสวิตช์เปิด-ปิดสำหรับมอเตอร์ของคุณ:
⚡ การทำงานของพิน Enable
- ส่งสัญญาณ HIGH: มอเตอร์พร้อมทำงานที่ความเร็วสูงสุด
- ส่งสัญญาณ LOW: มอเตอร์ปิดการทำงาน
- ส่งสัญญาณ PWM: ควบคุมความเร็วมอเตอร์ได้ (ความเร็วแปรผันตาม duty cycle)
⚠️ หมายเหตุ
สำหรับค่า duty cycle ที่ต่ำมาก มอเตอร์อาจไม่หมุน และอาจมีเสียงหึ่งๆ ต่อเนื่อง ควรใช้ค่า PWM ที่เหมาะสมเพื่อให้มอเตอร์หมุนได้อย่างราบรื่น
พิน Input (IN1, IN2, IN3, IN4)
พิน Input ควบคุมทิศทางการหมุนของมอเตอร์:
- Input 1 และ Input 2: ควบคุมมอเตอร์ A
- Input 3 และ Input 4: ควบคุมมอเตอร์ B
🔄 ตัวอย่างการควบคุมทิศทาง
มอเตอร์ A หมุนไปข้างหน้า: Input 1 = LOW, Input 2 = HIGH
มอเตอร์ A หมุนถอยหลัง: Input 1 = HIGH, Input 2 = LOW
มอเตอร์ B ใช้หลักการเดียวกัน โดยใช้ Input 3 และ Input 4
ตารางการควบคุมทิศทางรถ
เพื่อให้รถเคลื่อนที่ไปในทิศทางต่างๆ เราต้องควบคุมมอเตอร์ทั้งสองข้างดังนี้:
ไปข้างหน้า (Forward)
IN1 = 0, IN2 = 1, IN3 = 0, IN4 = 1
มอเตอร์ทั้งสองหมุนไปข้างหน้าด้วยความเร็วเท่ากัน
ถอยหลัง (Backward)
IN1 = 1, IN2 = 0, IN3 = 1, IN4 = 0
มอเตอร์ทั้งสองหมุนถอยหลังด้วยความเร็วเท่ากัน
เลี้ยวขวา (Right)
IN1 = 0, IN2 = 1, IN3 = 0, IN4 = 0
เปิดมอเตอร์ซ้าย ปิดมอเตอร์ขวา ทำให้รถเลี้ยวขวา
เลี้ยวซ้าย (Left)
IN1 = 0, IN2 = 0, IN3 = 0, IN4 = 1
ปิดมอเตอร์ซ้าย เปิดมอเตอร์ขวา ทำให้รถเลี้ยวซ้าย
หยุด (Stop)
IN1 = 0, IN2 = 0, IN3 = 0, IN4 = 0
มอเตอร์ทั้งสองหยุดทำงาน
7️⃣ การต่อวงจร (Wiring)
หลังจากประกอบโครงรถเสร็จแล้ว ให้ทำการต่อวงจรตามแผนผังด้านล่าง:
ตารางการต่อสาย
🔌 การเชื่อมต่อ ESP32 กับ L298N
- IN1 → GPIO 27: ควบคุมทิศทางมอเตอร์ A
- IN2 → GPIO 26: ควบคุมทิศทางมอเตอร์ A
- ENA → GPIO 14: ควบคุมความเร็วมอเตอร์ A
- IN3 → GPIO 33: ควบคุมทิศทางมอเตอร์ B
- IN4 → GPIO 25: ควบคุมทิศทางมอเตอร์ B
- ENB → GPIO 32: ควบคุมความเร็วมอเตอร์ B
ขั้นตอนการต่อวงจร
ต่อ ESP32 กับ Motor Driver
เริ่มต้นด้วยการเชื่อมต่อ ESP32 กับ L298N Motor Driver ตามแผนผังที่แสดง คุณสามารถใช้ breadboard ขนาดเล็กหรือ stripboard เพื่อวาง ESP32 และสร้างวงจร
ต่อมอเตอร์เข้ากับ Terminal Blocks
ต่อมอเตอร์แต่ละตัวเข้ากับ terminal blocks ของ L298N เราแนะนำให้บัดกรีตัวเก็บประจุเซรามิก 0.1 µF (100nF) เข้ากับขั้วบวกและลบของมอเตอร์แต่ละตัว เพื่อช่วยลดสัญญาณรบกวนและแรงดันกระชาก
ติดตั้งสวิตช์เปิด-ปิด
คุณสามารถบัดกรีสวิตช์แบบสไลด์เข้ากับสายสีแดงที่มาจากที่ใส่แบตเตอรี่ วิธีนี้จะช่วยให้คุณสามารถเปิด-ปิดไฟให้กับมอเตอร์และ motor driver ได้สะดวก
เชื่อมต่อแบตเตอรี่
จ่ายไฟให้มอเตอร์โดยเชื่อมต่อที่ใส่แบตเตอรี่ AA 4 ก้อนเข้ากับ power blocks ของ motor driver เนื่องจากคุณต้องการให้รถเคลื่อนที่ได้ ESP32 จะได้รับไฟจาก power bank แทน
ติด Power Bank
ใช้เทปกาว Velcro ติด power bank เข้ากับโครงรถ แล้วเชื่อมต่อกับ ESP32 ผ่านสาย USB อย่าเชื่อมต่อ power bank ตอนนี้! เพราะคุณต้องอัปโหลดโค้ดไปยัง ESP32 ก่อน
⚠️ ข้อควรระวัง
- ตรวจสอบขั้วบวก-ลบของแบตเตอรี่ให้ถูกต้อง
- ห้ามต่อสายผิดขั้ว อาจทำให้อุปกรณ์เสียหายได้
- ตรวจสอบการต่อสายทุกจุดก่อนเปิดไฟ
- ใช้สายจั๊มเปอร์ที่มีคุณภาพดีเพื่อป้องกันการหลุด
รถหุ่นยนต์ที่ประกอบเสร็จแล้ว
รถหุ่นยนต์ของคุณควรมีหน้าตาคล้ายกับรูปด้านล่าง:
✅ เช็คลิสต์ก่อนทดสอบ
- ตรวจสอบการต่อสายทั้งหมดว่าถูกต้องตามแผนผัง
- ตรวจสอบว่าตัวเก็บประจุติดกับมอเตอร์แล้ว
- ตรวจสอบว่าสวิตช์ทำงานได้ปกติ
- ตรวจสอบว่าแบตเตอรี่มีไฟเพียงพอ
- ยังไม่ต้องเชื่อมต่อ power bank (รออัปโหลดโค้ดก่อน)
8️⃣ Arduino Code – ESP32 Remote-Controlled Wi-Fi Car Robot
ตอนนี้เรามาดูโค้ด Arduino สำหรับควบคุมรถผ่าน Wi-Fi กัน โค้ดนี้จะสร้าง Web Server บน ESP32 และให้คุณควบคุมรถผ่าน Browser
💻 โครงสร้างโค้ด
โค้ดนี้ประกอบด้วยส่วนสำคัญดังนี้:
- การตั้งค่าพิน GPIO: กำหนดพินที่ใช้ควบคุมมอเตอร์
- การสร้าง Access Point: ESP32 สร้าง Wi-Fi ให้เชื่อมต่อ
- Web Server: สร้างหน้าเว็บพร้อมปุ่มควบคุม
- ฟังก์ชันควบคุมมอเตอร์: ฟังก์ชันสำหรับเคลื่อนที่ไปข้างหน้า ถอยหลัง เลี้ยว และหยุด
- HTML/CSS: ออกแบบหน้าเว็บให้สวยงามและใช้งานง่าย
📝 สิ่งที่ต้องแก้ไขในโค้ด
- SSID: เปลี่ยนเป็นชื่อ Wi-Fi ที่คุณต้องการ (เช่น "ESP32-Robot-Car")
- Password: ตั้งรหัสผ่าน Wi-Fi (ต้องมีอย่างน้อย 8 ตัวอักษร)
- GPIO Pins: ตรวจสอบว่าหมายเลขพินตรงกับการต่อสายของคุณ
- dutyCycle: ปรับความเร็วเริ่มต้น (0-255)
✅ ขั้นตอนการอัปโหลดโค้ด
- เปิด Arduino IDE และคัดลอกโค้ดทั้งหมด
- เลือก Board: "ESP32 Dev Module" หรือ "DOIT ESP32 DEVKIT V1"
- เลือก Port ที่เชื่อมต่อกับ ESP32
- กดปุ่ม Upload และรอจนกว่าจะอัปโหลดเสร็จ
- เปิด Serial Monitor ที่ baud rate 115200 เพื่อดู IP Address
🔍 วิธีการทำงานของโค้ด
1. การตั้งค่าพิน: กำหนดพิน GPIO สำหรับควบคุมมอเตอร์และตั้งค่า PWM
2. สร้าง Access Point: ESP32 สร้าง Wi-Fi ที่คุณสามารถเชื่อมต่อได้
3. Web Server: สร้างหน้าเว็บพร้อมปุ่มควบคุมที่สวยงาม
4. ฟังก์ชันควบคุม: แต่ละปุ่มจะเรียกฟังก์ชันที่ควบคุมมอเตอร์
5. ปรับความเร็ว: Slider ช่วยให้คุณปรับความเร็วได้แบบ Real-time
9️⃣ ทดสอบ Web Server
หลังจากอัปโหลดโค้ดเสร็จแล้ว ให้ทำตามขั้นตอนเหล่านี้เพื่อทดสอบรถของคุณ:
เปิด Serial Monitor
เปิด Serial Monitor ใน Arduino IDE (Ctrl+Shift+M) และตั้งค่า baud rate เป็น 115200 คุณจะเห็น IP Address ของ ESP32 (มักจะเป็น 192.168.4.1)
เชื่อมต่อ Power Bank
ถอดสาย USB จากคอมพิวเตอร์ แล้วเชื่อมต่อ ESP32 กับ Power Bank เปิดสวิตช์แบตเตอรี่สำหรับมอเตอร์
เชื่อมต่อ Wi-Fi
เปิดการตั้งค่า Wi-Fi บนสมาร์ทโฟนหรือคอมพิวเตอร์ของคุณ ค้นหาและเชื่อมต่อกับ Wi-Fi ที่ชื่อ "ESP32-Robot-Car" (หรือชื่อที่คุณตั้งไว้) ใส่รหัสผ่านที่คุณกำหนดในโค้ด
เปิด Web Browser
เปิด Web Browser และพิมพ์ IP Address ที่เห็นใน Serial Monitor (มักจะเป็น 192.168.4.1) คุณจะเห็นหน้าเว็บควบคุมรถ
ทดสอบควบคุมรถ
ลองกดปุ่มต่างๆ เพื่อควบคุมรถ: ⬆️ ไปข้างหน้า, ⬇️ ถอยหลัง, ⬅️ เลี้ยวซ้าย, ➡️ เลี้ยวขวา, ⏹️ หยุด คุณสามารถปรับความเร็วได้ด้วย Slider
✅ เคล็ดลับการใช้งาน
- เริ่มต้นด้วยความเร็วต่ำเพื่อทดสอบการทำงาน
- ทดสอบในพื้นที่โล่งก่อนเพื่อความปลอดภัย
- หากรถเคลื่อนที่ผิดทิศทาง ให้สลับสายมอเตอร์
- ตรวจสอบแบตเตอรี่เป็นประจำ
- บันทึก IP Address ไว้เพื่อใช้งานครั้งต่อไป
⚠️ การแก้ปัญหา
- เชื่อมต่อ Wi-Fi ไม่ได้: ตรวจสอบว่า ESP32 ได้รับไฟและรีสตาร์ท
- รถไม่เคลื่อนที่: ตรวจสอบแบตเตอรี่และการต่อสาย
- รถเคลื่อนที่ผิดทิศทาง: สลับสายมอเตอร์ที่ terminal blocks
- เว็บไม่แสดง: ตรวจสอบ IP Address และการเชื่อมต่อ Wi-Fi
🎬 ผลลัพธ์สุดท้าย
เมื่อทำตามขั้นตอนทั้งหมดแล้ว คุณจะได้รถหุ่นยนต์ที่ควบคุมผ่าน Wi-Fi ที่สามารถเคลื่อนที่ไปข้างหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา และหยุดได้ตามต้องการ!
🎉 ยินดีด้วย!
คุณได้สร้างรถหุ่นยนต์ควบคุมผ่าน Wi-Fi ด้วย ESP32 สำเร็จแล้ว! ตอนนี้คุณสามารถ:
- ควบคุมรถผ่าน Web Browser บนสมาร์ทโฟนหรือคอมพิวเตอร์
- ปรับความเร็วได้แบบ Real-time
- เคลื่อนที่ไปในทุกทิศทาง
- พัฒนาต่อยอดเพิ่มฟีเจอร์ใหม่ๆ
🚀 ไอเดียพัฒนาต่อ
- เพิ่มเซ็นเซอร์: ติดตั้งเซ็นเซอร์อัลตราโซนิกเพื่อหลีกเลี่ยงสิ่งกีดขวาง
- กล้อง: เพิ่มกล้อง ESP32-CAM เพื่อดูภาพแบบ Real-time
- ไฟ LED: เพิ่มไฟ LED สำหรับไฟหน้าและไฟท้าย
- เซ็นเซอร์เส้น: ทำให้รถวิ่งตามเส้นได้อัตโนมัติ
- Joystick: เพิ่ม Virtual Joystick บนหน้าเว็บ