back to top

REX Discovery Serisi Örümcek Robot Kiti İncelemesi: Kur, Çalıştır, Kodla!

Örümcek robot kiti inceleme yazısını arayanlar için iyi haber: Bu yazıda REX markasının Discovery Serisi örümcek robot kitini kutusundan çıkardık, montajladık, çalıştırdık ve sizin için her aşamasını değerlendirdik. Elektronikli yapısı, 4 bacaklı hareket sistemi ve STEM odaklı kazanımlarla dolu örümcek robot kiti incelemesi, hem hobicilerin hem öğrencilerin hem de öğretmenlerin ilgisini çekebilecek kapasitede.

REX Discovery Serisi Örümcek Robot Kiti Tam Olarak Ne Sunuyor?

REX Örümcek Robot; öğrenciler, maker’lar ve STEM alanıyla ilgilenen herkes için tasarlanmış bir hazır robotik kitidir. Set, çocukların ve gençlerin temel elektronik, mekanik ve yazılım bilgilerini deneyimleyerek öğrenmesini sağlar.

  • 4 bacaklı (quadruped) yürüme mekanizması
  • Bluetooth destekli kontrol
  • Arduino uyumluluğu sayesinde kodlanabilir altyapı
  • Yaş grubu: 10+ ve üzeri

    Bu robot “kendin yap” yerine “kendin keşfet” diyenler için biçilmiş kaftan!

Kutunun İçinde Neler Var?

2025 itibarıyla STEM projelerinde en çok tercih edilen kitlerden biri haline gelen bu örümcek robot, kutu içeriğiyle de oldukça iddialı. Videoda 1.06-3.30 dakikaları arasında detaylı olarak incelediğimiz kutu içeriği aşağıdaki gibidir:

Ürün AdıÜrün İçindeki Adet
Arduino UNO R3 Klon USB Kablo Hediyeli – (USB Chip CH340)1
Arduino IO Genişletme Shield – Sensör Shield V5.01
SG90 RC Mini (9gr) Servo Motor8
IR Alıcı Verici Kumanda Seti – IR Receiver Module Wireless Remote Control K1
GP Ultra Alkalin Pil AA Kalem 4′lü Paket1
4′lü AA Pil Yuvası – Pil Yatağı1
M3 Somun36
M3 10mm YSB Yıldız Silindirik Baş Metrik Vida40
M3 12mm YSB Yıldız Silindirik Baş Metrik Vida22
10mm M3 Metal Dişi-Erkek Aralayıcı (Standoff-Spacer-Yükseltici)4
M3 6mm YSB Yıldız Silindirik Baş Metrik Vida4
3mm Yükseltme Parçası3
M2 15mm Cıvata3
M2 Somun3
Oynar Göz 10mm2
M3 Fiberli Somun32
Pleksi Parçaları1

Not: Kutudan fiziksel bir kitapçık çıkmamaktadır. Ancak ürünle birebir uyumlu olan uygulama kitapçığını buraya tıklayarak PDF formatında inceleyebilirsiniz. Kitapçık içerisindeki tüm uygulamalar, set içeriğiyle eksiksiz şekilde yapılabilmektedir.

Kurulumu Zor mu? Ne Kadar Sürüyor?

Kurulum aşamasını 3.30 – 7.02 dakikaları arasında videoda detaylı olarak görebilirsiniz. İlk defa robot montajı yapacak bir kişi için bu süre ortalama 45-60 dakikayı bulabilir. Daha önceden Arduino veya maker proje deneyimi olan biri ise yaklaşık 30 dakikada montajı tamamlayabilir.

Kurulum süreci:

  1. Servo motorların bacaklara montajı
  2. Ana gövdenin birleştirilmesi
  3. Arduino Uno’nun kasaya yerleştirilmesi
  4. Kabloların bağlanması
  5. Bluetooth modül ve pil bağlantısı
  6. Ayak testleri ve denge ayarları

Tavsiyemiz: Küçük vidaları kaybetmemek için montaj sırasında bir parça kutusu kullanın.

Kurulumdan Sonra Kodları Yüklemeyi Unutmayın!

Robotun donanımsal kurulumu tamamlansa da servo motorların hareket etmesi için Arduino kartına yazılım yüklenmesi şarttır.

Bu proje için 3 önemli yazılım dosyası bulunuyor:

1. Ana Kontrol Kodları: Robotun hareket, yön, pozisyon ve mod komutlarını kontrol eder. IR kumanda ile haberleşir.

#include <Servo.h>
#include <IRremote.h>





#define irUp  1033561079
#define irDown 465573243
#define irRight 71952287
#define irLeft 2351064443
#define irOK 1217346747
#define ir1 3810010651
#define ir2 5316027
#define ir3 4001918335
#define ir4 1386468383
#define ir5 3622325019
#define ir6 553536955
#define ir7 4034314555
#define ir8 2747854299
#define ir9 3855596927
#define ir0 2538093563
#define irStar 3238126971         
#define irPound 4039382595

#define recieverPin 12

IRrecv irrecv(recieverPin);

decode_results results;



// Define servo objects
Servo legServos[8];



//                          RFL = Right Front Lift , LBP = Left Back Pivot
//                          RFP   RFL   RBP   RBL   LFP   LFL   LBP   LBL
int lowPositions[]       =  {30 , 22  , 50  , 50  , 30  , 60  , 50  , 32  };
int neutralPositions[]   =  {80 , 72  , 100 , 100 , 80  , 110 , 100 , 82  };
int highPositions[]      =  {130, 130 , 150 , 150 , 130 , 160 , 150 , 132 };


int counterIR5 = 0; 
int levelIR5 = 0;
bool alternateMovement = false ;




void setup() {

  Serial.begin(9600);
  // Attach servos to Arduino Pins
  for (int i = 0; i < 8; ++i) {
    legServos[i].attach(i + 2);  // Assuming the servos are connected to pins 2 to 9

  }

  // Initialize IR Receiver
  irrecv.enableIRIn();
  
}

void loop() {

  while (!(irrecv.decode(&results))) {
    //Wait for IR Signal
  }
  handleIRCommand(results.value);

  irrecv.resume(); 

}



void handleIRCommand(unsigned long value) {

  switch (value) {

    case ir1: 
      
      leanSpecific(5);
      break;
    
    
    case ir2: 
      
      leanForward(300);
      break;
    
    
    case ir3: 

      leanSpecific(1);    
      break;
    
    
    case ir4: 
      
      leanLeft(300);
      break;
    
    
    case ir5:
      levelIR5 = counterIR5 % 4;
      counterIR5++;

      switch (levelIR5){
        case 0:
          Elevate();
          break;

        case 1:
          Centralize();
          break;

        case 2:
          DeElevate();
          break;

        case 3:
          Centralize();
          break;
          
        default:
          break;
      }
      break;
    
    
    case ir6: 
      
      leanRight(300);
      break;
    
    
    case ir7: 
      
      leanSpecific(7);
      break;
    
    
    case ir8: 
      
      leanBackward(300);
      break;
    
    
    case ir9: 
      
      leanSpecific(3);
      break;
    
    
    case ir0: 
      
      alternateMovement= !alternateMovement;
      break;

    case irUp:
      
      alternateMovement ? walkForward_Alternate(700) : walkForward(700);
      break;
    
    
    case irDown: 
      
      alternateMovement ? walkBackward_Alternate(700) : walkBackward(700);
      break;
    
    
    case irRight: 
      turnRight();
      break;
    
    
    case irLeft: 
      turnLeft();      
      break;
    
    
    case irOK: 
      
      center_servos();
      break;  

    //We can add more functions fore Star and Pound Later  
    default:
      break;
  }
}





//Sets argument Servo's position to its High State.
void setHigh(int servoNo) {
  if (servoNo <= 7 && servoNo >= 0) // Check if the servoNo is valid
  {
    legServos[servoNo].write(highPositions[servoNo]);
    delay(5);
  }
}

//Sets argument Servo's position to its Notr State.
void setNotr(int servoNo) {
  if (servoNo <= 7 && servoNo >= 0) // Check if the servoNo is valid
  {
    legServos[servoNo].write(neutralPositions[servoNo]);
    delay(5); 
  }
}


//Sets argument Servo's position to its Low State.
void setLow(int servoNo) // Check if the servoNo is valid
{
  if (servoNo <= 7 && servoNo >= 0) {
    legServos[servoNo].write(lowPositions[servoNo]);
    delay(5);  
  }
}

// Set's all Servo's to their Neutral States.
void center_servos() {
  
  for (int i = 0; i < 8; ++i) {
    setNotr(i);
    delay(100);  
  }
}




// Turns the specified leg to the left.
// The argument should be the lift servo number of the relevant leg.
void legLeft(int servoNo,int _delay=100) {
  if (servoNo <= 7 && servoNo >= 0) {

    setLow(servoNo);  // Lift Leg
    delay(_delay);
    setHigh(servoNo - 1);  // Move Leg to the Left
    delay(_delay+300);

    setNotr(servoNo); //Lower Leg to Neutral Position

    delay(_delay);
  }
}

// Turns the specified leg to the Center.
// The argument should be the lift servo number of the relevant leg.

void legCenter(int servoNo,int _delay=100){

  if (servoNo <= 7 && servoNo >= 0) {

    setLow(servoNo);  // Lift Leg
    delay(_delay);
    setNotr(servoNo - 1);  // Move Leg to the Center
    delay(_delay+300);

    setNotr(servoNo); //Lower Leg to Neutral Position

    delay(_delay);
  }
}


// Turns the specified leg to the Right.
// The argument should be the lift servo number of the relevant leg.
void legRight(int servoNo,int _delay=100) {
  if (servoNo <= 7 && servoNo >= 0) {

    setLow(servoNo);  // Lift Leg
    delay(_delay);
    setLow(servoNo - 1);  // Move Leg to the Right
    delay(_delay+300);

    setNotr(servoNo); //Lower Leg to Neutral Position

    delay(_delay);
  }
}




void walkForward_Alternate(int _delay) {

  //Right Front and Left Back Legs
  legLeft(1,50);
  legRight(7,50);
  
  delay(300);

  setNotr(0);
  setNotr(6);

  delay(_delay);
  //Right Front and Left Back Legs
  legRight(5,50);
  legLeft(3,50);
  
  delay(300);

  setNotr(4);
  setNotr(2);
  delay(_delay);
 
}



void walkForward(int _delay) {

  legLeft(1,50);
  legRight(5,50);

  legLeft(3,50);
  legRight(7,50);

  delay(_delay);
  pullForward();  
}

//For the use of walkForward function.
void pullForward(){

    for (int servoNo = 0; servoNo < 8; servoNo += 2) {
      
    if (servoNo > 2) // Detect 0 and 2 numbered servos.
    {
      setHigh(servoNo);

    } else {
      setLow(servoNo);
    }
  }

}



void walkBackward_Alternate(int _delay) {

  //Right Back and Left Front Legs
  legRight(3,50);
  legLeft(5,50);
  
  delay(300);

  setNotr(2);
  setNotr(4);

  delay(_delay);


  //Right Front and Left Back Legs
  legLeft(7,50);
  legRight(1,50);
  
  delay(300);

  setNotr(6);
  setNotr(0);
  delay(_delay);
}



void walkBackward(int _delay) {

  legRight(3);
  legLeft(7);

  legRight(1);
  legLeft(5);

  delay(_delay);
  pullBackward();

}

//For the use of walkBackward function.
void pullBackward() {

  for (int servoNo = 0; servoNo < 8; servoNo += 2) {
    if (servoNo <= 2)// Detect 0 and 2 numbered Servos.
    {
      setHigh(servoNo);
    } 
    else {
      setLow(servoNo);
    }
  }
  delay(300);  // Adjust the delay as needed
}


void leanSpecific(int servoNo){
  switch (servoNo){

    case 1:
      setLow(1);
      setHigh(3);
      setHigh(5);
      setHigh(7);
      break;

    case 3:
      setLow(3);
      setHigh(1);
      setHigh(5);
      setHigh(7);
      break;

    case 5:
      setLow(5);
      setHigh(1);
      setHigh(3);
      setHigh(7);
      break;

    case 7:
      setLow(7);
      setHigh(1);
      setHigh(3);
      setHigh(5);
      break;

    default:
      break;
  }
}

void leanForward(int _delay){

  setLow(1);
  setLow(5);

  delay(_delay);

  setHigh(3);
  setHigh(7);

}

void leanBackward(int _delay){

  setLow(3);
  setLow(7);

  delay(_delay);

  setHigh(1);
  setHigh(5);

}

void leanLeft(int _delay){

  setLow(5);
  setLow(7);

  delay(_delay);

  setHigh(1);
  setHigh(3);

}

void leanRight(int _delay){

  setLow(1);
  setLow(3);

  delay(_delay);

  setHigh(5);
  setHigh(7);

}

void Elevate(){

  for(int i =1 ; i<8 ; i+=2 ){
    setHigh(i);
    delay(5);
  }

}

void Centralize(){

  for(int i =1 ; i<8 ; i+=2 ){
    setNotr(i);
    delay(5);
  }

}

void DeElevate(){

  for(int i =1 ; i<8 ; i+=2 ){
    setLow(i);
    delay(5);
  }

}



void turnLeft(){

  for (int servoNo = 1; servoNo < 8; servoNo+=2 ){
    legLeft(servoNo);
    delay(100);
  }
  delay(500);

  for (int servoNo = 0; servoNo < 8; ++servoNo ){
    setNotr(servoNo);
  }
}

void turnRight(){
  for (int servoNo = 1; servoNo < 8; servoNo+=2 ){
    legRight(servoNo);
    delay(100);
  }
  delay(500);
  
  for (int servoNo = 0; servoNo < 8; ++servoNo ){
    setNotr(servoNo);
  }
}

2. IR Kumanda Test Kodu: Hangi tuşun hangi sinyali yolladığını öğrenmek için kullanılır

#include <IRremote.h>

const int RECV_PIN = 12;  // Define the IR receiver pin

IRrecv irrecv(RECV_PIN);  // Create an IR receiver object
decode_results results;   // Create an object to hold the decoding results

void setup(){
  Serial.begin(9600);     // Initialize serial communication
  irrecv.enableIRIn();    // Enable the IR receiver
  irrecv.blink13(true);   // Enable blinking on pin 13 when IR signal is received
}

void loop(){
  unsigned long value;

  if (irrecv.decode(&results)){  // Check if an IR signal is received
    value = results.value;       // Get the value of the received IR signal
    Serial.println("Pressed Button Code");
    Serial.println(value);        // Print the received IR code
    Serial.println("**************************************");

    irrecv.resume();             // Receive the next IR signal
    delay(200);                  // Delay to avoid processing the same signal multiple times
  }
}

3. Servo Kalibrasyon Kodu: Her servo motorun doğru açılarla hizalanmasını sağlar.

#include <Servo.h>

Servo legServos[8];  // Array to hold servo objects

void setup() {
  Serial.begin(9600);

  // Attach each servo to a pin (assuming servos are connected to pins 2 to 9)
  for (int i = 2; i < 10; ++i) {
    legServos[i - 2].attach(i);
  }
}

void loop() {
  if (Serial.available() > 0) {
    // Read the selected servo number from serial input
    int selectedServo = Serial.parseInt();

    if (selectedServo >= 2 && selectedServo <= 9) {
      Serial.print("Enter position for Servo ");
      Serial.print(selectedServo);
      Serial.print(" (0-180): ");

      // Clear any remaining characters in the serial input buffer
      while (Serial.available() > 0) {
        Serial.read();
      }

      // Wait for user input for the servo position
      while (Serial.available() == 0) {
        // Wait for input
      }

      // Read the servo position from serial input
      int servoPosition = Serial.parseInt();

      if (servoPosition >= 0 && servoPosition <= 180) {
        // Set the servo position
        legServos[selectedServo - 2].write(servoPosition);
        Serial.print("Servo ");
        Serial.print(selectedServo);
        Serial.print(" position set to: ");
        Serial.println(servoPosition);
      } else {
        Serial.println("Invalid servo position. Should be between 0 and 180.");
      }
    } else {
      Serial.println("Invalid servo number. Should be between 2 and 9.");
    }

    // Clear the input buffer
    while (Serial.available() > 0) {
      Serial.read();
    }
  }
}

Kodlar Arduino IDE üzerinden karta yüklenebilir. Tüm kodları ve detayları yazımızda veya uygulama kitapçığında bulabilirsiniz!

Hareket Kabiliyeti Nasıl? Yürüyor mu Gerçekten?

Robotu montaj olduktan sonra videonun 7.02 – 8.59 arasında test süreci izleyebilirsiniz. 4 bacaklı yapısı sayesinde ileri, geri, sola ve sağa yürüme hareketlerini yapabiliyor. Hareket kontrolü bluetooth bağlantısı ile mobil cihazdan sağlanıyor.

▶ Hızlı hareket yerine dengeli adımlar tercih edilmiş. Bu sayede hem daha estetik hem de mekanik olarak daha dayanıklı.

▶ Servo motorlar standart plastik dişlidir, ancak aşırı yüke zorlamamak ömrü uzatacaktır.

REX Discovery Serisi Örümcek Robot Kiti Ne Öğretir? STEM Kazanımları Nelerdir?

• Mekanik montaj becerisi
• Elektronik komponent tanıma (servo motor, modül, kart)
• Kodlama: Arduino C dili mantığına giriş
• Problem çözme ve mantıksal bağlantı kurma
• Ebeveyn-çocuk birlikte proje yürütme deneyimi

İpucu: Öğretmenler bu kiti okul içi STEM günleri, kulüp dersleri veya teknoloji-tasarım projelerinde kullanabilir.

REX Discovery Serisi Örümcek Robot Kitini Kimler Almalı?

Yeni başlayan bir maker mısın? Bu kit senin için uygun.

Çocuğuna STEM sevgisini aşılamak isteyen bir ebeveyn misin? Doğru yerdesin.

Arduino ve robotik öğretmek isteyen bir öğretmen misin? Sınıfta kullanılabilecek seviyede.

Proje tabanlı öğrenme isteyen bir lise/üniversite öğrencisi misin? Bu kit seni ileri taşır.

YouTube Videomuzu Kaçırma!

Rex örümcek robotu detaylı olarak incelediğimiz videomuzda:

  • Kutu içeriğine birlikte bakıyor,
  • Montajı adım adım yapıyor,
  • Kodları yükleyip çalıştırıyoruz,
  • Robotu harekete geçiriyor ve deneyimimizi aktarıyoruz.

Hazır ama öğretici bir deneyim

REX Discovery Serisi Örümcek Robot Kiti, kodlamaya ve robotiğe merak duyan herkes için adeta yürüyen bir laboratuvar. Kendin yap projeleri kadar zaman almasa da aynı derecede eğitici ve tatmin edici. Kutu içeriği kaliteli, kurulum adımları açık ve sade, hareket kabiliyeti ise gayet yeterli.

Maker kültürüyle tanışmak isteyen herkes için önerilir.

Sen ne düşünüyorsun?

Robotu beğendin mi? Kodu yüklerken sorun yaşadın mı? Fikirleriniz bizim için çok değerli! Lütfen deneyimlerini, sorularını ya da projeyle ilgili ipuçlarını yorumlar bölümünde bizimle paylaş!

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz