एक रास्पबेरी पाई का उपयोग करके एक Arduino के साथ संवाद

Communicating with an Arduino Using a Raspberry Pi

रास्पबेरी पाई और Arduino विभिन्न प्रोटोकॉल का उपयोग करके एक -दूसरे के साथ संवाद कर सकते हैं, जिसमें शामिल हैं सीरियल (UART), I2C, और SPI। यह गाइड आपको दिखाएगा कि रास्पबेरी पाई और एक Arduino के बीच संचार को कैसे स्थापित किया जाए सीरियल इंटरफ़ेस (UART), जो सबसे आम और सीधी विधि है।


आपको क्या चाहिए

  1. रसभरी पाई (GPIO समर्थन के साथ कोई भी मॉडल, जैसे, पीआई 3, पीआई 4)
  2. आर्ज़िनो (जैसे, UNO, मेगा, नैनो)
  3. यूएसबी तार (Arduino को रास्पबेरी पाई से जोड़ने के लिए)
  4. जम्पर तार (यदि GPIO धारावाहिक संचार का उपयोग कर)
  5. पायथन स्थापित रास्पबेरी पाई पर
  6. अर्डुइनो आइड रास्पबेरी पाई या एक अलग कंप्यूटर पर स्थापित

चरण 1: Arduino को रास्पबेरी पाई से जोड़ना

आप रास्पबेरी पाई को Arduino से कनेक्ट कर सकते हैं USB या Gpio पिन.

विधि 1: यूएसबी कनेक्शन (अनुशंसित)

  1. कनेक्ट करना रास्पबेरी पाई के लिए Arduino USB केबल का उपयोग करना।
  2. रास्पबेरी पाई एक सीरियल डिवाइस के रूप में Arduino का पता लगाएगा (जैसे, /dev/ttyUSB0 या /dev/ttyACM0).

विधि 2: GPIO पिन (हार्डवेयर धारावाहिक) का उपयोग करना

  1. कनेक्ट करना Arduino TX (पिन 1) को रास्पबेरी पाई आरएक्स (जीपीआईओ 15, पिन 10).
  2. कनेक्ट करना Arduino Rx (पिन 0) को रास्पबेरी पाई TX (GPIO 14, पिन 8).
  3. जोड़ना GND को GND.
  4. रास्पबेरी पाई के अंतर्निहित सीरियल कंसोल को अक्षम करें:
    sudo raspi-config
    
    • नेविगेट करना इंटरफ़ेस विकल्प> सीरियल पोर्ट.
    • सीरियल पर लॉगिन शेल को अक्षम करें लेकिन सीरियल पोर्ट हार्डवेयर को सक्षम करें।
    • रास्पबेरी पाई को रिबूट करें:
      sudo reboot
      

चरण 2: आवश्यक पुस्तकालय स्थापित करें

सुनिश्चित करें कि आपके रास्पबेरी पाई में आवश्यक सीरियल संचार उपकरण स्थापित हैं।

sudo apt update
sudo apt install python3-serial

उपलब्ध सीरियल पोर्ट की जांच करने के लिए:

ls /dev/tty*

एक USB कनेक्शन के लिए, के लिए देखें /dev/ttyUSB0 या /dev/ttyACM0.


चरण 3: एक Arduino स्केच अपलोड करें

Arduino से रास्पबेरी पाई पर डेटा भेजने के लिए, इस सरल अपलोड करें अर्डुइनो स्केच का उपयोग अर्डुइनो आइड.

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

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

चरण 4: रास्पबेरी पाई पर सीरियल डेटा पढ़ें

Arduino से डेटा पढ़ने के लिए रास्पबेरी पाई पर एक पायथन स्क्रिप्ट बनाएं।

पायथन कोड उदाहरण

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
    
  • तुम्हें देखना चाहिए "Arduino से हैलो!" हर सेकंड छापा।

चरण 5: रास्पबेरी पाई से Arduino को डेटा भेजना

संशोधित करें अरडुइनो कोड रास्पबेरी पाई से डेटा प्राप्त करने के लिए:

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

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

संशोधित करें पायथन कोड Arduino को डेटा भेजने के लिए:

ser.write(b"Hello from Raspberry Pi!\\n")
  • अब, Arduino को रास्पबेरी पाई द्वारा भेजे गए संदेश प्राप्त होंगे।

वैकल्पिक संचार विधियाँ

  1. I2C संचार (कई Arduinos के लिए)

    • रास्पबेरी पाई के रूप में कार्य करता है मालिक, Arduino के रूप में कार्य करता है गुलाम.
    • I2C सक्षम करें:
      sudo raspi-config
      
    • आवश्यक पुस्तकालय स्थापित करें:
      sudo apt install python3-smbus i2c-tools
      
    • उपयोग Wire.h I2C संचार के लिए Arduino पक्ष पर।
  2. एसपीआई संचार (उच्च गति डेटा हस्तांतरण के लिए)

    • आवश्यक है स्पि-सक्षम arduino और SPI.h पुस्तकालय।
    • UART और I2C की तुलना में तेजी से लेकिन आवश्यकता है अधिक तारों.

समस्या निवारण

  1. रास्पबेरी पाई पर Arduino का पता नहीं चला

    • दौड़ना ls /dev/tty* उपलब्ध धारावाहिक उपकरणों की जांच करने के लिए।
    • सुनिश्चित करें कि सही सीरियल पोर्ट पायथन स्क्रिप्ट में निर्दिष्ट है।
  2. अनुमति से वंचित त्रुटि

    • अपने उपयोगकर्ता को जोड़ें dialout समूह:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. आउटपुट में कचरा वर्ण

    • सुनिश्चित करना दोनों डिवाइस एक ही बॉड दर का उपयोग करते हैं (उदा। 9600).
    • एक छोटी देरी जोड़ें (time.sleep(2)) पायथन में डेटा पढ़ने से पहले।

निष्कर्ष

इस गाइड का पालन करके, आप स्थापित कर सकते हैं धारावाहिक संचार एक Arduino और एक रास्पबेरी पाई के बीच, उन्हें के लिए डेटा का आदान -प्रदान करने की अनुमति देता है 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.