หลายคนเริ่มต่อรีเลย์กับ ESP32 แล้วงงทันที: ทำไมสั่ง LOW แล้วรีเลย์ดันติด? ทั้งที่ในความรู้สึกของมือใหม่ เรามักคิดว่า HIGH น่าจะหมายถึง “เปิด” มากกว่า
ถ้าคุณกำลังเจออาการรีเลย์ทำงานกลับด้าน รีเลย์ติดเองตอนเปิดเครื่อง หรือเขียนโค้ดแล้ว ON/OFF ไม่ตรงที่คิด บทความนี้จะอธิบายให้เข้าใจแบบภาษาคนทำของ พร้อมตัวอย่างวงจร ตัวอย่างโค้ด และวิธีแก้ปัญหาแบบใช้ได้จริงกับงาน ESP32, Smart Farm, ระบบเปิด-ปิดปั๊มน้ำ, พัดลม และ Automation
- “ถ้าคุณยังใหม่กับบอร์ดตัวนี้ แนะนำให้อ่าน ESP32 คืออะไร ก่อน จะเห็นภาพเร็วขึ้นว่า ESP32 เอาไปคุมรีเลย์ ปั๊มน้ำ หรือระบบ IoT ได้ยังไง”
- “ถ้าคุณอยากไล่จากพื้นฐานไปจนถึงงานใช้งานจริง ลองดูหมวด Tutorials ของ Deva DIY ได้เลย”
สารบัญ
- รีเลย์ Active LOW คืออะไร
- ทำไมโมดูลรีเลย์หลายรุ่นถึงเป็น Active LOW
- ESP32 สั่งรีเลย์ Active LOW ทำงานอย่างไร
- การต่อวงจร ESP32 กับ Relay Active LOW
- ตัวอย่างโค้ด ESP32 ควบคุมรีเลย์ Active LOW
- ปัญหายอดฮิตที่มือใหม่เจอ
- จะรู้ได้อย่างไรว่ารีเลย์ของคุณเป็น Active LOW
- Active LOW เหมาะกับงานแบบไหน
- สรุปให้เข้าใจใน 1 นาที
- FAQ คำถามที่พบบ่อย
รีเลย์ Active LOW คืออะไร

ความหมายของ Active LOW แบบ Maker
คำว่า Active LOW หมายถึง อุปกรณ์ตัวนั้นจะเริ่มทำงานเมื่อขาควบคุมถูกดึงลงเป็นลอจิกต่ำ หรือก็คือ LOW
ในกรณีของโมดูลรีเลย์ ถ้าบอร์ดเป็นแบบ Active LOW:
- สั่ง
LOW= รีเลย์ทำงาน - สั่ง
HIGH= รีเลย์หยุดทำงาน
ดังนั้นถ้าคุณเพิ่งเริ่มใช้ ESP32 แล้วลองเขียนแบบนี้:
digitalWrite(relayPin, LOW);แล้วรีเลย์ “ติด” ขึ้นมา นี่ไม่ใช่บั๊ก แต่เป็นพฤติกรรมปกติของรีเลย์แบบ Active LOW
ทำไม LOW ถึงกลายเป็นสั่งให้รีเลย์ทำงาน
เพราะขา IN ของโมดูลรีเลย์ไม่ได้ไปขับคอยล์โดยตรงเสมอไป แต่ผ่านวงจรช่วยขับ เช่น ทรานซิสเตอร์หรือออปโตคัปเปลอร์ ทำให้บางรุ่นออกแบบให้ “ดึงลงกราวด์” แล้ววงจรเริ่มนำกระแสทันที
Active LOW ต่างจาก Active HIGH ยังไง
| ประเภท | สั่งให้ทำงาน | สั่งให้หยุดทำงาน |
|---|---|---|
| Active LOW | LOW | HIGH |
| Active HIGH | HIGH | LOW |
จำง่าย ๆ: คำว่า “Active” หมายถึง “สถานะที่ทำให้มันเริ่มทำงาน” ไม่ได้แปลว่าค่า HIGH เสมอไป
ทำไมโมดูลรีเลย์หลายรุ่นถึงเป็น Active LOW
วงจรทรานซิสเตอร์และออปโตคัปเปลอร์เกี่ยวอะไร
โมดูลรีเลย์หลายรุ่นมีวงจรขับในตัว เช่น ทรานซิสเตอร์และออปโตคัปเปลอร์ เพื่อให้ไมโครคอนโทรลเลอร์อย่าง ESP32 ไม่ต้องขับโหลดโดยตรง วงจรลักษณะนี้มักออกแบบให้ขา IN ตอบสนองเมื่อถูกดึงลง LOW
ทำไมผู้ผลิตชอบออกแบบแบบนี้
เพราะออกแบบง่าย ใช้ร่วมกับบอร์ดยอดนิยมได้กว้าง และทำให้วงจร trigger ทำงานผ่านการดึงสัญญาณลงกราวด์ได้สะดวก โดยเฉพาะโมดูลรีเลย์ที่มีวงจรแยกอินพุตกับภาคขับ
รีเลย์ 5V ที่ใช้กับ ESP32 มักเจอลอจิกแบบไหน
ในงานจริง โมดูลรีเลย์ 5V จำนวนมากที่ขายทั่วไปมักเป็นแบบ low level trigger หรือ Active LOW ดังนั้นก่อนเขียนโปรเจกต์จริง ควรเช็กเสมอว่าบอร์ดของคุณสั่งงานด้วย LOW หรือ HIGH
อย่าเดาจากชื่อสินค้าอย่างเดียว บางร้านเขียนแค่ “Relay Module 5V” แต่ไม่ได้บอกว่าลอจิกเป็น Active LOW หรือ Active HIGH ให้ทดสอบจริงสั้น ๆ ก่อนเสมอ
ESP32 สั่งรีเลย์ Active LOW ทำงานอย่างไร

HIGH = ปิด, LOW = เปิด
สำหรับรีเลย์ Active LOW เราคิดแบบนี้ได้เลย:
digitalWrite(pin, LOW)= เปิดรีเลย์digitalWrite(pin, HIGH)= ปิดรีเลย์
ตารางลอจิกที่ควรเข้าใจ
| ค่า GPIO จาก ESP32 | สถานะรีเลย์ | ความหมาย |
|---|---|---|
| LOW | ON | รีเลย์ทำงาน / หน้าสัมผัสเปลี่ยนสถานะ |
| HIGH | OFF | รีเลย์ไม่ทำงาน |
จุดที่มือใหม่พลาดบ่อยไม่ใช่แค่เรื่อง Active LOW แต่คือการเลือกขา GPIO ให้เหมาะกับงานด้วย เพราะ ESP32 บางขามีพฤติกรรมพิเศษตอนบูต ถ้าคุณยังไม่แน่ใจเรื่องนี้ แนะนำให้อ่าน ESP32 GPIO / Pinout DevKit V1 ควบคู่ไปด้วย
ตัวอย่างการคิดแบบไม่งงเวลาเขียนโค้ด
มือใหม่มักเขียนแบบนี้แล้วงง:
digitalWrite(relayPin, HIGH); // คิดว่าเปิด
digitalWrite(relayPin, LOW); // คิดว่าปิดแต่ถ้าโมดูลคุณเป็น Active LOW มันจะกลับกันทั้งหมด ทางที่ดีกว่าคือกำหนดค่าคงที่ไว้ตั้งแต่ต้น:
const int RELAY_ON = LOW;
const int RELAY_OFF = HIGH;พอทำแบบนี้ โค้ดจะอ่านง่ายและไม่งงตอนกลับมาแก้ทีหลัง
การต่อวงจร ESP32 กับ Relay Active LOW
ขา VCC, GND, IN ต่ออย่างไร
ตัวอย่างการต่อเบื้องต้นสำหรับรีเลย์ 1 ช่อง:
- VCC ของรีเลย์ → 5V
- GND ของรีเลย์ → GND ร่วมกับ ESP32
- IN ของรีเลย์ → GPIO ของ ESP32 เช่น GPIO23
รีเลย์ 5V ใช้กับ ESP32 3.3V ได้ไหม
หลายโมดูลใช้ได้ แต่ไม่ใช่ทุกโมดูลจะตอบสนองเหมือนกัน บางรุ่น trigger ได้ด้วย 3.3V จาก ESP32 แต่บางรุ่นอาจทำงานไม่เสถียร ต้องทดสอบจริง หรือเลือกโมดูลที่ระบุชัดว่าใช้กับ 3.3V logic ได้
ข้อควรระวังเรื่องไฟเลี้ยง
- อย่าดึงไฟจากขา 3.3V ของ ESP32 ไปเลี้ยงรีเลย์ 5V โดยตรง
- ถ้าใช้หลายช่องหรือมีโหลดจริง ควรใช้แหล่งจ่าย 5V ที่กระแสพอ
- GND ของ ESP32 กับรีเลย์ควรอ้างอิงร่วมกัน ถ้าโมดูลนั้นต้องใช้กราวด์ร่วม
ถ้าคุณเอารีเลย์ไปคุมปั๊มน้ำ มอเตอร์ หรือโหลด AC จริง ควรแยกเรื่อง “ภาคควบคุม” กับ “ภาคกำลัง” ให้ชัด และตรวจสอบพิกัดรีเลย์เสมอ
- ถ้าคุณอยากเห็นภาพการใช้งานรีเลย์กับ ESP32 แบบต่อยอดจากบทความนี้ ลองดูตัวอย่างในบทความ ESP32 Web Server Control Relay Module ซึ่งจะเห็นทั้งแนวคิดการควบคุมอุปกรณ์และการต่อใช้งานจริงมากขึ้น
ตัวอย่างโค้ด ESP32 ควบคุมรีเลย์ Active LOW
โค้ดเปิด-ปิดพื้นฐาน
const int relayPin = 23;
// สำหรับรีเลย์แบบ Active LOW
const int RELAY_ON = LOW;
const int RELAY_OFF = HIGH;
void setup() {
pinMode(relayPin, OUTPUT);
// ปิดรีเลย์ไว้ก่อนทันทีหลังเริ่มต้น
digitalWrite(relayPin, RELAY_OFF);
Serial.begin(115200);
Serial.println("Start relay test");
}
void loop() {
Serial.println("Relay ON");
digitalWrite(relayPin, RELAY_ON);
delay(2000);
Serial.println("Relay OFF");
digitalWrite(relayPin, RELAY_OFF);
delay(2000);
}
ทำไมต้องใช้ RELAY_ON และ RELAY_OFF
เพราะเวลาคุณเปลี่ยนไปใช้รีเลย์อีกยี่ห้อหนึ่งที่เป็น Active HIGH คุณแก้แค่ 2 บรรทัดนี้พอ:
const int RELAY_ON = HIGH;
const int RELAY_OFF = LOW;ตรรกะส่วนอื่นของโปรแกรมยังใช้เหมือนเดิมได้หมด
ตั้งค่าเริ่มต้นยังไงไม่ให้รีเลย์ติดเอง
หลักคิดคือกำหนดขาเป็น OUTPUT แล้วสั่งสถานะ OFF ให้เร็วที่สุดใน setup() แต่ต้องเข้าใจด้วยว่าในช่วงบูตของ ESP32 บางขาอาจมีพฤติกรรมพิเศษอยู่แล้ว ดังนั้นการเลือก GPIO ที่เหมาะสมก็สำคัญมาก
ปัญหายอดฮิตที่มือใหม่เจอเมื่อใช้รีเลย์ Active LOW
1) รีเลย์ติดเองตอนเปิดเครื่อง
ปัญหานี้เจอบ่อยมาก โดยเฉพาะถ้าไปใช้ขา GPIO ที่มีผลต่อการบูตของ ESP32 หรือขาที่มีสถานะเปลี่ยนช่วง startup
แนวทางแก้:
- หลีกเลี่ยงการใช้ขา strapping pins กับรีเลย์ ถ้าไม่จำเป็น
- ตั้งค่า OUTPUT และสั่ง OFF ให้เร็วใน setup()
- เลือกขาที่ปลอดภัยกว่า เช่น GPIO23, GPIO25, GPIO26, GPIO27, GPIO32, GPIO33 ตามลักษณะโปรเจกต์
ถ้าคุณเจออาการรีเลย์ติดเองตอนเปิดเครื่องหรือรีเซตบอร์ด ปัญหามักไม่ได้อยู่ที่รีเลย์อย่างเดียว แต่อยู่ที่ขา GPIO ที่เลือกใช้ด้วย ลองเช็กขาที่เกี่ยวกับการบูตจากบทความ ESP32 Pinout แล้วเทียบกับขาที่คุณใช้อยู่
2) สั่ง ON/OFF แล้วกลับด้าน
อันนี้ง่ายสุด: คุณใช้รีเลย์ Active LOW แต่ไปเขียนโค้ดแบบ Active HIGH
วิธีแก้คือเปลี่ยนแนวคิดใหม่:
const int RELAY_ON = LOW;
const int RELAY_OFF = HIGH;3) รีเลย์กระพริบหรือเด้งตอนบูต
ถ้ารีเลย์มีการเปลี่ยนสถานะตอนเปิดไฟหรือรีสตาร์ต แม้โปรแกรมจะยังไม่เริ่มจริง ให้สงสัยเรื่อง GPIO ตอน startup ก่อนเลย
4) ใช้ GPIO บางขาแล้วบอร์ดบูตไม่ขึ้น
นี่เป็นอีกจุดที่มือใหม่พลาดบ่อย เพราะ ESP32 มีบางขาที่เกี่ยวกับการกำหนดโหมดบูต เช่น GPIO0, GPIO2, GPIO5, GPIO12 และ GPIO15 ถ้าเอารีเลย์ไปดึงสถานะผิดตอนเปิดเครื่อง อาจทำให้บอร์ดบูตผิดโหมดหรือมีอาการแปลกได้
ถ้าคุณเพิ่งเริ่มทำโปรเจกต์คุมรีเลย์ด้วย ESP32 และไม่อยากปวดหัวเรื่องบูต ให้เริ่มจาก GPIO23 หรือ GPIO26 ก่อน เป็นจุดเริ่มต้นที่ปลอดภัยและเข้าใจง่ายกว่า
จะรู้ได้อย่างไรว่ารีเลย์ของคุณเป็น Active LOW

ดูจากสกรีนบนโมดูล
บางบอร์ดพิมพ์ไว้เลยว่า LOW Level Trigger หรือ High/Low Trigger
ดูจากหน้าสินค้า/คู่มือ
ถ้าสินค้าระบุว่า “low level trigger relay module” ก็แปลว่าใช้ Active LOW
ทดสอบด้วยโค้ดสั้น ๆ
const int relayPin = 23;
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH);
delay(2000);
digitalWrite(relayPin, LOW);
delay(2000);
}
void loop() {
}
ถ้าช่วงที่สั่ง LOW แล้วรีเลย์ดัง “ติ๊ก” หรือ LED บนโมดูลติด แปลว่ารีเลย์คุณเป็น Active LOW
Active LOW เหมาะกับงานแบบไหน
งานคุมปั๊มน้ำ
เช่น ระบบรดน้ำต้นไม้อัตโนมัติ เมื่อความชื้นดินต่ำกว่า setpoint ก็สั่ง RELAY_ON เพื่อเปิดปั๊มน้ำ
งานคุมพัดลมหรือไฟ
เช่น ระบบคุมอุณหภูมิในกล่องเพาะ ระบบฟาร์ม หรือระบบระบายอากาศในตู้ควบคุม
งานสมาร์ทฟาร์มและ Automation
งานจริงในสาย Maker มักไม่ได้มีแค่ “เปิด-ปิด” แต่มี logic ต่อเนื่อง เช่น อ่านเซนเซอร์ → ตัดสินใจ → สั่งรีเลย์ → แจ้งเตือน ซึ่งถ้าคุณเข้าใจ Active LOW ถูกตั้งแต่ต้น โค้ดทั้งระบบจะนิ่งขึ้นเยอะ
ถ้าคุณอยากต่อยอดเรื่องขา GPIO เพิ่ม อ่านต่อได้ที่ ESP32 Pinout และถ้าต้องการดูตัวอย่างการคุมรีเลย์ผ่านเว็บ ลองอ่าน ESP32 Web Server Control Relay Module
สรุปให้เข้าใจใน 1 นาที
ESP32 Relay Active LOW คือรีเลย์ที่ “สั่งให้ทำงานด้วย LOW” ไม่ใช่ HIGH
LOW= รีเลย์ทำงานHIGH= รีเลย์หยุดทำงาน- มือใหม่มักงงเพราะคิดว่า HIGH ต้องแปลว่าเปิดเสมอ
- วิธีแก้ง่ายที่สุดคือใช้
RELAY_ONและRELAY_OFF - อย่ามองแค่โค้ด ต้องดู GPIO ตอนบูตและวงจรรีเลย์ด้วย
ถ้าคุณเข้าใจจุดนี้ คุณจะต่อยอดไปงานเปิด-ปิดปั๊มน้ำ, พัดลม, ไฟ, สมาร์ทฟาร์ม หรือระบบ Automation ได้ง่ายขึ้นมาก และลดปัญหารีเลย์กลับด้านได้ตั้งแต่ต้น
ถ้าคุณเริ่มเข้าใจแล้วว่า Active LOW ทำงานยังไง และอยากต่อยอดไปเรื่องการคุมรีเลย์ผ่านเว็บ, การอ่านเซนเซอร์, การเลือก GPIO หรือการทำโปรเจกต์จริง ดูบทความต่อได้ที่หน้า Tutorials ของ Deva DIY ซึ่งรวมบทความสาย ESP32 และงาน Maker เอาไว้ให้แล้ว
FAQ: คำถามที่พบบ่อยเกี่ยวกับ ESP32 Relay Active LOW
รีเลย์ Active LOW คืออะไร
คือรีเลย์ที่สั่งให้ทำงานเมื่อขาควบคุมได้รับลอจิก LOW
ทำไมสั่ง LOW แล้วรีเลย์ถึงติด
Active LOW ต่างจาก Active HIGH ยังไง
Active LOW สั่งทำงานด้วย LOW ส่วน Active HIGH สั่งทำงานด้วย HIGH
รีเลย์ Active LOW ใช้กับ ESP32 ได้ไหม
ได้ ใช้กันเยอะมากในงานจริง แต่ต้องเข้าใจตรรกะและเลือก GPIO ให้เหมาะ
ทำไมรีเลย์ติดเองตอนเปิดเครื่อง
มักเกิดจากการใช้ GPIO ที่มีสถานะพิเศษตอนบูต หรือวงจรรีเลย์ตอบสนองไวมากตอน ESP32 เริ่มทำงาน
ESP32 3.3V ควบคุมรีเลย์ 5V ได้ไหม
หลายโมดูลทำได้ แต่ไม่ใช่ทุกตัว ควรดูสเปกและทดสอบจริง
ควรใช้ GPIO ไหนคุมรีเลย์
เริ่มจากขาที่ใช้งานทั่วไปและไม่ไปยุ่งกับการบูต เช่น GPIO23, GPIO25, GPIO26, GPIO27, GPIO32, GPIO33
จะรู้ได้อย่างไรว่ารีเลย์ของเราเป็น Active LOW
ดูคำว่า low level trigger บนบอร์ดหรือทดสอบจริงด้วยโค้ดสั้น ๆ
ถ้า ON/OFF กลับด้านต้องแก้อย่างไร
RELAY_ON และ RELAY_OFF ให้ตรงกับโมดูลที่ใช้
รีเลย์ Active LOW เหมาะกับงานอะไร
เหมาะกับงานคุมปั๊มน้ำ พัดลม หลอดไฟ โซลินอยด์ และระบบสมาร์ทฟาร์มทั่วไป



