Სარჩევი:

უკაბელო სერვო კონტროლი: 6 ნაბიჯი
უკაბელო სერვო კონტროლი: 6 ნაბიჯი

ვიდეო: უკაბელო სერვო კონტროლი: 6 ნაბიჯი

ვიდეო: უკაბელო სერვო კონტროლი: 6 ნაბიჯი
ვიდეო: სმარტი 6 2024, ივლისი
Anonim
უკაბელო სერვო კონტროლი
უკაბელო სერვო კონტროლი
უკაბელო სერვო კონტროლი
უკაბელო სერვო კონტროლი

ეს პროექტი აკონტროლებს სერვო ბრუნვას უსადენოდ პოტენციომეტრის (ღილაკის) საშუალებით. ბრუნვა შეზღუდულია 180 გრადუსამდე.

ნაბიჯი 1: კომპონენტები

კომპონენტები
კომპონენტები
კომპონენტები
კომპონენტები
კომპონენტები
კომპონენტები

ეს პროექტი შედგება

  • 2 Arduino UNO კონტროლერის დაფა USB კონექტორის კაბელით
  • 2 nRF24L01-2.4GHz RF გადამცემი მოდული (ამ მოდულებთან დაკავშირებით მიმართეთ
  • 2 ბუდე ადაპტერის დაფა (ზურგჩანთა ჩიპი) nRF24L01– ისთვის
  • 1 სურვილისამებრ Arduino თავსებადი 328 ProtoShield პროტოტიპის გაფართოების დაფა
  • 1 სერვო
  • 1 ანალოგური პოტენომეტრი
  • soldering რკინის და solder
  • მავთული
  • ნემსის ცხვირსახოცი
  • საიზოლაციო შეფუთვა, მე გამოვიყენე ელექტრო ფირზე

ნაბიჯი 2: სერვერის დაფა

სერვერის დაფა
სერვერის დაფა

სერვერის დაფა შედგება გადამცემი მოდულისგან, ფარის დაფისგან (რომელიც უერთდება პირდაპირ არდუინოს დაფას მხოლოდ ერთი გზით) და სერვოსგან. მე გადავწყვიტე, რომ ფარის დაფა ჩავრთო მოუხერხებელი პურის დაფის თავიდან ასაცილებლად და პროექტის და საერთო ჯამში უფრო ლამაზი დასრულებისათვის.

კოდი და ვებ რესურსი, რომელიც შედის კომპონენტების ჩამონათვალში, დეტალურად აღწერს მიმღების მოდულის კავშირებს. მე გადავწყვიტე შევაერთო კავშირები დროებითი კავშირების გამოყენების ნაცვლად, როგორც წინა პროექტებში. ვინაიდან დამწყები ვარ, თითოეული გამაგრების სახსარი იზოლირებული მქონდა ელექტრული ლენტით (ისინი არ იყვნენ ლამაზები).

ფარის დაფის ქინძისთავები პირდაპირ შეესაბამება არდუინოს ქინძისთავებს. ფარის დაფის მიმაგრებამდე, მიწა და 5 ვოლტიანი ქინძისთავები დავუკავშირე დაფის რელსებს მავთულხლართებით და გამაგრებით. მე ასევე შევაერთე კომპონენტების 5 ვოლტიანი და მიწის მავთულები ფარის დაფის რელსებზე, შემდეგ საბოლოოდ დავამატე არდუინო ფარის დაფაზე.

სერვერი მიმაგრებულია 3 ვოლტ პინზე სიმძლავრისთვის და ციფრული პინ 2 კომუნიკაციისთვის.

** შენიშვნა: მხოლოდ ამ მშენებლობის დასრულების შემდეგ შევამჩნიე, რომ ჩემი Arduino დაფები არ არის იდენტური. ჩემი სერვერის გადამცემი იკვებება ფარის დაფაზე 5 ვოლტიანი სარკინიგზო მაგისტრალით, ხოლო კლიენტის გადამცემი იკვებება 3 ვოლტიანი პინით, თუმცა დამიჯერეს, რომ გადამყვანზე ადაპტერის ჩიპის ფუნქციაა უზრუნველყოს შესაბამისი ძაბვა. ყველაფერი რაც შემიძლია დანამდვილებით ვთქვა ის არის, რომ მოწოდებული კოდი, რომელიც ემთხვევა სურათებში ნაჩვენებ კონფიგურაციას, იძლევა აღწერილ ეფექტს.

ნაბიჯი 3: სერვერის კოდიტორი: დააკოპირეთ და ჩასვით

// სერვერის კოდი/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> არ გამოიყენება GND> GND VCC> 5V */// გადამცემი გაყვანილობა

#ჩართეთ

// სერვო ბიბლიოთეკა

#ჩართეთ

// გადამცემი ბიბლიოთეკა

#განსაზღვრეთ სერვოპინი 2

// დეკლარაციის servo output pin

ServoTimer2 სერვისი;

// სერვო სახელის დეკლარაცია

RH_NRF24 nrf24;

// გადამცემი სახელის დეკლარაცია

int timeOUT = 0;

// ცვლადი სერვოსთვის

int პულსი = 90;

// ცვლადი იმპულსების შესანახად

ბათილად დაყენება ()

{serv.attach (Servopin); // სერვო პერსონალი

სერიული.დაწყება (9600); // გადამცემი პერსონალი

თუ (! nrf24.init ())

Serial.println ("init ვერ მოხერხდა"); // სერიული მონიტორის პერსონალი თუ (! nrf24.setChannel (12)) // დააყენეთ არხი 125 Serial.println ("setChannel failed"); თუ (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ვერ მოხერხდა"); // სერიული მონიტორის პერსონალი}

ბათილი მარყუჟი ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = ზომა (buf); if (nrf24.recv (buf, & len)) // სერიული მონიტორის პერსონალი {Serial.print ("მიიღო მოთხოვნა:"); pulses = strtol ((const char*) buf, NULL, 10); // მონაცემთა ტიპის შეცვლა პერსონალი

int prin = რუკა (პულსი, 750, 2250, 0, 180); // მონაცემთა ტიპის შეცვლა პერსონალი

Serial.println (პრინცი); serv.write (პულსი); // ხდის სერვოს გადაადგილებას}}

}

ნაბიჯი 4: კლიენტების საბჭო

კლიენტების საბჭო
კლიენტების საბჭო

კლიენტის დაფა შედგება გადამცემი მოდულისა და პოტენციომეტრისგან. გადამცემი მოდული გაყვანილია ისევე, როგორც სერვერის დაფა, იმ განსხვავებით, რომ ფარის დაფის გარეშე, იგი პირდაპირ არის მიერთებული არდუინოს დაფის ქინძისთავებში.

პოტენომეტრი იღებს 5 ვ, დაფქვილს და მიერთებულია ანალოგურ პინ 2 -თან.

** შენიშვნა: როგორც სერვერის დაფის საფეხურშია აღნიშნული, ჩემი Arduino დაფები არ არის იდენტური. ამ შემთხვევაში, გადამცემი მიერთებულია 3.3V მარკირების პინზე, უშუალოდ 5V პინის მიმდებარედ, მაგრამ ისევ და ისევ, როგორც ჩანს, ყველაფერი კარგად მუშაობს.

ნაბიჯი 5: კლიენტის კოდი: დააკოპირეთ და ჩასვით

// კლიენტის კოდი/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> არ გამოიყენება GND> GND VCC> 5V */// გადამცემი გაყვანილობა

#ჩართეთ

// გადამცემი ბიბლიოთეკა

int potpin = A2; // პოტენომეტრის გაუარესება

int val;

char tempChar [5];

სიმებიანი valString = ""; // მონაცემთა ტიპის შეცვლა პერსონალი

RH_NRF24 nrf24; // გადამცემი პერსონალი

ბათილად დაყენება ()

{Serial.begin (9600); თუ (! nrf24.init ()) Serial.println ("init ვერ მოხერხდა"); // ნაგულისხმევი პარამეტრები შემდეგ init არის 2.402 GHz (არხი 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); თუ (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ვერ მოხერხდა"); } // გადამცემი პერსონალი

ბათილი მარყუჟი () {

val = analogRead (potpin); // პოტენომეტრის პერსონალი

val = რუკა (val, 0, 1023, 750, 2250);

valString = val; სიმებიანი str = (valString); str.toCharArray (tempChar, 5); // მონაცემთა ტიპის შეცვლა nrf24.send (tempChar, sizeof (tempChar));

}

ნაბიჯი 6: შენიშვნა კოდის შესახებ:

კოდი შეიცავს შეზღუდულ ფუნქციებს, Arduino პროგრამული უზრუნველყოფის ინტერფეისის სერიული მონიტორის უკუკავშირის სახით. სერიული მონიტორის SERVER კოდიდან (ctrl + shift + M), თქვენ უნდა ნახოთ პოტენომეტრის მდგომარეობა 1 -დან 180 -მდე რიცხვის სახით.

ასევე, აქ არის ბიბლიოთეკა უკაბელო და სერვოსთვის:

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

github.com/nabontra/ServoTimer2

გირჩევთ: