เนื้อหาในบทความ
🎯 ESP32-S3 คืออะไร?
ESP32-S3 คือไมโครคอนโทรลเลอร์รุ่นล่าสุดจาก Espressif ที่มาพร้อมกับประสิทธิภาพที่ดีกว่ารุ่นก่อนหน้า เหมาะสำหรับโปรเจกต์ IoT ที่ต้องการพลังการประมวลผลสูงและการเชื่อมต่อที่หลากหลาย
ESP32-S3 มาพร้อมกับ CPU แบบ dual-core ที่เร็วขึ้น, หน่วยความจำมากขึ้น, และรองรับ AI acceleration ผ่านคำสั่งพิเศษ ทำให้เหมาะสำหรับโปรเจกต์ที่ต้องการประมวลผลข้อมูลจำนวนมาก เช่น การประมวลผลภาพ, การรู้จำเสียง, หรือการทำ Edge AI
✨ คุณสมบัติของ ESP32-S3
CPU แบบ Dual-Core
Xtensa LX7 dual-core ที่รันได้ที่ 240MHz เร็วกว่า ESP32 รุ่นแรกถึง 40%
หน่วยความจำขนาดใหญ่
RAM ขนาด 512KB, Flash สูงสุด 16MB พร้อม PSRAM เพิ่มเติมได้ถึง 8MB
AI Acceleration
รองรับคำสั่งพิเศษสำหรับ AI และ Signal Processing เหมาะกับ Edge AI
การเชื่อมต่อที่หลากหลาย
WiFi และ Bluetooth 5.0 (LE) พร้อม USB Native support
ขา I/O มากมาย
GPIO 45 ขา, รองรับ Touch sensor, ADC, DAC, PWM และอื่นๆ
🛠️ อุปกรณ์ที่ต้องใช้
Hardware
- ✓ ESP32-S3 Development Board (฿150-300)
- ✓ Micro USB Cable (฿50-100)
- ✓ Breadboard (฿50-100)
- ✓ LED และ Resistor 220Ω (฿10-20)
Software
- ✓ Arduino IDE 2.x (ฟรี)
- ✓ USB Driver (ถ้าจำเป็น)
- ✓ CynoIoT Account (ฟรี)
- ✓ Serial Terminal (ฟรี)
🔧 การติดตั้ง Arduino IDE
Step 1: ติดตั้ง Arduino IDE
ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก arduino.cc และติดตั้งตามระบบปฏิบัติการของคุณ
Step 2: เพิ่ม ESP32 Board URL
- เปิด Arduino IDE และไปที่ File → Preferences
- ในช่อง "Additional Board Manager URLs" ให้ใส่:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - กด OK เพื่อบันทึก
Step 3: ติดตั้ง ESP32 Board
- ไปที่ Tools → Board → Boards Manager
- ค้นหา "ESP32"
- ติดตั้ง "esp32 by Espressif Systems" เวอร์ชันล่าสุด
- รอจนกว่าการติดตั้งจะเสร็จสิ้น
Step 4: เลือก Board
- ไปที่ Tools → Board → esp32
- เลือก "ESP32S3 Dev Module"
- ตรวจสอบการตั้งค่าอื่นๆ:
- Upload Speed: 921600
- CPU Frequency: 240MHz (WiFi)
- Flash Mode: QIO
- Flash Size: 8MB (หรือตามของจริง)
- Partition Scheme: Default 8MB with spiffs (3MB APP/1.5MB SPIFFS)
💻 โปรแกรมแรก: Blink LED
ตอนนี้เรามาเขียนโปรแกรมแรกกันเลย โปรแกรม Blink LED คือโปรแกรมพื้นฐานที่จะทำให้ LED กระพริบ ถือเป็น "Hello World" ของไมโครคอนโทรลเลอร์
วงจรการต่อ
- LED: ขายาว (Anode) → Resistor 220Ω → GPIO 2
- LED: ขาสั้น (Cathode) → GND
- หมายเหตุ: ESP32-S3 มี LED บนบอร์ดที่ GPIO 2 สามารถใช้ได้เลย
โค้ดโปรแกรม
// กำหนดขา LED ที่จะใช้
const int ledPin = 2; // ESP32-S3 มี LED บนบอร์ดที่ GPIO 2
// ฟังก์ชันตั้งค่าเริ่มต้น ทำงานเพียงครั้งเดียวเมื่อเปิดเครื่อง
void setup() {
Serial.begin(115200); // เปิด Serial Monitor สำหรับ Debug
pinMode(ledPin, OUTPUT); // ตั้งค่า LED pin เป็น output
Serial.println("ESP32-S3 Blink LED Started!");
}
// ฟังก์ชันหลัก ทำงานวนซ้ำตลอดเวลา
void loop() {
digitalWrite(ledPin, HIGH); // เปิด LED
Serial.println("LED ON");
delay(1000); // รอ 1 วินาที
digitalWrite(ledPin, LOW); // ปิด LED
Serial.println("LED OFF");
delay(1000); // รอ 1 วินาที
}อัปโหลดโปรแกรม
- เชื่อมต่อ ESP32-S3 เข้ากับคอมพิวเตอร์ด้วยสาย USB
- เลือก Port ที่ถูกต้องใน Tools → Port
- กดปุ่ม Upload (→) หรือ Ctrl+U
- รอจนกว่าจะขึ้น "Done uploading"
- ดูผลลัพธ์ที่ Serial Monitor (Ctrl+Shift+M) โดยตั้งค่า Baud rate เป็น 115200
📡 การเชื่อมต่อ WiFi
ตอนนี้เรามาลองเชื่อมต่อ ESP32-S3 เข้ากับ WiFi กัน นี่คือพื้นฐานสำคัญสำหรับโปรเจกต์ IoT ทุกชนิด
โค้ดเชื่อมต่อ WiFi
#include <WiFi.h>
// แก้ไข WiFi credentials ตามเครือข่ายของคุณ
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\nESP32-S3 WiFi Connection Test");
// เริ่มการเชื่อมต่อ WiFi
WiFi.begin(ssid, password);
Serial.print("กำลังเชื่อมต่อ WiFi");
// รอจนกว่าจะเชื่อมต่อสำเร็จ
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nเชื่อมต่อ WiFi สำเร็จ!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
pinMode(2, OUTPUT);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
digitalWrite(2, HIGH); // WiFi เชื่อมต่ออยู่ = LED ติด
} else {
digitalWrite(2, LOW); // WiFi ไม่ได้เชื่อมต่อ = LED ดับ
}
delay(1000);
}การทดสอบ
- แก้ไข
ssidและpasswordตามเครือข่ายของคุณ - อัปโหลดโปรแกรมไปยัง ESP32-S3
- เปิด Serial Monitor (Ctrl+Shift+M) โดยตั้งค่า Baud rate เป็น 115200
- ดูผลลัพธ์ IP Address ที่ได้รับ
🚀 ถัดไป
ยินดีด้วย! คุณได้เรียนรู้พื้นฐานของ ESP32-S3 แล้ว ต่อไปนี้คือโปรเจกต์ที่คุณสามารถลองทำต่อได้: