İçindekiler:

Hareket Kontrollü Kablosuz Araba: 7 Adım
Hareket Kontrollü Kablosuz Araba: 7 Adım

Video: Hareket Kontrollü Kablosuz Araba: 7 Adım

Video: Hareket Kontrollü Kablosuz Araba: 7 Adım
Video: Şerit Takip Sistemi Kaza Anı 🚘 Lane Tracking System Accident ⚡️🆘⚠️⛔️ 2024, Kasım
Anonim
Hareket Kontrollü Kablosuz Araba
Hareket Kontrollü Kablosuz Araba

Bu derste, hareket kontrollü bir araba veya herhangi bir robot yapmayı öğreneceğiz. Bu proje iki kısımdan oluşmaktadır, bir kısım verici ünite ve diğer kısım alıcı ünitedir. Verici ünite aslında bir eldiven üzerine monte edilir ve alıcı ünite bir arabanın veya herhangi bir robotun içine yerleştirilir. Şimdi güzel bir araba yapma zamanı. Hadi gidelim!

Adım 1: Ekipmanlar

Verici Ünitesi

1. Arduino Nano.

2. MPU6050 Sensör Modülü.

3. RF 433 MHz Verici.

4. Herhangi bir tipte 3 hücreli, 11,1 volt Pil (Burada düğme pil kullandım).

5. Vero-Board.

6. El Eldivenleri.

Alıcı Ünitesi

1. Arduino Nano veya Arduino Uno.

2. L298N Motor Sürücü Modülü.

3. Motorlar dahil 4 tekerlekli robot çerçevesi.

4. RF 433 RF Alıcı.

5. 3 hücreli, 11,1 volt Li-po Pil.

6. Vero kurulu.

Diğerleri

1. Tutkal çubukları ve tabanca.

2. Atlama telleri.

3. Tornavidalar

4. Lehimleme Kiti.

vesaire.

Adım 2: Devre Şeması Görüntü Dosyası

Devre Şeması Görüntü Dosyası
Devre Şeması Görüntü Dosyası

Adım 3: Devre Şemasının Fritzing Dosyası

Adım 4: Verici Kodu

#Dahil etmek

#Dahil etmek

#Dahil etmek

MPU6050 mpu6050(Tel);

uzun zamanlayıcı = 0;

karakter * denetleyici;

geçersiz kurulum()

{ Serial.başlangıç(9600); Wire.begin(); mpu6050.begin(); mpu6050.calcGyroOffsets(true); vw_set_ptt_inverted(doğru); // vw_set_tx_pin(10); vw_setup(4000);// veri aktarım hızı Kbps

}

boşluk döngüsü()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.update();

if(millis() - zamanlayıcı > 1000)

{ Serial.println("=========================================== ==========="); Serial.print("temp: ");Serial.println(mpu6050.getTemp()); Serial.print("accX: ");Serial.print(mpu6050.getAccX()); Serial.print("\taccY: ");Serial.print(mpu6050.getAccY()); Serial.print("\taccZ: ");Serial.println(mpu6050.getAccZ()); Serial.print("gyroX: ");Serial.print(mpu6050.getGyroX()); Serial.print("\tgyroY: ");Serial.print(mpu6050.getGyroY()); Serial.print("\tgyroZ: ");Serial.println(mpu6050.getGyroZ()); Serial.print("accAngleX: ");Serial.print(mpu6050.getAccAngleX()); Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY()); Serial.print("gyroAngleX: ");Serial.print(mpu6050.getGyroAngleX()); Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY()); Serial.print("\tgyroAngleZ: ");Serial.println(mpu6050.getGyroAngleZ()); Serial.print("angleX: ");Serial.print(mpu6050.getAngleX()); Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY()); Serial.print("\tangleZ: ");Serial.println(mpu6050.getAngleZ()); Serial.println("============================================ ==========\n"); zamanlayıcı = millis(); }

/////////////////////////////////////////////////////////////////////////////////////

if (mpu6050.getAccAngleX()30) { controller="X2"; vw_send((uint8_t *)denetleyici, strlen(denetleyici)); vw_wait_tx(); // Mesajın tamamı gidene kadar bekleyin Serial.println("İLERİ"); } else if (mpu6050.getAccAngleY()>40) { controller="Y1"; vw_send((uint8_t *)denetleyici, strlen(denetleyici)); vw_wait_tx(); // Mesajın tamamı gidene kadar bekleyin Serial.println("LEFT"); } else if (mpu6050.getAccAngleY()<-40) { controller="Y2"; vw_send((uint8_t *)denetleyici, strlen(denetleyici)); vw_wait_tx(); // Tüm mesaj gidene kadar bekleyin Serial.println("SAĞ"); } else if (mpu6050.getAccAngleX()-10 && mpu6050.getAccAngleY()-10) { controller="A1"; vw_send((uint8_t *)denetleyici, strlen(denetleyici)); vw_wait_tx(); // Mesajın tamamı gidene kadar bekleyin Serial.println("STOP"); } }

Adım 5: Alıcı Kodu

#Dahil etmek

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; geçersiz kurulum() { Serial.begin(9600); vw_set_ptt_inverted(doğru); // DR3100 için gerekli vw_set_rx_pin(12); vw_setup(4000); // Saniyedeki bit sayısı pinMode(13, OUTPUT); pinMode(LA, ÇIKIŞ); pinMode(LB, ÇIKIŞ); pinMode(RA, ÇIKIŞ); pinMode(RB, ÇIKIŞ); vw_rx_start(); // Alıcı PLL'yi Serial.println("All OK");

}

void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // Engellemeyen

{ if((buf[0]=='X')&&(buf[1]=='1')) { Serial.println("GERİ"); geriye(); gecikme(100); //kapalı(); } else if((buf[0]=='X')&&(buf[1]=='2')) { Serial.println("İLERİ"); ileri(); gecikme(100); //kapalı(); }

else if((buf[0]=='Y')&&(buf[1]=='1'))

{ Serial.println("SOL"); sol(); gecikme(100); //kapalı(); }

else if((buf[0]=='Y')&&(buf[1]=='2'))

{ Serial.println("SAĞ"); sağ(); gecikme(100); //kapalı(); } else if((buf[0]=='A')&&(buf[1]=='1')) { Serial.println("STOP"); kapalı(); gecikme(100); } } else { Serial.println("Sinyal Alınmadı"); } }

ileriyi geçersiz kıl()

{ analogWrite(LA, 70); analogWrite(LB, 0); analogWrite(RA, 70); analogWrite(RB, 0); }

geriye doğru geçersiz ()

{ analogWrite(LA, 0); analogWrite(LB, 70); analogWrite(RA, 0); analogWrite(RB, 70); }

soldaki boşluk()

{ analogWrite(LA, 0); analogWrite(LB, 70); analogWrite(RA, 70); analogWrite(RB, 0); }

hakkı geçersiz ()

{ analogWrite(LA, 70); analogWrite(LB, 0); analogWrite(RA, 0); analogWrite(RB, 70); }

geçersiz kılma()

{ analogWrite(LA, 0); analogWrite(LB, 0); analogWrite(RA, 0); analogWrite(RB, 0); }

Adım 6: INO Dosyaları

7. Adım: Kitaplıkların Bağlantısı

Sanal Tel Kitaplığı:

MPU6050_tockn Kitaplığı:

Tel Kütüphanesi:

Önerilen: