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ı:¶
- Robot açılır → WiFi ağı:
probot_XXXXXX
- Telefon/tablet/laptop bu ağa bağlanır
- Tarayıcıda
192.168.4.1
adresine girilir - 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¶
- Pratik Örnekler - İlk robot projesi
- Motor Control - Web'den motor test
- 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.