RF Haberleşme Sistemi V1.2

2.4GHz İKA Telemetri ve Kontrol Paneli

Projenin Amacı ve Mimarisi

Zorlu Parkurlar İçin Kesintisiz İletişim

İnsansız Kara Aracı (İKA) projelerinde, özellikle TEKNOFEST şartnamesi gereği engebeli ve engellerle dolu zorlu parkurlarda, aracın stabil hareket etmesi ve komutların eksiksiz iletilmesi hayati önem taşır. Bu proje, otonom ve manuel sürüş modları arasında sorunsuz geçiş yapabilen, bağlantı koptuğunda aracı güvene alan (Fail-Safe) profesyonel bir iletişim altyapısı kurmak amacıyla tasarlanmıştır.

Sistemin ilk testleri ve Ar-Ge süreci, hızlı prototipleme ve düşük maliyet avantajı sağlayan tek yüzlü (single-layer) el yapımı PCB üretim yöntemiyle bakır plaketler üzerine işlenerek gerçekleştirilmiştir.

TEKNOFEST İKA Zorlu Görev Parkuru TEKNOFEST İKA Parkuru

Donanım Bileşenleri

Kullanılan Modüller ve Altyapı (V1.2)

İlk versiyonda düşük kaliteli bakır plaket kullanımından kaynaklı kuru lehimler ve buna bağlı sinyal gecikmeleri yaşanmıştır. Ayrıca ilk tasarımda kart boyutunun gereğinden büyük olması ve LCD ekran kullanımının sisteme hantallık katması sebebiyle bu sorunlar analiz edilip çok daha minimalist ve stabil olan Kumanda Kartı V1.2 sürümüne geçilmiştir. Sistem, 2.4GHz frekans bandında çalışan NRF24L01 modülleriyle SPI haberleşmesi üzerinden veri aktarır. Eksen hareketleri KY-023 çift eksenli joysticklerle, güç regülasyonu ise AMS1117-3.3 / 5V modülleriyle sağlanmaktadır. Kart başlangıç olarak 4 kanallı tasarlanmış olup, donanımsal altyapısı 6 kanalı rahatlıkla kaldırabilecek düzeydedir.

Yazılım Mimarisi ve İletişim Güvenliği

Alacakart ve Arduino Entegrasyonu

Projenin en kritik Ar-Ge süreçlerinden biri, alıcı ve verici sistemlerin farklı mimarilerde paralel olarak kodlanmasıydı. Sistem iki farklı versiyon üzerinden çalıştırılmıştır: Biri STM32 tabanlı, kendi kapalı kütüphanesini kullanan yerli Alacakart (PPM sinyalleri üzerinden otonom/manuel haberleşme); diğeri ise açık kaynak kütüphanelerle desteklenen Arduino Mega/Nano mimarisi (Serial/UART haberleşme).

Yazılım mimarisi kurgulanırken C ve C++ dilleri kullanılmış olup, nesne tabanlı programlamaya (OOP) giriş yapılarak kodların daha yönetilebilir olması sağlanmıştır. Modülerliği artırmak amacıyla, verici ve alıcı taraflarındaki temel işlevler kendi özel header kütüphanelerine ayrılmıştır.

1. Alacakart (PPM Modülasyonu) Yazılım Paketi

Alıcı ve verici kodları kendi içlerinde modüler (header kütüphanesi ve asıl kütüphane) olarak ayrılmıştır. Verici tarafında havadaki veri paketlerinin çevresel gürültülerden dolayı bozulmasını engellemek için, gönderilmeden hemen önce paket içerisindeki değerler toplanarak bir doğrulama baytı (Check-Sum) oluşturulur. Alıcı tarafında ise bu paket çözülerek eşleşme durumuna göre PPM sinyali (1000-2000 arası) oluşturulur. 2 saniye sinyal kesildiğinde ise sistem Fail-Safe moduna geçerek aracı güvene alır.

Verici_Kutuphane.h
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define JOY_X A1
#define JOY_Y A0
#define POT A2
#define SWITCH 6

struct KumandaVerisi {
  int8_t ileri_Geri;  // Joystick Y ekseni (ileri/geri)
  int8_t donus;       // Joystick X ekseni (dönüş)
  int8_t hiz;         // Pot ile belirlenen hız
  bool   mod;         // Mod seçimi (toggle switch)
};
KumandaVerisi veri; 

RF24 radio(9, 10); 
const byte adres[5] = {'0', 'I', 'K', 'A', '0'};   //Adres adı

unsigned long onceki_Zaman = 0;
const unsigned long gonderim_Araligi = 20;  // 20 ms yani 50 HZ.
ikaAlici_ppm2.ino
void loop() {
  unsigned long simdi = millis();
  
  if (simdi - sonDonguZamani > 20) {                         // ~50 Hz 
    /* --------- RF24 veri kontrolü --------- */
    if (radio.available()) {                                // Yeni paket?
      radio.read(&rxData, sizeof(rxData));
      sonVeriZamani = simdi;

      Structtan_ppmKanali();
    }
    /* --------- Failsafe --------- */
    else if (simdi - sonVeriZamani > 2000) {  // 2 s veri yoksa
      kanal[4] = 2000;                        // Failsafe kanalı yüksek
    }

    kanallariYolla();
    sonDonguZamani = simdi;
  }
}

void Structtan_ppmKanali() {
  /* Struct alanlarını PPM kanallarına dönüştür */
  kanal[0] = constrain(map(rxData.ileri_Geri, -127, 127, 1000, 2000), 1000, 2000);     // İLERİ-GERİ
  kanal[1] = constrain(map(rxData.donus,      -127, 127, 1000, 2000), 1000, 2000);     // DÖNÜŞ
  kanal[2] = constrain(map(rxData.hiz, 0, 255, 1000, 2000), 1000, 2000);               // HIZ
  kanal[3] = rxData.mod ? 2000 : 1000;    // Anahtar açık/kapalı
  kanal[4] = 1500;                        // Yedek
}

2. Arduino Mega Versiyonu (Serial Haberleşme)

Sistemin yedek veya test mimarisi olarak Arduino Mega ve Nano üzerinden çalışan versiyonunda, modüller arası iletişim UART (Hardware/Software Serial) üzerinden sağlanmaktadır. Arduino IDE ortamında C ve C++ dilleriyle geliştirilen bu yapıda da benzer bir Fail-Safe algoritması uygulanmış, bağlantı koptuğunda (300ms zaman aşımı) röle ve fren pinleri üzerinden aracın fiziksel kontrolü kesilmiştir.

Ard_Mega_Manuel01.ino
/* ---------- Failsafe ---------- */
void failsafe() {
  analogWrite(PIN_PWM, 0);                 // gaz kapalı
  digitalWrite(PIN_BRK, HIGH);             // fren çekili
  digitalWrite(ROLE, ROLE_IDLE);           // ileri
}

void loop() {
  /* ---------- Paket al ---------- */
  if (link.available() >= PKT_LEN + 1) {
      if (link.read() == HEADER) {
          link.readBytes(reinterpret_cast<uint8_t*>(&rx), PKT_LEN);
          lastPkt = millis();
      }
  }

  /* ---------- Failsafe ---------- */
  if (millis() - lastPkt > FS_TIMEOUT) { failsafe(); return; }

  /* ---------- Gaz ---------- */
  analogWrite(PIN_PWM, map(rx.hiz, 0, 255, PWM_MIN, PWM_MAX));
}

Modüler Şematik Tasarımı

Sistemin her iki ucunda bulunan Kumanda (Verici) ve Alıcı kartlarının KiCad üzerinde hazırlanan şematik devre tasarımları aşağıda verilmiştir.

RF Kumanda Şematiği Kumanda (Verici) Şematik Tasarımı
RF Alıcı Şematiği İKA Alıcı Birimi Şematik Tasarımı

İnteraktif PCB (HTML BOM)

Aşağıdaki interaktif model üzerinden kartın komponentlerinin çift katmanlı olarak yerleşimini, pedlerini ve baskılarını detaylıca inceleyebilirsiniz. Kullandığım tüm komponentler soldaki listede listelenmiş olup herhangi bir komponente tıkladığınızda kart üzerindeki konumu vurgulanacaktır. Seçtiğim komponentlerin değerleri ve biçimleri detaylıca yazmaktadır.

> Kumanda (Verici) Kartı

> Alıcı Kartı

PCB Devre Tasarımı

Kartların KiCad ortamında gerçekleştirilen tek yüzlü (single-layer) profesyonel PCB yerleşimi ve bakır hat rotalama şemaları aşağıda yer almaktadır.

Kumanda Kartı PCB Tasarımı Kumanda (Verici) PCB Tasarımı
Alıcı Kartı PCB Tasarımı İKA Alıcı Birimi PCB Tasarımı

Kartın Fiziksel Çıktısı

Tasarımı tamamlanan, tek yüzlü bakır plaket üzerine işlenip el dizgisi yapılan haberleşme sisteminin son fiziksel hali aşağıda görülebilir.

RF Haberleşme Sistemi Fiziksel Görünüm RF Sistemi - Tamamlanmış Fiziksel Prototip

Geliştirici Notu

Test Süreçleri ve Gelecek Hedefleri

Bu sistem, yalnızca tasarım ortamında kalmayıp sahada (zorlu zemin koşullarında) gerçek zamanlı menzil testlerinden (150-200 metre arası) başarıyla geçmiştir. Sistemin gelecek versiyonlarında amacım; ergonomiyi artırmak, anten oryantasyon iyileştirmeleriyle iletişim mesafesini daha da uzatmak ve NRF modüllerinin telemetri ekranıyla çift yönlü haberleşmesini sağlayarak sistemi daha stabil hale getirmektir. Ayrıca, kendi tasarladığım mikrodenetleyici ve iletişim hatlarına sahip özgün bir kart ile çift katmanlı endüstriyel PCB üretimine geçerek, projeyi kullanıcı dostu, ticari bir ürün kalitesine taşımayı hedefliyorum.