ESP-IDF ตอนที่ 2 ESP32 สั่งเปิด/ปิดไฟ LED


สวัสดีครับ วันนี้เราจะมาเรียนรู้การสั่งงาน GPIO บนบอร์ด ESP32 กัน สำหรับคนที่ยังไม่รู้ว่า GPIO คืออะไร เรามาทำความเข้าใจกันก่อนนะครับ 




รูปที่ 1 พอร์ตและ I/O ของบอร์ด DOIT ESP32 DEVKIT V1

        GPIO ก็คือพอร์ตต่างๆ ที่อยู่บนบอร์ด ESP32 ซึ่งเราสามารถควบคุมและสั่งงานได้ ในการสั่งงานพอร์ตต่างๆ เราสามารถกำหนดได้ด้วยนะครับว่าจะให้แต่ละพอร์ตนั้นเป็นอินพุตหรือเอาต์พุต คำถามต่อมาอินพุตและเอาต์พุต คืออะไร ???

       อินพุตก็คือการรับข้อมูลจากเซนเซอร์ต่างๆ ที่เรานำมาเชื่อมต่อ ส่วนเอาต์พุตก็จะเป็นการสั่งงานอุปกรณ์ต่างๆ ซึ่งจะอยู่ในลักษณะของการ เปิด/ปิด ไฟ เช่นการสั่งงานเปิด/ปิด ไฟ LED และ การสั่งงาน Motor เป็นต้น


รูปที่ 2 ตัวอย่างอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ที่เรานำมาใช้งาน

        จากบทความก่อนหน้านี้เราได้ทำการติดตั้ง ESP-IDF และลองอัพโหลดโปรแกรมแสดงข้อความ Hello world ลงบอร์ด ESP32 กันไปแล้ว วันนี้เราจะมาทำให้หลอดไฟ LED บนบอร์ด DOIT ESP32 DEVKIT V1 กระพริบแบบเป็นจังหวะกันนะครับ

        ก่อนที่จะเข้าสู่การเขียนโปรแกรมเพื่อสั่งงาน GPIO เราต้องทำความรู้จักกับคำสั่งต่างๆ พวกนี้ก่อน ในการสั่ง เปิด/ปิด หลอดไฟ LED เราต้องนำเข้าไลบรารี่ gpio.h เพื่อให้เราสามารถเรียกใช้งานคำสั่งต่างๆ ที่เกี่ยวข้องกับการสั่งงาน GPIO ของบอร์ด ESP32 เมื่อนำเข้าเสร็จแล้ว เราต้องทำการตั้งค่า GPIO โดยใช้คำสั่ง

gpio_pad_select_gpio(BLINK_GPIO); 
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);

        สำหรับคำสั่งด้านบนนี้เราใช้เพื่อกำหนดสถานะการทำงานให้กับ GPIO ว่าจะให้เป็นอินพุตหรือเอาต์พุต หลังจากกำหนดสถานะการทำงานของ GPIO เสร็จ เราสามารถที่จะสั่งงาน GPIO ให้มีสถานะเป็น HIGH หรือ LOW ได้โดยใช้คำสั่ง

gpio_set_level(BLINK_GPIO, 0);

Note: 1 ::: HIGH  or 3.3 V , 0 ::: LOW   or 0V

        ตอนนี้เรารู้แล้วว่าแต่ละคำสั่งคำสั่งใช้ทำอะไร ถึงเวลาที่ต้องมาลุยโปรแกรมกันแล้ว ให้เราเปิดหน้าต่าง Terminal ขึ้นมาแล้วก๊อปปี้คำสั่งที่อยู่ด้านล่างนี้ไปวางใน Terminal จากนั้นก็กด Enter ได้เลยนะครับ เพื่อเข้าไปในไดเรกทอรี่ตัวอย่างที่ชื่อว่า blink  

cd esp/esp-idf/examples/get-started/blink

        พอเข้ามาแล้วให้เราเข้าไปแก้ไขข้อมูลในไฟล์ blink.c ซึ่งอยู่ในไดเรกทอรี่ main ในส่วนนี้ให้เราก๊อปปี้โค้ดโปรแกรมที่อยู่ด้านล่างนี้ไปวางทับโค้ดโปรแกรมเดิมได้เลยนะครับ เราสามารถเข้าไปแก้ไขข้อมูลในไฟล์โดยใช้โปรแกรม Text editor อย่าง vi หรือ nano ได้ครับ


        หลังจากแก้ไขข้อมูลเสร็จ ให้เราบันทึกการเปลี่ยนแปลงข้อมูลในไฟล์ และเชื่อมต่อบอร์ด ESP32 เข้ากับคอมพิวเตอร์ จากนั้นเราจะทำการ Build ไฟล์โปรแกรมโดยใช้คำสั่ง 

make all

        หลังจาก Build ไฟล์เสร็จเรียบร้อยให้เรา Flash โปรแกรมลงบอร์ด ESP32 โดยใช้คำสั่ง 

make flash

Note: สำหรับขั้นตอนนี้ใครที่มีปัญหาในการ Build ไฟล์ หรือ Flash โปรแกรม ให้ลองกลับไปอ่านบทความตอนที่ 1 Get Started ดูนะครับ



        หลังจาก Flash โปรแกรมเสร็จเราก็จะเห็นบอร์ด DOIT ESP32 DEVKIT V1 กระพริบไฟแบบเป็นจังหวะ ติด/ดับ สลับกัน


        สิ่งที่เราได้เรียนรู้ในวันนี้ก็คือการสั่งงาน GPIO ของบอร์ด ESP32 ซึ่งเป็นพื้นฐานที่เราจะนำไปสั่งงานอุปกรณ์ต่างๆ ไม่ว่าจะเป็นมอเตอร์ วงจับขับมอเตอร์ และอื่นๆ อีกมากมาย ในบทความหน้าเราจะมาเขียนโปรแกรมเพื่อรับค่าการกดปุ่มจากสวิตช์กันนะครับ 
        
       บทความนี้เขียนขึ้นมาโดยใช้ความรู้ความเข้าใจของผู้เขียน ที่เคยทำการศึกษาและทดลองใช้งานมา หากมีข้อเสนอแนะหรือข้อคิดเห็นอื่นๆ เพิ่มเติม สามารถเสนอแนะมาได้เลยนะครับ

แหล่งอ้างอิง
https://esp-idf.readthedocs.io/en/latest/index.html

สอบถามข้อมูลเพิ่มเติม
Facebook: รักการเขียนโค้ด ดอทคอม 
Tell: 091-4782789

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ทำ Web server เพื่อรับข้อมูลจาก Sensor และควบคุมอุปกรณ์ต่างๆ ตอนที่ 2 ส่งข้อมูลจากบอร์ด NodeMCU ขึ้น Web Server

การควบคุมมอเตอร์ Brushless ด้วย Arduino

เรียนรู้การออกแบบวงจรอิเล็กทรอนิกส์พื้นฐาน และใช้งานบอร์ด Arduino ตอนที่ 1 ทำความรู้จักกับโปรแกรม Tinkercad Circuits