Translate

Saturday, June 14, 2025

Mikroişlemciler ile Fiberoptik Haberleşme: Teknik Rehber

İki Arduino devresi arasında fiberoptik kablo ile haberleşme sistemini detaylarıyla açıklayan teknik bir yazı bulacaksınız. Yazı; donanım, protokol, optik-elektrik dönüşüm, senkronizasyon, örnek devre ve kod detaylarını içerir.

Arduino ile Fiberoptik Haberleşme: Teknik Rehber

1. Giriş

Arduino kartları genellikle UART, SPI veya I2C gibi dijital haberleşme protokolleri ile iletişim kurar. Ancak elektromanyetik parazitin yoğun olduğu ortamlarda veya uzun mesafeli veri aktarımı gereken uygulamalarda fiber optik kablolar, elektriksel izolasyon ve yüksek bant genişliği sunduğu için tercih edilir.
Bu yazıda, iki Arduino arasında fiberoptik kablo aracılığıyla seri iletişim (UART) temelli bir haberleşme sistemi nasıl kurulur, adım adım açıklanacaktır.

2. Gereken Donanım
2 adet Arduino (Uno, Mega, Nano vs.)
2 adet TOSLink (Fiber Optik) Verici modül (örnek: TOTX173)
2 adet TOSLink Alıcı modül (örnek: TORX173)
1 adet Fiber optik TOSLink kablo (örneğin 1-10 metre)
5V güç kaynağı

Gerekli jumper kablolar, breadboard

3. Fiber Optik Haberleşmenin Temel Mantığı
3.1. Elektriksel → Optik Dönüşüm:
Arduino'nun TX pini üzerinden gönderilen seri veri, TOTX173 gibi bir optik verici modül yardımıyla LED'e çevrilir. Bu LED, ışığı modüle ederek fiber kabloya gönderir.
3.2. Optik → Elektriksel Dönüşüm:
Karşı Arduino, fiber kabloya bağlı bir TORX173 optik alıcı ile bu ışığı alır ve tekrar dijital sinyale çevirerek kendi RX pinine verir.

4. Devre Bağlantıları

Gönderici Arduino (Arduino A):
TX → TOTX173 "Din" girişi
VCC → TOTX173 VCC (5V)
GND → TOTX173 GND


Alıcı Arduino (Arduino B):
RX ← TORX173 "Dout" çıkışı
VCC → TORX173 VCC (5V)
GND → TORX173 GND

> Not: TX ve RX pinleri doğru eşleşmelidir. Yani Arduino A TX → Arduino B RX şeklinde.

Fiber Bağlantı:
TOTX173 çıkışına TOSLink kablonun bir ucu, TORX173 girişine diğer ucu takılır.

5. Arduino Kod Örneği

Arduino A (Gönderici):

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

void loop() {
  Serial.println("Fiber üzerinden mesaj");
  delay(1000); // 1 saniyede bir gönder
}

Arduino B (Alıcı):

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

void loop() {
  if (Serial.available()) {
    String msg = Serial.readStringUntil('\n');
    Serial.println("Alındı: " + msg);
  }
}

> Not: Alıcı Arduino'da optik modülden alınan veri doğrudan RX pinine gider. Dolayısıyla Serial fonksiyonları kullanılabilir.

6. Teknik Detaylar

6.1. TOSLink Modül Özellikleri:
Çalışma gerilimi: 5V
Maksimum veri hızı: ~6 Mbps
Uyumlu protokol: TTL seviyesinde UART

6.2. Bağlantı Mesafesi:
TOSLink kablolar genellikle 5-10 metreye kadar güvenli veri aktarımı sağlar.
Daha uzun mesafeler için daha güçlü optik transceiver modüller önerilir (örneğin: HFBR-2412).

6.3. Veri Hızı ve Senkronizasyon:
UART baud hızı 9600–115200 arasında olabilir. 9600 daha kararlı olur.
İki Arduino aynı baud hızında başlatılmalıdır.

7. Uygulama Alanları
Elektromanyetik parazite açık endüstriyel tesislerde veri iletimi
Galvanik izolasyon gereken yerlerde haberleşme
Güvenlik sistemleri, askeri donanım testlerinde veri sızmasını engelleme
Uzun mesafeli kontrol sistemleri

8. Sorun Giderme

Problem Olası Neden Çözüm
Veri alınamıyor Fiber yanlış takıldı TOSLink yönünü kontrol et
Kesik veri geliyor Farklı baud hızları Her iki kartta da aynı baud hızı kullanın
Hiç ışık yok TOTX173 çalışmıyor 5V güç sağlandığından emin olun, TX pininde veri var mı kontrol edin

9. Gelişmiş Notlar

Daha profesyonel sistemler için optik haberleşmede Manchester Encoding kullanılır (dijital zamanlama daha sağlam olur).
Optik sistemlere PWM sinyali gönderilmesi için özel modülasyon gerekebilir.
Birden fazla Arduino’nun fiber ile zincirleme bağlanması mümkündür ama ek optik dağıtıcılar gerekir.

Sonuç

Arduino kartları arasında fiber optik ile haberleşme sağlamak, elektromanyetik gürültüye karşı dayanıklı, güvenli ve estetik bir çözümdür. Özellikle endüstriyel ya da yüksek parazitli ortamlarda bu sistem güvenli bir alternatif sunar.

✅ Alternatif Çözüm: Simülasyon Mantığını Kurmak
Sen yine de “optik sinyali” temsili olarak modelleyebilirsin. Örnek yol:

🧩 Kullanılacak Bileşenler:
2 adet Arduino UNO
1 adet LED (gönderici temsilcisi)
1 adet foto direnç veya buton (alıcı temsilcisi)
Breadboard, direnç, jumper

🛠️ Simülasyon Senaryosu: “Işıkla Veri Gönderimi Temsili”

1. Arduino A:
TX pininden dijital sinyal gönderir.
Bu sinyal LED’i yakar.
LED = Fiber sinyali temsil eder.

2. Arduino B:
Bir LDR (ışık sensörü) ya da buton ile LED ışığını “okur”.
Girişe göre veri geldiğini algılar ve bir şeyler yapar.

💡 Kod Örneği:

Arduino A (Gönderici):

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH); // LED aç = veri gönder
  delay(500);
  digitalWrite(2, LOW); // LED kapat
  delay(500);
}

Arduino B (Alıcı):

void setup() {
  Serial.begin(9600);
  pinMode(A0, INPUT);
}

void loop() {
  int val = analogRead(A0);
  if (val > 500) {
    Serial.println("Veri Alındı: 1");
  } else {
    Serial.println("Veri Yok");
  }
  delay(500);
}

Gelecek iki mikroişlemci arasında geleceğe ve geçmişe mesaj göndermek..