กำลังโหลด...
พื้นฐาน GPIO (General Purpose Input/Output) สำหรับ K230
แผนผังขา GPIO ของบอร์ด K230

GPIO (General Purpose Input / Output) คือขาพินที่ใช้รับสัญญาณ (Input) หรือส่งสัญญาณ (Output) ระหว่างบอร์ดไมโครคอนโทรลเลอร์กับอุปกรณ์ภายนอก
อุปกรณ์ที่นิยมใช้ร่วมกับ GPIO เช่น LED, ปุ่มกด, เซนเซอร์, รีเลย์, มอเตอร์ เป็นต้น
ใช้รับสัญญาณจากภายนอก เช่น ปุ่มกด, เซนเซอร์
ใช้ส่งสัญญาณออก เช่น เปิด/ปิด LED, ขับมอเตอร์
Input คือการทำงานของขา GPIO ในโหมดรับข้อมูลจากอุปกรณ์ภายนอกเข้าสู่บอร์ดไมโครคอนโทรลเลอร์ โดยข้อมูลที่รับเข้ามาจะอยู่ในรูปแบบ สัญญาณดิจิทัล (Digital Signal) ซึ่งสามารถมีค่าได้เพียง 2 สถานะ
มีแรงดันไฟฟ้าอยู่ที่ขา GPIO (โดยทั่วไปประมาณ 3.3V)
ไม่มีแรงดันไฟฟ้า หรือแรงดันใกล้เคียง 0V
หมายเหตุ: เมื่อกำหนด GPIO ให้เป็นโหมด Input ขานั้นจะ ไม่จ่ายไฟออกไปยังภายนอก แต่จะทำหน้าที่ตรวจสอบและอ่านสถานะของแรงดันไฟฟ้าที่ถูกป้อนเข้ามาเท่านั้น
หนึ่งในอุปกรณ์ที่นิยมใช้กับ GPIO Input มากที่สุดคือ สวิตช์หรือปุ่มกด (Push Button) ซึ่งทำหน้าที่เปิด–ปิดวงจรไฟฟ้า
วงจรจะอยู่ในสถานะเปิด ทำให้ขา GPIO อ่านค่าเป็น
LOWวงจรถูกปิด แรงดันไฟฟ้าจะถูกส่งเข้าสู่ขา GPIO ทำให้อ่านค่าเป็น
HIGHการต่อสวิตช์เข้ากับ GPIO จะต้องคำนึงถึงความเสถียรของสัญญาณ เนื่องจากหากไม่มีการกำหนดแรงดันอ้างอิง ขา GPIO อาจเกิดสถานะลอย (Floating) ทำให้ค่าที่อ่านได้ไม่แน่นอน
ดังนั้นจึงนิยมใช้ ตัวต้านทาน Pull-up หรือ Pull-down ร่วมกับสวิตช์
ขา GPIO จะถูกดึงให้เป็น HIGH ตลอดเวลา
เมื่อกดสวิตช์ ขา GPIO จะถูกดึงลงเป็น LOW

ขา GPIO จะถูกดึงให้เป็น LOW ตลอดเวลา
เมื่อกดสวิตช์ ขา GPIO จะถูกดึงขึ้นเป็น HIGH

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

1# Source: https://github.com/apinuntong/CMM-K230/blob/main/gpio_input.py
2from machine import Pin
3from machine import FPIOA
4
5fpioa = FPIOA()
6fpioa.set_function(3, FPIOA.GPIO3)
7
8pin = Pin(3, Pin.IN, pull=Pin.PULL_NONE, drive=7)
9print("out = ", pin.value())ยังไม่ได้กดปุ่ม

กดปุ่มแล้ว


1# Source: https://github.com/apinuntong/CMM-K230/blob/main/gpio_input.py
2from machine import Pin
3from machine import FPIOA
4fpioa = FPIOA()
5fpioa.set_function(3, FPIOA.GPIO3)
6pin = Pin(3, Pin.IN, pull=Pin.PULL_NONE, drive=7)
7print("out = ",pin.value())ยังไม่ได้กดปุ่ม

กดปุ่มแล้ว


1# https://github.com/apinuntong/CMM-K230/blob/main/gpio_internal_pull-up_input.py
2from machine import Pin
3from machine import FPIOA
4fpioa = FPIOA()
5fpioa.set_function(3, FPIOA.GPIO3)
6pin = Pin(3, Pin.IN, pull=Pin.PULL_UP, drive=7)
7print("out = ",pin.value())ยังไม่ได้กดปุ่ม

กดปุ่มแล้ว


1# https://github.com/apinuntong/CMM-K230/blob/main/gpio_internal_pull-down_input.py
2from machine import Pin
3from machine import FPIOA
4fpioa = FPIOA()
5fpioa.set_function(3, FPIOA.GPIO3)
6pin = Pin(3, Pin.IN, pull=Pin.PULL_DOWN, drive=7)
7print("out = ",pin.value())ยังไม่ได้กดปุ่ม

กดปุ่มแล้ว

การใช้งาน input สามารถใช้ขา 3, 4, 42, 43, 46, 47, 12, 11, 14, 15, 16, 17 ได้
ใช้ตัวต้านทานภายนอก
✓ สัญญาณรบกวนน้อย
ใช้ตัวต้านทานภายในบอร์ด
✓ วงจรกระชับ
GPIO Output คือโหมดการทำงานของขา GPIO ที่ใช้สำหรับส่งสัญญาณออกจากบอร์ดไปควบคุมอุปกรณ์ภายนอก โดยสัญญาณที่ส่งออกเป็นแบบดิจิทัลซึ่งมีได้เพียง 2 สถานะ
ลอจิก 1
มีแรงดันไฟฟ้าออกจากขา GPIO (ประมาณ 3.3V)
ลอจิก 0
ไม่มีแรงดันไฟฟ้าออกจากขา GPIO (0V)
หนึ่งในอุปกรณ์พื้นฐานที่นิยมใช้ทดสอบ GPIO Output คือ LED (Light Emitting Diode)
LED เป็นอุปกรณ์ที่ยอมให้กระแสไฟไหลได้เพียงทิศทางเดียว และจะเปล่งแสงเมื่อมีกระแสไฟฟ้าไหลผ่านในทิศทางที่ถูกต้อง
มีกระแสไฟไหล → LED ติด
ไม่มีกระแสไฟไหล → LED ดับ
วงจร GPIO Output + LED พื้นฐานจะประกอบด้วย:
ทำหน้าที่จ่ายสัญญาณ HIGH / LOW
อุปกรณ์แสดงผลที่ทำงานเมื่อมีกระแสไฟ
จำกัดกระแสไฟฟ้าที่ไหลผ่าน
จุดวงจรไฟฟ้าภาคพื้นดิน
ข้อควรระวัง: ตัวต้านทานเป็นอุปกรณ์ที่จำเป็นต้องใช้เสมอ เพื่อจำกัดกระแสไฟ ไม่ให้ LED และขา GPIO เสียหาย
ลำดับการต่อโดยทั่วไปคือ:
GPIO Output → ตัวต้านทาน → LED → GND
แรงดันไฟฟ้าจะไหลจาก GPIO ผ่านตัวต้านทาน ผ่าน LED ลงสู่ GND ทำให้ LED ติด
จะไม่มีแรงดันไฟฟ้าไหลในวงจร ทำให้ LED ดับ
ตัวต้านทานทำหน้าที่:
จำกัดกระแสไฟฟ้าที่ไหลผ่าน LED
ป้องกันไม่ให้ GPIO จ่ายกระแสมากเกินไป
LED สว่าง
LED สว่างน้อยลง แต่ปลอดภัยสูง
GPIO ของบอร์ดส่วนใหญ่ใช้แรงดัน 3.3V
GPIO ไม่เหมาะสำหรับจ่ายกระแสสูง
ห้ามต่อ LED เข้ากับ GPIO โดยไม่มีตัวต้านทาน
หากต้องการควบคุมอุปกรณ์ที่กินไฟมาก ควรใช้ทรานซิสเตอร์หรือรีเลย์
วงจร GPIO Output + LED เป็นวงจรพื้นฐานที่ใช้แสดงผลสถานะการทำงานของบอร์ด โดย GPIO จะส่งสัญญาณแบบดิจิทัล (HIGH / LOW) เพื่อควบคุมการติด–ดับของ LED ผ่านตัวต้านทานและกราวด์ การเข้าใจวงจรนี้เป็นพื้นฐานสำคัญก่อนต่อยอดไปสู่งานควบคุมอุปกรณ์และระบบ Embedded ที่ซับซ้อนมากขึ้น
การควบคุม LED ด้วยขา GPIO สามารถต่อวงจรได้ 2 รูปแบบหลัก ตามทิศทางการไหลของกระแสไฟฟ้า คือ
ขา GPIO ทำหน้าที่จ่ายไฟออก (Source Current)
HIGHติดLED จะติด เมื่อ GPIO เป็น
LOWดับLED จะดับ เมื่อ GPIO เป็น

1from machine import Pin
2from machine import FPIOA
3import time
4fpioa = FPIOA()
5fpioa.set_function(3, FPIOA.GPIO3)
6pin = Pin(3, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
7while 1 :
8 pin.value(1)
9 print("LED ON")
10 time.sleep(1)
11 pin.value(0)
12 print("LED OFF")
13 time.sleep(1)ผลลัพธ์การรันโปรแกรม

ขา GPIO ทำหน้าที่ดึงกระแสลงกราวด์ (Sink Current)
LOWติดLED จะติด เมื่อ GPIO เป็น
HIGHดับLED จะดับ เมื่อ GPIO เป็น

ผลลัพธ์การรันโปรแกรม

GPIO Output นั้นสามารถต่อวงจรได้ 2 แบบ แต่ละแบบมีการใช้งานที่ไม่เหมือนกันแล้วแต่งาน สามารถใช้ขา 3, 4, 42, 43, 46, 47, 12, 11, 14, 15, 16, 17 ได้