ใช้สวิตช์ปุ่มกดพร้อม Raspberry Pi

Using a Push Button Switch with the Raspberry Pi

 

สวิตช์ปุ่มกดเป็นอุปกรณ์อินพุตที่เรียบง่าย แต่มีประสิทธิภาพมักใช้ในโครงการเช่นเริ่มต้นหรือหยุดกระบวนการควบคุม LED หรือการเรียกเหตุการณ์ บทช่วยสอนนี้จะนำคุณผ่านการเชื่อมต่อสวิตช์ปุ่มกดกับ Raspberry Pi ตั้งค่าการเดินสายและเขียนสคริปต์ Python เพื่อตรวจจับการกดปุ่ม


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
  2. สวิตช์ปุ่มกด
  3. เครื่องหั่นขนมปังและสายจัมเปอร์
  4. ตัวต้านทาน (10kΩสำหรับการดึงลง)
  5. ติดตั้ง Python บนราสเบอร์รี่ pi ของคุณ
  6. ห้องสมุด GPIO สำหรับการควบคุมหมุด GPIO ของ Raspberry Pi

ขั้นตอนที่ 1: เดินสายปุ่มกดไปยัง Raspberry Pi

สวิตช์ปุ่มกดทำงานโดยการเชื่อมต่อพิน GPIO กับสถานะสูง (3.3V) เมื่อกดหรือดึงลงไปต่ำ (0V) เมื่อไม่ได้กด เราจะใช้ตัวต้านทานแบบดึงลงเพื่อให้แน่ใจว่าพิน GPIO อ่านต่ำเมื่อปุ่มไม่ได้กด

เดินสายปุ่มกด

ปุ่มกดปุ่ม Raspberry Pi GPIO PIN
หนึ่งพิน GPIO17 (พิน 11)
พินอื่น ๆ พื้นดิน (พิน 6)
หนึ่งพิน ตัวต้านทาน10kΩถึงกราวด์

นี่คือการตั้งค่าการเดินสาย:

  • เชื่อมต่อหนึ่งขั้วของปุ่มกดเข้ากับ GPIO17 (พิน 11)
  • เชื่อมต่อเทอร์มินัลอื่น ๆ ของปุ่มกดเข้ากับ พื้น (พิน 6)
  • เชื่อมต่อตัวต้านทาน10kΩระหว่าง GPIO17 และ พื้น ทำหน้าที่เป็นตัวต้านทานแบบดึงลง

สิ่งนี้ทำให้มั่นใจได้ว่าเมื่อกดปุ่ม GPIO17 จะอ่านสูง (3.3V) และเมื่อไม่ได้กด GPIO17 จะถูกดึงลงต่ำ (0V) โดยตัวต้านทาน


ขั้นตอนที่ 2: เปิดใช้งานพิน GPIO ใน Python

  1. ก่อนอื่นให้อัปเดตรายการแพ็คเกจ Raspberry Pi ของคุณ:

    sudo apt update
    sudo apt upgrade -y
    
  2. ติดตั้งไลบรารี Python GPIO ที่ต้องการ (หากยังไม่ได้ติดตั้ง):

    sudo apt install python3-rpi.gpio
    
  3. นำเข้าไลบรารีในสคริปต์ Python ของคุณ:

    import RPi.GPIO as GPIO
    import time
    

ขั้นตอนที่ 3: การเขียนรหัส Python

ทีนี้มาเขียนสคริปต์ Python เพื่อตรวจจับเมื่อกดปุ่มและดำเนินการตามนั้น

ตัวอย่างรหัส Python

import RPi.GPIO as GPIO
import time

# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM)        # Use BCM numbering
button_pin = 17               # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # Set up pin with pull-down resistor

# Function to detect button press
def button_callback(channel):
    print("Button was pressed!")

# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)

try:
    print("Press the button...")
    while True:
        # Keep the program running to wait for button press
        time.sleep(0.1)
except KeyboardInterrupt:
    print("Program exited")
finally:
    GPIO.cleanup()  # Clean up GPIO to ensure a clean exit

รหัสคำอธิบาย:

  • gpio.setMode (gpio.bcm): ตั้งค่าหมายเลขพิน GPIO เป็นโหมด BCM (Broadcom)
  • gpio.setup (button_pin, gpio.in, pull_up_down = gpio.pud_down): กำหนดค่าพินปุ่มเป็นอินพุตที่มีตัวต้านทานแบบดึงลงซึ่งหมายความว่ามันจะอ่านต่ำเมื่อไม่ได้กด
  • gpio.add_event_detect (): ตรวจจับขอบที่เพิ่มขึ้น (กดปุ่ม) ของพิน gpio และทริกเกอร์ฟังก์ชันการโทรกลับ button_callback เมื่อกดปุ่ม
  • Time.sleep (0.1): ให้สคริปต์ทำงานเพื่อให้สามารถรอการกดปุ่ม
  • gpio.cleanup (): ทำความสะอาดการตั้งค่า GPIO เมื่อออกจากสคริปต์

ขั้นตอนที่ 4: ทดสอบปุ่ม

  1. เรียกใช้สคริปต์ Python ของคุณ:

    python3 button.py
    
  2. กดปุ่มกดและสังเกตข้อความ“ กดปุ่ม!” ในเทอร์มินัล


ขั้นตอนที่ 5: แอปพลิเคชัน

นี่คือแนวคิดบางประการสำหรับการใช้ปุ่มกดในโครงการของคุณ:

  1. ควบคุม LED: ใช้ปุ่มกดเพื่อสลับการเปิดและปิด LED
  2. เรียกเหตุการณ์: เริ่มต้นหรือหยุดกระบวนการ (เช่นเริ่มมอเตอร์เปิดพัดลมหรือเริ่มต้นสคริปต์)
  3. ออดฉลาด: ใช้ปุ่มเป็นออดเพื่อส่งการแจ้งเตือนไปยังโทรศัพท์ของคุณ
  4. อินพุตผู้ใช้: รับข้อมูลผู้ใช้อย่างง่ายสำหรับโครงการของคุณ (เช่นคำตอบ "ใช่/ไม่ใช่")

การแก้ไขปัญหา

  • ไม่พบปุ่ม:

    • ตรวจสอบให้แน่ใจว่าปุ่มมีสายอย่างถูกต้องด้วยตัวต้านทานแบบดึงลง
    • ตรวจสอบการตั้งค่าพิน GPIO ของคุณอีกครั้งในรหัส
  • ข้อผิดพลาด GPIO:

    • ตรวจสอบให้แน่ใจว่ามีการติดตั้งไลบรารี GPIO อย่างถูกต้องและหมายเลข PIN ในสคริปต์ของคุณถูกต้อง
  • ปุ่มตีกลับ:

    • หากคุณสังเกตเห็นการกดปุ่มหลายครั้งคุณสามารถเพิ่มเวลา debounce (bouncetime=300 ในสคริปต์) เพื่อหลีกเลี่ยงการตรวจจับที่ผิดพลาด

บทสรุป

การใช้สวิตช์ปุ่มกดกับ Raspberry Pi เป็นวิธีที่ง่ายในการเพิ่มฟังก์ชั่นอินพุตให้กับโครงการของคุณ ไม่ว่าจะเป็นการสลับไฟ LED การเรียกเหตุการณ์หรือการโต้ตอบกับฮาร์ดแวร์อื่น ๆ การตั้งค่าง่าย ๆ นี้สามารถเป็นรากฐานสำหรับแอปพลิเคชันที่น่าสนใจมากมาย ทดลองกับหมุด GPIO ที่แตกต่างกันและการตั้งค่า debounce เพื่อให้เหมาะกับความต้องการของคุณ!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.