radar Robotik Projeleri
schedule 22 dakika okuma

Servo Radar: 180° Tarayıcı

Arduino Uno, SG90 servo motor ve HC-SR04 sensör ile çalışan radar sistemi yapalım. Robotik uygulamalara mükemmel giriş!

memory Arduino Uno
settings SG90 Servo
sensors HC-SR04

Giriş

Robotik projelerde sensörü döndürmek, durağan sensöre göre çok daha fazla veri sağlar. SG90 servoyu 0-180° arasında adım adım döndürüp her açıda HC-SR04 ile mesafe ölçtüğümüzde, karşımızdaki alanın "yakınlık haritası" çıkar. Bu projede o haritayı minik bir OLED ekranda anlık çubuk grafik olarak çizeceğiz.

Öğreneceklerin

  • Servo motor kontrolü ve PWM sinyali
  • Süpürme stratejisi ve zamanlama optimizasyonu
  • Ölçümlerin görselleştirilmesi (grafik çizimi)
  • Gürültü ve besleme püfleri

Gerekli Parçalar

🖥️

Arduino Uno R3

Ana kontrol kartı

⚙️

SG90 Servo

Mikro servo motor

📡

HC-SR04

Ultrasonik sensör

📱

0.96" OLED

Grafik ekran

Bağlantı Şeması

Servo Motor Bağlantısı:

  • Sinyal (Turuncu) → Arduino D9
  • VCC (Kırmızı) → Arduino 5V
  • GND (Kahverengi) → Arduino GND

HC-SR04 Bağlantısı:

  • TRIG → Arduino D4
  • ECHO → Arduino D5
  • VCC → Arduino 5V
  • GND → Arduino GND

PlatformIO Konfigürasyonu

[env:uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps =
  adafruit/Adafruit SSD1306 @ ^2.5.9
  adafruit/Adafruit GFX Library @ ^1.11.10
  arduino-libraries/Servo @ ^1.2.1

Arduino Kodu

#include <Arduino.h>
#include <Servo.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Servo sv;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

const int trig = 4;
const int echo = 5;

long measureCM() {
  digitalWrite(trig, LOW);
  delayMicroseconds(3);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long duration = pulseIn(echo, HIGH, 30000);
  if (duration == 0) return 0;
  return duration / 58;
}

void drawBar(int angle, int distance) {
  oled.clearDisplay();
  oled.setTextSize(1);
  oled.setTextColor(SSD1306_WHITE);
  oled.setCursor(0, 0);
  oled.print("Aci:");
  oled.print(angle);
  oled.print("  cm:");
  oled.print(distance);
  int barWidth = map(min(distance, 200), 0, 200, 120, 0);
  oled.drawRect(0, 16, 120, 12, SSD1306_WHITE);
  oled.fillRect(0, 16, barWidth, 12, SSD1306_WHITE);
  oled.display();
}

void setup() {
  sv.attach(9);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Wire.begin();
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.clearDisplay();
  oled.println("Radar Basladi");
  oled.display();
  delay(2000);
}

void sweep(int from, int to, int step) {
  for (int angle = from; angle != to; angle += step) {
    sv.write(angle);
    delay(12);
    int cm = measureCM();
    drawBar(angle, cm);
  }
}

void loop() {
  sweep(0, 180, 2);
  sweep(180, 0, -2);
}

Sonuç

Bu radar tarayıcı projesi, robotik ve sensör teknolojilerine mükemmel bir giriş sağlar. Servo kontrolü, ultrasonik mesafe ölçümü ve grafik gösterim gibi temel konuları öğrenirken aynı zamanda çalışır bir radar sistemi elde edersiniz.

✅ Proje Tamamlandı!

Artık kendi radar tarayıcı sisteminizi yaptınız! Bu proje size servo kontrolü, grafik arayüz geliştirme ve robotik uygulamalar konusunda sağlam bir temel sağlayacak.