Mündəricat:

Simsiz Servo İdarəetmə: 6 addım
Simsiz Servo İdarəetmə: 6 addım

Video: Simsiz Servo İdarəetmə: 6 addım

Video: Simsiz Servo İdarəetmə: 6 addım
Video: PCA9685 Modulu və Arduino V2 istifadə edərək 16 Servo mühərrikini idarə edin 2024, Noyabr
Anonim
Simsiz Servo Nəzarəti
Simsiz Servo Nəzarəti
Simsiz Servo Nəzarəti
Simsiz Servo Nəzarəti

Bu layihə, potensiometr (düymə) vasitəsi ilə bir servonun simsiz olaraq fırlanmasına nəzarət edir. Fırlanma 180 dərəcəyə qədər məhdudlaşdırılır.

Addım 1: Komponentlər

Komponentlər
Komponentlər
Komponentlər
Komponentlər
Komponentlər
Komponentlər

Bu layihə ibarətdir

  • USB bağlayıcı kabeli olan 2 Arduino UNO nəzarətçi lövhəsi
  • 2 nRF24L01-2.4GHz RF ötürücü modulları (bu modullarla bağlı kömək üçün https://randomnerdtutorials.com/nrf24l01-2-4ghz-rf… baxın.
  • NRF24L01 üçün 2 yuva adapter lövhəsi (sırt çantası)
  • 1 isteğe bağlı Arduino Uyumlu 328 ProtoShield Prototip Genişləndirmə Kartı
  • 1 servo
  • 1 analoq potensiometr
  • lehimləmə dəmiri və lehim
  • tel
  • iynəli burunlu penslər
  • izolyasiya sarğı, elektrik lentindən istifadə etdim

Addım 2: Server lövhəsi

Server lövhəsi
Server lövhəsi

Server lövhəsi qəbuledici moduldan, qalxan lövhədən (birbaşa Arduino lövhəsinə yalnız bir yolla bağlanan) və servodan ibarətdir. Qeyri -adi çörək taxtasının qarşısını almaq və layihəyə və ümumi səliqəli işləmək üçün qalxan lövhəsini daxil etmək qərarına gəldim.

Komponentlər siyahısına daxil olan kod və veb qaynağı, qəbuledici modul əlaqələrini ətraflı şəkildə izah edir. Əvvəlki layihələrdə olduğu kimi müvəqqəti bağlantılar istifadə etmək əvəzinə əlaqələri lehimləmək qərarına gəldim. Bir başlanğıc olduğum üçün, hər bir lehim birləşməsini elektrik lenti ilə izolyasiya etdim (gözəl deyildilər).

Qalxan lövhə pinləri birbaşa Arduino pinlərinə uyğundur. Qalxan lövhəsini bağlamadan əvvəl, zəmini və 5 voltluq sancaqları lövhə tellərinə və lehimlə bağladım. Komponentlərin 5 volt və torpaq tellərini də lövhə lövhələrinə lehimlədim, sonra nəhayət Arduinonu qalxan lövhəsinə bağladım.

Servo güc üçün 3 voltlu pin və ünsiyyət üçün rəqəmsal pin 2 -ə bərkidilir.

** Qeyd: yalnız bu quruluşu tamamladıqdan sonra Arduino lövhələrimin eyni olmadığını gördüm. Server qəbuledicim qalxan lövhəsindəki 5 voltluq dəmir yolu ilə işləyir, müştəri qəbuledicisi isə 3 voltluq pinlə işləyir, halbuki qəbuledicidəki adapter çipinin funksiyasının düzgün gərginliyi təmin etmək olduğuna inanmışam. Əmin ola biləcəyim tək şey, şəkillərdə göstərilən konfiqurasiya ilə uyğun gələn kodun təsvir olunan effekti yaratmasıdır.

Addım 3: Server Kodlayıcısı: Kopyalayın və Yapışdırın

// SERVER KODU/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> İstifadə edilməyən GND> GND VCC> 5V */// ötürücü naqilləri

#daxil edin

// servo kitabxana

#daxil edin

// ötürücü kitabxana

#Servopin 2 təyin edin

// bəyannamə servo çıxış pin

ServoTimer2 xidməti;

// servo adının elan edilməsi

RH_NRF24 nrf24;

// ötürücü adının elan edilməsi

int timeOUT = 0;

// servo üçün dəyişən

int pulsları = 90;

// impulsları saxlamaq üçün dəyişən

boş quraşdırma ()

{serv.attach (Servopin); // servo əşyalar

Serial.begin (9600); // ötürücü şeylər

əgər (! nrf24.init ())

Serial.println ("başlanğıc uğursuz oldu"); // serial monitor məhsulları if (! nrf24.setChannel (12)) // kanalı 125 Serial.println olaraq təyin edin ("setChannel uğursuz oldu"); əgər (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF uğursuz oldu"); // serial monitoru}

boşluq döngəsi ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // serial monitor materialları {Serial.print ("sorğu var:"); paxlalar = strtol ((const char*) buf, NULL, 10); // məlumat növünün dəyişdirilməsi

int prin = xəritə (paxlalılar, 750, 2250, 0, 180); // məlumat növünün dəyişdirilməsi

Serial.println (çap); serv.write (paxlalı); // servo hərəkət edir}}

}

Addım 4: Müştəri lövhəsi

Müştəri lövhəsi
Müştəri lövhəsi

Müştəri lövhəsi qəbuledici moduldan və potensiometrdən ibarətdir. Alıcı -verici modulu, qalxan lövhəsi olmadan birbaşa Arduino lövhəsi sancaqlarına bağlanması istisna olmaqla, server lövhəsi ilə eyni şəkildə bağlanmışdır **.

Potansiometr 5v, torpaq alır və analoq pin 2 ilə birləşdirilir.

** Qeyd: server lövhəsi addımında qeyd edildiyi kimi Arduino lövhələrim eyni deyil. Bu halda alıcı -verici, 5V pinlə birbaşa bitişik olan 3.3V etiketli pinə bağlanır, amma yenə də hər şeyin qaydasında olduğu görünür.

Addım 5: Müştəri Kodu: Kopyalayın və Yapışdırın

// MÜŞTERİ KODU/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> İstifadə edilməyən GND> GND VCC> 5V */// ötürücü naqilləri

#daxil edin

// ötürücü kitabxana

int potpin = A2; // potensiometr deklarasiyası

int val;

char tempChar [5];

Satır valString = ""; // məlumat növünün dəyişdirilməsi

RH_NRF24 nrf24; // ötürücü şeylər

boş quraşdırma ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init uğursuz oldu"); // Varsayılanlardan sonra init 2.402 GHz (kanal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel fail"); əgər (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF uğursuz oldu"); } // ötürücü maddələr

boşluq döngəsi () {

val = analogRead (potpin); // potensiometr maddələri

val = xəritə (val, 0, 1023, 750, 2250);

valString = dəyər; String str = (valString); str.toCharArray (tempChar, 5); // məlumat tipinin dəyişdirilməsi nrf24.send (tempChar, sizeof (tempChar));

}

Addım 6: Kod haqqında bir qeyd:

Kod, Arduino proqram interfeysindəki serial monitordan geribildirim şəklində bəzi məhdud problem giderme funksiyalarını ehtiva edir. Serial monitoru SERVER kodundan (ctrl + shift + M) izləyərkən, potansiyometrin vəziyyətini 1 ilə 180 arasında bir rəqəm şəklində görə bilməlisiniz.

Ayrıca, simsiz və servo kitabxanası:

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

github.com/nabontra/ServoTimer2

Tövsiyə: