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