SkyTech Smart Ultrasonic Radar and Servo Tracking Kit with OLED Display

SkyTech Smart Ultrasonic Radar and Servo Tracking Kit with OLED Display

Product form

طقم ونظام الرادار والتتبع الذكي بالموجات فوق الصوتية SkyTech Smart Ultrasonic Radar & Tracking System المدمج بمحرك سيرفو وشاشة OLED... اقرأ المزيد

التسليم في اليوم التالي

75,000 IQD

    • شحن مجاني لجميع الطلبات التي تزيد عن 50 قطعة

    Description

    طقم ونظام الرادار والتتبع الذكي بالموجات فوق الصوتية SkyTech Smart Ultrasonic Radar & Tracking System المدمج بمحرك سيرفو وشاشة OLED (SkyTech Smart Radar & Servo Target Tracking Kit with HC-SR04, SG90 & 0.96" OLED Display)، المنظومة الهندسية المتكاملة لمسح المحيط واكتشاف الأجسام وتتبعها أوتوماتيكياً. تعتمد المنظومة على حساس المسافة HC-SR04 المثبت فوق محرك السيرفو SG90 الذي يقوم بالدوران والمسح الزاوي من 30 إلى 150 درجة. يتميز النظام ببرمجية تتبع ذكية (Smart Tracking Mechanism): فعند اكتشاف جسم على مسافة أقل من 30 سم، يتوقف السيرفو عن المسح الشامل ويلف حول الهدف بعمل مسح ميكروي محلي (±20 درجة) للقفز والتتبع المستمر لموقع الجسم المتحرك. تعرض الواجهة على شاشة OLED شبكة رادار كلاسيكية خضراء (Green Retro Radar Grid) مع خط مسح لحظي ونقطة حمراء تحدد موقع الهدف والمسافة بالمتر أو السنتيمتر. يعتبر هذا الطقم الخيار الهندسي الأول لطلاب كليات الهندسة، مشاريع التخرج، ومطوري الأنظمة الرادارية الذاتية.

    __________________________________________________

    SkyTech Smart Ultrasonic Radar and Target Tracking System Kit, an advanced robotics and radar telemetry platform built around the Arduino ecosystem. The system features an HC-SR04 ultrasonic distance sensor mounted onto a high-precision SG90 micro servo motor executing automated horizontal angular sweeps from 30° to 150°. Powered by smart target-tracking algorithms, when an object breaches the 30 cm threshold, the servo locks its orientation and performs localized micro-sweeps (±20°) to actively track the moving target. An integrated 0.96" I2C OLED display renders a classic green retro radar grid interface complete with a rotating sweep line, target blips, and exact distance measurements in centimeters. Supplied with pre-configured firmware and hardware mounts, this SkyTech radar tracking kit serves as a premier educational package for undergraduate engineering students, graduation project developers, and robotics prototypers.

    __________________________________________________

    المميزات الأساسية:
    * اسم المنتج: طقم مشروع نظام الرادار والتتبع الذكي (SkyTech Smart Radar & Servo Tracking Kit)
    * مستشعر المسافة: حساس الموجات فوق الصوتية HC-SR04 بقدرة قياس دقيقة وتردد 40kHz
    * محرك التوجيه: محرك سيرفو SG90 ميكرو لمسح زوايا المحيط وتتبع الأهداف
    * نظام التتبع الذكي: إيقاف المسح العام والتحول للمسح المحلي الدقيق (±20°) عند اقتراب الهدف (<30cm)
    * شاشة العرض: شاشة 0.96 إنش OLED تعرض شبكة الرادار ورسم الأهداف لحظياً
    * التطبيقات النموذجية: مشاريع التخرج الهندسية، أنظمة الرادار والروبوتات الاستكشافية، ومختبرات الأردوينو

    الكود البرمجي

    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SH110X.h>
    #include <Servo.h>

    #define SCREEN_WIDTH 128
    #define SCREEN_HEIGHT 64
    #define OLED_RESET -1

    Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

    const int trigPin = 9;
    const int echoPin = 10;
    const int servoPin = 11;
    const int buzzerPin = 8;

    Servo myServo;

    int pos = 90;           // الزاوية الحالية
    int dir = 1;            // اتجاه حركة البحث الطبيعي (1 يمين، -1 يسار)
    bool targetState = false; // حالة وجود الهدف الحالية (false = غير موجود، true = موجود)

    void setup() {
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      pinMode(buzzerPin, OUTPUT);
      noTone(buzzerPin);

      myServo.attach(servoPin);
      myServo.write(pos);

      Wire.begin();
      Wire.setClock(400000); // تسريع الشاشة
      display.begin(0x3C, true);
      display.clearDisplay();
      
      display.setTextSize(1);
      display.setTextColor(SH110X_WHITE);
      display.setCursor(10, 25);
      display.print(F("SMART TRACKING"));
      display.display();
      
      tone(buzzerPin, 1000, 100);
      delay(1000);
    }

    void loop() {
      // قراءة أولى وثانية متتاليتان للتحقق من الحالة
      int dist1 = getDistance();
      delay(10);
      int dist2 = getDistance();

      // فحص شرط القراءتين المتتاليتين (وجود الهدف إذا كانت القراءتان أقل من 30 سم)
      bool read1_hasTarget = (dist1 > 0 && dist1 < 30);
      bool read2_hasTarget = (dist2 > 0 && dist2 < 30);

      // 1. حالة وجود الهدف في قراءتين متتاليتين
      if (read1_hasTarget && read2_hasTarget) {
        targetState = true;
        tone(buzzerPin, 2500, 30); // تنبيه وجود الهدف

        // تثبيت الاتجاه بدون حركة وعرض الهدف
        display.clearDisplay();
        drawRadarGrid();
        drawSweepLine(pos);
        drawTarget(pos, (dist1 + dist2) / 2);
        display.display();
      } 
      // 2. حالة الانتقال من وجود الهدف إلى عدم وجوده في قراءتين متتاليتين
      else if (targetState && !read1_hasTarget && !read2_hasTarget) {
        targetState = false; // إعادة ضبط الحالة إلى عدم وجود هدف
        
        // الدخول في عملية البحث السريع
        bool foundInQuickSearch = runQuickSearch();
        
        // إذا لم يجد الهدف في البحث السريع، ينتقل فوراً للبحث الاعتيادي
        if (!foundInQuickSearch) {
          runNormalSearch();
        }
      } 
      // 3. حالة عدم وجود الهدف في قراءتين متتاليتين (الاستمرار بالبحث الطبيعي)
      else if (!read1_hasTarget && !read2_hasTarget) {
        targetState = false;
        runNormalSearch();
      }
    }

    // دالة البحث السريع عند فقدان الهدف
    bool runQuickSearch() {
      int targetPos;

      // الخطوة الأولى: 20 درجة باتجاه عقارب الساعة
      targetPos = constrain(pos + 20, 30, 150);
      myServo.write(targetPos);
      delay(150); // وقت قصير لاستقرار السيرفو
      
      if (checkTargetTwice()) {
        pos = targetPos;
        return true; // تم إيجاد الهدف بالدوران الأول
      }

      // الخطوة الثانية: 40 درجة عكس عقارب الساعة (20 للرجوع + 20 للاتجاه الثاني)
      targetPos = constrain(targetPos - 40, 30, 150);
      myServo.write(targetPos);
      delay(200);
      
      if (checkTargetTwice()) {
        pos = targetPos;
        return true; // تم إيجاد الهدف بالدوران الثاني
      }

      // لم يجد الهدف في البحث السريع
      pos = targetPos;
      return false;
    }

    // دالة البحث الاعتيادي (المسح الطبيعي السريع)
    void runNormalSearch() {
      pos += dir * 5; 
      if (pos >= 150) dir = -1; // الحد الأيسر للزاوية المتفق عليها
      if (pos <= 30)  dir = 1;  // الحد الأيمن للزاوية المتفق عليها

      myServo.write(pos);

      display.clearDisplay();
      drawRadarGrid();
      drawSweepLine(pos);
      display.display();
    }

    // دالة مساعدة للتحقق من وجود الهدف بقراءتين متتاليتين
    bool checkTargetTwice() {
      int d1 = getDistance();
      delay(10);
      int d2 = getDistance();
      return (d1 > 0 && d1 < 30 && d2 > 0 && d2 < 30);
    }

    // دالة قراءة المسافة بحساس الألتراسونيك
    int getDistance() {
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      
      long duration = pulseIn(echoPin, HIGH, 4000);
      if (duration == 0) return 0;
      return duration * 0.034 / 2;
    }

    // رسم شبكة الرادار
    void drawRadarGrid() {
      display.drawCircle(64, 63, 60, SH110X_WHITE);
      display.drawCircle(64, 63, 40, SH110X_WHITE);
      display.drawCircle(64, 63, 20, SH110X_WHITE);
      
      display.drawLine(64, 63, 12, 33, SH110X_WHITE);
      display.drawLine(64, 63, 116, 33, SH110X_WHITE);
    }

    // رسم خط المسح
    void drawSweepLine(int angle) {
      float rad = angle * (3.14159 / 180.0);
      int x = 64 + (int)(60.0 * cos(rad));
      int y = 63 - (int)(60.0 * sin(rad));
      display.drawLine(64, 63, x, y, SH110X_WHITE);
    }

    // رسم نقطة الهدف عند تثبيت الحركة
    void drawTarget(int angle, int distance) {
      float rad = angle * (3.14159 / 180.0);
      float distFactor = (float)distance / 30.0;
      if (distFactor > 1.0) distFactor = 1.0;
      int r = (int)(60.0 * distFactor);
      
      int x = 64 + (int)(r * cos(rad));
      int y = 63 - (int)(r * sin(rad));
      display.fillCircle(x, y, 4, SH110X_WHITE);
    }

    رابط فديو الشرح

    https://youtube.com/shorts/-5iDg6IZsOk?si=5fsknkLqNKI7bJqT

    المواصفات

    • الوزن: داخلي وخارجي

    Pros and cons

    • منتج مستدام، مثالي للاستخدام اليومي
    • قد يتغير لونه عند التعرض لأشعة الشمس المباشرة

    أفضل 10 منتجات مبيعاً

    قد تعجبك هذه المنتجات أيضًا. صُنفت هذه المنتجات على أنها "أفضل 10 منتجات" من قبل عملائنا

    الإرجاع والتسليم

    متى سيتم تسليم طلبي؟

    نحن نشحن الطلبات إلى جميع أنحاء العالم. سيتم تعبئة طلبك بعناية فائقة وتسليمه أينما تريد. يستغرق التسليم ما بين 2-4 أيام عمل. ستتلقى بريدًا إلكترونيًا بعد الطلب يحتوي على مزيد من المعلومات حول التسليم.

    هل يمكنني إرجاع المنتج الخاص بي؟

    يمكن إرجاع الطلبات أو استبدالها في غضون 30 يومًا من استلام الطرد، شريطة أن تكون بحالة قابلة لإعادة البيع الأصلية.

    ماذا أفعل إذا كان السلعة (أو جزء منها) تالفة؟

    نحن نعمل جاهدين لتسليم أغراضك دون تلف. يمكن إرجاع الطلبات أو استبدالها في غضون 30 يومًا من استلام الطرد، شريطة أن تكون بحالتها الأصلية القابلة لإعادة البيع.

    المنتجات التي تمت مشاهدتها مؤخرًا

      تسجيل الدخول

      هل نسيت كلمة المرور؟

      ليس لديك حساب بعد؟
      إنشاء حساب