ESP32 คืออะไร?
ESP32 คือไมโครคอนโทรลเลอร์ที่พัฒนาโดยบริษัท Espressif Systems จากประเทศจีน ซึ่งได้รับความนิยมอย่างมากในวงการ IoT (Internet of Things) เนื่องจากมีคุณสมบัติที่โดดเด่นหลายด้าน ไม่ว่าจะเป็นการมี Wi-Fi และ Bluetooth ในตัว ราคาถูก และมีประสิทธิภาพสูง
ในปัจจุบัน ESP32 ถูกนำไปใช้งานในโปรเจคหลากหลายประเภท ตั้งแต่สถานีตรวจวัดสิ่งแวดล้อม บ้านอัจฉริยะ (Smart Home) ไปจนถึงระบบควบคุมอุตสาหกรรมขนาดเล็ก
ทำไม ESP32 ถึงนิยมมาก?
มีเหตุผลหลายประการที่ทำให้ ESP32 ได้รับความนิยมอย่างแพร่หลาย:
1. ราคาถูกแต่ฟีเจอร์เยอะ ESP32 มีราคาเริ่มต้นเพียง 100-200 บาท แต่มาพร้อมกับ Wi-Fi 802.11 b/g/n, Bluetooth 4.2 และ BLE ในตัว ซึ่งหากเป็นบอร์ดอื่นจะต้องซื้อโมดูลเสริมเพิ่ม
2. ประมวลผลเร็ว ESP32 ใช้ CPU Xtensa dual-core 32-bit ความเร็ว 240 MHz พร้อม RAM 520 KB ซึ่งเร็วกว่า Arduino UNO หลายเท่า
3. GPIO ครบครัน มี GPIO ถึง 34 ขา รองรับ ADC (12-bit), DAC, SPI, I2C, UART, PWM และอื่นๆ อีกมากมาย
4. Community ใหญ่ มีชุมชนนักพัฒนาขนาดใหญ่ทำให้หา Tutorial, Library และความช่วยเหลือได้ง่าย
ติดตั้ง Arduino IDE สำหรับ ESP32
ขั้นตอนที่ 1: ดาวน์โหลด Arduino IDE
ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจากเว็บไซต์ทางการ arduino.cc เลือก OS ที่คุณใช้งาน (Windows/macOS/Linux)
ขั้นตอนที่ 2: เพิ่ม ESP32 Board Package
- เปิด Arduino IDE แล้วไปที่ File → Preferences
- ในช่อง "Additional boards manager URLs" ใส่:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- กด OK
ขั้นตอนที่ 3: ติดตั้ง ESP32 Board
- ไปที่ Tools → Board → Boards Manager
- ค้นหา "esp32"
- ติดตั้ง "esp32 by Espressif Systems"
ขั้นตอนที่ 4: เลือก Board และ Port
- เสียบสาย USB เชื่อมต่อ ESP32 กับคอมพิวเตอร์
- ไปที่ Tools → Board → ESP32 Arduino → ESP32 Dev Module
- ไปที่ Tools → Port แล้วเลือก COM port ที่ถูกต้อง
โปรแกรม LED Blink แรกของคุณ
เมื่อติดตั้งทุกอย่างเรียบร้อยแล้ว มาเขียนโปรแกรมแรกกัน โปรแกรม LED Blink เป็นโปรแกรมพื้นฐานที่ทำให้ LED กะพริบ
// กำหนด pin ที่ต่อ LED
const int LED_PIN = 2; // GPIO 2 มี LED ในตัวบน ESP32 Dev Kit
void setup() {
// ตั้งค่า pin เป็น output
pinMode(LED_PIN, OUTPUT);
// เปิด Serial Monitor
Serial.begin(115200);
Serial.println("ESP32 เริ่มทำงาน!");
}
void loop() {
// เปิด LED
digitalWrite(LED_PIN, HIGH);
Serial.println("LED เปิด");
delay(1000); // รอ 1 วินาที
// ปิด LED
digitalWrite(LED_PIN, LOW);
Serial.println("LED ปิด");
delay(1000); // รอ 1 วินาที
}
GPIO 2 ของ ESP32 Dev Kit มี LED สีน้ำเงินอยู่ในตัว ไม่ต้องต่อ LED เพิ่ม สามารถทดสอบโค้ดได้ทันที
อัพโหลดโปรแกรม
- กดปุ่ม Upload (ลูกศรชี้ขวา) ใน Arduino IDE
- รอจนกว่าจะเห็น "Connecting..." ในหน้าต่าง Output
- ถ้าการ upload ไม่สำเร็จ ให้กดปุ่ม BOOT บนบอร์ด ESP32 ค้างไว้ขณะที่ขึ้น "Connecting..."
- เมื่อ upload สำเร็จ LED จะเริ่มกะพริบ
ทดสอบ Wi-Fi
หลังจาก LED Blink แล้ว มาลองเชื่อมต่อ Wi-Fi กัน
#include <WiFi.h>
const char* ssid = "ชื่อ_WiFi_ของคุณ";
const char* password = "รหัส_WiFi_ของคุณ";
void setup() {
Serial.begin(115200);
// เชื่อมต่อ Wi-Fi
WiFi.begin(ssid, password);
Serial.print("กำลังเชื่อมต่อ Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nเชื่อมต่อสำเร็จ!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// โค้ดหลักของคุณ
}
เก็บ Wi-Fi credentials ไว้ในไฟล์แยกต่างหากหรือใช้ตัวแปร environment เพื่อความปลอดภัย ไม่ควร hardcode รหัสผ่านไว้ในโค้ด
สรุป
ESP32 เป็นตัวเลือกที่ดีเยี่ยมสำหรับผู้เริ่มต้นทำโปรเจค IoT เพราะราคาถูก มีฟีเจอร์ครบ และมีชุมชนนักพัฒนาขนาดใหญ่ที่พร้อมช่วยเหลือ
ในบทความต่อไป เราจะมาเรียนรู้การใช้ MQTT เพื่อสื่อสารระหว่าง ESP32 กับ Server ซึ่งเป็นพื้นฐานสำคัญของระบบ Smart Home และ IoT ทั่วไป