מתקשר עם ארדואינו באמצעות פטל pi

Communicating with an Arduino Using a Raspberry Pi

ה- Raspberry Pi ו- Arduino יכולים לתקשר זה עם זה באמצעות פרוטוקולים שונים, כולל סדרתי (UART), I2C ו- SPIו מדריך זה יראה לך כיצד להגדיר תקשורת בין Raspberry Pi לארדואינו באמצעות ממשק סדרתי (UART), שהיא השיטה הנפוצה והפשוטה ביותר.


מה תצטרך

  1. Raspberry Pi (כל דגם עם תמיכה ב- GPIO, למשל, pi 3, pi 4)
  2. ארדואינו (למשל, אונו, מגה, ננו)
  3. כבל USB (לחיבור הארדואינו לפטל PI)
  4. חוטי מגשר (אם משתמשים בתקשורת סדרתית של GPIO)
  5. פיתון מותקן על ה- Raspberry Pi
  6. Arduino Ide מותקן ב- Raspberry Pi או במחשב נפרד

שלב 1: חיבור הארדואינו ל- Raspberry Pi

אתה יכול לחבר את ה- Raspberry Pi לארדואינו באמצעות USB או סיכות GPIO.

שיטה 1: חיבור USB (מומלץ)

  1. חבר את Arduino ל- Raspberry Pi באמצעות כבל USB.
  2. ה- Raspberry Pi יאתר את הארדואינו כמכשיר סדרתי (למשל, /dev/ttyUSB0 אוֹ /dev/ttyACM0).

שיטה 2: שימוש בסיכות GPIO (סידורי חומרה)

  1. חבר את Arduino TX (סיכה 1) אֶל Raspberry Pi Rx (GPIO 15, PIN 10).
  2. חבר את Arduino RX (סיכה 0) אֶל Raspberry Pi TX (GPIO 14, PIN 8).
  3. לְחַבֵּר GND ל- GND.
  4. השבת את המסוף הסדרתי המובנה של Raspberry Pi:
    sudo raspi-config
    
    • נווט אל אפשרויות ממשק> יציאה סדרתית.
    • השבת את מעטפת ההתחברות על סידורי אך הפעל את חומרת היציאה הסדרתית.
    • אתחל מחדש את ה- Raspberry Pi:
      sudo reboot
      

שלב 2: התקן ספריות נדרשות

ודא של- Raspberry Pi שלך יש את כלי התקשורת הסדרתיים הנדרשים.

sudo apt update
sudo apt install python3-serial

לבדיקת יציאות סדרתיות זמינות:

ls /dev/tty*

לחיבור USB, חפש /dev/ttyUSB0 אוֹ /dev/ttyACM0.


שלב 3: העלה סקיצה של ארדואינו

כדי לשלוח נתונים מהארדואינו ל- Raspberry Pi, העלה את זה פשוט סקיצת ארדואינו באמצעות Arduino Ide.

void setup() {
  Serial.begin(9600); // Start serial communication
}

void loop() {
  Serial.println("Hello from Arduino!"); // Send message
  delay(1000);
}

שלב 4: קרא נתונים סידוריים ב- Raspberry Pi

צור סקריפט פייתון ב- Raspberry Pi כדי לקרוא את הנתונים מהארדואינו.

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

import serial
import time

# Open the serial port (Change ttyUSB0 if necessary)
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
time.sleep(2)  # Wait for connection

try:
    while True:
        if ser.in_waiting > 0:
            data = ser.readline().decode('utf-8').strip()
            print(f"Received: {data}")
except KeyboardInterrupt:
    print("Exiting...")
    ser.close()
  • להבטיח זאת /dev/ttyUSB0 תואם את היציאה הסדרתית שלך.
  • הפעל את התסריט:
    python3 serial_read.py
    
  • אתה צריך לראות "שלום מארדואינו!" נדפס כל שנייה.

שלב 5: שליחת נתונים מה- Raspberry Pi ל- Arduino

שנה את קוד ארדואינו לקבלת נתונים מ- Raspberry Pi:

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    String received = Serial.readStringUntil('\\n');
    Serial.print("Raspberry Pi Sent: ");
    Serial.println(received);
  }
}

שנה את קוד פייתון לשלוח נתונים לארדואינו:

ser.write(b"Hello from Raspberry Pi!\\n")
  • כעת, הארדואינו יקבל הודעות שנשלחו על ידי ה- Raspberry Pi.

שיטות תקשורת אלטרנטיביות

  1. תקשורת i2c (למספר ארדוינים)

    • Raspberry Pi פועל כמו לִשְׁלוֹט, ארדואינו פועל כמו עֶבֶד.
    • אפשר i2c:
      sudo raspi-config
      
    • התקן ספריות נדרשות:
      sudo apt install python3-smbus i2c-tools
      
    • לְהִשְׁתַמֵשׁ Wire.h בצד ארדואינו לתקשורת i2c.
  2. תקשורת SPI (להעברת נתונים במהירות גבוהה)

    • דורש Arduino המאפשרת SPI וכן SPI.h סִפְרִיָה.
    • מהיר יותר מ- UART ו- I2C אך דורש חיווט נוסף.

פתרון בעיות

  1. ארדואינו לא זוהה ב- Raspberry Pi

    • לָרוּץ ls /dev/tty* לבדיקת מכשירים טוריים זמינים.
    • ודא כי יציאת הסדרה הנכונה מוגדרת בתסריט Python.
  2. שגיאה שנדחתה הרשאה

    • הוסף את המשתמש שלך ל dialout קְבוּצָה:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. תווי זבל בפלט

    • לְהַבטִיחַ שני המכשירים משתמשים באותו קצב baud (לְמָשָׁל., 9600).
    • הוסף עיכוב קטן (time.sleep(2)) לפני קריאת נתונים בפיתון.

מַסְקָנָה

על ידי ביצוע מדריך זה תוכלו להקים תקשורת סדרתית בין ארדואינו ל- PI פטל, ומאפשר להם להחליף נתונים עבור פרויקטים של IoT, שילוב חיישנים ומערכות אוטומציהו התנסו I2c ו- spi ליישומים מתקדמים יותר!

השאירו תגובה

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.