Оглавление:
- Шаг 1. Что вам нужно…
- Шаг 2: пайка платы
- Шаг 3: настройка Arduino
- Шаг 4: Настройка Python
- Шаг 5: Где происходит волшебство
Видео: Плата сервопривода с Python-GUI и Arduino: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
При создании прототипов или создании моделей самолетов вы часто сталкиваетесь с проблемой, заключающейся в том, что вам нужно проверить ход сервоприводов или установить сервоприводы в среднее положение.
Если вы не собираетесь собирать всю свою RC-систему или тестировать, насколько далеко вы можете отодвинуть сервопривод или где находится среднее положение, тогда эта плата для вас! Это позволяет вам перемещать сервопривод в указанные положения или перемещаться назад и вперед.
Он работает на удивление хорошо, даже с 6 сервоприводами, которые скачут из одного положения в другое в цикле.
Кроме того, это хороший проект, чтобы узнать о связи между Python-GUI и Arduino с помощью Serial.
Шаг 1. Что вам нужно…
Для этого проекта вам понадобится следующее:
Аппаратное обеспечение
- Arduino nano с кабелем. Я использовал клон, и код Python фактически ожидает чип CH340 клона.
- Макетная плата. 7x5 см достаточно
- Некоторые 2, 54-миллиметровые разъемы и контакты
- 1-6 сервоприводов
- Электропитание сервоприводов (я использовал батарейный блок с 4 батареями)
Программное обеспечение
- Python 3:
- USB-драйвер для чипов CH340: просто погуглите драйверы для драйверов CH340
- IDE Arduino:
Шаг 2: пайка платы
По словам Фритцинга, пайка на самом деле проста. Просто убедитесь, что вы можете легко подключить сервоприводы к 3-контактным рядам.
- 3-контактные ряды прикреплены к цифровым контактам 3, 5, 6, 9, 10 и 11 Arduino nano.
- Красный провод подключен к 5-вольтовому контакту Arduino.
- Черный провод подключен к контакту GND Arduino.
- Пара контактов под 3-контактными рядами предназначена для подключения типичного источника питания RC-приемника, вы можете добавлять разъемы по своему усмотрению, например, винтовые клеммы, разъемы XT, JST или … или …
Лично мне нравятся строки женских заголовков для вставки Arduino, но это зависит от вас.
Обратите внимание, что закороченные женские разъемы представляют собой перемычку, которая позволяет вам питать сервопривод, используя источник 5 В от Arduino для целей тестирования. Если вы будете слишком сильно его напрягать, Arduino сбросит настройки и потеряет правильный темп. Их НЕОБХОДИМО снять перед подключением другого источника питания.
Шаг 3: настройка Arduino
Установите Arduino IDE и прошейте Arduino nano с прикрепленным скетчем.
Шаг 4: Настройка Python
Установите Python 3 после его загрузки. Убедитесь, что вы отметили опцию создания переменной "PATH".
Вам нужно установить еще два пакета с помощью pip. Для этого нажмите клавишу «Windows», введите «cmd» и нажмите «Enter». В командной строке введите следующие команды:
- pip install серийный номер
- piip установить pyserial
- pip install tkinter
Как видите, мне нужны модули serial, а также pyserial, что, скорее всего, не самый эффективный вариант, поскольку pyserial должен заменить последовательный. Тем не менее это работает, и я только начинаю учиться;).
Откройте Python-Script в среде IDE и запустите его или запустите прямо с терминала.
В раскрывающемся меню вы можете выбрать один из двух режимов: «Вперед» и «Пинг-понг»:
- Идти прямо: введите положение сервопривода в микросекундах в первый столбец и нажмите «Пуск», чтобы сервопривод переместился в указанное положение.
- Пинг-понг: введите нижнюю и верхнюю границы во втором и третьем столбцах. Это нижнее и верхнее положение, между которыми сервопривод будет перемещаться вперед и назад. В столбце «Время пинг-понга» вы можете указать время в миллисекундах, в течение которого сервопривод будет ждать, когда он достигнет верхнего или нижнего положения. Нажмите «Пуск», и сервопривод начнет двигаться взад и вперед, нажмите «Стоп», и сервопривод остановится.
Шаг 5: Где происходит волшебство
И последнее, но не менее важное: я хочу указать на некоторые детали кода для тех, кто хочет немного наладить последовательную связь между Python и Arduino.
Что же происходит в программе Python?
Первым делом программа проверяет, что подключено к COM-портам в этой строке, и сохраняет в список:
self. COMPortsList = список (serial.tools.list_ports.comports ())
Затем он просматривает список до тех пор, пока не найдет печально известный чип CH340, сохраняет его, а затем устанавливает последовательное соединение после цикла for. Обратите внимание, что цикл for прерывается, как только будет обнаружен первый канал CH340.
for p в self. COMPortsList: if "CH340" in p [1]: # Ищем клон Arduino self. COMPort = p [0] break else: pass self. Ser = serial. Serial (self. COMPort, 57600)
Последовательное соединение устанавливается с COM-портом со скоростью 57600 бод.
А что делает код Arduino? Ну, так как у Arduino только один COM-порт, последовательное соединение - это только одна линия:
Serial.begin (57600);
Теперь мы можем использовать оба порта для связи. В этом случае только сообщения от Python до Arduino. Сообщения отправляются сюда из Python. Последовательное соединение по умолчанию передает байты. Это также самый быстрый способ отправки данных и, насколько мне известно, до сих пор довольно широко распространен. Таким образом, целые числа для номера сервопривода (чтобы Arduino знала, какой сервопривод перемещать) и позиции в микросекундах превращаются в байт.
Command = struct.pack ('> B', self. Place) # int-переменная "self. Place" превращается в байт
self. Ser.write (Command) # Запись байта в последовательный порт Command = int (self. ServoPos.get ()) // 10 # Чтение ввода из поля и включение int Command = struct.pack (' > B ', Command) # Превращение int в байт self. Ser.write (Command) # Запись байта в последовательный порт
Кроме того, анализ данных требует времени (например, интерпретация четырех байтов «1», «2», «3» и «0» как int 1230, а не как четыре разных символа), и лучше делать это не на Arduino.
На стороне Arduino отправляемая информация воспринимается следующим образом:
if (Serial.available ()> 1) {// Если доступны последовательные данные, то вводится цикл c = Serial.read (); // Первый байт (номер сервопривода) сохраняется в переменной Micros = Serial.read (); // Положение сервопривода сохраняется здесь Micros = Micros * 10; }
Рекомендуемые:
Что внутри сервопривода и как использовать с Arduino Полное руководство: 6 шагов
Что внутри сервопривода и как использовать его с Arduino Полное руководство: в этом руководстве давайте рассмотрим, что такое сервопривод, ознакомьтесь с этим видеоуроком
Запуск сервопривода с Chibitronics Chibi Clip: 5 шагов
Запустите сервопривод с Chibitronics Chibi Clip: Chibitronics Chibi Clip Кабель, поставляемый с зажимом, 3 перемычки, микро-серводвигатель (опционально), зажим типа «крокодил»
Запуск мини сервопривода с Micro: бит: 5 шагов
Запуск мини-сервопривода с помощью Micro: bit: Это краткое руководство покажет вам, как запрограммировать ваш BBC Micro: bit с помощью редактора MakeCode для запуска мини-серводвигателя. Инструкции по подключению вашего micro: bit к двигателю приведены здесь: http: //www.papermech.net/bbcmicrobit/Основы работы
Печатная плата Тима (печатная плата): 54 шага (с изображениями)
Печатная плата Тима (Plotted Circuit Board): это процесс, который я использую для создания пользовательской печатной платы для своих проектов. Чтобы сделать это: я использую свой XY Plotter с Scribe, чтобы удалить пленку для травления, чтобы обнажить медь для травителя. . Я использую свой XY-плоттер с лазером, чтобы выжигать чернила на
Простой электронный регулятор скорости (ESC) для сервопривода бесконечного вращения: 6 шагов
Простой электронный регулятор скорости (ESC) для сервопривода бесконечного вращения: если вы сейчас пытаетесь представить электронный регулятор скорости (ESC), вы должны быть наглыми или смелыми. Мир дешевой электроники полон регуляторов разного качества с широким спектром функций. Тем не менее мой друг спрашивает м