นี่คือโปรเจคที่ให้เราสามารถควบคุมมอเตอร์ DC 2 ตัวแยกกันให้หมุนไปข้างหน้าหรือถอยหลังได้ผ่านเว็บเบราว์เซอร์เลย
อุปกรณ์หลักที่ใช้ก็คือ nodeMCU, ไอซีขับมอเตอร์ (L293D) และมอเตอร์ DC 2 ตัว
เราจะใช้ไอซีขับมอเตอร์ L293D มาควบคุมมอเตอร์ โดยจ่ายไฟเลี้ยงภายนอก (5V) เข้าที่ขา 8 และ 16 ของ L293D ส่วนขา 4 กับ 13 ต่อกับกราวด์ (GND) สัญญาณอินพุตสำหรับมอเตอร์ตัวที่ 1 จะส่งจากขา D5 และ D6 ของ ESP8266 เข้าที่ขา 2 กับ 7 ของ L293D ส่วนมอเตอร์ตัวที่ 2 สัญญาณอินพุตจะส่งจากขา D7 และ D8 ของ ESP8266 เข้าที่ขา 10 กับ 15 ของ L293D
ลงลึกเรื่องเทคนิค: WiFi และ PWM
โปรเจคนี้เผยให้เห็นชั้นการทำงานที่ซ่อนอยู่เบื้องหลังการสั่งงานผ่านเน็ตง่ายๆ:
- ชั้นระบุตัวตน: ESP8266 NodeMCU ทำหน้าที่เป็นสมอง WiFi ความละเอียดสูง รับคำสั่งจากมือถือผ่านเครือข่าย WiFi 2.4GHz
- ชั้นเชื่อมต่อไร้สาย: ใช้เว็บแดชบอร์ด ESP8266 จะรับคำขอเช่น "เดินหน้า", "ถอยหลัง" และ "หยุด"
- ชั้นขับเคลื่อน: ไอซีขับมอเตอร์ L293D ทำหน้าที่เป็นหัวใจสวิตช์กำลังสูง ทำให้ ESP8266 สามารถควบคุมมอเตอร์ได้โดยไม่ทำลายไมโครคอนโทรลเลอร์
- ชั้นแปลงสัญญาณ: NodeMCU ใช้ขาดิจิตอลในการประสานงานการควบคุมทิศทางมอเตอร์
- ชั้นประมวลผลลอจิก: โค้ดใน NodeMCU ใช้กลยุทธ์ "ถอดรหัสตามลำดับ" คือจะสั่งงานล้อก็ต่อเมื่อเชื่อมต่อ WiFi ได้และคำสั่งที่ได้รับนั้นถูกต้อง
ESP8266 จะเชื่อมต่อกับเราเตอร์ WiFi โดยใช้ SSID และ รหัสผ่าน ของเราเตอร์นั้น แล้วสร้างเว็บเซิร์ฟเวอร์ขึ้นมา ผู้ใช้ (ใช้มือถือหรือแล็ปท็อป) ที่เชื่อมต่อกับเราเตอร์ตัวเดียวกันสามารถเข้าไปใช้งานได้ หลังเชื่อมต่อสำเร็จ ที่ Serial monitor จะแสดงที่อยู่ IP ออกมา ผู้ใช้ก็แค่พิมพ์ที่อยู่ IP นั้นลงในเว็บเบราว์เซอร์ของอุปกรณ์เพื่อเข้าถึงหน้าเว็บ
หน้าเว็บที่ได้จะหน้าตาประมาณนี้....

โครงสร้างฮาร์ดแวร์
- ESP8266 NodeMCU: ไมโครคอนโทรลเลอร์หลักที่มี WiFi คอยจัดการข้อมูลไร้สายและประสานงานการทำงานของมอเตอร์
- ไอซีขับมอเตอร์ L293D: ให้ฐานกำลังขับสูงสำหรับมอเตอร์
- มอเตอร์ DC เกียร์: ให้การเคลื่อนที่และควบคุมทิศทางทางกายภาพสำหรับหุ่นยนต์
- แบตเตอรี่ (5V): สำคัญมากสำหรับการจ่ายแรงดันและพลังงานที่มีประสิทธิภาพให้มอเตอร์ทำงาน
- สาย Micro-USB: ใช้สำหรับโปรแกรม ESP8266 และจ่ายไฟหลักในขั้นตอนตั้งต้น
เมื่อกดปุ่มใดๆ บนหน้าเว็บ สถานะจะแสดงผลบนหน้าเว็บทันที เพื่อบอกทิศทางการหมุนของมอเตอร์ทั้งสองตัว
สถานะจะอัปเดตอัตโนมัติตามปุ่มที่กด
มอเตอร์ 1 จะแสดงสถานะเป็น "เดินหน้า" หรือ "ถอยหลัง" ส่วนมอเตอร์ 2 จะแสดงสถานะเป็น "เลี้ยวซ้าย" หรือ "เลี้ยวขวา" (เหมือนการควบคุมมอเตอร์ในรถ RC)
หลังจากกดปุ่มใดปุ่มหนึ่ง
แนวทางพัฒนาต่อ
- เพิ่ม OLED Dashboard: ต่อจอ OLED ขนาดเล็กเพื่อแสดง "ที่อยู่ IP", "ระดับแบตเตอรี่ (%)" และ "ความแรงสัญญาณ WiFi (RSSI)"
- เพิ่มเซนเซอร์หลายตัว: ต่อเซนเซอร์อัลตราโซนิกเพื่อให้หุ่นยนต์ "หยุดอัตโนมัติ" เมื่อใกล้จะชนสิ่งกีดขวาง
- รองรับคลาวด์: เพิ่มเว็บแดชบอร์ดเฉพาะทางเพื่อติดตามและบันทึกประวัติการทำงานของหุ่นยนต์จากมือถือที่ไหนก็ได้
- ควบคุมความเร็วขั้นสูง: เพิ่มฟังก์ชัน "ควบคุมความเร็ว (PWM)" ในโค้ดเพื่อให้หุ่นยนต์เร่งความเร็วได้อย่างนุ่มนวล
[!IMPORTANT] อย่าลืมต่อกราวด์ (GND) ร่วมกันระหว่าง NodeMCU กับไอซีขับมอเตอร์ด้วยนะ! ไม่งั้นอาจเกิดการรีเซ็ตแบบมั่วๆ หรือคำสั่งล้มเหลวได้ จำไว้ ห้ามช็อตนะตัวนี้!