Raspberry Pi เป็นคอมพิวเตอร์บอร์ดเดี่ยวที่หลากหลายซึ่งได้กลายเป็นที่ชื่นชอบในหมู่มือสมัครเล่นนักการศึกษาและมืออาชีพเหมือนกัน หนึ่งในคุณสมบัติที่ทรงพลังที่สุดคือความสามารถในการโต้ตอบกับโลกทางกายภาพผ่านพินอินพุต/เอาต์พุต (GPIO) วัตถุประสงค์ทั่วไป ด้วยการใช้ประโยชน์จาก Python ซึ่งเป็นภาษาการเขียนโปรแกรมที่เป็นมิตรและทรงพลังคุณสามารถควบคุมหมุด GPIO เหล่านี้เพื่อสร้างโครงการที่หลากหลายตั้งแต่ไฟกะพริบ LED อย่างง่ายไปจนถึงระบบอัตโนมัติในบ้านที่ซับซ้อน ในโพสต์บล็อกนี้เราจะนำคุณผ่านพื้นฐานของการใช้ Raspberry Pi เพื่อควบคุม GPIO ด้วย Python
ทำความเข้าใจกับหมุด GPIO
พิน GPIO เป็นอินเทอร์เฟซอเนกประสงค์บน Raspberry Pi ที่ช่วยให้คุณสามารถเชื่อมต่อและควบคุมอุปกรณ์ภายนอกเช่น LEDs เซ็นเซอร์มอเตอร์และอื่น ๆ ขึ้นอยู่กับรูปแบบของ Raspberry Pi คุณจะพบว่ามีหมุด GPIO จำนวนมากที่จัดเรียงในรูปแบบเฉพาะ พินเหล่านี้สามารถกำหนดค่าเป็นอินพุตหรือเอาต์พุต:
- ป้อนข้อมูล: อ่านสัญญาณจากอุปกรณ์ภายนอก (เช่นปุ่ม, เซ็นเซอร์)
- เอาท์พุท: ส่งสัญญาณไปยังอุปกรณ์ภายนอก (เช่นไฟ LED, รีเลย์)
ก่อนที่จะดำน้ำในด้านการเขียนโปรแกรมจำเป็นต้องเข้าใจเค้าโครงพินของ Raspberry Pi ของคุณ อ้างถึงแผนภาพ Raspberry Pi GPIO Pinout อย่างเป็นทางการสำหรับข้อมูลที่ถูกต้องเฉพาะสำหรับรุ่นของคุณ
การตั้งค่า Raspberry Pi ของคุณ
ในการเริ่มควบคุมพิน GPIO ด้วย Python ให้แน่ใจว่า Raspberry Pi ของคุณตั้งค่าอย่างถูกต้อง:
- ติดตั้ง Raspberry Pi OS ล่าสุด: ตรวจสอบให้แน่ใจว่า Raspberry Pi ของคุณใช้งาน Raspberry Pi OS เวอร์ชันล่าสุด คุณสามารถดาวน์โหลดได้จากเว็บไซต์ Raspberry Pi อย่างเป็นทางการและใช้เครื่องมือเช่น Raspberry Pi Imager เพื่อแฟลชลงในการ์ด SD ของคุณ
- อัปเดตระบบของคุณ: เปิดเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้เพื่ออัปเดตแพ็คเกจระบบของคุณ:
sudo apt update
sudo apt upgrade -y
sudo apt install python3-rpi.gpio
การเขียนสคริปต์ GPIO Python แรกของคุณ
เริ่มต้นด้วยโครงการง่าย ๆ : กระพริบ LED คุณจะต้องมีส่วนประกอบต่อไปนี้:
- Raspberry Pi
- นำ
- ตัวต้านทาน 220-OHM
- เครื่องหั่นขนมปังและสายจัมเปอร์
สายไฟ LED:
- เชื่อมต่อขายาว (ขั้วบวก) ของ LED ไปยังพิน GPIO 17 ผ่านตัวต้านทาน
- เชื่อมต่อขาสั้น (แคโทด) ของ LED กับพินพื้น (GND) บน Raspberry Pi
ตอนนี้เรามาเขียนสคริปต์ Python เพื่อควบคุม LED
กระพริบ LED ด้วย Python
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Set GPIO pin 17 as output
LED_PIN = 17
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
time.sleep(1) # Wait for 1 second
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(1) # Wait for 1 second
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup() # Reset GPIO settings
คำอธิบาย:
-
import RPi.GPIO as GPIO
: นำเข้าไลบรารี RPI.GPIO -
import time
: นำเข้าโมดูลเวลาสำหรับฟังก์ชั่นการนอนหลับ -
GPIO.setmode(GPIO.BCM)
: ตั้งค่ารูปแบบการกำหนดหมายเลขพิน GPIO เป็น BCM (ช่อง Broadcom SoC) -
GPIO.setup(LED_PIN, GPIO.OUT)
: กำหนดค่า gpio pin 17 เป็นพินเอาต์พุต - ที่
try
บล็อกมีลูปที่ไม่มีที่สิ้นสุดที่เปิดและปิด LED ทุกวินาที -
GPIO.cleanup()
: ทำความสะอาดการตั้งค่า GPIO เพื่อให้แน่ใจว่าทางออกที่สะอาด
เรียกใช้สคริปต์ของคุณ
บันทึกสคริปต์ของคุณเป็น blink_led.py
และเรียกใช้โดยใช้คำสั่งต่อไปนี้:
python3 blink_led.py
คุณควรเห็น LED ที่เชื่อมต่อกับ GPIO Pin 17 กระพริบเปิดและปิดทุกวินาที หากต้องการหยุดสคริปต์ให้กด Ctrl + C
.
ขยายโครงการของคุณ
เมื่อคุณเชี่ยวชาญการกระพริบ LED คุณสามารถสำรวจโครงการที่ซับซ้อนมากขึ้นโดยการรวมเซ็นเซอร์และแอคทูเอเตอร์ที่แตกต่างกัน นี่คือแนวคิดบางประการที่คุณจะเริ่มต้น:
- การโต้ตอบของปุ่ม: ควบคุม LED โดยใช้ปุ่มทางกายภาพ สิ่งนี้เกี่ยวข้องกับการตั้งค่าพิน GPIO เป็นอินพุตและอ่านสถานะในสคริปต์ Python ของคุณ
- การบันทึกข้อมูลเซ็นเซอร์: ใช้เซ็นเซอร์เช่นอุณหภูมิหรือเครื่องตรวจจับการเคลื่อนไหวเพื่อรวบรวมข้อมูลและเข้าสู่ระบบเพื่อการวิเคราะห์
- ระบบอัตโนมัติในบ้าน: เครื่องใช้ไฟฟ้าควบคุมจากระยะไกลโดยรวมการควบคุม GPIO กับเว็บอินเตอร์เฟสหรือแอพมือถือ
การควบคุมปุ่ม
มาขยายตัวอย่างก่อนหน้าของเราโดยการเพิ่มปุ่มเพื่อควบคุม LED คุณจะต้อง:
- ปุ่มกด
- ตัวต้านทาน 10k-Ohm
- สายจัมเปอร์เพิ่มเติม
สายไฟปุ่ม:
- เชื่อมต่อปุ่มหนึ่งขากับ GPIO Pin 27
- เชื่อมต่อขาอีกข้างเข้ากับกราวด์ (GND) พินผ่านตัวต้านทาน 10K-OHM
นี่คือสคริปต์ Python เพื่อควบคุม LED ด้วยปุ่ม:
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Define GPIO pins
LED_PIN = 17
BUTTON_PIN = 27
# Set up GPIO pins
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
button_state = GPIO.input(BUTTON_PIN)
if button_state == GPIO.HIGH:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
else:
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(0.1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
คำอธิบาย:
- GPIO PIN 27 ถูกตั้งค่าเป็นอินพุตที่มีตัวต้านทานแบบดึงลงเพื่อให้แน่ใจว่าสถานะที่มั่นคงเมื่อปุ่มไม่ถูกกด
- สคริปต์อ่านสถานะของปุ่มอย่างต่อเนื่องและเปิด LED เมื่อกดปุ่ม
แนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับความปลอดภัย
เมื่อทำงานกับหมุด GPIO สิ่งสำคัญคือต้องปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเพื่อหลีกเลี่ยงการทำลาย Raspberry Pi หรือส่วนประกอบที่เชื่อมต่อ:
- ปิดเครื่องเมื่อเชื่อมต่อฮาร์ดแวร์: ปิด Raspberry Pi ของคุณเสมอก่อนที่จะเชื่อมต่อหรือตัดการเชื่อมต่อฮาร์ดแวร์เพื่อป้องกันการลัดวงจร
- ใช้ตัวต้านทาน จำกัด ปัจจุบัน: ปกป้องส่วนประกอบของคุณโดยใช้ตัวต้านทานที่เหมาะสมโดยเฉพาะอย่างยิ่งเมื่อทำงานกับ LED
- สายตรวจสอบสองครั้ง: ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดถูกต้องเพื่อป้องกันความเสียหายจากอุบัติเหตุจากหมุด GPIO
- จัดการด้วยความระมัดระวัง: หลีกเลี่ยงการปล่อยแบบคงที่โดยการจัดการ Raspberry Pi และส่วนประกอบอย่างระมัดระวัง
บทสรุป
การควบคุมพิน GPIO ด้วย Python บน Raspberry Pi เปิดโลกแห่งความเป็นไปได้ในการสร้างโครงการแบบโต้ตอบและอัตโนมัติ จากงานง่าย ๆ เช่นไฟ LED กระพริบไปจนถึงระบบที่ซับซ้อนมากขึ้นที่เกี่ยวข้องกับเซ็นเซอร์และแอคทูเอเตอร์หลายตัวการควบคุม GPIO เป็นทักษะพื้นฐานสำหรับผู้ที่ชื่นชอบราสเบอร์รี่ Pi โดยทำตามขั้นตอนที่ระบุไว้ในคู่มือนี้และปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดคุณจะสามารถสร้างโครงการที่น่าตื่นเต้นและเป็นนวัตกรรมได้ดี
มีความสุขในการซ่อมแซม!