İçindekiler:

Kablosuz Servo Kontrol: 6 Adım
Kablosuz Servo Kontrol: 6 Adım

Video: Kablosuz Servo Kontrol: 6 Adım

Video: Kablosuz Servo Kontrol: 6 Adım
Video: Rc Servo Motor Arduino İle Nasıl Kullanılır ? 2024, Temmuz
Anonim
Kablosuz Servo Kontrol
Kablosuz Servo Kontrol
Kablosuz Servo Kontrol
Kablosuz Servo Kontrol

Bu proje, bir potansiyometre (düğme) aracılığıyla bir servonun dönüşünü kablosuz olarak kontrol eder. Dönme 180 derece ile sınırlıdır.

Adım 1: Bileşenler

Bileşenler
Bileşenler
Bileşenler
Bileşenler
Bileşenler
Bileşenler

Bu proje şunlardan oluşmaktadır:

  • USB bağlantı kablosu ile 2 Arduino UNO kontrol kartı
  • 2 nRF24L01 – 2.4GHz RF alıcı-verici modülü (bu modüllerle ilgili yardım için
  • nRF24L01 için 2 soket adaptör kartı (sırt çantası yongaları)
  • 1 isteğe bağlı Arduino Uyumlu 328 ProtoShield Prototip Genişletme Kartı
  • 1 servo
  • 1 analog potansiyometre
  • havya ve lehim
  • Tel
  • iğne burunlu pense
  • yalıtım sargısı, elektrik bandı kullandım

2. Adım: Sunucu Anakartı

Sunucu Anakartı
Sunucu Anakartı

Sunucu kartı bir alıcı-verici modülünden, kalkan kartından (doğrudan Arduino kartına yalnızca tek bir şekilde bağlanır) ve servodan oluşur. Beceriksiz devre tahtasından kaçınmak ve projeye ve genel olarak daha temiz bir sonuç vermek için kalkan panosunu dahil etmeye karar verdim.

Bileşenler listesinde yer alan kod ve web kaynağı, alıcı-verici modül bağlantılarını detaylandırır. Önceki projelerde olduğu gibi geçici bağlantılar kullanmak yerine bağlantıları lehimlemeye karar verdim. Acemi olduğum için, her lehim eklemini elektrik bandıyla yalıttım (güzel değillerdi).

Kalkan kartı pinleri doğrudan Arduino pinlerine karşılık gelir. Shield board'u takmadan önce toprak ve 5 volt pinleri board raylarına tel ve lehim ile bağladım. Ayrıca bileşenlerin 5 volt ve topraklama kablolarını ekran kartı raylarına lehimledim, ardından Arduino'yu ekran kartına bağladım.

Servo, güç için 3 volt pinine ve iletişim için dijital pin 2'ye bağlıdır.

** Not: Sadece bu yapıyı tamamladıktan sonra Arduino panolarımın aynı olmadığını fark ettim. Sunucu alıcı-vericim, kalkan kartındaki 5 voltluk raydan güç alırken, istemci alıcı-vericisi 3 voltluk pinden güç alır, ancak alıcı-vericideki adaptör çipinin bir işlevinin uygun voltajı sağlamak olduğuna inanmaya yönlendirildim. Kesin olarak söyleyebileceğim tek şey, resimlerde gösterilen konfigürasyonla eşleşen kodun açıklanan efekti ürettiğidir.

3. Adım: Sunucu Kodlayıcı: Kopyala ve Yapıştır

//SUNUCU KODU/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Kullanılmıyor GND > GND VCC > 5V */ //alıcı-verici kablolaması

#Dahil etmek

// servo kitaplığı

#Dahil etmek

// alıcı-verici kitaplığı

#define Servopin 2

// bildirim servo çıkış pini

ServoTimer2 hizmeti;

//servo adının bildirilmesi

RH_NRF24 nrf24;

// alıcı-verici adının beyanı

int zamanaşımı = 0;

// servo için değişken

int darbeler = 90;

// darbeleri depolamak için değişken

geçersiz kurulum()

{ serv.attach(Servopin); //servo malzemesi

Seri.başla(9600); // alıcı verici şeyler

eğer (!nrf24.init())

Serial.println("başlatma başarısız"); //seri monitör öğeleri if (!nrf24.setChannel(12)) //kanalı 125 olarak ayarla Serial.println("setChannel başarısız"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF başarısız"); // seri monitör malzemesi }

boşluk döngüsü()

{ if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(tampon); if (nrf24.recv(buf, &len)) //seri monitör öğeleri { Serial.print("istek alındı: "); darbeler = strtol((const char*)tampon, NULL, 10); //veri tipi değişiklik malzemesi

int prin = harita(darbeler, 750, 2250, 0, 180); //veri tipi değişiklik malzemesi

Serial.println(baskı); serv.write(darbeler); //servoyu hareket ettirir } }

}

Adım 4: Müşteri Kurulu

Müşteri Kurulu
Müşteri Kurulu

İstemci kartı bir alıcı-verici modülü ve potansiyometreden oluşur. Alıcı-verici modülü, kalkan kartı olmadan doğrudan Arduino kartı pinlerine bağlanması dışında sunucu kartıyla aynı şekilde** bağlanır.

Potansiyometre 5v, toprak alır ve analog pin 2'ye bağlanır.

**Not: Sunucu kartı adımında belirtildiği gibi, Arduino kartlarım aynı değil. Bu durumda alıcı-verici, doğrudan 5V pinin bitişiğindeki 3.3V etiketli pime bağlanmıştır, ancak yine de her şey yolunda görünüyor.

Adım 5: Müşteri Kodu: Kopyala ve Yapıştır

//İSTEMCİ KODU/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Kullanılmıyor GND > GND VCC > 5V */ //alıcı-verici kablolaması

#Dahil etmek

// alıcı-verici kitaplığı

int potpin = A2; //potansiyometre gecikmesi

int değeri;

karakter tempChar[5];

String valString = ""; //veri tipi değişiklik malzemesi

RH_NRF24 nrf24; // alıcı verici şeyler

geçersiz kurulum()

{ Serial.başlangıç(9600); if (!nrf24.init()) Serial.println("init başarısız"); // Başlatmadan sonraki varsayılanlar 2.402 GHz (kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(12)) Serial.println("setChannel başarısız"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF başarısız"); } // alıcı verici şeyler

boşluk döngüsü () {

val = analogRead(potpin); //potansiyometre malzemesi

val = harita(val, 0, 1023, 750, 2250);

valString = val; String str = (valString); str.toCharArray(tempChar, 5); //veri tipi değişiklik malzemesi nrf24.send(tempChar, sizeof(tempChar));

}

Adım 6: Kod Hakkında Bir Not:

Kod, Arduino yazılım arayüzündeki seri monitörden geri bildirim şeklinde bazı sınırlı sorun giderme işlevleri içerir. SUNUCU kodundan (ctrl + shift + M) seri monitöre bakarken, potansiyometrenin durumunu 1 ile 180 arasında bir sayı şeklinde görebilmeniz gerekir.

Ayrıca, kablosuz ve servo için kütüphane:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Önerilen: