กลับไปหน้ารวมไฟล์
esp8266-servo-controller-c16b17.md

Introduction

ในโปรเจคนี้เราจะใช้ ESP8266 ในรูปแบบ NodeMCU เป็นเว็บเซิร์ฟเวอร์ และสร้างฟอร์มบนเว็บเพื่อควบคุมตำแหน่งปัจจุบันของเซอร์โวมอเตอร์

ข้อมูลทั้งหมดของเว็บเซิร์ฟเวอร์จะถูกบันทึกลงในหน่วยความจำ SPIFFS ของ ESP8266

SPIFFS คืออะไรวะ?

SPIFFS คือระบบไฟล์ดั้งเดิมที่เหมาะกับแอปพลิเคชันที่จำกัดพื้นที่และแรม ใช้ไฟล์เล็กๆ เยอะๆ และให้ความสำคัญกับการกระจายการสึกหรอแบบสแตติกและไดนามิก แต่ไม่ต้องการการสนับสนุนไดเรกทอรีแบบเต็มรูปแบบ โอเวอร์เฮดของระบบไฟล์บนแฟลชก็น้อยมากด้วย ใน NodeMCU เรามีแฟลช 4MB ซึ่งเราสามารถกำหนดขนาดของระบบไฟล์ SPIFFS ได้ ในโปรเจคนี้ ไฟล์เว็บเซิร์ฟเวอร์ทั้งหมด รวมถึง html, css และ javascript ถูกบันทึกไว้ในโฟลเดอร์ชื่อ `data` ซึ่งเป็นชื่อโฟลเดอร์ที่จำเป็นสำหรับการอัปโหลดไปยัง ESP8266 ด้วย SPIFFS uploader

พี่มีบทสอนละเอียดเกี่ยวกับมันในอีกโปรเจคนึง อยากรู้ลึกกว่านี้ก็ลองไปหาอ่านดูนะน้อง

WiFi-To-PWM Actuator Interface

โปรเจคนี้เปลี่ยน ESP8266 ให้กลายเป็นไดรเวอร์เซอร์โวไร้สายประสิทธิภาพสูง ช่วยให้ควบคุมการแพน/ทิลท์หรือการเคลื่อนไหวของหุ่นยนต์จากระยะไกลผ่านเว็บเบราว์เซอร์ใดก็ได้

  • Embedded WebSocket Handshake: ESP8266 โฮสต์เว็บเซิร์ฟเวอร์ท้องถิ่นที่มี WebSocket endpoint พิเศษ สิ่งนี้ให้ลิงก์ที่รวดเร็วและต่อเนื่องสำหรับความหน่วงในการควบคุมต่ำกว่า 20ms ซึ่งดีกว่าการร้องขอ HTTP แบบดั้งเดิมมาก
  • Dynamic PWM Resolution: Arduino (บอร์ด ESP8266) ใช้ไลบรารี analogWrite หรือ Servo เฉพาะทางเพื่อสร้างพัลส์ 50Hz ที่เสถียรมาก เฟิร์มแวร์รวม "Smoothing Filter" เพื่อป้องกันไม่ให้เซอร์โวสั่นไหวระหว่างที่สัญญาณเน็ตเวิร์กผันผวนเร็ว

Performance

  • Visual Studio Code Optimized: เฟิร์มแวร์ถูกพัฒนาด้วย VS Code Arduino Extension ใช้ประโยชน์จากการดีบักแบบอินทิเกรตเพื่อปรับลูปการจัดการ WiFi/Servo แบบมัลติเธรดให้เหมาะสม

Hardware Setup

  • เริ่มต้นด้วยการวาง NodeMCU บนเบรดบอร์ด
  • วางเซอร์โวมอเตอร์และทำการเชื่อมต่อตามที่แสดงในภาพด้านล่าง
  • การเชื่อมต่อ

3V3V ➡ VCC

GND ➡ GND

SIGNAL ➡ D2

Software Setup

  • ไปที่หน้า GitHub ของโปรเจคนี้และดาวน์โหลดไฟล์ที่จำเป็นมาให้ครบ
  • ดาวน์โหลดไลบรารี ESPAsyncWebServer
  • ดาวน์โหลดไลบรารี ESPAsyncTCP
  • ติดตั้งไลบรารีที่ดาวน์โหลดมา
  • ดาวน์โหลด ESP8266 Filesystem Uploader
  • ติดตั้งไลบรารีและ Filesystem uploader ตามที่แสดงในวิดีโอสอนด้านล่างนี้เลย
  • คอมไพล์โค้ดและอัปโหลดลงบอร์ด
  • ไปที่เมนู Tools และใช้เครื่องมือ ESP8266 Sketch Data Upload เพื่ออัปโหลดข้อมูลสเก็ตช์

แกะโค้ดตรงนี้ให้เป็นของตัวเองนะน้อง:

const char *ssid = "REPLACE_WITH_YOUR_SSID";       
const char *password = "REPLACE_WITH_YOUR_PASSWORD";
const uint8_t servoPin = D4;

ลิงก์ GitHub Repository

โค้ดเต็มๆ ไปหยิบมาได้จากในนี้เลยจ้า

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการติดตั้งไลบรารีและอัพโหลดไฟล์ระบบ

ถ้ายังติดตั้งไลบรารีไม่เป็น หรืออัพโหลดไฟล์ SPIFFS ยังไม่คล่อง แนะนำให้ไปดูรายละเอียดเพิ่มเติมจากโปรเจกต์อื่นของพี่ก่อนนะ จะได้ไม่งง ไม่งั้นอาจจะช็อตได้ตัวนี้!

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

apps:
  - "1x Arduino IDE"
  - "1x Visual Studio Code Extension for Arduino"
author: "rahuladitya303"
category: ""
components:
  - "1x NodeMCU ESP8266 Breakout Board"
  - "1x SG90 Micro-servo motor"
description: "สร้าง Web Server ง่ายๆ ด้วย ESP8266 ไว้ควบคุมท่าทางเซอร์โวมอเตอร์ให้อ่อนช้อยหรือจัดหนักได้ตามใจ งานง่ายแต่หล่อ วัยรุ่นต้องลอง!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://github.com/rahuladitya303/ESP8266_SERVO_CONTROLLER.git"
encryptedPayload: "U2FsdGVkX199aQGnnqmmJdG7ozbUc8FE4aM5fTHNlOuaJ5Y1jGv1cImcd1ekPQddj8aGAdYz+EkHfJ9ih25K25pi44Ough/B7KLDe8Dfkp7heLb3PaHsi+W1rCDpZh9+ggi/3d6TTP9dMWqT0IkUVaQYo5sAX6EtEtdTefH+VMU="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/esp8266-servo-controller-c16b17_cover.jpg"
lang: "en"
likes: 1
passwordHash: "ced2dc7516b48402fbd629527f604d6a70cae219c5c5d7c47f673981328f19b4"
price: 2450
seoDescription: "Build a simple ESP8266 Web Server to control Servo motor position remotely. Ideal for IoT beginners."
tags:
  - "spiffs"
  - "esp8266"
  - "servo"
title: "ESP8266 Servo Controller เว็บสั่งงานมอเตอร์แบบตึงๆ"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/poPoHdS-j-w"
views: 24137