כיצד להשתמש בפייתון כדי לתקשר עם ארדואינו אונו על סדרה

How to Use Python to Communicate with an Arduino Uno Over Serial

תקשורת בין פייתון לארדואינו UNO על סדרה מאפשרת לך לשלוט בחומרה באמצעות סקריפטים של פייתון או לשלוח נתונים מהארדואינו לפייתון לעיבוד. מדריך זה ינחה אתכם באמצעות הגדרה ושימוש בפיתון כדי לתקשר עם Arduino UNO על חיבור סדרתי.


מה תצטרך

  1. ארדואינו אונו עם כבל USB
  2. Python המותקן במחשב שלך (גרסה 3.x מומלץ)
  3. Arduino IDE מותקן
  4. ספרייה לתקשורת סדרתית של פייתון (למשל, pyserial)

שלב 1: התקן תוכנה נדרשת

1. התקן את פייתון

אם לא מותקנת פייתון, הורד אותו מ python.org ועקוב אחר הוראות ההתקנה.

2. התקן את ה- Arduino IDE

הורד והתקן את ה- Arduino IDE מ Arduino.cc.

3. התקן את הספרייה Pyserial

Pyserial נדרש לפייתון לתקשר על יציאות סדרתיות. התקן אותו באמצעות הפקודה הבאה:

pip install pyserial

שלב 2: כתוב והעלה את קוד Arduino

הארדואינו ישלח ויקבל נתונים על יציאת הסדרה. להלן סקיצה דוגמה:

קוד ארדואינו

void setup() {
  Serial.begin(9600); // Start serial communication at 9600 baud
  while (!Serial);    // Wait for the serial port to connect
  Serial.println("Arduino is ready!");
}

void loop() {
  // Check if data is available on the serial port
  if (Serial.available()) {
    String data = Serial.readString(); // Read the incoming data
    Serial.print("Received: ");
    Serial.println(data); // Echo the data back

    // Optional: Respond based on the received data
    if (data.trim() == "LED_ON") {
      Serial.println("Turning LED on");
    } else if (data.trim() == "LED_OFF") {
      Serial.println("Turning LED off");
    }
  }
}
  1. פתח את IDE Arduino.
  2. הדבק את הקוד לעיל בעורך.
  3. בחר את הנכון לוּחַ וכן נָמָל מתחת ל כְּלֵי עֲבוֹדָה תַפרִיט.
  4. נְקִישָׁה העלה להעלות את הקוד ל- Arduino UNO.

שלב 3: כתוב את קוד הפיתון

להלן דוגמה לתסריט פייתון לתקשר עם הארדואינו:

קוד פייתון

import serial
import time

# Configure the serial connection
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=1) # Replace 'COM3' with your Arduino's port

def send_data(data):
    print(f"Sending: {data}")
    arduino.write(f"{data}\n".encode()) # Send data to Arduino
    time.sleep(0.1)

    response = arduino.readline().decode().strip() # Read response from Arduino
    if response:
        print(f"Arduino responded: {response}")

if __name__ == "__main__":
    time.sleep(2)  # Wait for Arduino to initialize
    print("Connected to Arduino")

    # Example: Send commands to Arduino
    send_data("LED_ON")
    time.sleep(2)
    send_data("LED_OFF")

    # Close the serial connection
    arduino.close()

שלב 4: בדוק את ההתקנה

  1. חבר את Arduino למחשב שלך באמצעות USB.
  2. מצא את נמל הארדואינו:
    • ב- Windows: בדוק את היציאה במנהל ההתקנים (למשל, COM3).
    • ב- MacOS/Linux: השתמש ב ls /dev/tty.* פקודה למציאת היציאה הנכונה (למשל, /dev/ttyUSB0).
  3. עדכן את port ערך בתסריט Python כדי להתאים את יציאת הארדואינו שלך.
  4. הפעל את סקריפט Python באמצעות הפקודה:
python your_script_name.py
  1. שימו לב לתקשורת בין פייתון לארדואינו בטרמינל ובמוניטור הסדרתי.

יישומים של תקשורת Python-arduino

  1. אוטומציה של משימות חומרה (למשל, הפעלת נוריות LED, שליטה על מנועים)
  2. רישום נתוני חיישן לקובץ או בסיס נתונים
  3. יצירת GUIS מותאמת אישית לפרויקטים של Arduino באמצעות ספריות Python כמו Tkinter או PYQT
  4. שילוב ארדואינו עם פלטפורמות IoT

פתרון בעיות

  • אין קשר לארדואינו:

    • ודא כי היציאה הנכונה מוגדרת בסקריפט Python.
    • ודא ששיעור Baud תואם את סקיצת Arduino.
  • אין תגובה מארדואינו:

    • הוסף עיכוב לאחר פתיחת החיבור הסדרתי (time.sleep(2)).
    • ודא שהארדואינו לא משמש תוכנית אחרת (למשל, צג סדרתי ב- Arduino IDE).
  • Unicodedecodeerror:

    • בדוק את קידוד הנתונים שנשלחו/מתקבלים. לְהִשְׁתַמֵשׁ .decode(errors='ignore') במידת הצורך.

מַסְקָנָה

הגדרת בהצלחה תקשורת בין פייתון לארדואינו אונו על סדרה. זה פותח אפשרויות אינסופיות לשילוב הספריות החזקות של פייתון עם יכולות החומרה של ארדואינו. התנסו עוד יותר על ידי הוספת חיישנים, מנועים או יצירת GUIS מבוסס פיתון לפרויקטים שלכם!

השאירו תגובה

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.