การเรียนรู้การใช้พิน GPIO บน Raspberry Pi ของคุณเป็นการเปิดโลกแห่งความเป็นไปได้ หลักการพื้นฐานที่เรียนรู้ผ่านโปรเจ็กต์สำหรับผู้เริ่มต้นจะปูทางไปสู่ความรู้ที่เป็นประโยชน์ทั้งอุปกรณ์อิเล็กทรอนิกส์ DIY และการเขียนโปรแกรม
บทช่วยสอนนี้จะแสดงให้คุณเห็นสองวิธีในการเพิ่มปุ่มในโครงการ Raspberry Pi ของคุณ ปุ่มนี้จะใช้เพื่อควบคุม LED คำแนะนำเป็นลายลักษณ์อักษรอยู่ด้านล่างวิดีโอ
คุณจะต้องการ
ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีส่วนประกอบต่อไปนี้:
- 1 x Raspberry Pi (จะทำอะไรก็ได้ โมเดล 3B ถูกใช้ในบทช่วยสอนนี้)
- 1 x ปุ่มกด
- 1 x LED
- ตัวต้านทาน 1 x 220 โอห์ม (ค่าที่สูงขึ้นก็ใช้ได้ ไฟ LED ของคุณจะหรี่ลง)
- 1 x เขียงหั่นขนม
- ต่อสายไฟ
เมื่อรวบรวมแล้ว คุณควรมีส่วนประกอบที่มีลักษณะดังนี้:
คุณจะต้องมีการ์ด SD ที่ติดตั้งระบบปฏิบัติการ Raspbian วิธีที่รวดเร็วที่สุดในการทำเช่นนี้คือการใช้อิมเมจ NOOBS (ซอฟต์แวร์ใหม่แกะกล่อง) คำแนะนำเกี่ยวกับวิธีการทำเช่นนี้มีอยู่ในวิดีโอนี้:
การตั้งค่าวงจร
คุณจะใช้พิน GPIO ของ Pi เพื่อสร้างวงจร และถ้าคุณไม่คุ้นเคยกับพวกมัน คำแนะนำเกี่ยวกับหมุด Raspberry Pi GPIO จะช่วย. วงจรที่นี่เกือบจะเหมือนกับในครั้งก่อนของเรา โครงการ LED Raspberry Pi ด้วยการเพิ่มปุ่มที่คุณจะใช้ในวันนี้
ตั้งค่าวงจรของคุณตามแผนภาพนี้:
- NS 5v และ GND หมุดเชื่อมต่อกับรางไฟของเขียงหั่นขนม
- พิน 12 (GPIO 18) เชื่อมต่อกับขาบวกของ LED
- ขาเดียวของ ตัวต้านทาน ยึดติดกับขาด้านลบของ LED และขาอีกข้างยึดติดกับรางพื้นของเขียงหั่นขนม
- พิน 16 (GPIO 23) ติดที่ด้านหนึ่งของปุ่ม อีกด้านหนึ่งติดกับรางกราวด์ของเขียงหั่นขนม
เมื่อตั้งค่าแล้ว ควรมีลักษณะดังนี้:
ตรวจสอบวงจรของคุณเพื่อให้แน่ใจว่าถูกต้อง จากนั้นเปิดเครื่อง Raspberry Pi
วิธีที่ 1: ไลบรารี RPi.GPIO
เมื่อ Pi บูทแล้วให้ไปที่เมนูแล้วเลือก การเขียนโปรแกรม> Thonny Python IDE . สคริปต์ Python ใหม่จะเปิดขึ้น หากคุณยังใหม่กับ Python เลย มันเป็นภาษาที่ยอดเยี่ยมสำหรับผู้เริ่มต้น และมีสถานที่ที่ยอดเยี่ยมมากมายในการเรียนรู้เพิ่มเติมเกี่ยวกับ Python หลังจากคุณทำแบบฝึกหัดนี้เสร็จแล้ว!
เริ่มต้นด้วยการนำเข้าไลบรารี RPi.GPIO และตั้งค่าโหมดบอร์ด
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
ตอนนี้ประกาศตัวแปรสำหรับ LED และหมายเลขพินของปุ่ม
ledPin = 12
buttonPin = 16
โปรดทราบว่าเนื่องจากเราตั้งค่าโหมดบอร์ดเป็น กระดาน เราใช้หมายเลขพินแทนหมายเลข GPIO หากคุณสับสน แผนภูมิ Pinout ของ Raspberry Pi สามารถช่วยชี้แจงได้
การตั้งค่าปุ่ม
ได้เวลาตั้งค่าพิน GPIO แล้ว ตั้งค่าพิน LED เป็นเอาต์พุต และพินปุ่มเพื่ออินพุตด้วยตัวต้านทานแบบดึงขึ้น
GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
ข้อความหลังจาก GPIO.IN หมายถึง ตัวต้านทานแบบดึงขึ้นภายใน ของราสเบอร์รี่ Pi คุณต้องเปิดใช้งานสิ่งนี้เพื่ออ่านข้อมูลทั้งหมดจากปุ่ม เนื่องจากปุ่มจะไปที่พินกราวด์ เราจึงต้องมีตัวต้านทานแบบดึงขึ้นเพื่อยึดพินอินพุต HIGH ไว้จนกว่าคุณจะกด
ก่อนที่เราจะไปต่อ มาดูตัวต้านทานแบบดึงขึ้นและแบบดึงลงกันก่อน
ช่วงพัก: ตัวต้านทานแบบดึงขึ้น/ดึงลง
เมื่อคุณกำหนดค่าพิน GPIO ให้เป็นอินพุต พินจะอ่านพินนั้นเพื่อกำหนดสถานะ ในวงจรนี้ คุณต้องอ่านว่าพินเป็น สูง หรือ ต่ำ เพื่อเรียกไฟ LED เมื่อกดปุ่ม สิ่งนี้จะง่ายถ้าสิ่งเหล่านี้เป็นสถานะเดียวที่พินสามารถมีได้ แต่น่าเสียดายที่มีสถานะที่สาม: ลอยน้ำ .
หมุดลอยมีค่าระหว่างสูงและต่ำ ทำให้อินพุตทำงานอย่างคาดเดาไม่ได้ ตัวต้านทานแบบดึงขึ้น/แบบเลื่อนลงช่วยแก้ปัญหานี้ได้
ภาพด้านบนเป็นไดอะแกรมแบบง่ายของปุ่มและ Raspberry Pi พิน GPIO เชื่อมต่อกับกราวด์ผ่านปุ่ม ตัวต้านทานแบบดึงขึ้นภายในยึดขา GPIO เข้ากับแหล่งจ่ายไฟ Pi ภายใน กระแสนี้ไหลและพินถูกดึงขึ้นสู่ระดับสูงอย่างปลอดภัย
เมื่อคุณกดปุ่ม พิน GPIO จะเชื่อมต่อโดยตรงกับพินกราวด์ และปุ่มจะอ่านค่าต่ำ
ตัวต้านทานแบบดึงลงใช้สำหรับเมื่อต่อสวิตช์กับพินเพาเวอร์ คราวนี้ ตัวต้านทานภายในจะยึดพิน GPIO กับกราวด์โดยกด LOW ค้างไว้จนกว่าคุณจะกดปุ่ม
ทฤษฎีตัวต้านทานแบบดึงขึ้นและแบบดึงลงทำให้เกิดความสับสนในแวบแรก แต่ความรู้ที่สำคัญที่ต้องมีเมื่อทำงานกับไมโครคอนโทรลเลอร์ สำหรับตอนนี้ หากคุณยังไม่ค่อยเข้าใจมัน ไม่ต้องกังวลไป!
ไปต่อจากที่ค้างไว้
โปรแกรมวนรอบ
ถัดไป ตั้งค่าโปรแกรมวนรอบ:
while True:
buttonState = GPIO.input(buttonPin)
if buttonState == False:
GPIO.output(ledPin, GPIO.HIGH)
else:
GPIO.output(ledPin, GPIO.LOW)
NS ในขณะที่ทรู วนรอบอย่างต่อเนื่องรันโค้ดภายในนั้นจนกว่าเราจะสิ้นสุดโปรแกรม ทุกครั้งที่มันวนซ้ำจะอัปเดต ปุ่มสถานะ โดยการอ่านอินพุตจาก ปุ่มPin . ในขณะที่ไม่ได้กดปุ่ม ปุ่มจะยังคงอยู่ สูง .
เมื่อกดปุ่มแล้ว ปุ่มสถานะ กลายเป็น ต่ำ . สิ่งนี้ทำให้เกิด ถ้าคำสั่ง , ตั้งแต่ เท็จ ก็เหมือนกับ ต่ำ และไฟ LED จะสว่างขึ้น NS อื่น คำสั่งจะปิดไฟ LED เมื่อใดก็ตามที่ buttonPin ไม่เป็นเท็จ
บันทึกและเรียกใช้สคริปต์ของคุณ
บันทึกสคริปต์ของคุณโดยคลิก ไฟล์ > บันทึกเป็น และเลือกชื่อไฟล์ คุณสามารถเรียกใช้สเก็ตช์ได้โดยคลิกที่สีเขียว เล่น ปุ่มในแถบเครื่องมือ Thonny
กดปุ่มแล้วไฟ LED ของคุณควรสว่างขึ้น! กดสีแดง หยุด ปุ่มเมื่อใดก็ได้เพื่อหยุดโปรแกรม
หากคุณประสบปัญหา ให้ตรวจสอบรหัสและการตั้งค่าวงจรอย่างละเอียดเพื่อหาข้อผิดพลาดและลองอีกครั้ง
วิธีที่ 2: GPIO Zero Library
ห้องสมุด RPi.GPIO นั้นยอดเยี่ยม แต่มีเด็กใหม่อยู่ในบล็อก ห้องสมุด GPIO Zero เคยเป็น สร้างโดย Ben Nuttall ผู้จัดการชุมชน Raspberry Pi ด้วยความตั้งใจที่จะทำให้โค้ดง่ายขึ้นและง่ายต่อการอ่านและเขียน
ในการทดสอบไลบรารีใหม่ ให้เปิดไฟล์ Thonny ใหม่และนำเข้าไลบรารี
from gpiozero import LED, Button
from signal import pause
คุณจะสังเกตเห็นว่าคุณไม่ได้นำเข้าทั้งห้องสมุด เนื่องจากคุณใช้ไฟ LED และปุ่มเท่านั้น คุณจึงต้องการเฉพาะโมดูลเหล่านั้นในสคริปต์ เรายังนำเข้า หยุดชั่วคราว จากไลบรารีสัญญาณซึ่งเป็นไลบรารี Python สำหรับการจัดการเหตุการณ์
การตั้งค่าพินนั้นง่ายกว่ามากด้วย GPIO Zero:
led = LED(18)
button = Button(23)
เนื่องจากไลบรารี GPIO Zero มีโมดูลสำหรับ LED และปุ่ม คุณไม่จำเป็นต้องตั้งค่าอินพุตและเอาต์พุตเหมือนเมื่อก่อน คุณจะสังเกตเห็นว่าแม้หมุดจะไม่เปลี่ยนแปลง แต่ตัวเลขที่นี่แตกต่างจากด้านบน นั่นเป็นเพราะว่า GPIO Zero ใช้เฉพาะหมายเลขพิน GPIO (เรียกอีกอย่างว่าหมายเลข Broadcom หรือ BCM)
mac เชื่อมต่อ wifi ไม่ได้
ส่วนที่เหลือของสคริปต์มีเพียงสามบรรทัด:
button.when_pressed = led.on
button.when_released = led.off
pause()
NS หยุดชั่วคราว() เรียกที่นี่เพียงแค่หยุดสคริปต์ไม่ให้ออกเมื่อถึงด้านล่าง เหตุการณ์สองปุ่มจะถูกทริกเกอร์ทุกครั้งที่มีการกดและปล่อยปุ่ม บันทึกและเรียกใช้สคริปต์ของคุณแล้วคุณจะเห็นผลลัพธ์เหมือนเดิม!
สองวิธีในการเพิ่มปุ่มให้กับ Raspberry Pi
จากสองวิธีในการตั้งค่าปุ่ม วิธี GPIO Zero ดูเหมือนจะง่ายที่สุด ยังคงคุ้มค่าที่จะเรียนรู้เกี่ยวกับไลบรารี RPi.GPIO เช่น โครงการ Raspberry Pi เริ่มต้นส่วนใหญ่ ใช้มัน. ง่ายๆ อย่างโครงงานนี้ ความรู้สามารถนำไปใช้ได้หลายอย่าง
การใช้หมุด GPIO เป็นวิธีที่ยอดเยี่ยมในการเรียนรู้และประดิษฐ์อุปกรณ์ของคุณเอง แต่ยังห่างไกลจากทุกสิ่งที่คุณสามารถทำได้ด้วย Pi คำแนะนำอย่างไม่เป็นทางการของเราเกี่ยวกับ Raspberry Pi เต็มไปด้วยความคิดสร้างสรรค์และแบบฝึกหัดที่คุณสามารถลองใช้เองได้! สำหรับบทช่วยสอนอื่นเช่นนี้ โปรดดูที่ วิธีสร้างปุ่มเชื่อมต่อ Wi-Fi .
แบ่งปัน แบ่งปัน ทวีต อีเมล 5 เคล็ดลับในการเพิ่มพลังให้เครื่อง VirtualBox Linux ของคุณเบื่อกับประสิทธิภาพที่ย่ำแย่ของเวอร์ชวลแมชชีนหรือไม่? นี่คือสิ่งที่คุณควรทำเพื่อเพิ่มประสิทธิภาพ VirtualBox ของคุณ
อ่านต่อไป หัวข้อที่เกี่ยวข้อง- DIY
- ราสเบอร์รี่ปี่
- Python
- GPIO
- บทแนะนำโครงการ DIY
Ian Buckley เป็นนักข่าวอิสระ นักดนตรี นักแสดง และโปรดิวเซอร์วิดีโอที่อาศัยอยู่ในกรุงเบอร์ลิน ประเทศเยอรมนี เมื่อเขาไม่ได้เขียนหนังสือหรืออยู่บนเวที เขากำลังซ่อมแซมอุปกรณ์อิเล็กทรอนิกส์หรือโค้ด DIY โดยหวังว่าจะเป็นนักวิทยาศาสตร์ที่คลั่งไคล้
เพิ่มเติมจาก Ian Buckleyสมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก