Код для поиска

Управление 32 сервомоторами по Wi-Fi с использованием ESP32 и PCA9685 через настольный или мобильный телефон V5

Управление 32 сервомоторами по Wi-Fi с использованием ESP32 и PCA9685 через настольный или мобильный телефон V5

В этом учебном руководстве мы узнаем, как управлять 32 сервомоторами с помощью модуля контроллера PWM PCA9685, подключенного к ESP32 по Wi-Fi. Эта конфигурация позволяет управлять каждым сервомотором индивидуально или всеми сразу через веб-интерфейс, доступный с настольного или мобильного устройства. К концу этого руководства у вас будет полностью функциональная система, способная с легкостью управлять несколькими сервомоторами.

PCA9685 module-0

Модуль PCA9685 предоставляет простой способ управления несколькими сервоприводами с помощью сигналов ШИМ, в то время как ESP32 обрабатывает Wi-Fi связь и функциональность веб-сервера. Вы сможете регулировать угол каждого сервомотора через удобный интерфейс, который отображает кнопки для каждого сервопривода. Для визуальной справки обязательно посмотрите видео (в видео на 00:00).

Аппаратное обеспечение объяснено

Этот проект в основном использует микроконтроллер ESP32 и контроллер ШИМ PCA9685. ESP32 — это мощный микроконтроллер с встроенными возможностями Wi-Fi, что делает его идеальным для проектов IoT. PCA9685 — это 16-канальный контроллер ШИМ, который можно каскадировать для управления до 64 сервоприводов. Он связывается с ESP32 через протокол I2C, что позволяет подключать несколько контроллеров и адресовать их индивидуально.

Каждый модуль PCA9685 имеет адрес I2C по умолчанию 0x40. При использовании нескольких модулей вы можете изменить их адреса, припаивая определенные перемычки. Например, первый модуль может быть на 0x40, второй на 0x41 и так далее. Эта каскадная возможность позволяет контролировать множество серво без необходимости использования дополнительных пинов на ESP32.

Подключение двух плат PCA9685

Как показано на изображении выше, для платы PCA9685 2 (слева) убедитесь, что вы спаяли этот путь, чтобы установить адрес I2C, чтобы он отличался от платы 1 (справа).

Детали спецификации

Производитель Аддафрут
Номер детали PCA9685
Логическое/входное напряжение 2.3 В до 5.5 В
Напряжение питания 2.3 В до 5.5 В
Выходной ток (на канал) 25 мА
Пиковый ток (на канал) 100 мА
Руководство по частоте ШИМ 40 Гц до 1000 Гц
Входные логические пороги 0.3 Vcc (низкий) / 0.7 Vcc (высокий)
Перепад напряжения / RДС(включено)/ насыщение 0.5 В макс
Термальные пределы 125 °C макс
Пакет TSSOP-28
Заметки / варианты До 64 сервомоторов с каскадированием

  • Обеспечьте правильное питание (рекомендуется 5V, 2A).
  • При необходимости используйте подтягивающие резисторы на линиях SDA и SCL.
  • Тщательно проверяйте адреса I2C при использовании нескольких модулей PCA9685.
  • Рассмотрите использование радиаторов для высокоэнергетических приложений.
  • Проверьте сервоприводы по отдельности, чтобы убедиться в правильной работе.

Общие схемы подключения пинов I2C:SDA= GPIO 21,SCL= GPIO 22.

Инструкции по проводке

ESP32 wiring for PCA99685 for 32 sevo motors

Чтобы подключить PCA9685 и ESP32, начните с подключения питания и земли. Подключите положительный вывод (V+) PCA9685 к выходу 5В вашего источника питания. Подключите землю (GND) PCA9685 к земле ESP32. Убедитесь, что оба устройства имеют общий провод заземления.

Далее, для I2C связи подключите вывод SDA PCA9685 к GPIO 21 на ESP32, а вывод SCL - к GPIO 22. Если вы используете несколько модулей PCA9685, убедитесь, что они правильно адресованы, припаивая перемычку A0, чтобы изменить адрес второго модуля на 0x41 и так далее. После этого вы можете подключить сервомоторы к выходным выводам PWM PCA9685 по мере необходимости.

Примеры кода и пошаговая инструкция

Код начинается с подключения необходимых библиотек и инициализации двух плат PCA9685. Идентификаторы, такие какmaximumServoиservoAngleопределите количество сервомашинок и текущий угол, соответственно.

Adafruit_PWMServoDriver board1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver board2 = Adafruit_PWMServoDriver(0x41);
int maximumServo = 32; // how many servos are connected

Этот отрывок показывает инициализацию объектов PCA9685 с их соответствующими адресами. ПеременнаяmaximumServoустанавливает общее количество сервоприводов, которые можно контролировать.

В этоsetup()функция, платы инициализируются, и устанавливается соединение Wi-Fi. Начальная позиция всех сервомоторов устанавливается с помощью цикла.

void setup() {
  board1.begin();
  board2.begin();  
  board1.setPWMFreq(60);  // Analog servos run at ~60 Hz updates
  board2.setPWMFreq(60);
  //initial position of all servos
  for(int i=0; i < maximumServo; i++) {
    if(i < 16) {
      board1.setPWM(i, 0, angleToPulse(allServoPosition[i]));
    } else {
      board2.setPWM(i-15, 0, angleToPulse(allServoPosition[i]));
    }
  }
}

Этот код настраивает платы PCA9685 и устанавливает частоту ШИМ. Он инициализирует все сервоприводы в их начальные позиции, которые определены вallServoPositionмассив.

Наконец, главный цикл обрабатывает входящие запросы клиентов для управления сервоприводами на основе пользовательского ввода.

void loop() {
  server.handleClient();
  if (buttonPushed && (servoNumber >= 0 && servoNumber < maximumServo)) {
    if (servoNumber < 16) {
      board1.setPWM(servoNumber, 0, angleToPulse(allServoPosition[servoNumber]));
    } else {
      board2.setPWM(servoNumber-15, 0, angleToPulse(allServoPosition[servoNumber]));
    }
  }
  buttonPushed = 0;
}

Этот цикл непрерывно обрабатывает запросы клиентов и обновляет позиции сервоприводов в зависимости от нажатой кнопки. ПеременнаяbuttonPushedсбрасывается после каждого действия, чтобы обеспечить надлежащий контроль.

Для полного кода, пожалуйста, обратитесь к разделу ниже статьи.

Демонстрация / Что ожидать

После того как всё настроено, вы должны иметь возможность управлять каждым сервоприводом по отдельности или всеми сразу через веб-интерфейс. Вы можете регулировать углы сервоприводов, нажав на кнопки, соответствующие каждому сервоприводу на вашем устройстве. Система должна реагировать быстро, но имейте в виду, что ограничения по мощности могут повлиять на производительность (в видео на 14:30).

Общие ошибки включают в себя обеспечение правильного назначения адресов I2C и достаточной мощности для сервоприводов. Если сервоприводы не реагируют, дважды проверьте свою проводку и соединения.

Временные метки видео

  • 00:00 Начало
  • 01:19 Введение
  • 02:32 Настройка адреса I2C
  • 05:07 Объяснение проводки
  • 07:44 Подготовка Arduino IDE для ESP32
  • 09:53 Объяснение кода Arduino
  • 25:49 Демонстрация на компьютере
  • 31:52 Демонстрация на мобильном телефоне

Изображения

PCA9685 module-0
PCA9685 module-0
PCA9685 module-1
PCA9685 module-1
PCA9685 module-2
PCA9685 module-2
PCA9685 module-3
PCA9685 module-3
PCA9685 module
PCA9685 module
ESP32-2
ESP32-2
Connecting two PCA9685 board
Connecting two PCA9685 board
ESP32 wiring for PCA99685 for 32 sevo motors
ESP32 wiring for PCA99685 for 32 sevo motors
881-new- PCA9685 Video V5, Arduino ESP32 Code : Controlling all 32 servo motor over WiFi
Язык: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Вещи, которые могут вам понадобиться

Ресурсы и ссылки

Файлы📁

Нет доступных файлов.