เริ่มต้น ESP32: สอนเขียนโค้ดไฟกระพริบ (Blink LED) สำหรับมือใหม่ Step-by-Step
สวัสดีครับ! ขอต้อนรับเข้าสู่โลกของ Internet of Things (IoT) กับ krukengblog.com ครับผม สำหรับใครที่เพิ่งเริ่มต้นใช้งานบอร์ด ESP32 ซึ่งเป็นไมโครคอนโทรลเลอร์ที่ทรงพลังและได้รับความนิยมอย่างสูงในปัจจุบัน โปรเจกต์แรกที่ถือเป็นเหมือน “Hello, World!” ของวงการนี้ก็คือ “การทำไฟกระพริบ” หรือ Blink LED นั่นเองครับ
บทความนี้จะพาทุกท่านไปทีละขั้นตอน ตั้งแต่การต่อวงจร ไปจนถึงการเขียนโค้ดเพื่อควบคุมให้หลอด LED กระพริบได้ ถือเป็นพื้นฐานที่สำคัญที่สุดในการก้าวไปสู่โปรเจกต์ IoT ที่ซับซ้อนยิ่งขึ้นในอนาคตครับ ถ้าพร้อมแล้ว ไปเริ่มกันเลย!
อุปกรณ์ที่ต้องใช้
ก่อนจะเริ่มเขียนโค้ด เรามาเตรียมอุปกรณ์ที่จำเป็นกันก่อน ซึ่งเป็นอุปกรณ์พื้นฐานที่หาได้ไม่ยากครับ
- บอร์ด ESP32: หัวใจหลักของการทำงานในโปรเจกต์นี้
- หลอด LED: ขนาด 5mm สีอะไรก็ได้ (ในตัวอย่างใช้สีแดง)
- ตัวต้านทาน (Resistor): ค่าประมาณ 220 – 330 โอห์ม (Ω) เพื่อจำกัดกระแสไฟไม่ให้ LED ของเราเสียหาย
- เบรดบอร์ด (Breadboard): หรือแผงทดลองวงจร ช่วยให้เราต่อวงจรได้ง่ายโดยไม่ต้องบัดกรี
- สายไฟจัมเปอร์ (Jumper Wires): สำหรับเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกัน
(หมายเหตุ: ท่านสามารถนำรูปภาพจากโจทย์มาใส่ในบทความจริงได้)
ขั้นตอนการต่อวงจร
การต่อวงจรนั้นง่ายมากครับ เราจะใช้ขา GPIO 2 ของ ESP32 ในการส่งสัญญาณไฟไปควบคุม LED ตามแผนภาพด้านบน

- นำ ESP32 เสียบลงบนเบรดบอร์ด
- นำ หลอด LED มาเสียบ โดยให้ ขาบวก (ขายาว) และ ขา-ลบ (ขาสั้น) อยู่คนละแถว
- ใช้สายจัมเปอร์ต่อจากขา GND (Ground) ของ ESP32 ไปยังแถวเดียวกับ ขา-ลบ ของ LED
- นำ ตัวต้านทาน มาต่อคร่อมระหว่างแถวของ ขาบวก LED กับช่องว่างบนเบรดบอร์ด
- ใช้สายจัมเปอร์อีกเส้น ต่อจากขา GPIO 2 (ในตัวอย่างบนบอร์ดอาจเขียนว่า D2) ไปยังแถวเดียวกับปลายอีกด้านของตัวต้านทาน
เพียงเท่านี้การต่อวงจรก็เสร็จเรียบร้อย! หลักการคือเมื่อ GPIO 2 ส่งสัญญาณไฟ (HIGH) กระแสจะไหลผ่านตัวต้านทานและ LED ไปครบวงจรที่ขา GND ทำให้ LED สว่างขึ้นมานั่นเองครับ
เจาะลึกโค้ด Arduino IDE สำหรับ ESP32
ต่อไปเป็นขั้นตอนการเขียนโปรแกรมเพื่อสั่งให้ ESP32 ทำงานตามที่เราต้องการครับ

คำอธิบายโค้ด:
const int LED_OUTPUT_PIN = 2;: เราสร้างตัวแปรชื่อLED_OUTPUT_PINขึ้นมาเพื่อเก็บหมายเลขขา GPIO ที่เราใช้ (คือขา 2) การทำแบบนี้ช่วยให้โค้ดอ่านง่าย และถ้าต้องการเปลี่ยนไปใช้ขาอื่นในอนาคต ก็แค่แก้ตัวเลขที่บรรทัดนี้ที่เดียวvoid setup(): ฟังก์ชันนี้จะทำงาน เพียงครั้งเดียว เมื่อบอร์ด ESP32 เริ่มทำงาน (ตอนเสียบสาย USB หรือกดปุ่มรีเซ็ต) เราใช้ฟังก์ชันนี้ในการตั้งค่าเริ่มต้นต่างๆpinMode(LED_OUTPUT_PIN, OUTPUT);: เป็นคำสั่งสำคัญที่บอกให้ ESP32 รู้ว่า เราจะใช้ขา GPIO 2 เป็น ขาออก (OUTPUT) เพื่อส่งสัญญาณไปควบคุมอุปกรณ์อื่น
void loop(): คือหัวใจของโปรแกรม ฟังก์ชันนี้จะทำงาน วนซ้ำไปเรื่อยๆ หลังจากที่setup()ทำงานเสร็จแล้วdigitalWrite(LED_OUTPUT_PIN, HIGH);: สั่งให้ขาLED_OUTPUT_PIN(GPIO 2) ปล่อยสถานะเป็น HIGH หรือมีแรงดันไฟ 3.3V ทำให้ LED สว่างdelay(1000);: สั่งให้โปรแกรมหยุดรอเป็นเวลา 1000 มิลลิวินาที หรือ 1 วินาที ในระหว่างนี้ LED จะยังคงสว่างอยู่digitalWrite(LED_OUTPUT_PIN, LOW);: สั่งให้ขาLED_OUTPUT_PINเปลี่ยนสถานะเป็น LOW หรือมีแรงดันไฟ 0V ทำให้ LED ดับลงdelay(1000);: สั่งให้หยุดรออีก 1 วินาที ในขณะที่ LED ดับอยู่
เมื่อจบ delay() ตัวสุดท้าย โปรแกรมก็จะวนกลับไปทำคำสั่งแรกใน loop() ใหม่ เป็นผลให้ LED ของเราติด 1 วินาที และดับ 1 วินาที สลับกันไปเรื่อยๆ ครับ
สรุปและขั้นตอนต่อไป
ขอแสดงความยินดีด้วยครับ! ตอนนี้คุณได้เรียนรู้พื้นฐานการควบคุมขา GPIO (General Purpose Input/Output) ของ ESP32 ซึ่งเป็นทักษะที่สำคัญที่สุดในการสร้างสรรค์โปรเจกต์ IoT แล้ว
สิ่งที่ได้เรียนรู้:
- การต่อวงจรพื้นฐานสำหรับควบคุม LED
- โครงสร้างของโปรแกรม Arduino (
setup()และloop()) - คำสั่ง
pinMode()เพื่อกำหนดหน้าที่ของขา GPIO - คำสั่ง
digitalWrite()เพื่อสั่งเปิด-ปิดอุปกรณ์ดิจิทัล - คำสั่ง
delay()เพื่อหน่วงเวลา
ลองทำอะไรต่อ?
- ลองปรับแก้ตัวเลขใน
delay()เช่นdelay(200);เพื่อทำให้ไฟกระพริบเร็วขึ้น - ลองเพิ่ม LED อีกดวงที่ขา GPIO อื่น แล้วเขียนโค้ดให้มันกระพริบสลับกัน
- ศึกษาการรับค่าจากเซ็นเซอร์ (INPUT) เพื่อนำมาใช้ควบคุมการเปิด-ปิดไฟ
หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้เริ่มต้นทุกท่านนะครับ หากมีคำถามหรือข้อสงสัย สามารถแสดงความคิดเห็นไว้ที่ด้านล่างได้เลย แล้วพบกันใหม่ในบทความต่อไปของ krukengblog.com ครับ!



