กลับไปหน้ารวมไฟล์
motor-control-using-nodemcu-9de7a5.md

นี่คือโปรเจคที่ให้เราสามารถควบคุมมอเตอร์ 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 กับไอซีขับมอเตอร์ด้วยนะ! ไม่งั้นอาจเกิดการรีเซ็ตแบบมั่วๆ หรือคำสั่งล้มเหลวได้ จำไว้ ห้ามช็อตนะตัวนี้!

ข้อมูล Frontmatter ดั้งเดิม

title: "ควบคุมมอเตอร์ผ่านเว็บด้วย NodeMCU งานง่ายแต่หล่อ!"
description: "มาเล่นกับมอเตอร์ DC กัน! ใช้ NodeMCU เป็นตัวหลัก แล้วเปิดเว็บเบราว์เซอร์ในมือถือหรือคอมสั่งงานได้เลย งานนี้ตึงๆ วัยรุ่นต้องลอง!"
author: "shubhamsantosh99"
category: ""
tags:
  - "communication"
  - "internet of things"
views: 19895
likes: 3
price: 1120
difficulty: "Intermediate"
components:
  - "1x Dual H-Bridge motor drivers L293D"
  - "1x Jumper wires (generic)"
  - "1x Breadboard (generic)"
  - "1x DC Motor, Miniature"
  - "1x NodeMCU ESP8266 Breakout Board"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "7091fc1e5350d1d858453561d5b6955df5c2301e8b7b6af0358f1070f8089691"
encryptedPayload: "U2FsdGVkX191VYSNGjEsEnwlg+I3IVHtlmNV2bsc0W8OgZ+GV5MQ5aj1tuATUVzy8m+MNgaKF5x9XGLuNyeSPy4wb/fhTv58IhTvgbf0JNQ="
seoDescription: "Learn how to perform Motor Control using NodeMCU to operate DC motor via a web browser. Simple IoT project for beginners."
videoLinks:
  - "https://www.youtube.com/embed/-UhdH_8ajV8"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/motor-control-using-nodemcu-9de7a5_cover.jpg"
lang: "en"