ESP32 Relay 4 ช่อง 3V: วิธีต่อ Relay Module เปิดปิดไฟบ้านผ่าน GPIO
ESP32 Relay 4 ช่อง 3V: วิธีต่อ Relay Module เปิดปิดไฟบ้านผ่าน GPIO
บทความนี้จะสอนต่อ ESP32 Relay 4 ช่อง 3V โดยใช้ ESP32 NodeMCU ESP-WROOM-32 กับบอร์ด Relay 4 Channel 3V แบบ Isolation High and Low Trigger เน้นการต่อวงจรที่ถูกต้อง อธิบาย GPIO แต่ละขา และเขียนโค้ด Arduino ควบคุมการเปิด-ปิดรีเลย์ทีละตัวตามลำดับ
ถ้าไม่แน่ใจเรื่อง COM/NO/NC, relay active low หรือความต่างระหว่าง relay 3V/5V ให้อ่าน รีเลย์ Arduino/ESP32 คืออะไร ก่อน แล้วค่อยกลับมาทำวงจร ESP32 4 ช่องในหน้านี้ หรือถ้าต้องการระบบควบคุมผ่านมือถือ ดู รับทำโปรเจค ESP32
คำเตือน: ส่วนที่เกี่ยวกับไฟ 220V AC เป็นอันตรายถึงชีวิต ถ้าไม่มั่นใจให้ปรึกษาช่างไฟฟ้าที่มีใบอนุญาต
อุปกรณ์ที่ต้องใช้
| อุปกรณ์ | จำนวน | หมายเหตุ |
|---|---|---|
| ESP32 NodeMCU ESP-WROOM-32 | 1 บอร์ด | Wi-Fi + Bluetooth, Dual Core |
| บอร์ด Relay 4 Channel 3V | 1 บอร์ด | Isolation High/Low Trigger 250V/10A |
| Breadboard 170 จุด | 1 ชิ้น | สำหรับทดลองวงจร |
| สาย Micro USB Type B | 1 เส้น | ยาว 1 เมตร |
| Power Adapter Micro USB 5V 2A | 1 ตัว | จ่ายไฟให้ ESP32 |
| ESP32 Screw Shield (30 Pin) | 1 ชิ้น | ช่วยต่อสายง่ายขึ้น |
| สาย Jumper ผู้-ผู้ 20cm | 40 เส้น | |
| สาย Jumper ผู้-เมีย 20cm | 40 เส้น | |
| สาย Jumper เมีย-เมีย 20cm | 40 เส้น | |
| ขั้วหลอดไฟ E27 + หลอด LED 7W | 1 ชุด | สำหรับทดสอบโหลด |
| สายไฟ 2*0.75 พร้อมหัวปลั๊ก | 2 เส้น | ยาว 1.5m และ 2m |
วงจร Relay Module 4 Channel ทำงานอย่างไร
บอร์ด Relay 4 Channel แต่ละช่องมีโครงสร้างภายในประกอบด้วย:
- ขา VCC — จ่ายไฟ 5V ให้วงจรควบคุมภายในรีเลย์
- ขา GND — ขากราวด์ร่วม
- ขา Signal (S1-S4) — รับสัญญาณดิจิทัลจาก ESP32 เพื่อสั่งให้รีเลย์ทำงาน
- ขา COM — ขากลางของหน้าสัมผัส (Common)
- ขา NO — หน้าสัมผัสปกติเปิด (Normal Open) — จะปิดเมื่อรีเลย์ทำงาน
- ขา NC — หน้าสัมผัสปกติปิด (Normal Closed) — จะเปิดเมื่อรีเลย์ทำงาน
หลักการคือเมื่อสัญญาณจาก ESP32 ส่งมาที่ขา Signal ควบคุมให้ขา NO กับ COM ต่อกัน ทำให้กระแสไฟ AC ไหลผ่านได้
การต่อสาย ESP32 กับ Relay Module
ส่วนควบคุม (ไฟ 5V DC)
| ESP32 | บอร์ด Relay 4 Channel |
|---|---|
| Vin (5V) | VCC |
| GND | GND |
| D23 | S1 |
| D22 | S2 |
| D21 | S3 |
| D19 | S4 |
ส่วนโหลด (ไฟ 220V AC)
สำหรับควบคุมหลอดไฟ 1 ดวง (ใช้รีเลย์ 1 ช่อง):
- สาย L (ไฟร้อน) จากปลั๊กบ้าน → ขา NO ของรีเลย์ช่องที่ 4
- ขา COM ของรีเลย์ช่องที่ 4 → สาย L ไปเข้าหลอดไฟ
- สาย N (ไฟเย็น) จากปลั๊กบ้าน → สาย N เข้าหลอดไฟโดยตรง
หมายเหตุ: ถ้าต้องการใช้รีเลย์หลายช่องควบคุมหลอดไฟหลายดวง ให้ต่อแต่ละช่องเป็นอิสระตามวิธีเดียวกัน
[image: วงจรไฟ AC 220V — สายไฟบ้าน L เข้ารีเลย์ช่อง 4 ที่ขา NO และ COM ออกไปเข้าหลอดไฟ E27 สาย N ต่อตรง]
โค้ด Arduino ควบคุมรีเลย์แบบเรียงลำดับ
// กำหนดขาสัญญาณที่ต่อกับ Relay 4 Channel
const int RELAY_S1 = 23; // รีเลย์ช่องที่ 1
const int RELAY_S2 = 22; // รีเลย์ช่องที่ 2
const int RELAY_S3 = 21; // รีเลย์ช่องที่ 3
const int RELAY_S4 = 19; // รีเลย์ช่องที่ 4
void setup() {
// ตั้งค่าขาทั้ง 4 ขาเป็น Output
pinMode(RELAY_S1, OUTPUT);
pinMode(RELAY_S2, OUTPUT);
pinMode(RELAY_S3, OUTPUT);
pinMode(RELAY_S4, OUTPUT);
// ปิดรีเลย์ทุกตัวเริ่มต้น (ปรับเป็น HIGH หรือ LOW ตามชนิดของบอร์ด)
digitalWrite(RELAY_S1, LOW);
digitalWrite(RELAY_S2, LOW);
digitalWrite(RELAY_S3, LOW);
digitalWrite(RELAY_S4, LOW);
}
void loop() {
// เปิดรีเลย์ทีละตัว หน่วงเวลา 1 วินาที
digitalWrite(RELAY_S1, HIGH);
delay(1000);
digitalWrite(RELAY_S2, HIGH);
delay(1000);
digitalWrite(RELAY_S3, HIGH);
delay(1000);
digitalWrite(RELAY_S4, HIGH); // หลอดไฟจะติดที่จุดนี้
delay(1000);
// ปิดรีเลย์ทีละตัว หน่วงเวลา 1 วินาที
digitalWrite(RELAY_S1, LOW);
delay(1000);
digitalWrite(RELAY_S2, LOW);
delay(1000);
digitalWrite(RELAY_S3, LOW);
delay(1000);
digitalWrite(RELAY_S4, LOW);
delay(1000);
}
ขั้นตอนการอัปโหลดโค้ด
- เปิด Arduino IDE → วางโค้ดด้านบน
- ไปที่ Tools → Port → เลือก Port ที่ ESP32 เชื่อมต่อ
- ไปที่ Tools → Board → เลือกประเภทบอร์ด ESP32 ที่ใช้
- กดปุ่ม Upload (ลูกศรขวา)
- รอจนขึ้น Done uploading ที่แถบด้านล่าง
จุดที่ต้องปรับ: ถ้ารีเลย์ไม่ทำงาน ให้ลองสลับ
digitalWrite(pin, LOW)เป็นHIGHเนื่องจากบอร์ดรีเลย์แต่ละรุ่นใช้ Trigger ต่างกัน (บางรุ่น Active LOW)
ทดสอบการทำงาน
เมื่ออัปโหลดโค้ดเสร็จแล้ว จะเห็นพฤติกรรมดังนี้:
- รีเลย์ช่องที่ 1 ติด → relay click
- รีเลย์ช่องที่ 2 ติด → relay click
- รีเลย์ช่องที่ 3 ติด → relay click
- รีเลย์ช่องที่ 4 ติด → หลอดไฟติด (วงจร AC ปิด)
- รีเลย์ช่องที่ 1-4 ดับตามลำดับ → หลอดไฟดับ
- วนซ้ำทุก 8 วินาที
[image: ลำดับการทำงานของรีเลย์ 4 ช่อง — แสดง Timeline ตามแนวนอน มี 4 แถวแทนรีเลย์แต่ละช่อง ช่วงเวลาที่ HIGH ใช้สีเข้ม ช่วง LOW ใช้สีอ่อน พร้อมข้อความบอกว่าหลอดไฟติดช่วงไหน]
ข้อควรระวังเรื่องความปลอดภัย
- แยกส่วน DC ออกจากส่วน AC — สายไฟ 220V ต้องพาดผ่านบอร์ดรีเลย์อย่างเป็นระเบียบ ไม่ชนสายสัญญาณ
- ใช้ขั้วหลอดไฟที่ถูกต้อง — ขั้ว E27 ต้องมีฝาครอบป้องกันไฟฟ้าสัมผัส
- ห้ามแตะส่วน AC ขณะจ่ายไฟ — ปิดสวิตช์หรือถอดปลั๊กก่อนต่อสาย
- ตรวจสอบ spec รีเลย์ก่อนใช้ — รีเลย์รุ่นนี้รับได้ 250V/10A อย่าดึงโหลดเกิน
- Isolation optocoupler — บอร์ดนี้มี optocoupler กั้นระหว่างวงจรควบคุมกับวงจรโหลด ช่วยป้องกันไฟกระซิกกลับมาเสียหาย ESP32
ขยายความรู้เพิ่มเติม
High Trigger กับ Low Trigger
บอร์ด Relay บางรุ่นใช้ Active LOW คือสั่ง LOW แล้วรีเลย์ทำงาน ถ้าใช้โค้ดด้านบนแล้วรีเลย์สวิตช์ตลอดเวลาแม้ปิดโค้ด แสดงว่าบอร์ดที่ใช้เป็น Active LOW ให้สลับสถานะเริ่มต้นและคำสั่งใน loop
ต่อหลายหลอดพร้อมกัน
ถ้าต้องการให้หลอดไฟทุกดวงติดพร้อมกัน เปลี่ยนโค้ดใน loop() เป็น:
void loop() {
// เปิดทั้ง 4 รีเลย์พร้อมกัน
digitalWrite(RELAY_S1, HIGH);
digitalWrite(RELAY_S2, HIGH);
digitalWrite(RELAY_S3, HIGH);
digitalWrite(RELAY_S4, HIGH);
delay(3000);
// ปิดทั้ง 4 รีเลย์พร้อมกัน
digitalWrite(RELAY_S1, LOW);
digitalWrite(RELAY_S2, LOW);
digitalWrite(RELAY_S3, LOW);
digitalWrite(RELAY_S4, LOW);
delay(3000);
}
ปิดเปิดรีเลย์จากเว็บ
เมื่อเชื่อม ESP32 เข้า Wi-Fi แล้ว ใช้ Web Server หรือ Blynk ควบคุมรีเลย์จากมือถือได้ ซึ่งเป็นการปูทางสู่โปรเจกต์ Smart Home ขั้นต่อไป
สรุป
การต่อ ESP32 กับ Relay 4 Channel 3V มีหลักการง่าย ๆ คือ จ่ายไฟ 5V ให้บอร์ดรีเลย์ → ต่อ GND ร่วม → สั่งขา Signal ด้วย digitalWrite ตามขาที่กำหนด (D23 D22 D21 D19) ส่วนไฟ 220V AC ให้ต่อที่ขา COM และ NO อย่างถูกต้อง และอย่าลืมว่าความปลอดภัยต้องมาก่อนเสมอ
วิดีโออ้างอิง
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย