Verici modülde kullanılan malzemeler:

  • MPU6050
  • NRF24L01
  • ARDUINO NANO
  • 9V PİL
  • MINI BOARD

verici kodu

kutuphaneler indir.

#include <SPI.h> // nRF24L01+ ile SPI iletişim.
#include <RF24.h> // nRF24L01+ kütüphanesi v1.4.1
#include <Wire.h> // Mpu6050 ile I2C iletişim.
#include <MPU6050.h> //Mpu6050 kütüphanesi v0.3.0

MPU6050 ivme_sensor; // ivme_sensor isimli nesne oluştur.
int x, y, z; // x, y, z düzlemlerinin ivme değişkenleri.

RF24 radio(7, 8); // radio isimli nesne oluştur. CE ve CSN pinleri.
int veri[2]; // X ve y düzlemi için dizi tanımlama.

void setup() {
  Wire.begin(); // I2C iletişimi başlat.
  ivme_sensor.initialize(); // Mpu6050'yi başlat.

  radio.begin(); // nRF24L01+'yı başlat.
  radio.openWritingPipe(1234); // İletişim anahtarı 1234.
}

void loop() {
  ivme_sensor.getAcceleration(&x, &y, &z); // Sensörden ivme bilgilerini al.

  veri[0] = map(x, -17000, 17000, -255, 255 ); //X düzleminin verisi (ileri-geri)
  veri[1] = map(y, -17000, 17000, -255, 255); //Y düzeleminin verisi (sağ-sol)
  radio.write(veri, sizeof(veri)); // veri değişkenindeki bilgiyi nRF24L01+'ya gönder.
}

Alıcı modülde kullanılan malzemeler:

  • NRF24L01
  • L298 MOTOR SÜRÜCÜ
  • 3S LIPO PİL
  • ARDUINO NANO
  • MINI BOARD

Araç için:

  • 6V 250 Rpm Motor ve Tekerlek Seti
  • Araç gövdesi
  • Sarhoş teker

veya hepsi bir arada 2WD Robot Araba Kit

veya aşağıdan 3B yazıcı için .stl dosyasını indirebilirsiniz.

Alıcı kodu

 

#include <SPI.h> // nRF24L01+ ile SPI iletişim.
#include <RF24.h> // nRF24L01+ kütüphanesi v1.4.1

 

RF24 radio(7, 8); // radio isimli nesne oluştur. CE ve CSN pinleri.

int veri[2];// X ve Y düzlemi için dizi tanımlama
const byte IN1 = 5, IN2 = 6, IN3 = 9, IN4 = 10; // PWM pinleri. (enA ve enB’de jumper takılı).

void setup() {
 radio.begin(); // nRF24L01+’yı başlat.
 radio.openReadingPipe(0, 1234); // İletişim anahtarı 1234.
 radio.startListening(); // Alıcı moda geç.
}

void loop() {
 if (radio.available()) { // Veri geliyorsa…
   radio.read(veri, sizeof(veri)); // Gelen veriyi veri değişkenine yükle.

   if (veri[0] > 50) { //İleri.
     analogWrite(IN1, veri[0]);
     analogWrite(IN2, 0);
     analogWrite(IN3, veri[0]);
     analogWrite(IN4, 0);
   }
   if (veri[0] < 50) { //Geri.
     analogWrite(IN1, 0);
     analogWrite(IN2, veri[0]);
     analogWrite(IN3, 0);
     analogWrite(IN4, veri[0]);
   }
   if (veri[1] > 50) { //Sol.
     analogWrite(IN1, 0);
     analogWrite(IN2, veri[1]);
     analogWrite(IN3, veri[1]);
     analogWrite(IN4, 0);
   }
   if (veri[1] < 50) { // Sağ.
     analogWrite(IN1, veri[1]);
     analogWrite(IN2, 0);
     analogWrite(IN3, 0);
     analogWrite(IN4, veri[1]);
   }
   if (veri[0] > 50 && veri[0] < 50 && veri[1] > 50 && veri[1] < 50) { // Dur.
     analogWrite(IN1, 0);
     analogWrite(IN2, 0);
     analogWrite(IN3, 0);
     analogWrite(IN4, 0);
   }
 }
}

nRF24L01+ modülü test etme kodları

Verici kodu

#include <SPI.h> // nRF24L01+ ile SPI iletişim.
#include <RF24.h> // v1.4.2

RF24 radio(7, 8); // radio isimli nesne oluştur. CE ve CSN pinleri.

void setup() {
  Serial.begin(9600); // Hataları seri monitörde görebilmek için seri iletişimi başlat.
  if (!radio.begin()) { // nRF24L01+'yı başlat.
    Serial.println("nRF24L01+ bağlantıları yanlış veya temazsızlık var. nRF24L01+ bozulmuş olabilir."); //nRF24L01+ modülü başlamıyorsa uyarı ver.
    while (1) {}
  }
  radio.openWritingPipe(1234); // İletişim anahtarı 1234.
}

void loop() {
  char veri[] = "Test tamam.";
  radio.write(&veri, sizeof(veri)); //Veriyi gönder.
}

Alıcı kodu

#include <SPI.h> // nRF24L01+ ile SPI iletişim.
#include <RF24.h> // v1.4.2

RF24 radio(7, 8); // radio isimli nesne oluştur. CE ve CSN pinleri.

void setup() {
  Serial.begin(9600); // Hataları seri monitörde görebilmek için seri iletişimi başlat.
  if (!radio.begin()) { // nRF24L01+'yı başlat.
    Serial.println("nRF24L01+ bağlantıları yanlış veya nRF24L01+ bozulmuş olabilir."); //nRF24L01+ modülü başlamıyorsa uyarı ver.
    while (1) {}
  }
  radio.openReadingPipe(0, 1234); // İletişim anahtarı 1234.
  radio.startListening(); // Alıcı moda geç.
}

void loop() {
  if (radio.available()) { // Veri geliyorsa...
    char veri[12];
    radio.read(&veri, sizeof(veri));
    Serial.println(veri); //Seri ekrana gelen veriyi yazdır.
  }
}

aracGovde.stl dosyası

46 Responses

  1. ben mpu6050 nin eksen lerine seri port ekranından bakın ? işaretleri değişik işaretler veriyor neden olabilir.

  2. Hocam çok güzel bir çalışma, neden kodda +-50 değerinden büyük küçük diyoruz bunun sebebi nedir.

  3. Merhabalar,
    Araç üzerinde 1 kg’ya yakın yük olacak. palet teker kullanmayı düşünüyorum. düşey ağırlık olduğundan ağırlık merkezini dengelemek için. Nasıl motor seçebilirim ? işin içinden çıkamadım.

  4. hocam elimde arduino uno lar var. alıcı ve vericide uno kullansam yer dışında sıkıntı olur mu?

  5. Hocam merhaba projeyi yapmaya başladım alıcı devresinde nano yerine elimde uno var onu kullanacağım bağlantı pinlerinde ve kodlarda değişiklik olur mu. Motor sürücünün pinlerini nanoda IN1= D5, IN2=D6 , IN3= D9, IN4=D10 olarak bağlıyorsunuz unoda yaptığım zaman IN1=5, IN2=6 , IN3=9, IN4= 10 şeklinde mi bağlantı yapıcam yoksa hem pinler hem kodlar değişecek mi hocam yardımcı olursanız çok sevinirim

  6. Benim bir sıkıntım var kütüphaneleri eklerken saymıyo ne yapmalıyım başka bir yolu varsa açıklar mısınız ?

  7. ARDUİNO EL İLE UZAKTAN KONTROLLÜ ARABA da kullanılan nano klon mu linkini atababilir misiniz iki tane klon var hangisi?ardunio klon veya orjinali arasında yazdığınız yazılımdaki haberleşme protokollerinde farklılık olur mu?Birde lityum pile bağladınız kablonun adı ile jumperların kaç cm olduğunu yazabilirmisiniz?

  8. Herşeyi düzgün bağlamama rağmen çalışmıyor nrflerde bi sorun oldugğunu düşünüyorum kondansatörü ikisinede mi bağlamam gerekiyor?

  9. hocam biz sizinle aynı malzemeleri aldık fakat çalışmıyor bize yardımcı olurmusunuz ?

    özel elektrik makinaları dersinde bu projeyi aldık ve tamamlamamız lazım

  10. Aracımızın sağ tekeri kendi kendine dönüyor uzaktan kumanda hiç etki etmiyor lütfen yardımcı olun

  11. #include
    bu kodda hata veriyor
    ardunionun her sürümünü her kütüphanesini denedim yinede hata veriyor.
    Nasıl çözebilrim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dersler