เนื้อหาในบทความ
ภาพรวม 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
- เปิด Arduino IDE แล้วไปที่
File → Preferences - ในช่อง "Additional Boards Manager URLs" ใส่:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - ไปที่
Tools → Board → Boards Manager - ค้นหา "esp32" แล้วติดตั้ง ESP32 by Espressif Systems เวอร์ชันล่าสุด
- เลือกบอร์ด:
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: ทดสอบบอร์ด
อัปโหลดโค้ดทดสอบแรกของคุณ:
// โค้ดทดสอบ 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 วินาที:
#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:
// โค้ดพื้นฐานสำหรับ 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 เพิ่มเติม:
- • OpenThread Documentation: openthread.io
- • Matter Specification: CSA-IoT
- • Espressif Thread SDK: GitHub
เทคนิคประหยัดพลังงาน
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 นาที:
#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 ประหยัดแบตเตอรี่