Raspberry'den Arduino Uno'ya, ondan da diğer bir Uno'ya UART iletişim

 Bu çalışmada, projemizde kullanacağımız raspberry pi 5 ile 2 arduino uno (birisi kumanda, diğer rover robot) arasında UART iletişim için simülasyon yapmaktır.

Yapay zeka destekli kameramızı kullandığımız Raspberry pi 5 kişiyi takip edecek, kişinin yerini tespit ettikten sonra kumanda görevi gören Birinci Uno'ya aktaracak. Kumanda da aldığı veriyi Rover robot üzerindeki Uno'ya aktararak, robotun belirtilen yönde hareket etmesini sağlayacak.

Şimdilik bu cihazlar arasındaki tüm bağlantılar pinlere takılan kablolar vasıtasıyla gerçekleşecek.

Ortadaki Uno'ya  (kumanda) harici olarak güç ver.

Bağlantı şu şekilde.

Raspberry pi 5                 1. Arduino Uno (kumanda)            2. Arduino Uno (rover robot)

RPi TX (GPIO 14)            Uno #1 RX (Pin 0)

RPi RX (GPIO 15)            Uno #1 TX (Pin 1)

RPİ Gnd (13)                   Uno GND

                                        Uno #1 TX (Pin 3)                     Uno #2 RX (Pin 0)

                                            Uno #1 RX (Pin 2)                     Uno #2 TX (Pin 1)

                                        GND                                         GND (Ortak toprak!)

---------------------------------

  • RPi ↔ Birinci Uno:

    • RPi TX (GPIO 14) → Uno #1 RX (Pin 0)

    • RPi RX (GPIO 15) → Uno #1 TX (Pin 1)

  • Birinci Uno ↔ İkinci Uno:

    • Uno #1 TX (Pin 3) → Uno #2 RX (Pin 0)

    • Uno #1 RX (Pin 2) → Uno #2 TX (Pin 1)

    • GND ↔ GND (Ortak toprak!)


1. Uno (kumanda)

#include <SoftwareSerial.h>
SoftwareSerial Serial1(2, 3);  // RX: Pin 2, TX: Pin 3 (İkinci Uno ile iletişim)

void setup() {
  Serial.begin(9600);    // Raspberry Pi ile iletişim (Pin 0-RX, Pin 1-TX)
  Serial1.begin(9600);   // İkinci Uno ile iletişim (Pin 2-RX, Pin 3-TX)
  Serial.println("Birinci Uno hazır!");  // Seri Monitörden kontrol
}

void loop() {
  // 1. Raspberry'den geleni İkinci Uno'ya aktar
  if (Serial.available()) {
    char data = Serial.read();
    Serial1.write(data);  // İkinci Uno'ya ilet
    Serial.print("RPi → 2. Uno'ya iletilen: ");
    Serial.println(data);  // Seri Monitörde göster
  }

  // 2. İkinci Uno'dan geleni Birinci Uno'nun Seri Monitöründe göster
  if (Serial1.available()) {
    char data = Serial1.read();
    Serial.print("2. Uno'dan gelen: ");
    Serial.println(data);  // Seri Monitörde göster
  }
}


2. UNO (rover robot)

void setup() {
  Serial.begin(9600);  // Birinci Uno ile iletişim
  Serial.println("İkinci Uno hazır!");  // Seri Monitörden kontrol
}

void loop() {
  if (Serial.available()) {
    String data = Serial.readStringUntil('\n');  // Veriyi oku
    Serial.print("Birinci Uno'dan gelen: ");
    Serial.println(data);  // Seri Monitörde göster

    // Örnek yanıt gönder (isteğe bağlı)
    Serial.println("Mesaj alındı!");  // Birinci Uno'ya yanıt
  }
}


Raspbery pi python kodu

import serial
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.write(b"Bismillah\n")
ser.close()


yukarıdaki bağlantıları yapıp, kodları yüklediğinde ikinci uno'nun (rover robot) seri ekranında aşağıdaki çıktıyı göreceksin.



Bu blogdaki popüler yayınlar

Raspberry Pi 5 ile Arduino Uno arasında UART (rx-tx) iletişimi