Оглавление:
- Шаг 1: Компоненты
- Шаг 2: Серверная плата
- Шаг 3. Серверный кодировщик: копирование и вставка
- Шаг 4: Доска клиентов
- Шаг 5: Код клиента: скопируйте и вставьте
- Шаг 6: Примечание о коде:
Видео: Беспроводное сервоуправление: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Этот проект управляет вращением сервопривода по беспроводной сети с помощью потенциометра (ручки). Вращение ограничено 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
Рекомендуемые:
Люциферин, Беспроводное смещенное освещение для вашего ПК: 6 шагов (с изображениями)
Люциферин, беспроводное смещение освещения для вашего ПК: Люциферин - это общий термин для светоизлучающего соединения, обнаруженного в организмах, которые генерируют биолюминесценцию, таких как светлячки и светлячки. Firefly Luciferin - это компьютерное программное обеспечение Java Fast Screen Capture, разработанное для прошивки Glow Worm Luciferin, которые
Беспроводное устройство чтения SD-карт [ESP8266]: 10 шагов (с изображениями)
Беспроводное устройство чтения SD-карт [ESP8266]: USB должен был быть универсальным, и основная цель заключалась в том, чтобы сделать устройство с горячей заменой и супер простым интерфейсом с другими устройствами, но с годами эта идея пошла наперекосяк. Существует так много различных вариантов этих USB-портов, что так неприятно
Сервоуправление Arduino: 6 шагов
Сервоуправление Arduino: у серводвигателей есть три провода: питание, земля и сигнал. Провод питания обычно красного цвета и должен быть подключен к выводу 5V на плате Arduino. Заземляющий провод обычно бывает черного или коричневого цвета и должен быть подключен к контакту заземления на Ardui
Сервоуправление с помощью NodeMCU и Blynk - в платформе IOT: 3 шага
Сервоуправление с помощью NodeMCU и Blynk | на платформе IOT: в этом руководстве вы можете управлять своим сервоприводом с помощью приложения Blynk на платформе IOT
Мульти сервоуправление панорамированием и наклоном: 11 шагов (с изображениями)
Управление несколькими сервоприводами панорамирования-наклона: в этом руководстве мы рассмотрим, как управлять несколькими сервоприводами с помощью Python на Raspberry Pi. Нашей целью будет механизм PAN / TILT для позиционирования камеры (PiCam). Здесь вы можете увидеть, как будет работать наш окончательный проект: Control Servo Control loop test: