บทความ: วิธีเริ่มต้นใช้งาน ESP8266 สำหรับมือใหม่

เรียนรู้พื้นฐานการใช้งาน ESP8266 ไมโครคอนโทรลเลอร์ WiFi ราคาประหยัที่เหมาะสำหรับโปรเจกต์ IoT ตั้งแต่การติดตั้งไปจนถึงการเขียนโปรแกรมแรกของคุณ

📅 7 มีนาคม 2026⏱️ 10 นาที🎯 ระดับ: เริ่มต้น
WiFi
802.11 b/g/n
₿90
ราคาเริ่มต้น
32-bit
Processor
GPIO
16 pins

🎯 ภาพรวม ESP8266 คืออะไร?

ESP8266 เป็นไมโครคอนโทรลเลอร์ WiFi ราคาประหยัที่มีความสามารถครบครันสำหรับโปรเจกต์ IoT พัฒนาโดยบริษัท Espressif Systems จากประเทศจีน โดยมีจุดเด่นดังนี้:

  • ราคาถูกมาก - เริ่มต้นเพียง 90-150 บาท ทำให้เหมาะสำหรับการเรียนรู้และทำโปรเจกต์
  • มี WiFi ในตัว - เชื่อมต่ออินเทอร์เน็ตได้ทันทีโดยไม่ต้องใช้โมดูลเพิ่ม
  • ใช้งานง่าย - รองรับ Arduino IDE, MicroPython, และ Lua
  • ชุมชนขนาดใหญ่ - มีตัวอย่างโค้ดและไลบรารีมากมาย

💡 ความแตกต่าง ESP8266 vs ESP32: ESP32 เป็นรุ่นใหม่กว่าที่มี CPU แรงกว่า, Bluetooth, และ GPIO pin มากกว่า แต่ ESP8266 ยังคงเป็นตัวเลือกยอดนิยมสำหรับโปรเจกต์ง่ายๆ เพราะราคาถูกและใช้งานง่าย

ESP8266 มีประโยชน์อย่างไร?

ด้วยความที่มี WiFi ในตัวและราคาถูก ทำให้ ESP8266 เหมาะสำหรับ:

  • 🏠 โปรเจกต์ Smart Home (ควบคุมไฟ, เซ็นเซอร์)
  • 🌡️ ระบบวัดอุณหภูมิและความชื้น
  • 📡 ส่งข้อมูลเซ็นเซอร์ไปยัง Cloud (MQTT, HTTP)
  • 🔌 สร้าง Web Server เพื่อควบคุมอุปกรณ์
  • 📱 ทำ IoT switch ควบคุมผ่านมือถือ

🔌 อุปกรณ์ที่ต้องใช้

1. บอร์ด ESP8266 (เลือก 1 อัน)

NodeMCU

บอร์ดยอดนิยม มี USB ในตัว เหมาะสำหรับมือใหม่

~฿120
Wemos D1 Mini

ขนาดเล็ก กระทัดรัด ใช้งานง่าย

~฿100

2. สาย USB Data

ใช้สำหรับเชื่อมต่อ ESP8266 กับคอมพิวเตอร์และอัปโหลดโค้ด

⚠️ สำคัญ: ต้องใช้สาย USB Data (มี 4 สายใน) ไม่ใช่สายชาร์จ (มี 2 สายเท่านั้น)

3. คอมพิวเตอร์หรือแล็ปท็อป

Windows, macOS, หรือ Linux ก็ได้

✅ อุปกรณ์เสริม (แนะนำแต่ไม่บังคับ)

  • • Breadboard และ Jumper wire (สำหรับต่อวงจรทดลอง)
  • • LED และ Resistor (สำหรับทดสอบ output)
  • • DHT11/DHT22 Sensor (สำหรับโปรเจกต์วัดอุณหภูมิ)
  • • Relay Module (สำหรับควบคุมไฟ/ปั๊ม)

💻 การติดตั้งซอฟต์แวร์

ขั้นตอนที่ 1: ติดตั้ง Arduino IDE

  1. ดาวน์โหลด Arduino IDE จาก arduino.cc
  2. ติดตั้งโปรแกรมตามปกติ
  3. เปิด Arduino IDE หลังจากติดตั้งเสร็จ

ขั้นตอนที่ 2: เพิ่ม ESP8266 Board Support

ใน Arduino IDE:

  1. ไปที่ File → Preferences
  2. ในช่อง "Additional Boards Manager URLs"
  3. เพิ่ม URL นี้: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. กด OK

ติดตั้ง Board:

  1. ไปที่ Tools → Board → Boards Manager
  2. ค้นหา "esp8266"
  3. ติดตั้ง "esp8266 by ESP8266 Community"
  4. รอสักครู่ อาจใช้เวลา 5-10 นาที

ขั้นตอนที่ 3: ติดตั้ง USB Driver (ถ้าจำเป็น)

Windows 10/11: โดยปกติจะติดตั้งอัตโนมัติ ถ้าไม่ได้ให้ดาวน์โหลดจาก Silicon Labs

macOS: ติดตั้ง driver จาก Silicon Labs หรือใช้ Homebrew: brew install --cask silabs-vcp-driver

Linux: โดยปกติไม่ต้องติดตั้ง driver

ขั้นตอนที่ 4: เชื่อมต่อและทดสอบ

  1. เสียบสาย USB เชื่อมต่อ ESP8266 กับคอมพิวเตอร์
  2. ใน Arduino IDE: Tools → Board → NodeMCU 1.0 (ESP-12E Module)
  3. เลือก Port: Tools → Port → (เลือก port ที่เชื่อมต่อ)
  4. กด Upload หรือ Ctrl+U เพื่อทดสอบ

ถ้าขึ้น "Done uploading" แสดงว่าพร้อมใช้งานแล้ว!

🚀 โปรเจกต์แรก: WiFi Scanner

เราจะสร้างโปรแกรมสแกนหา WiFi Network รอบๆ ที่เห็นผ่าน Serial Monitor นี่เป็นวิธีที่ดีในการทดสอบว่า ESP8266 ทำงานได้ถูกต้อง

โค้ด WiFi Scanner

// โปรแกรม WiFi Scanner สำหรับ ESP8266
// ใช้สแกนหาเครือข่าย WiFi รอบๆ

#include "ESP8266WiFi.h"

void setup() {
  // เริ่มต้น Serial Monitor
  Serial.begin(115200);

  // ตั้งค่า WiFi ให้เป็นโหมด Station
  WiFi.mode(WIFI_STA);

  // ตัดการเชื่อมต่อ WiFi ที่เคยบันทึกไว้
  WiFi.disconnect();

  delay(100);

  Serial.println("\n\n");
  Serial.println("==================================");
  Serial.println("   WiFi Scanner สำหรับ ESP8266");
  Serial.println("==================================");
  Serial.println();
}

void loop() {
  Serial.println("กำลังสแกนหาเครือข่าย WiFi...");

  // เริ่มสแกนหา WiFi
  int n = WiFi.scanNetworks();

  Serial.println("สแกนเสร็จสิ้น!");

  if (n == 0) {
    Serial.println("ไม่พบเครือข่าย WiFi");
  } else {
    Serial.print("พบ ");
    Serial.print(n);
    Serial.println(" เครือข่าย:");
    Serial.println();

    // แสดงรายการ WiFi ที่พบ
    for (int i = 0; i < n; ++i) {
      // SSID (ชื่อเครือข่าย)
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));

      // RSSI (ความแรงของสัญญาณ)
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print("dBm");

      // ความแรงสัญญาณเป็นคำอธิบาย
      if (WiFi.RSSI(i) > -50) {
        Serial.print(" - แรงมาก");
      } else if (WiFi.RSSI(i) > -60) {
        Serial.print(" - แรง");
      } else if (WiFi.RSSI(i) > -70) {
        Serial.print(" - ปานกลาง");
      } else {
        Serial.print(" - อ่อน");
      }

      // การเข้ารหัส
      Serial.print(" - ");
      switch (WiFi.encryptionType(i)) {
        case ENC_TYPE_WEP:
          Serial.print("WEP");
          break;
        case ENC_TYPE_TKIP:
          Serial.print("WPA");
          break;
        case ENC_TYPE_CCMP:
          Serial.print("WPA2");
          break;
        case ENC_TYPE_NONE:
          Serial.print("เปิด");
          break;
        case ENC_TYPE_AUTO:
          Serial.print("WPA/WPA2");
          break;
      }

      Serial.println();
      delay(10);
    }
  }

  Serial.println();
  Serial.println("==================================");

  // รอ 5 วินาที แล้วสแกนใหม่
  delay(5000);
}

วิธีอัปโหลดและทดสอบ

  1. คัดลอกโค้ดด้านบนไปวางใน Arduino IDE
  2. ตรวจสอบว่าเลือก Board และ Port ถูกต้อง
  3. กดปุ่ม Upload (ลูกศรชี้ขวา)
  4. รอให้อัปโหลดเสร็จ (จะขึ้น "Done uploading")
  5. เปิด Serial Monitor: ปุ่ม 🔍 มุมขวาบน
  6. ตั้งค่า baud rate เป็น 115200
  7. ดูผลลัพธ์ที่ปรากฏบนหน้าจอ

💡 คำอธิบาย: โปรแกรมนี้ใช้ฟังก์ชัน WiFi.scanNetworks() ในการสแกนหาเครือข่าย WiFi ทั้งหมดที่ส่งสัญญาณอยู่รอบๆ และแสดงชื่อเครือข่าย, ความแรงของสัญญาณ (RSSI), และประเภทการเข้ารหัส

🌐 สร้าง Web Server ควบคุม LED

ต่อไปเราจะสร้าง Web Server บน ESP8266 เพื่อควบคุม LED ผ่านเว็บเบราว์เซอร์ นี่เป็นพื้นฐานสำคัญสำหรับโปรเจกต์ IoT ทุกชนิด

การต่อวงจร

  • LED ยาว (Anode +) → เชื่อมต่อกับ GPIO 2 (D4) ผ่านตัวต้านทาน 220Ω
  • LED สั้น (Cathode -) → เชื่อมต่อกับ GND

💡 บนบอร์ด NodeMCU จะมี LED ในตัวอยู่แล้วที่ GPIO 2 ดังนั้นคุณสามารถทดสอบได้โดยไม่ต้องต่อ LED เพิ่ม

โค้ด Web Server

// Web Server ควบคุม LED บน ESP8266
// เข้าถึงได้ผ่าน http://ESP8266_IP_ADDRESS

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// แทนที่ด้วย WiFi ของคุณ
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// กำหนด GPIO pin สำหรับ LED
const int ledPin = 2;  // GPIO 2 = D4 บน NodeMCU

// สร้าง Web Server ที่พอร์ต 80
ESP8266WebServer server(80);

// สถานะ LED (เริ่มต้น = ปิด)
bool ledState = false;

void setup() {
  // เริ่มต้น Serial
  Serial.begin(115200);

  // ตั้งค่า LED pin เป็น output
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);  // เริ่มต้นให้ LED ดับ
  ledState = false;

  // เชื่อมต่อ WiFi
  Serial.println();
  Serial.println("==================================");
  Serial.println("   Web Server ควบคุม LED");
  Serial.println("==================================");
  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());
  Serial.println();
  Serial.println("เปิดเว็บเบราว์เซอร์และไปที่: http://" +
                 WiFi.localIP().toString());
  Serial.println("==================================");
  Serial.println();

  // ตั้งค่า Web Server Routes

  // หน้าแรก
  server.on("/", handleRoot);

  // เปิด LED
  server.on("/on", handleLedOn);

  // ปิด LED
  server.on("/off", handleLedOff);

  // สถานะ LED (JSON)
  server.on("/status", handleStatus);

  // หน้า 404
  server.onNotFound(handleNotFound);

  // เริ่มต้น Web Server
  server.begin();
  Serial.println("🌐 Web Server เริ่มทำงานแล้ว!");
}

void loop() {
  // รองรับการเชื่อมต่อจาก client
  server.handleClient();
}

// ฟังก์ชันหน้าแรก
void handleRoot() {
  String html = "<!DOCTYPE html>";
  html += "<html>";
  html += "<head>";
  html += "<meta charset='UTF-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
  html += "<title>ESP8266 LED Control</title>";
  html += "<style>";
  html += "body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }";
  html += ".container { max-width: 400px; margin: 0 auto; background: white; padding: 20px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }";
  html += "h1 { text-align: center; color: #333; }";
  html += ".status { text-align: center; font-size: 18px; margin: 20px 0; padding: 10px; background: #e9e9e9; border-radius: 5px; }";
  html += ".btn { display: block; width: 100%; padding: 15px; margin: 10px 0; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; transition: 0.3s; }";
  html += ".btn-on { background: #4CAF50; color: white; }";
  html += ".btn-off { background: #f44336; color: white; }";
  html += ".btn:hover { opacity: 0.8; }";
  html += "</style>";
  html += "</head>";
  html += "<body>";
  html += "<div class='container'>";
  html += "<h1>💡 ควบคุม LED ESP8266</h1>";
  html += "<div class='status'>";
  html += "<strong>สถานะ LED:</strong> ";
  html += ledState ? "เปิดอยู่ (ON)" : "ปิดอยู่ (OFF)";
  html += "</div>";
  html += "<button class='btn btn-on' onclick='turnOn()'>เปิด LED (ON)</button>";
  html += "<button class='btn btn-off' onclick='turnOff()'>ปิด LED (OFF)</button>";
  html += "<script>";
  html += "function turnOn() { fetch('/on').then(() => location.reload()); }";
  html += "function turnOff() { fetch('/off').then(() => location.reload()); }";
  html += "</script>";
  html += "</div>";
  html += "</body>";
  html += "</html>";

  server.send(200, "text/html", html);
}

// ฟังก์ชันเปิด LED
void handleLedOn() {
  digitalWrite(ledPin, LOW);  // LED บน NodeMCU ใช้ active LOW
  ledState = true;
  Serial.println("💡 LED: ON");
  server.send(200, "text/plain", "LED ON");
}

// ฟังก์ชันปิด LED
void handleLedOff() {
  digitalWrite(ledPin, HIGH);  // LED บน NodeMCU ใช้ active LOW
  ledState = false;
  Serial.println("💡 LED: OFF");
  server.send(200, "text/plain", "LED OFF");
}

// ฟังก์ชันสถานะ (JSON)
void handleStatus() {
  String json = "{\"led\":";
  json += ledState ? "true" : "false";
  json += "}";
  server.send(200, "application/json", json);
}

// ฟังก์ชัน 404
void handleNotFound() {
  server.send(404, "text/plain", "404: Not found");
}

วิธีใช้งาน

  1. แก้ไข ssid และ password ในโค้ดให้ตรงกับ WiFi ของคุณ
  2. อัปโหลดโค้ดไปยัง ESP8266
  3. เปิด Serial Monitor และรอ IP Address
  4. เปิดเว็บเบราว์เซอร์และไปที่ IP Address ที่ได้
  5. ลองกดปุ่มเปิด/ปิด LED ดู!

✅ สำเร็จ! ตอนนี้คุณมี Web Server ที่ทำงานบน ESP8266 แล้ว นี่คือพื้นฐานสำหรับโปรเจกต์ IoT ทุกชนิด คุณสามารถพัฒนาต่อเป็นระบบควบคุมไฟ, เซ็นเซอร์, หรืออื่นๆ

🔧 ปัญหาที่พบบ่อยและวิธีแก้ไข

ปัญหา: อัปโหลดโค้ดไม่ได้

อาการ: ขึ้น error หรืออัปโหลดไม่สำเร็จ

วิธีแก้ไข:

  • ตรวจสอบว่าเลือก Board และ Port ถูกต้อง
  • ลองกดปุ่ม FLASH บนบอร์ด ขณะอัปโหลด (สำหรับ NodeMCU)
  • เปลี่ยนสาย USB เป็นสาย Data (ไม่ใช่สายชาร์จ)
  • ลองเปลี่ยน Port USB หรือใช้คอมเครื่องอื่น
  • ติดตั้ง USB Driver ใหม่

ปัญหา: เชื่อมต่อ WiFi ไม่ได้

อาการ: โปรแกรมค้างที่บรรทัด WiFi.begin()

วิธีแก้ไข:

  • ตรวจสอบชื่อและรหัสผ่าน WiFi ให้ถูกต้อง
  • ตรวจสอบว่า router รองรับ 2.4GHz (ESP8266 ไม่รองรับ 5GHz)
  • ลองเคลื่อนที่ ESP8266 ใกล้ router ขึ้น
  • ตรวจสอบว่า WiFi มี MAC filtering หรือไม่
  • ลองรีเซ็ต ESP8266 ด้วยการถอดปลั๊กแล้วเสียบใหม่

ปัญหา: Serial Monitor แสดงผลเป็นภาษาต่างดาว

อาการ: ตัวอักษรไม่ชัดเจน

วิธีแก้ไข:

  • ตรวจสอบ baud rate ที่ Serial Monitor (มักจะเป็น 115200)
  • ตรวจสอบในโค้ดว่าใช้ baud rate เท่ากับที่ตั้งไว้ใน Serial.begin()

ปัญหา: ESP8266 รีเซ็ตเอง (Reset loop)

อาการ: บอร์ดรีเซ็ตซ้ำๆ

วิธีแก้ไข:

  • ใช้ไฟเลี้ยงที่เสถียร (2A ขึ้นไป)
  • ตรวจสอบว่าไม่มี short circuit บนบอร์ด
  • ลดจำนวนอุปกรณ์ที่เชื่อมต่อกับ ESP8266
  • ตรวจสอบว่าไม่ได้ใช้ pin ที่มีข้อจำกัดพิเศษ

🎯 ขั้นตอนถัดไป

ยินดีด้วย! ตอนนี้คุณรู้พื้นฐานการใช้งาน ESP8266 แล้ว ต่อไปคุณสามารถ:

🌡️ โปรเจกต์วัดอุณหภูมิ

เชื่อมต่อเซ็นเซอร์ DHT11/DHT22 และส่งข้อมูลไปยัง Web Server

อ่านเพิ่มเติม →

📡 ใช้งาน MQTT

เชื่อมต่อ ESP8266 กับ MQTT Broker เพื่อส่งข้อมูลแบบ Real-time

อ่านเพิ่มเติม →

⚡ ประหยัดพลังงานด้วย Deep Sleep

เรียนรู้วิธีทำให้ ESP8266 ใช้แบตเตอรี่นานขึ้น

อ่านเพิ่มเติม →

🔄 อัปเกรดเป็น ESP32

เปรียบเทียบความแตกต่างและเลือกตัวที่เหมาะกับโปรเจกต์

อ่านเพิ่มเติม →

CynoIoT Platform — แพลตฟอร์ม IoT ที่ง่ายที่สุดสำหรับคนไทย

บทความนี้อัปเดตล่าสุด: 7 มีนาคม 2026