בעזרת מתג לחצן לחיצה עם ה- 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. פיתון מותקן ב- Raspberry Pi שלך
  6. ספריית GPIO לבקרת סיכות ה- GPIO של Raspberry Pi

שלב 1: חיווט לחצן הלחיצה אל ה- Raspberry Pi

מתג לחצן לחיצה עובד על ידי חיבור סיכת ה- GPIO למצב גבוה (3.3 וולט) כאשר הוא לוחץ או מושך אותו לנמוך (0V) כאשר לא נלחץ. אנו נשתמש בנגד נשלף כדי להבטיח ש- GPIO PIN נקרא נמוך כאשר לא נלחץ על הכפתור.

חיווט לחצן הלחיצה

לחיצה על סיכת כפתור סיכת פטל pi gpio
סיכה אחת GPIO17 (סיכה 11)
סיכה אחרת קרקע (סיכה 6)
סיכה אחת נגד 10KΩ לקרקע

הנה מערך החיווט:

  • חבר מסוף אחד של כפתור הלחיצה ל GPIO17 (סיכה 11).
  • חבר את הטרמינל האחר של כפתור הלחיצה ל טָחוּן (סיכה 6).
  • חבר נגן 10kΩ בין GPIO17 וכן טָחוּן לשמש כנגד נפתח.

זה מבטיח שכאשר נלחץ על הכפתור, GPIO17 קורא גבוה (3.3 וולט), וכאשר הוא לא נלחץ, GPIO17 נמשך לנמוך (0V) על ידי הנגד.


שלב 2: הפעל סיכות GPIO בפיתון

  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: כתיבת קוד הפיתון

כעת, בואו נכתוב סקריפט של פייתון כדי לאתר מתי הלחץ על הכפתור ונקח בפעולה בהתאם.

דוגמה לקוד פיתון

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): מגדיר את מספור ה- PIN של GPIO למצב BCM (Broadcom).
  • Gpio.setup (button_pin, gpio.in, pull_up_down = gpio.pud_down): מגדיר את סיכת הכפתור כקלט עם נגן נשלף, כלומר הוא יקרא נמוך כאשר לא נלחץ.
  • Gpio.add_event_detect (): מגלה את הקצה העולה (לחיצה על כפתור) של סיכת ה- GPIO ומפעיל את פונקציית ההתקשרות button_callback כאשר לוחצים על הכפתור.
  • זמן שינה (0.1): שומר על הפעלת הסקריפט, ומאפשר לו לחכות ללחץ על כפתור.
  • Gpio.cleanup (): מנקה את הגדרות ה- GPIO כאשר התסריט יוצא.

שלב 4: בדיקת הכפתור

  1. הפעל את תסריט הפיתון שלך:

    python3 button.py
    
  2. לחץ על כפתור הלחיצה וצפה בהודעה "לחיצה על כפתור!" בטרמינל.


שלב 5: יישומים

להלן מספר רעיונות לשימוש בכפתור הלחיצה בפרויקטים שלך:

  1. לשלוט ב- LED: השתמש בלחצן הלחיצה כדי להעביר ולכבות נורית LED.
  2. להפעיל אירוע: הפעל או הפסק תהליך (למשל, הפעל מנוע, הפעל מאוורר או התחל סקריפט).
  3. פעמון חכם: השתמש בכפתור כפעמון כדי לשלוח הודעה לטלפון שלך.
  4. קלט משתמש: קבל קלט משתמש פשוט לפרויקטים שלך (כמו תשובה "כן/לא").

פתרון בעיות

  • כפתור לא זוהה:

    • ודא שהכפתור מחובר נכון עם הנגד הנפתח.
    • בדוק שוב את הגדרת ה- GPIO שלך ב- GPIO בקוד.
  • שגיאת GPIO:

    • ודא שספריית GPIO מותקנת כראוי וכי מספרי הסיכות בסקריפט שלך נכונים.
  • כפתור כפתור:

    • אם אתה מבחין בכפתור מרובה הלחץ שמתגלה, אתה יכול להוסיף זמן debounce (bouncetime=300 בתסריט) כדי להימנע מגילוי שווא.

מַסְקָנָה

שימוש במתג לחצן לחיצה עם Raspberry Pi הוא דרך קלה להוסיף פונקציונליות קלט לפרויקטים שלך. בין אם מדובר בנוריות LED, הפעלת אירועים או אינטראקציה עם חומרה אחרת, ההתקנה הפשוטה הזו יכולה להיות הבסיס ליישומים מעניינים רבים. התנסו בסיכות GPIO שונות והגדרות DebUnce כך שיתאימו לצרכים שלכם!

השאירו תגובה

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.