สอนใช้งาน ESP32-H2 Super Mini: LoRa + Thread + Zigbee แบตเตอรี่ทนนาน

เจาะลึก ESP32-H2 ไมโครคอนโทรลเลอร์รุ่นล่าสุดจาก Espressif ที่มาพร้อม LoRa ระยะไกล, Thread และ Zigbee เหมาะสำหรับโปรเจกต์ IoT ประหยัดพลังงาน พร้อมคู่มือการติดตั้งและโค้ดตัวอย่างภาษาไทย

อ่าน 15 นาที
ระดับกลาง
ESP32-H2 LoRa Thread Zigbee Low Power

ภาพรวม ESP32-H2 Super Mini

ESP32-H2 คือไมโครคอนโทรลเลอร์รุ่นล่าสุดจาก Espressif ที่ออกแบบมาเพื่อโปรเจกต์ IoT (Internet of Things) ที่ต้องการการสื่อสารระยะไกลและประหยัดพลังงาน โดยเฉพาะ ชิพนี้มีขนาดเล็กมาก "Super Mini" แต่แฝงไปด้วยพลังแห่งนวัตกรรมที่น่าทึ่ง

🎯 เหมาะสำหรับโปรเจกต์:

  • เซ็นเซอร์โหนดระยะไกลด้วย LoRa (หลายกิโลเมตร)
  • Smart Home ด้วย Thread และ Zigbee
  • โปรเจกต์ประหยัดพลังงาน (Battery-powered)
  • Matter-compatible devices
  • Environment monitoring

ทำไมต้อง ESP32-H2?

✅ ข้อดี

  • • รองรับ LoRa ระยะไกลสูง
  • • Thread และ Zigbee ในตัวเดียว
  • • ประหยัดพลังงาน (Ultra-low power)
  • • Matter support (ready for future)
  • • ราคาถูก ขนาดเล็ก

⚠️ ข้อจำกัด

  • • ไม่มี WiFi (ใช้ Thread/Zigbee)
  • • Flash น้อยกว่า ESP32 ปกติ
  • • Libraries ยังไม่ครบเท่า ESP32
  • • Learning curve สูงกว่าสำหรับมือใหม่

คุณสมบัติหลักของ ESP32-H2

คุณสมบัติ รายละเอียด
หน่วยประมวลผล RISC-V 32-bit (Single-core) ได้ถึง 96 MHz
หน่วยความจำ 320 KB SRAM, Flash 4-16 MB
การสื่อสาร 2.4 GHz 802.15.4 (Thread/Zigbee)
LoRa Support SX1262 ระยะไกล 5-15 km
การใช้พลังงาน Active: ~30mA, Deep Sleep: ~5μA
ราคาโดยประมาณ ฿150-300 บาท

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

Hardware พื้นฐาน

1. ESP32-H2 Dev Board

฿150-300 • ซื้อได้ที่ Shopee, Lazada, AliExpress

เลือกบอร์ดที่มี USB-C สำหรับความสะดวก

2. LoRa Module (SX1262)

฿200-400 • ความถี่ 433MHz หรือ 915MHz

เลือกความถี่ให้ตรงกับประเทศไทย

3. USB-C Cable

฿50-100 • Data cable (ไม่ใช่ charge only)

ใช้สำหรับอัปโหลดโค้ดและ Debug

4. Breadboard & Jumper Wires

฿80-150 • สำหรับต่อวงจรทดลอง

เลือกแบบ Male-to-Male และ Female-to-Male

Software & Tools

  • Arduino IDE 2.x - สำหรับเขียนโค้ด (ดาวน์โหลดฟรี)
  • ESP32-H2 Board Package - ติดตั้งผ่าน Board Manager
  • LoRa Library - SX126x จาก RadioLib
  • OpenThread Library - สำหรับ Thread protocol
  • CynoIoT Account (ฟรี) - สำหรับเชื่อมต่อ Dashboard

การติดตั้งและเซ็ตอัพ

Step 1: ติดตั้ง Board Package

  1. เปิด Arduino IDE แล้วไปที่ File → Preferences
  2. ในช่อง "Additional Boards Manager URLs" ใส่: https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. ไปที่ Tools → Board → Boards Manager
  4. ค้นหา "esp32" แล้วติดตั้ง ESP32 by Espressif Systems เวอร์ชันล่าสุด
  5. เลือกบอร์ด: Tools → Board → ESP32 Arduino → ESP32-H2 Dev Module

Step 2: ติดตั้ง Libraries ที่จำเป็น

ติดตั้ง Libraries ผ่าน Library Manager (Sketch → Include Library → Manage Libraries):

  • RadioLib - สำหรับ LoRa module
  • OpenThread - สำหรับ Thread protocol
  • ESP32Servo - สำหรับ Servo motor (ถ้าต้องการ)

Step 3: ทดสอบบอร์ด

อัปโหลดโค้ดทดสอบแรกของคุณ:

C++ (Arduino)
// โค้ดทดสอบ ESP32-H2: Blink LED
// ไฟกระพริบบน GPIO 8

const int ledPin = 8;  // LED บนบอร์ด ESP32-H2

void setup() {
  pinMode(ledPin, OUTPUT);  // ตั้งค่า LED pin เป็น output
  Serial.begin(115200);     // เปิด Serial Monitor
  Serial.println("ESP32-H2 Blink Test 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 วินาที
}

💡 Tips:

  • • ถ้าอัปโหลดไม่ได้ ให้กดปุ่ม BOOT ตอนเชื่อมต่อ USB
  • • เลือก Port ที่ถูกต้องใน Tools → Port
  • • ดู Serial Monitor ที่ 115200 baud

ใช้งาน LoRa ระยะไกล

LoRa (Long Range) คือเทคโนโลยีการสื่อสารไร้สายระยะไกลที่ใช้พลังงานต่ำมาก ESP32-H2 สามารถเชื่อมต่อกับ LoRa module เช่น SX1262 เพื่อส่งข้อมูลได้ไกลถึง 5-15 กิโลเมตร!

การต่อสาย LoRa Module (SX1262)

SX1262 Pin ESP32-H2 Pin หมายเหตุ
VCC 3.3V ต้องใช้ 3.3V เท่านั้น
GND GND Ground
SCK GPIO 7 SPI Clock
MISO GPIO 2 SPI MISO
MOSI GPIO 3 SPI MOSI
CS GPIO 6 Chip Select
DIO1 GPIO 1 Interrupt
RST GPIO 4 Reset
BUSY GPIO 5 Busy Pin

โค้ดตัวอย่าง LoRa Sender

โค้ดนี้ส่งข้อความ "Hello from ESP32-H2!" ทุกๆ 5 วินาที:

C++ (Arduino)
#include <RadioLib.h>

// กำหนดขา SPI สำหรับ SX1262
#define SX1262_CS    6
#define SX1262_DIO1  1
#define SX1262_RST   4
#define SX1262_BUSY  5

// สร้างออบเจ็กต์ SX1262
SX1262 radio = new Module(SX1262_CS, SX1262_DIO1, SX1262_RST, SX1262_BUSY);

void setup() {
  Serial.begin(115200);
  Serial.println("ESP32-H2 LoRa Sender Test");

  // เริ่มต้นใช้งาน SX1262
  Serial.print("Initializing LoRa... ");
  int state = radio.begin(915.0);  // ความถี่ 915MHz (ไทยใช้ 433MHz หรือ 915MHz)
  
  if (state == RADIOLIB_ERR_NONE) {
    Serial.println("success!");
  } else {
    Serial.print("failed, code: ");
    Serial.println(state);
    while (true);
  }

  // ตั้งค่า output power (สูงสุด 22dBm)
  radio.setOutputPower(22);
  
  // ตั้งค่า bandwidth
  radio.setBandwidth(125.0);
}

void loop() {
  Serial.print("Sending packet... ");

  // ส่งข้อความ
  String message = "Hello from ESP32-H2! #" + String(millis());
  int state = radio.transmit(message);

  if (state == RADIOLIB_ERR_NONE) {
    Serial.println("success!");
  } else {
    Serial.print("failed, code: ");
    Serial.println(state);
  }

  delay(5000);  // ส่งทุกๆ 5 วินาที
}

⚠️ ความถี่ LoRa ในประเทศไทย:

  • 433 MHz - ใช้ได้ทั่วไป
  • 915 MHz - ใช้ได้ในบางพื้นที่
  • • ตรวจสอบกฎหมายก่อนใช้งาน: NBTC Thailand

ใช้งาน Thread และ Zigbee

Thread คือโปรโตคอลเครือข่าย mesh ที่ออกแบบมาสำหรับ Smart Home IoT devices ทำให้อุปกรณ์ต่างๆ สามารถสื่อสารกันเองได้โดยไม่ต้องพึ่งพา router และ Matter มาตรฐานใหม่ที่ทำให้อุปกรณ์ IoT ทำงานร่วมกันได้ทุกยี่ห้อ

Thread vs Zigbee ควรเลือกอะไร?

Thread (แนะนำ)

  • ✅ Matter-compatible
  • ✅ IP-based (เชื่อมต่อ Internet ได้โดยตรง)
  • ✅ Mesh networking
  • ✅ ปลอดภัยกว่า (AES-128)
  • ✅ Future-proof

Zigbee

  • ✅ Libraries มากกว่า
  • ✅ อุปกรณ์เก่ารองรับมาก
  • ✅ ราคาถูกกว่า
  • ❌ ไม่รองรับ Matter (โดยตรง)
  • ❌ Hub เก่าอาจใช้ไม่ได้

เริ่มต้นใช้งาน Thread

Thread บน ESP32-H2 ใช้ OpenThread library:

C++ (Arduino)
// โค้ดพื้นฐานสำหรับ Thread บน ESP32-H2
// ต้องติดตั้ง OpenThread library ก่อน

#include <openthread/openthread.h>

void setup() {
  Serial.begin(115200);
  
  // เริ่มต้น OpenThread
  otInstance *instance = otInstanceInitSingle();
  if (instance == NULL) {
    Serial.println("Failed to initialize OpenThread");
    return;
  }
  
  // เริ่มต้น Thread stack
  if (otIp6SetEnabled(instance, true) != OT_ERROR_NONE) {
    Serial.println("Failed to enable IPv6");
    return;
  }
  
  if (otThreadSetEnabled(instance, true) != OT_ERROR_NONE) {
    Serial.println("Failed to enable Thread");
    return;
  }
  
  Serial.println("Thread started successfully!");
}

void loop() {
  // โค้ดของคุณที่นี่
  delay(1000);
}

📚 Resources เพิ่มเติม:

เทคนิคประหยัดพลังงาน

ESP32-H2 ออกแบบมาสำหรับโปรเจกต์ Battery-powered โดยเฉพาะ ด้วย Deep Sleep mode ที่ใช้กระแสเพียง ~5μA ทำให้แบตเตอรี่ขนาดเล็กใช้ได้นานหลายเดือน

โหมดการใช้งานและกระแสไฟ

Active Mode

~30 mA

ปกติ 96 MHz

Light Sleep

~1 mA

RAM เก็บไว้

Deep Sleep

~5 μA

ประหยัดสุด

โค้ด Deep Sleep พร้อมตัวอย่าง

โค้ดนี้ใช้ Deep Sleep ตื่นขึ้นมาทำงานทุกๆ 5 นาที:

C++ (Arduino)
#include <esp_sleep.h>

// กำหนดเวลานอน (5 นาที = 300,000 มิลลิวินาที)
#define SLEEP_DURATION_US 300 * 1000000  // 5 นาที

void setup() {
  Serial.begin(115200);
  
  // รอให้ Serial พร้อม
  delay(1000);
  
  Serial.println("Waking up from deep sleep!");
  
  // อ่านเซ็นเซอร์ (ตัวอย่าง)
  float temperature = readTemperature();
  float humidity = readHumidity();
  
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
  
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %");
  
  // ส่งข้อมูลผ่าน LoRa (ถ้ามี)
  // sendViaLoRa(temperature, humidity);
  
  // บันทึกข้อมูลก่อนนอน
  Serial.println("Going to deep sleep now...");
  Serial.println("Will wake up in 5 minutes");
  Serial.println("");
  
  // เข้าสู่ Deep Sleep mode
  esp_deep_sleep_start();
}

void loop() {
  // ไม่มีอะไรที่นี่ เพราะ Deep Sleep จะรีเซ็ตบอร์ด
}

// ฟังก์ชันอ่านอุณหภูมิ (ตัวอย่าง)
float readTemperature() {
  // ในการใช้งานจริง ให้เชื่อมต่อเซ็นเซอร์จริง (เช่น DHT22)
  return 25.0 + (random(-20, 20) / 10.0);  // ตัวอย่าง: 24.5 - 27.0 °C
}

// ฟังก์ชันอ่านความชื้น (ตัวอย่าง)
float readHumidity() {
  return 60.0 + (random(-10, 10) / 10.0);  // ตัวอย่าง: 59.0 - 61.0 %
}

💡 เทคนิคประหยัดแบตเตอรี่เพิ่มเติม:

  • • ลดความถี่ CPU หาือทำได้: setCpuFrequencyMhz(80);
  • • ปิด Peripherals ที่ไม่ใช้: WiFi, Bluetooth
  • • ใช้ Deep Sleep ร่วมกับ External Interrupt (เปิดปุ่มกด, เซ็นเซอร์)
  • • ตั้งค่า LED false ถ้าไม่จำเป็น
  • • ใช้ไฟเลี้ยง 3.3V แทน 5V

คำนวณอายุการใช้งานแบตเตอรี่

ตัวอย่าง: เซ็นเซอร์โหนดที่ตื่นทุกๆ 5 นาที ใช้เวลา 5 วินาทีในการทำงาน

Active (5 วินาที):

30mA × 5s = 150 mAs ต่อรอบ

Sleep (295 วินาที):

5μA × 295s = 1.475 mAs ต่อรอบ

กระแสเฉลี่ย:

(150 + 1.475) mAs / 300s = ~0.505 mA

แบตเตอรี่ 2000 mAh ใช้ได้: ~165 วัน (5.5 เดือน)

สรุป

ESP32-H2 เป็นไมโครคอนโทรลเลอร์ที่น่าสนใจมากสำหรับโปรเจกต์ IoT ในอนาคต ด้วย LoRa ระยะไกล, Thread mesh networking และประหยัดพลังงานสุดๆ

สิ่งที่คุณได้เรียนรู้:

  • ✅ ภาพรวมและคุณสมบัติของ ESP32-H2
  • ✅ การติดตั้งและเซ็ตอัพ Arduino IDE
  • ✅ ใช้งาน LoRa กับ SX1262
  • ✅ เริ่มต้นใช้งาน Thread และ Zigbee
  • ✅ เทคนิค Deep Sleep ประหยัดแบตเตอรี่

ถัดไป: