เริ่มต้น ESP32: สอนเขียนโค้ดไฟกระพริบ (Blink LED) สำหรับมือใหม่ Step-by-Step

เริ่มต้น 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 ตามแผนภาพด้านบน

  1. นำ ESP32 เสียบลงบนเบรดบอร์ด
  2. นำ หลอด LED มาเสียบ โดยให้ ขาบวก (ขายาว) และ ขา-ลบ (ขาสั้น) อยู่คนละแถว
  3. ใช้สายจัมเปอร์ต่อจากขา GND (Ground) ของ ESP32 ไปยังแถวเดียวกับ ขา-ลบ ของ LED
  4. นำ ตัวต้านทาน มาต่อคร่อมระหว่างแถวของ ขาบวก LED กับช่องว่างบนเบรดบอร์ด
  5. ใช้สายจัมเปอร์อีกเส้น ต่อจากขา 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 ครับ!

Scroll to Top