Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Около двух лет назад я построил эту игрушку для своей собаки, в которой лазер управляется двумя сервоприводами, чтобы дать ему случайное движение, при котором лазерная точка ускользает, и он может преследовать ее. Лазер работал отлично, но во время моего недавнего переезда он был поврежден, поэтому в этой инструкции мы исправим его, и я объясню принципы работы.
Шаг 1: материалы
Проект состоит из 4 частей: платы Arduino, 2 микросервоприводов и лазерного модуля. Все они размещены в пластиковом контейнере от сметаны, где плата Arduino приклеена ко дну, а сервоприводы и лазер - вверху.
Ниже приведен список ссылок для покупки, по которым вы можете получить то, что вам нужно:
-
Плата Arduino:
www.banggood.com/custlink/vKGvhaBTl3
-
Мини-сервоприводы 9 г:
www.banggood.com/custlink/v33GdlgfaE
-
Модуль лазерного диода:
s.click.aliexpress.com/e/crrJMQgs
Шаг 2: Строительство
Раньше я приклеивал сервоприводы к крышке горячим клеем, но он не выдержал. Чтобы исправить это, я воспользуюсь двусторонним скотчем из вспененного материала, так как он оказался очень прочным в том месте, где я его использовал. Выравнивание крышки не так критично, ее всегда можно отрегулировать вращением.
Другой сервопривод прикреплен непосредственно к первому, поэтому они могут вместе перемещать лазер в двух направлениях. Первый перемещает его влево и вправо, а второй - вверх и вниз. Лазерный модуль прикреплен к рычагу второго сервопривода горячим клеем, который, кажется, все еще держится.
Шаг 3: Подключение
Электропроводка в проекте относительно проста. Серводвигатели имеют три провода: питание, заземление и сигнал. Провод питания обычно красного цвета и должен быть подключен к выводу 5V на плате Arduino. Заземляющий провод обычно бывает черного или коричневого цвета и должен быть подключен к контакту заземления на плате Arduino. Сигнальный контакт обычно желтого, оранжевого или белого цвета и должен быть подключен к цифровому контакту на плате Arduino. В нашем случае мы используем цифровые контакты 9 и 11. Обратите внимание, что сервоприводы потребляют значительную мощность, поэтому, если вам нужно управлять более чем одним или двумя, вам, вероятно, потребуется запитать их от отдельного источника, а не от контакта + 5V на вашем Ардуино.
Лазерный модуль имеет три контакта, но используются только два из них. То, что слева - это положительное соединение, обычно обозначается буквой S в верхнем регистре, а отрицательное соединение находится справа и отмечено минусом. Ссылку на полную схему вы можете получить в описании видео.
Полная схема доступна на EasyEda:
easyeda.com/bkolicoski/Arduino-Laser-Toy
Шаг 4: Принципы работы
Теперь, когда ремонт закончен, давайте посмотрим на код и на то, как работает это устройство. Типичный микросерво 9g имеет поворот на 180 градусов и управляется ШИМ-сигналом. Этот сигнал генерируется Arduino с помощью библиотеки Servo. Библиотека предоставляет удобный метод, называемый «записью», который записывает значение в сервопривод, соответственно управляя валом. На стандартном сервоприводе это задает угол вала (в градусах), перемещая вал в эту ориентацию.
В нашем случае мы хотим ограничить это движение максимумом от 50 до 70 градусов в каждом направлении, чтобы область, по которой бежит собака, была не слишком большой, чтобы она не устала слишком быстро. Кроме того, я использовал эти ограничения, чтобы установить периметр лазера, чтобы он не выходил за пределы области, в которой моя собака должна двигаться. Они устанавливаются в начале скетча вместе с определениями для двух сервоприводов и переменных, которые мы будем использовать для их положения.
Шаг 5: Код Arduino
В функции настройки мы сначала инициализируем сервоприводы и подключаем их к правильным контактам на Arduino. Это скажет библиотеке вывести сигнал ШИМ на этот вывод. Затем мы записываем начальную позицию для обоих сервоприводов, и чтобы мы могли правильно разместить игрушку, я добавил код, который будет перемещать сервоприводы по круговой схеме 3 раза по краям установленного предела. Таким образом вы сможете увидеть, куда движется точка, и соответствующим образом отрегулировать размещение игрушки.
В функции цикла мы сначала генерируем два числа, представляющих следующие углы двух сервоприводов, и предоставляем пределы, которые мы ранее установили. Случайная функция в Arduino может принимать минимальное и максимальное значение, которое ей необходимо сгенерировать. Эти значения затем отправляются на сервоприводы по одному с задержкой в полсекунды.
Полный код можно найти на моей странице GitHub:
github.com/bkolicoski/LaserToy
Шаг 6: Наслаждайтесь
Я надеюсь, что это руководство было познавательным и интересным, поэтому предлагаю подписаться на меня и не забывать подписываться на мой канал на YouTube.