📑 เนื้อหาในบทความ
ESP32 คืออะไร?
ESP32 เป็นไมโครคอนโทรลเลอร์ (Microcontroller) รุ่นยอดนิยมจาก Espressif Systems ที่มาพร้อมกับ WiFi และ Bluetooth ในตัวเดียว ราคาถูก ประหยัดไฟ และเหมาะกับโปรเจกต์ IoT ทุกประเภท
💡 ทำไม ESP32 ถึงได้รับความนิยม?
- ราคาถูก: เริ่มต้นเพียง ฿150-400
- WiFi + Bluetooth: เชื่อมต่ออินเทอร์เน็ตได้ทันที
- ประหยัดไฟ: รองรับ Deep Sleep Mode
- GPIO 30 pins: เชื่อมต่อเซ็นเซอร์ได้มากมาย
- Community ใหญ่: มีตัวอย่างโค้ดและบทความเยอะ
- รองรับหลายภาษา: C/C++, MicroPython, Arduino, Lua
สเปคเทคนิค ESP32
- CPU: Dual-core 240 MHz (Xtensa LX6)
- RAM: 520 KB SRAM
- Flash: 4 MB (สูงสุด 16 MB ในรุ่นบางรุ่น)
- Wireless: WiFi 802.11 b/g/n, Bluetooth 4.2 BLE
- GPIO: 30 pins (สำหรับเชื่อมต่อเซ็นเซอร์และอุปกรณ์)
- Communication: SPI, I2C, UART, I2S, CAN
- ADC: 12-bit SAR ADC up to 18 channels
- DAC: 2-channel 8-bit DAC
- กำลังไฟ: 0.1-0.5W (Active mode)
อุปกรณ์ที่ต้องใช้
🔧 Hardware (สิ่งที่ต้องมี)
- ✅ ESP32 Board (NodeMCU, Wemos, หรือ Generic)
- ✅ USB Cable (Micro USB หรือ USB-C)
- ✅ Computer (Windows, Mac, หรือ Linux)
- ⚡ LED 1 ตัว (optional)
- ⚡ Resistor 330Ω 1 ตัว (optional)
- ⚡ Breadboard และ Jumper Wires (optional)
ราคา ESP32 Board: ฿150-400
💻 Software (ฟรีทั้งหมด)
- ✅ Arduino IDE (เวอร์ชันล่าสุด)
- ✅ USB Driver (CP2102 หรือ CH340)
- ✅ CynoIoT Account (สมัครฟรี)
- ⚡ Serial Monitor Tool (มีกับ Arduino IDE)
- ⚡ Git (optional, สำหรับ clone ตัวอย่าง)
ซอฟต์แวร์ทั้งหมดใช้ฟรี
ติดตั้ง Arduino IDE
สำหรับ Windows
- เข้าเว็บ arduino.cc/en/software
- ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุด
- ดับเบิลคลิกไฟล์ .exe เพื่อติดตั้ง
- ติ๊ก "I agree" แล้วกด Next ไปเรื่อยๆ
- เสร็จสิ้นการติดตั้ง!
สำหรับ macOS
- เข้าเว็บ arduino.cc/en/software
- ดาวน์โหลด Arduino IDE สำหรับ macOS
- เปิดไฟล์ .dmg ที่ดาวน์โหลดมา
- ลาก Arduino IDE ลงใน Applications
- เปิดใช้งานจาก Launchpad หรือ Applications
สำหรับ Linux (Ubuntu/Debian)
# ติดตั้งผ่าน Terminal
sudo apt update
sudo apt install arduino
# หรือดาวน์โหลดจากเว็บไซต์ Arduino
# https://www.arduino.cc/en/softwareตั้งค่าบอร์ด ESP32 ใน Arduino IDE
ขั้นตอนที่ 1: เพิ่ม ESP32 Board URL
- เปิด Arduino IDE
- ไปที่ File → Preferences (Windows/Linux) หรือ Arduino → Preferences (Mac)
- ในช่อง "Additional Boards Manager URLs" ใส่ URL นี้: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- กด OK
ขั้นตอนที่ 2: ติดตั้ง ESP32 Board
- ไปที่ Tools → Board → Boards Manager
- ค้นหาคำว่า "esp32"
- คลิก "Install" บน "esp32 by Espressif Systems"
- รอสักครู่ (ประมาณ 5-10 นาที ขึ้นอยู่กับเน็ต)
- เมื่อติดตั้งเสร็จ กด Close
ขั้นตอนที่ 3: เลือกบอร์ดและ Port
- เสียบ ESP32 เข้ากับคอมพิวเตอร์ด้วยสาย USB
- ไปที่ Tools → Board → esp32 → เลือกบอร์ดที่ตรงกับที่คุณมี:
- NodeMCU-32S - สำหรับ NodeMCU ESP32
- DOIT ESP32 DEVKIT V1 - บอร์ด generic ส่วนใหญ่
- Espressif ESP32-WROVER Kit - สำหรับ WROVER
- ไปที่ Tools → Port → เลือก Port ที่ ESP32 เชื่อมต่ออยู่:
- Windows: COM3, COM4, ...
- Mac: /dev/cu.usbserial-...
- Linux: /dev/ttyUSB0, /dev/ttyUSB1, ...
- ถ้าไม่เห็น Port, อาจต้องติดตั้ง USB Driver (ดูด้านล่าง)
ติดตั้ง USB Driver (ถ้าจำเป็น)
ถ้าคอมพิวเตอร์ไม่เห็น ESP32 เมื่อเสียบสาย USB, อาจต้องติดตั้ง USB Driver:
⚠️ ตรวจสอบชิป USB บนบอร์ดของคุณ
ดูที่ตัวบอร์ด ESP32 ใกล้ๆ ช่อง USB จะเห็นตัวอักษรเล็กๆ:
- CP2102 / CP2104: ดาวน์โหลดจาก Silicon Labs
- CH340 / CH340G: ดาวน์โหลดจาก WCH
โปรแกรมแรก - Blink LED (กระพริบ LED)
โปรแกรมแรกของทุกคนคือการทำให้ LED กระพริบ! ESP32 บอร์ดส่วนใหญ่มี built-in LED อยู่ที่ขา GPIO 2
// โปรแกรมแรก: ทำให้ LED กระพริบ
// LED อยู่ที่ GPIO 2 ในบอร์ด ESP32 ส่วนใหญ่
const int ledPin = 2; // กำหนดขา LED
void setup() {
// กำหนดโหมดขา LED เป็น Output
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // เปิด LED
delay(1000); // รอ 1 วินาที
digitalWrite(ledPin, LOW); // ปิด LED
delay(1000); // รอ 1 วินาที
}อัปโหลดโค้ดลง ESP32
- ก๊อปปี้โค้ดด้านบนไปวางใน Arduino IDE
- กดปุ่ม ✅ Verify/Compile (หรือ Ctrl+R) เพื่อตรวจสอบโค้ด
- กดปุ่ม ➡️ Upload (หรือ Ctrl+U) เพื่ออัปโหลดลง ESP32
- สำคัญ! เมื่อเริ่มอัปโหลด ให้กดปุ่ม BOOT บนบอร์ด ESP32 ค้างไว้
- ใน Serial Monitor จะแสดงข้อความ
Writing... - เมื่อเห็นข้อความ
Writing at 0x00001000...ให้ปล่อยปุ่ม BOOT
- ใน Serial Monitor จะแสดงข้อความ
- รอสักครู่ จนขึ้น
Done uploading - ดู LED บนบอร์ด - ควรจะกระพริบเป็นเวลา 1 วินาที!
🎉 ยินดีด้วย! คุณเขียนโปรแกรม ESP32 สำเร็จแล้ว
ตอนนี้คุณพร้อมที่จะเรียนรู้การเขียนโปรแกรม ESP32 ขั้นสูงขึ้นแล้ว!
เชื่อมต่อ WiFi
ตอนนี้มาเชื่อมต่อ ESP32 เข้ากับ WiFi ที่บ้านคุณกัน!
#include <WiFi.h>
// แก้ไข WiFi Credentials ตามเน็ตที่บ้านคุณ
const char* ssid = "YOUR_WIFI_SSID"; // ชื่อ WiFi
const char* password = "YOUR_WIFI_PASSWORD"; // รหัสผ่าน WiFi
void setup() {
Serial.begin(115200); // เปิด Serial Monitor
// เริ่มเชื่อมต่อ WiFi
Serial.print("กำลังเชื่อมต่อ WiFi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// รอจนกว่าจะเชื่อมต่อสำเร็จ
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// เชื่อมต่อสำเร็จ!
Serial.println("");
Serial.println("✅ WiFi เชื่อมต่อสำเร็จ!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP()); // แสดง IP ของ ESP32
}
void loop() {
// ไม่ต้องทำอะไรใน loop
}ทดสอบการเชื่อมต่อ WiFi
- แก้ไข
ssidและpasswordให้ตรงกับเน็ตที่บ้านคุณ - อัปโหลดโค้ดลง ESP32
- เปิด Serial Monitor:
- กด 🔍 Serial Monitor ที่มุมขวาบน
- ตั้งค่า Baud rate เป็น 115200
- ดูข้อความใน Serial Monitor - คุณควรเห็น:
กำลังเชื่อมต่อ WiFi: XXXXX- จุดๆ ๆ ๆ ๆ ๆ
✅ WiFi เชื่อมต่อสำเร็จ!IP Address: 192.168.1.xxx
💡 เคล็ดลับ
IP Address ที่ได้คือ IP ภายในเครือข่ายของคุณ คุณสามารถใช้ IP นี้เข้าถึง ESP32 จากคอมพิวเตอร์หรือมือถือในเครือข่ายเดียวกัน
เชื่อมต่อ CynoIoT Platform
ตอนนี้มาส่งข้อมูลจาก ESP32 เข้าสู่ CynoIoT Platform เพื่อเก็บข้อมูลและตรวจสอบได้ง่ายๆ!
สมัคร CynoIoT Account (ฟรี)
- เข้าเว็บ cynoiot.com
- คลิก สมัครสมาชิก หรือ Sign Up
- กรอกข้อมูลและยืนยันอีเมล
- เข้าสู่ระบบแล้วไปที่ Dashboard
- สร้าง Device ใหม่ และคัดลอก Device ID และ API Key
#include <WiFi.h>
#include <HTTPClient.h>
// WiFi Credentials
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// CynoIoT Credentials
const char* deviceId = "YOUR_DEVICE_ID"; // จาก CynoIoT Dashboard
const char* apiKey = "YOUR_API_KEY"; // จาก CynoIoT Dashboard
const char* server = "api.cynoiot.com"; // CynoIoT API Server
void setup() {
Serial.begin(115200);
// เชื่อมต่อ WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n✅ WiFi เชื่อมต่อสำเร็จ!");
}
void loop() {
// ตรวจสอบว่ายังเชื่อมต่อ WiFi อยู่หรือไม่
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// สร้าง JSON payload
String payload = "{\"temperature\": " + String(random(20, 30)) + ",";
payload += "\"humidity\": " + String(random(60, 80)) + "}";
// ส่งข้อมูลไป CynoIoT
http.begin(String("http://") + server + "/api/v1/devices/" + deviceId + "/data");
http.addHeader("Content-Type", "application/json");
http.addHeader("X-API-Key", apiKey);
int httpResponseCode = http.POST(payload);
if (httpResponseCode > 0) {
Serial.println("✅ ส่งข้อมูลสำเร็จ!");
} else {
Serial.println("❌ ส่งข้อมูลไม่สำเร็จ: " + String(httpResponseCode));
}
http.end();
}
// ส่งข้อมูลทุกๆ 10 วินาที
delay(10000);
}ทดสอบการส่งข้อมูล
- แก้ไข
deviceIdและapiKeyจาก CynoIoT Dashboard - อัปโหลดโค้ดลง ESP32
- เปิด Serial Monitor เพื่อดูสถานะ
- ไปที่ CynoIoT Dashboard → ดู Device ของคุณ
- คุณควรเห็นข้อมูล temperature และ humidity ถูกส่งเข้ามาทุก 10 วินาที
- สามารถดูกราฟและประวัติข้อมูลได้!
ปัญหาที่พบบ่อยและวิธีแก้ไข
❌ ปัญหา: อัปโหลดโค้ดไม่ได้ / Failed to connect
สาเหตุ: ESP32 ไม่ได้อยู่ในโหมด Download
วิธีแก้:
- กดปุ่ม BOOT ค้างไว้ ตอนเริ่มอัปโหลด
- ปล่อยปุ่ม BOOT เมื่อเห็น
Writing at... - ลองเปลี่ยนสาย USB
- ตรวจสอบว่าเลือก Port ถูกต้อง
❌ ปัญหา: เชื่อมต่อ WiFi ไม่ได้
สาเหตุ: ชื่อ WiFi หรือรหัสผ่านผิด
วิธีแก้:
- ตรวจสอบชื่อ WiFi และรหัสผ่านให้ถูกต้อง
- ลองเชื่อมต่อ WiFi ที่ 2.4 GHz (ESP32 ไม่รองรับ 5 GHz)
- ตรวจสอบว่า Router ไม่ได้บล็อกอุปกรณ์ใหม่
- ลองรีเซ็ต ESP32 (กดปุ่ม RESET หรือ EN)
❌ ปัญหา: Serial Monitor ไม่แสดงข้อมูล
สาเหตุ: Baud rate ไม่ตรงกัน
วิธีแก้:
- ตรวจสอบว่าในโค้ดใช้
Serial.begin(115200); - ใน Serial Monitor ตั้งค่า Baud rate เป็น 115200 baud
- ตรวจสอบว่าเลือก Port ถูกต้อง
❌ ปัญหา: ไม่เห็น Port ใน Arduino IDE
สาเหตุ: ไม่ได้ติดตั้ง USB Driver
วิธีแก้:
- ตรวจสอบชิป USB บนบอร์ด (CP2102 หรือ CH340)
- ดาวน์โหลดและติดตั้ง Driver ตามที่เขียนไว้ด้านบน
- รีสตาร์ทคอมพิวเตอร์
- ลองเปลี่ยนสาย USB
❌ ปัญหา: LED ไม่กระพริบ
สาเหตุ: บอร์ดบางรุ่นใช้ขา LED ที่ไม่ใช่ GPIO 2
วิธีแก้:
- ลองเปลี่ยน
ledPinเป็นขาอื่น (เช่น GPIO 4, 5, 16) - ต่อ LED ภายนอกเข้ากับ GPIO 2
- ตรวจสอบว่าอัปโหลดโค้ดสำเร็จ (Done uploading)
🎓 บทเรียนถัดไป
วัดอุณหภูมิและความชื้นด้วย DHT22
สอนวิธีเชื่อมต่อเซ็นเซอร์ DHT22 และส่งข้อมูลเข้า CynoIoT
PROJECTสร้าง Sensor Node ประหยัดไฟ
วิธีใช้ Deep Sleep Mode เพื่อให้ใช้แบตเตอรี่ได้นาน
PROTOCOLสื่อสารด้วย MQTT Protocol
เรียนรู้การใช้ MQTT สำหรับโปรเจกต์ IoT ขั้นสูง
ADVANCEDอัปเดตฟาร์มแวร์ผ่าน WiFi (OTA)
อัปเดตโค้ด ESP32 ผ่านอากาศ โดยไม่ต้องเสียบสาย USB
เริ่มสร้างโปรเจกต์ IoT กับ CynoIoT วันนี้
สมัครสมาชิกฟรีและเริ่มเก็บข้อมูลจาก ESP32 ของคุณได้ทันที