Ana içeriğe geç

Web Interface - Arduino Serial Monitor'dan Çok Daha Güçlü

Arduino projelerinde genelde Serial Monitor ile debug yaparsınız ve robot kontrolü için fiziksel butonlar kullanırsınız. Probot'ta ise web tabanlı driver station var! Telefon, tablet, laptop - herhangi bir cihazdan robotu kontrol edebilirsiniz.

Arduino Kontrol vs Probot Web Interface

Arduino Yaklaşımı

void loop() {
    // Serial komutlarla kontrol
    if (Serial.available()) {
        char command = Serial.read();
        if (command == 'F') {
            motor.setPower(255);    // İleri
        } else if (command == 'B') {
            motor.setPower(-255);   // Geri
        } else if (command == 'S') {
            motor.setPower(0);      // Dur
        }
    }

    // Debug için serial yazdırma
    Serial.print("Motor Power: ");
    Serial.println(motorPower);

    delay(100);
}

Sorunlar: - Kablo bağlantısı gerekir - Tek cihazdan erişim - Sadece text interface - El ile komut yazma

Probot Web Interface

┌─────────────────────────────────────┐
│  🤖 Probot Driver Station           │
├─────────────────────────────────────┤
│  Status: 🟢 Connected               │
│  Mode: Teleop                   │
│  Battery: 87% (12.4V)               │
│  WiFi: ████████░░ 8/10              │
├─────────────────────────────────────┤
│  [🔴 DISABLE] [🟢 ENABLE]          │
│  [ AUTO ] [ TELEOP ] [ TEST ]       │
├─────────────────────────────────────┤
│  Gamepad: Connected             │
│  Latency: 12ms                      │
│  └─ Left Stick: (-0.2, 0.8)        │
│  └─ Buttons: A B                    │
└─────────────────────────────────────┘

Avantajlar: - WiFi üzerinden erişim - Çoklu cihaz desteği - Görsel interface - Gerçek zamanlı durum

Web Interface Nedir?

Probot wifi ağı oluşturduğunda (probot_XXXXXX) aynı zamanda web server da başlatır. Bu server üzerinden:

Cihaz Bağlantısı:

  1. Robot açılır → WiFi ağı: probot_XXXXXX
  2. Telefon/tablet/laptop bu ağa bağlanır
  3. Tarayıcıda 192.168.4.1 adresine girilir
  4. Driver station otomatik açılır

Multi-Device Support:

  • Laptop: Ana driver station (geliştirici)
  • Tablet: Co-pilot için ikinci ekran
  • Telefon: Saha kenarında hızlı kontrol
  • Tüm cihazlar aynı anda bağlanabilir!

Arduino'dan Probot'a Geçiş

Debug İçin

Arduino Serial Monitor:

void loop() {
    Serial.print("Sensor: ");
    Serial.print(sensorValue);
    Serial.print(" | Motor: ");
    Serial.println(motorPower);

    delay(500);  // Spam önlemek için
}

Probot Web Debug:

void teleopLoop() {
    // Web interface otomatik gösterir:
    // - Robot durumu (enabled/disabled)
    // - Mod bilgisi (teleop/auto/test)
    // - Gamepad durumu
    // - Pil voltajı
    // - WiFi gücü

    // Ek debug için hala Serial kullanılabilir
    Serial.print("Sensor: ");
    Serial.println(sensorValue);
}

Kontrol İçin

Arduino Fiziksel Kontrol:

void loop() {
    // Fiziksel butonlar gerekir
    if (digitalRead(BUTTON_FORWARD)) {
        motor.setPower(255);
    } else if (digitalRead(BUTTON_BACKWARD)) {
        motor.setPower(-255);
    } else {
        motor.setPower(0);
    }
}

Probot Web + Gamepad Kontrol:

void teleopLoop() {
    // Web interface üzerinden gamepad
    float power = -gamepad.getAxis(Axis::LeftJoystickY);
    motor.setPower(power);

    // Web interface üzerinden robot enable/disable
    // Web interface üzerinden mode değiştirme
    // Hiç fiziksel buton gerekmez!
}

Web Interface Özellikleri

Ana Ekran Bileşenleri:

Robot Status

  • Connection: Robot bağlı mı?
  • Mode: Disabled, Auto, Teleop, Test
  • Enable/Disable: Robot aktif mi?
  • Battery: Pil voltajı ve yüzdesi
  • Alerts: Kritik durum uyarıları

Gamepad Section

  • Connection Status: Gamepad bağlı mı?
  • Controller Type: Xbox, PlayStation, Generic
  • Button States: Hangi butonlar basılı
  • Analog Values: Joystick ve trigger değerleri
  • Latency: Gecikme süresi

Gelişmiş Özellikler

Real-time Graphs

void teleopLoop() {
    // Bu değerler web interface'de grafik olur
    Serial.print("voltage:");
    Serial.println(batteryVoltage);

    Serial.print("temperature:");
    Serial.println(motorTemperature);

    Serial.print("position:");
    Serial.println(robotPosition);
}

Parameter Tuning

Web interface üzerinden robot parametrelerini canlı değiştirebilirsiniz:

// Bu değerler web'den ayarlanabilir
float motorSpeedMultiplier = 0.8;  // Web'den 0.5-1.0 arası
float turnSensitivity = 0.6;       // Web'den 0.2-1.0 arası
int autonomousTime = 15000;        // Web'den 10-30 saniye

void teleopLoop() {
    float speed = gamepad.getAxis(Axis::LeftJoystickY) * motorSpeedMultiplier;
    float turn = gamepad.getAxis(Axis::RightJoystickX) * turnSensitivity;

    tankdrive.arcadeDrive(speed, turn);
}

Competition Dashboard

Yarışma sırasında şu bilgiler görüntülenir:

┌─────────────────────────────────────┐
│  🏆 MEB Robot Competition Dashboard │
├─────────────────────────────────────┤
│  Match Time: 2:35 / 3:00            │
│  Mode: Autonomous (0:12 remaining)  │
│  Score: Red 45 - Blue 38            │
├─────────────────────────────────────┤
│  🔋 Battery: 11.8V (Warning!)       │
│  📡 Ping: 8ms (Excellent)           │
│  🎮 Driver: "tunag_driver"           │
├─────────────────────────────────────┤
│  Alerts: None                       │
│  └─ All systems operational         │
└─────────────────────────────────────┘

Multi-User Scenarios

Takım Çalışması

Scenario 1: Geliştirme Sırasında

Geliştirici: Laptop'ta kod yazıyor
Test Pilot: Tablet'te robot status izliyor
Mechatronics: Telefon'da motor değerlerini takip ediyor

Scenario 2: Yarışma Gününde

Test: Tablet'te parametreler ayarlar
Pilot: Telefon'da robot kullanır
Coach: Laptop'ta genel koordinasyon

Scenario 3: Demo'da

Tech: Laptop'ta sistem health kontrol
Sunumcu: Tablet'ta demo kontrolü
İzleyiciler: Telefon'dan status takip
Demo: Kablosuz robot kontrolü

Sonraki Adımlar

  1. Pratik Örnekler - İlk robot projesi
  2. Motor Control - Web'den motor test
  3. Sensor Reading - Web'de sensör grafikleri

İpucu: Arduino Serial Monitor'dan web interface'e geçiş büyük bir sıçrama! Bir kez alıştığınızda Arduino'ya dönmek istemeyeceksiniz.