Оглавление:

Беспроводное сервоуправление: 6 шагов
Беспроводное сервоуправление: 6 шагов

Видео: Беспроводное сервоуправление: 6 шагов

Видео: Беспроводное сервоуправление: 6 шагов
Видео: Обзор и подключение сервоприводов с простой настройкой. 2024, Ноябрь
Anonim
Беспроводное сервоуправление
Беспроводное сервоуправление
Беспроводное сервоуправление
Беспроводное сервоуправление

Этот проект управляет вращением сервопривода по беспроводной сети с помощью потенциометра (ручки). Вращение ограничено 180 градусами.

Шаг 1: Компоненты

Компоненты
Компоненты
Компоненты
Компоненты
Компоненты
Компоненты

Этот проект состоит из

  • 2 платы контроллера Arduino UNO с соединительным кабелем USB
  • 2 nRF24L01 - модули РЧ приемопередатчиков 2,4 ГГц (для получения помощи по этим модулям см.
  • 2 платы адаптера гнезда (чипы для рюкзака) для nRF24L01
  • 1 дополнительная плата расширения ProtoShield Prototype, совместимая с Arduino 328
  • 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 * / // подключение трансивера

#включают

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

#включают

// библиотека приемопередатчика

# определить сервопин 2

// объявление вывода сервопривода

ServoTimer2 serv;

// объявление имени сервопривода

RH_NRF24 nrf24;

// объявление имени трансивера

int timeOUT = 0;

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

int Pulses = 90;

// переменная для хранения импульсов

установка void ()

{serv.attach (Сервопин); // сервопривод

Serial.begin (9600); // материал трансивера

если (! nrf24.init ())

Serial.println ("ошибка инициализации"); // данные монитора последовательного порта if (! nrf24.setChannel (12)) // установить канал на 125 Serial.println ("setChannel failed"); если (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF failed"); // данные монитора последовательного порта}

пустой цикл ()

{если (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 = map (импульсы, 750, 2250, 0, 180); // изменение типа данных

Serial.println (принт); serv.write (импульсы); // заставляет сервопривод двигаться}}

}

Шаг 4: Доска клиентов

Совет клиентов
Совет клиентов

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

Потенциометр принимает 5 В, землю и подключается к аналоговому выводу 2.

** Примечание: как упоминалось в шаге о серверной плате, мои платы Arduino не идентичны. В этом случае трансивер подключен к контакту с маркировкой 3,3 В, непосредственно рядом с контактом 5 В, но опять же, похоже, все работает нормально.

Шаг 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 ()

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

void loop () {

val = analogRead (горшок); // материал потенциометра

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

valString = val; Строка str = (valString); str.toCharArray (tempChar, 5); // изменение типа данных nrf24.send (tempChar, sizeof (tempChar));

}

Шаг 6: Примечание о коде:

Код содержит некоторые ограниченные функции устранения неполадок в виде обратной связи от последовательного монитора в программном интерфейсе Arduino. При просмотре последовательного монитора с помощью кода СЕРВЕРА (ctrl + shift + M) вы должны увидеть состояние потенциометра в виде числа от 1 до 180.

Кроме того, вот библиотека для беспроводной связи и сервопривода:

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

github.com/nabontra/ServoTimer2

Рекомендуемые: