Мазмуну:

Wireless Servo Control: 6 кадам
Wireless Servo Control: 6 кадам

Video: Wireless Servo Control: 6 кадам

Video: Wireless Servo Control: 6 кадам
Video: FS-i6 Transmitter with Brushless motor and Servo motor control #servo #sritu_hobby @sritu_hobby 2024, Июль
Anonim
Wireless Servo Control
Wireless Servo Control
Wireless Servo Control
Wireless Servo Control

Бул долбоор потенциометрдин (түймө) жардамы менен зымсыз сервонун айлануусун көзөмөлдөйт. Айлануу 180 градуска чейин чектелген.

1 -кадам: Компоненттер

Компоненттер
Компоненттер
Компоненттер
Компоненттер
Компоненттер
Компоненттер

Бул долбоор турат

  • USB туташтыргычы кабели бар 2 Arduino UNO көзөмөлдөөчү тактасы
  • 2 nRF24L01-2.4 ГГц RF кабыл алуучу модулдары (бул модулдар боюнча жардам үчүн https://randomnerdtutorials.com/nrf24l01-2-4ghz-rf… караңыз.
  • NRF24L01 үчүн 2 розетка адаптери (рюкзак чиптери)
  • 1 кошумча Arduino Compatible 328 ProtoShield прототип кеңейтүү тактасы
  • 1 servo
  • 1 аналогдук потенциометр
  • ширетүүчү жана темир
  • зым
  • ийне мурундуу кычкачтар
  • изоляциялоочу пленка, мен электр лентасын колдондум

2 -кадам: Server Board

Server Board
Server Board

Сервер тактасы трансивер модулунан, калкан тактасынан (Arduino тактасына бир гана жол менен туташат) жана серводон турат. Мен олдоксон нан панелинен сактануу үчүн калкан тактасын кошууну чечтим жана долбоорду жана жалпы тыкан бүтүрүүнү бердим.

Компоненттердин тизмесине киргизилген код жана веб -ресурс трансивер модулунун байланыштарын деталдуу чагылдырат. Мен мурунку долбоорлордогудай убактылуу байланыштарды колдонуунун ордуна, туташууларды ширетүүнү чечтим. Мен үйрөнчүк болгондуктан, ар бир ширетүүчү түйүндү электр лента менен жылууладым (алар сулуу эмес болчу).

Калкан тактасынын казыктары Arduino казыктарына түз дал келет. Калкан тактасын тиркөөдөн мурун, мен жерди жана 5 вольт төөнөгүчтөрдү тактайдын рельсине зым жана ширетүү менен туташтырдым. Мен ошондой эле компоненттердин 5 вольт жана жерге зымдарын калкан тактайынын рельсине кошуп, акыры Arduino -ны калкан тактасына бекиттим.

Серво бийлик үчүн 3 вольттуу пинге жана байланыш үчүн санариптик пинге 2 бекитилет.

** Эскертүү: бул курууну аяктагандан кийин гана менин Arduino такталарым окшош эмес экенин байкадым. Менин сервер трансиверим калкан тактасындагы 5 вольттук темир жол менен иштейт, ал эми кардар өткөргүч 3 вольт пин менен иштейт, бирок мен трансивердеги адаптер чипинин функциясы туура чыңалууну камсыз кылат деп ишенип калдым. Мен так айта алам, сүрөттөрдө көрсөтүлгөн конфигурацияга дал келген код сүрөттөлгөн эффектти берет.

3 -кадам: Server Coder: Көчүрүү жана чаптоо

// SERVER CODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// transceiver зымдары колдонулбайт

#кошуу

// серво китепкана

#кошуу

// кабыл алуучу китепкана

#depine Servopin 2

// декларация servo чыгаруу пин

ServoTimer2 сервиси;

// серво атынын декларациясы

RH_NRF24 nrf24;

// transceiver атынын декларациясы

int timeOUT = 0;

// servo үчүн өзгөрмө

int pulses = 90;

// импульстарды сактоо үчүн өзгөрмө

жараксыз орнотуу ()

{serv.attach (Servopin); // servo нерселер

Serial.begin (9600); // өткөргүч нерселер

эгер (! nrf24.init ())

Serial.println ("init ишке ашпай калды"); // сериялык монитор нерселери if (! nrf24.setChannel (12)) // каналды 125 Serial.println деп коюңуз ("setChannel ишке ашпай калды"); if (! 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 = sizeof (buf); if (nrf24.recv (buf, & len)) // сериялык монитор нерселери {Serial.print ("суроо -талап бар:"); импульстар = strtol ((const char*) buf, NULL, 10); // маалыматтын түрүн өзгөртүү нерселери

int prin = карта (импульстар, 750, 2250, 0, 180); // маалыматтын түрүн өзгөртүү нерселери

Serial.println (принтер); serv.write (импульстар); // серво кыймылын жасайт}}

}

4 -кадам: Кардарлар кеңеши

Кардарлар кеңеши
Кардарлар кеңеши

Кардар тактасы трансивер модулунан жана потенциометрден турат. Трансивер модулу сервердик тактага окшош ** зымдуу, калкан тактасы жок, ал Arduino тактасынын казыктарына туташтырылган.

Потенциометр 5в, жерди алат жана аналогдук пин 2ге туташат.

** Эскертүү: сервер тактасынын кадамында айтылгандай, менин Arduino такталарым окшош эмес. Бул учурда transceiver 3.3V деп белгиленген пинге зымдалат, 5V пинге түздөн -түз жанаша, бирок дагы эле баары жакшы иштейт окшойт.

5 -кадам: Кардар коду: Көчүрүү жана чаптоо

// КЛИЕНТ КОДУ/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// transceiver зымдары колдонулбайт

#кошуу

// кабыл алуучу китепкана

int potpin = A2; // потенциометрдин декларациясы

int val;

char tempChar [5];

Сап valString = ""; // маалыматтын түрүн өзгөртүү нерселери

RH_NRF24 nrf24; // өткөргүч нерселер

жараксыз орнотуу ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init ишке ашпай калды"); // Демейки баштапкыдан кийин 2.402 ГГц (2 -канал), 2Мбит/ сек, 0дБм болсо (! Nrf24.setChannel (12)) Serial.println ("setChannel ишке ашпай калды"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ишке ашпай калды"); } // кабыл алуучу нерселер

void loop () {

val = analogRead (potpin); // потенциометрдик нерселер

val = карта (val, 0, 1023, 750, 2250);

valString = val; String 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

Сунушталууда: