Съдържание:

Безжично серво управление: 6 стъпки
Безжично серво управление: 6 стъпки

Видео: Безжично серво управление: 6 стъпки

Видео: Безжично серво управление: 6 стъпки
Видео: Linptech ES1 - микроволновый датчик присутствия для mihome, интеграция Home Assistant Gateway 3 2024, Юли
Anonim
Безжично серво управление
Безжично серво управление
Безжично серво управление
Безжично серво управление

Този проект контролира безжично въртенето на серво посредством потенциометър (копче). Ротацията е ограничена до 180 градуса.

Стъпка 1: Компоненти

Компоненти
Компоненти
Компоненти
Компоненти
Компоненти
Компоненти

Този проект се състои от

  • 2 контролни платки Arduino UNO с USB конектор
  • 2 nRF24L01-2.4GHz RF трансийвър модула (за помощ с тези модули вижте
  • 2 адаптерни платки за гнездо (чипове за раница) за nRF24L01
  • 1 допълнителна съвместима с Arduino 328 ProtoShield прототипна платка за разширение
  • 1 серво
  • 1 аналогов потенциометър
  • поялник и спойка
  • тел
  • клещи с иглени носове
  • изолационна обвивка, използвах електрическа лента

Стъпка 2: Сървърна платка

Сървърна платка
Сървърна платка

Сървърната платка се състои от трансийвър модул, щит (който се свързва директно към платката Arduino само по един начин) и серво. Реших да включа щита за щитове, за да избегна тромавия чертеж и да придам на проекта и цялостния по -изчистен завършек.

Кодът и уеб ресурсът, включени в списъка с компоненти, подробно описват връзките на модула на трансивъра. Реших да запоя връзките, вместо да използвам временни връзки, както в предишните проекти. Тъй като съм начинаещ, изолирах всяка спойка с електрическа лента (не бяха хубави).

Щифтовете на щита отговарят директно на щифтовете на Arduino. Преди да прикрепя щита за щит, свързах земята и 5 -волтовите щифтове към релсите на платката с тел и спойка. Също така запоявах 5 -волтовите и заземяващите проводници на компонентите към релсите на щитната платка, след което най -накрая прикрепих Arduino към щитната платка.

Сервото е прикрепено към 3 -волтовия щифт за захранване и цифров щифт 2 за комуникация.

** Забележка: едва след завършване на тази компилация забелязах, че дъските ми Arduino не са идентични. Сървърният ми трансивер се захранва от 5 -волтовата шина на щита за щитове, докато клиентският трансийвър се захранва от 3 -волтовия щифт, въпреки че бях накаран да вярвам, че функция на адаптерния чип на трансивъра е да осигури подходящото напрежение. Всичко, което мога да кажа със сигурност, е, че предоставеният код, съчетан с конфигурацията, показана на изображенията, произвежда описания ефект.

Стъпка 3: Кодиращ сървър: Копиране и поставяне

// СЕРВЕРСКИ КОД/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Не се използва GND> GND VCC> 5V */// окабеляване на трансивера

#включва

// серво библиотека

#включва

// приемо -предавателна библиотека

#дефинирайте Servopin 2

// декларация за изход на серво серво

ServoTimer2 сервиз;

// декларация за име на серво

RH_NRF24 nrf24;

// деклариране на името на трансивъра

int timeOUT = 0;

// променлива за серво

int импулси = 90;

// променлива за съхраняване на импулси

void setup ()

{serv.attach (Servopin); // серво неща

Serial.begin (9600); // приемо -предавателни неща

ако (! nrf24.init ())

Serial.println ("init failed"); // сериен монитор, ако (! nrf24.setChannel (12)) // настройте канала на 125 Serial.println ("setChannel неуспешно"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF неуспешно"); // сериен монитор}

void loop ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // неща за сериен монитор {Serial.print ("got request:"); импулси = strtol ((const char*) buf, NULL, 10); // промяна на типа данни

int prin = карта (импулси, 750, 2250, 0, 180); // промяна на типа данни

Serial.println (prin); serv.write (импулси); // кара серво да се движи}}

}

Стъпка 4: Клиентски съвет

Съвет на клиентите
Съвет на клиентите

Клиентската платка се състои от трансийвър модул и потенциометър. Модулът на трансивъра е свързан по същия начин ** като сървърната платка, с изключение на това, че без щитната платка, той е свързан директно към щифтовете на платката Arduino.

Потенциометърът приема 5v, заземен и е свързан към аналогов щифт 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; // приемо -предавателни неща

void setup ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init failed"); // По подразбиране след init са 2.402 GHz (канал 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); 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; Низ 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

Препоръчано: