Шура Осечкин
Есть у нас в семье кошка по имени Киса. Молодая, а также трусливая и любопытная одновременно. Единственное, что начисто отбивает у нее всю трусость – это красное лазерное пятнышко от бошевского дальномера. Она готова охотиться за ним безоглядно. Но у дальномера есть ограничение по времени работы, батареек на него не напасешься, да и влом на длительные игры с кошкой время терять.
Находил на просторах Интернета всякие автоматические кошачьи дразнилки – дорого, да и функционал ограничен. Опять же, нет гарантии, что лучик не попадет на занавески, и они не будут при этом подраны вдрызг.
Или мы не инженеры-электронщики-ардуинщики?! А самому собрать?
Сначала взял железо: Arduino Nano, пару сервомашинок простеньких (можно в наборе с Arduino в Мастер Кит приобрести) и красный полупроводниковый лазер от завалявшейся указки с апертурой пятнышком. ЛУТом в момент сделал платку, чтобы сервы было куда воткнуть, ну и ключ на транзисторе для лазера, чтобы ардуиновский пин не перегружать.
Принципиальная схема устройства:
Плата:
В Arduino Nano втыкается обычный USB-mini из любого блока питания на 5 В. Ну, или в компьютер для заливки скетча.
Конструкцию хотелось сделать, конечно, как можно проще в изготовлении. Помог 3D-принтер. Вот поистине выручалочка для домашних умельцев! Очень понравилось печатать небольшие детали вместо того, чтобы пилить их напильником. За час MC5 D.R.O.V.A. напечатал четыре детальки для двухкоординатного поворотного устройства. Сам процесс печати настолько завораживает, что час этот пролетел вообще незаметно.
Собранное поворотное устройство вместе с платой крепим на обрезке крашеной фанеры. Это хозяйство и будем программировать.
Вот тут самое интересное. Надо заинтересовать кошатину нестандартным движением пятнышка, дабы она не теряла интерес, и обезопасить обои и занавески от когтей.
Экспериментальным путем после некоторого количества экспериментов были выбраны следующие принципы движения объекта охоты:
- шевеление лазером происходит не постоянно, а со случайными остановками с выключением пятнышка, при этом животное нервно озирается в его поисках;
- траектория движения меняется от сеанса к сеансу опять же случайным образом;
- размах движения тоже меняется в рамках заданной траектории;
- после перемещения в конец траектории точка замирает, чтобы зверь мог ее затоптать в попытке схватить;
- пятно не должно попадать на стены и занавески, только на пол!
Побаловавшись с простейшими движениями типа «линия» и «квадрат» от точки к точке попеременными движениями сервомашинок, захотелось реализовать и более сложные траектории. После недолгого гугления остановился на старом добром алгоритме DDA-линии, растеризующим отрезок прямой между двумя точками. То есть, задаем функцию траектории, задаем абсциссу, вычисляем ординату, и перемещаем лазер мелкими последовательными шагами по двум координатам в новую точку. Траектории сделал, какие в голову пришли: веер, синусоида, сектор, квадрат и т.п. Можно и более сложные функции рисовать, если кому охота.
Вот полный текст работающего на данный момент скетча.
Практика
Первый лазер вышел из строя через неделю – отломились выводы, хоть и сделаны они из многожильного провода. У второго отформовал выводы спиралью. Помогло. Можно еще клея капнуть из клеевого пистолета на место, откуда выводы выходят из корпуса.
Не все адаптеры питания подходят. От некоторых Ардуино не заводится или лазер дергается. Видимо, большие пульсации на выходе. Конденсатор лень было впаивать, просто подобрал хороший адаптер, благо их куча валялась.
Испытано на нескольких кошках. Молодые долго носятся. Постарше – побегают, а потом лежат и смотрят, как пятно шарахается, или на саму машинку пялятся, как она жужжит и шевелится. Лапой машинку трогать не пытались. Но, на всякий случай, придумал кожух из коробки для бумажек.
При опытах обои, занавески и кошки не пострадали.
В общем, рекомендую такую штуку всем кошатникам-электронщикам!