Так сложилось, что на территории мануфактуры, где я располагаюсь, живёт достаточно большое семейство иссиня-чёрных котов, все братья от одной матери, но из разных помётов. Весь этот прайд мы именуем просто Бандиты, по соответствующему характеру и поведению. Из всей этой стаи один кошак полюбился мне больше всего: самый адекватный и интеллигентный; и именно его я иногда пускаю в свои кабинеты.
И возжелал я пускать того прекрасного кошака, а остальных отсеивать, дабы не хулиганили в моё отсутствие. И пришла в мою голову мысль о пропускной системе, именуемой КотСКУД — кошачья система контроля доступа.
❯ Концепция КотСКУДа
Долго размышлял о том, каким образом это решение сделать простым, дешёвым, повторяемым и не требующим серьёзного электропитания. В очередной раз, почесав за холку любимого Бандита, пришёл к выводу, что лучше всего использовать для этих целей сканер отпечатков пальцев.
Чешу любимого Бандита
Кошачий нос или лапка имеет уникальный рисунок, точно так же как рисунок отпечатка пальцев у человека. Значит осталось найти способ сканировать подушечку лап или носик (зависимости от того, что коту больше понравится).
Достаточно долго анализировал, что же есть доступного и недорогого на рынке, а после остановился на оптическом сканере отпечатков пальца модели FPM10A. Для него имеется огромное количество примеров, ПО, есть куча библиотек на Python и Arduino, а значит, по идее, с ним проблем возникнуть не должно.
❯ Пару слов об устройстве оптического сканера отпечатков
Оптический сканер отпечатков работает по принципу того, что свет под определённым углом полностью отражается на границе двух сред. И если какой-то объект прикасается к этой границе, то такое отражение нарушается и можно считать отпечаток этого объекта. Для примера приведу схему устройства оптического датчика R307, взятую с этого сайта:
Оптический сенсор — весьма сложное устройство, в котором есть призма, реализующая границу сред, и полноценная камера с процессором, которая позволяет считывать отпечатки. Когда нет прикосновения, то ровный белый свет попадает в объектив камеры. А если прикасается носик к нашему КотСКУДу, то интенсивность света уменьшается, и камера таким образом фотографирует отпечаток.
Далее там идёт сложная система распознавания отпечатков по базе данных, по каким-то хитрым алгоритмам, действие которых мне неведомо.
❯ Подключение сканера FPM10A
Прелесть сканера FPM10A заключается в том, что он подключается по-обычному UART и питается от 3,3 вольта. Для его подключения понадобится любой обычный переходник USB-UART. Не буду подробно останавливаться на способе подключения этого датчика, всё достаточно подробно расписано в официальном документе.
Мне понадобилось сделать несколько пассов паяльником, чтобы подключить его к компьютеру, но с этим справится даже ребёнок.
Сканер моего КотСКУД подключён и готов к работе
Дело стало только за программным обеспечением. Возиться с Python библиотеками мне было лениво, поэтому решил использовать для начала демонстрационную программу для этих датчиков, запустив её на виртуальной машине. Программа работает весьма нестабильно, иногда вылетает, не всегда видит датчик. И, думаю, это связано с тем, что она очень плохо реализована.
Но в целом, всё как в анекдоте: мой кот раньше не любил пылесосы, но ничего, потом втянулся… Так и я, втянулся, и потом она даже начала мне нравиться.
Подготовка ПО к испытаниям
Настало самое интересное – перейти к натурным испытаниям.
❯ Натурные испытания
Наверное, самый сложный и волнительный момент. Бандит был накормлен, и максимально обласкан. Думаю, он ни разу в жизни не испытывал такого тёплого внимания к своей персоне со времён своего рождения и уж тем более не ожидал, что ему перепадёт столько вкусняшек. Во всех опытах со сканером проявлял живое участие и интерес и даже смотрел, что же будет.
Сканер отпечатка лапы
Вообще, мне казалось, что научить кота тыкать лапой в сканер будет самым простым действием. Плюс, это достаточно простая и лёгкая операция.
Но я столкнулся с суровой реальностью: в отличие от домашних питомцев, у которых мягчайшие розовые подушечки, у заводских Бандитов подошва лап больше напоминает твёрдую наждачную бумагу. И как бы это странно не звучало, сканер наотрез отказывался сканировать какую-либо кошачью лапку. Или если уж и делал, то на выходе было что-то совсем неразборчивое. Поэтому отпечаток кошачьей лапы я вам не покажу.
Отпечаток кошачьего носа
Не могу сказать, что Бандит был в восторге, что ему хотят отсканировать носик, но и большого сопротивления не оказывал. Вообще, в этой всей процедуре никаких насильственных или неприятных действий к любимому котику не применялось, всё было достаточно добровольно, да и кот очень разумен. Проблема была скорее в том, что он не хотел прикоснуться к сканеру и замереть, чтобы качественно носопырка его была отсканирована.
Сканируем кошачий носик
Всё же, после нескольких не самых удачных попыток, Бандит согласился более спокойно ткнуться носом в эту светящуюся штуку, и отпечатки удались. После этого я начал сохранять результаты на компьютере, и он с невероятным любопытством, следил за всеми моими действиями, чем просто поразил меня, будто бы он сам всё понимал, что я там делаю.
Что же ты там такое делаешь?
Настал момент истины, можно ли использовать оптический сканер отпечатков для кошачьих носиков и далее реализовывать мой КотСКУД?
❯ Результаты
Вам же тоже, как и мне не терпится посмотреть, что же там удалось насканировать? Удачных сканов не так много, как я уже говорил, Бандит достаточно резво крутил мордой, а проявлять насилие или как-то фиксировать его — мне не позволяла совесть.
Вот первые два более-менее удачных снимка отпечатка кошачьего носика, ощутите уникальность момента: вы видите их первыми.
Первые отпечатки кошачьих носиков
В конце концов, мне удалось получить более-менее чёткий снимок котоноса. И как раз к этому моменту, Бандиту надоела эта игра, и он решил слинять.
Чёткий снимок кошачьего носа
Считаю это настоящим успехом!
❯ Выводы
Главный вывод из всей этой затеи такой: отпечаток кошачьего носика можно использовать в системе КотСКУД для доступа животного в помещение.
Однако я не учёл несколько факторов:
- Сбор массива отпечатков одного носика. Чтобы собрать достаточное количество отпечатков носа с разных ракурсов, для корректного распознавания и добавления в базу данных, требуется длительное время. А кот не желает так долго заниматься этими глупостями и начинает сопротивляться.
- Дрессировка. Второй фактор, который почему-то мне не пришёл в голову – что котика надо будет обучить тыкать носом в эту светящуюся штуковину. А, как показала практика, тыкать носом, да ещё с достаточным усилием, чтобы отпечаток чётко читался, кот не хочет. И никакие вкусняшки и поглаживания его не соблазнят в этом действе.
- Носик мокрый. А это означает, что сам сканер будет достаточно быстро пачкаться кошачьими соплями и потребуется регулярная очистка.
❯ Полезные ссылки
- Устройство и принцип работы оптического сканера отпечатков пальца.
- Документация подключения оптического датчика отпечатков FPM10A.
Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.
Возможно, захочется почитать и это:
- ➤ Медная фотография
- ➤ Руководство по Kubernetes для хейтеров Kubernetes
- ➤ «За вечер с котом». Как рождаются крутые проекты
- ➤ Практическое руководство по Rust. Бонус
- ➤ «Робокоп» — рыцарь нашего времени
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Комментарии (75)
Gremlinquisitor
01.04.2024 08:06+1А валерьянка или кошачья мята не помогут примирить кота с необходимостью утыкаться носом в сканер? Расположить что-то вкусное так, чтобы достать можно было лишь через прижимание носопырками к сканеру...
Javian
01.04.2024 08:06+10у такого сканера будет толпа нелегальных кошачьих эмигрантов
Gremlinquisitor
01.04.2024 08:06+9Зато можно будет отсканировать всех и внести в базу. И при подключении дистанционного управления поливом мочить тех, кто окажется в чёрном списке.
empenoso
01.04.2024 08:06В прямом или переносном смысле?
Gremlinquisitor
01.04.2024 08:06+3В самом прямом из самых прямых! Технически не так сложно настроить полив чего-то по определённому событию. Так что ходить посторонним кошакам мокрыми.
Shenlong
01.04.2024 08:06+5Даешь Систему Кошачего Управления Доступом с FaceID или другого распознания образа котика) Может даже по биометрии, главное, чтобы к ЕБС подключаться не пришлось)
MaFrance351
01.04.2024 08:06+2Круто!
Кстати, я давным-давно тоже ковырял такой сканер, правда, от него я хотел BMPшку с отпечатком дабы конвертировать в ISO-шаблон(кстати, да, как бюджетный такой сканер он весьма и весьма неплохой). Из того, что запомнилось - в одном из даташитов было указано питание 3,6-5 В, хотя на деле от пяти вольт он светил подсветкой и всячески имитировал нормальную работу, но до снижения напряжения что-то сканировать отказывался.
dlinyj Автор
01.04.2024 08:06Да, я долго подбирал подходящий сканер. Некоторые даже возвращал обратно в магазин.
MaFrance351
01.04.2024 08:06+1Если не секрет, какие использовали? И почему забраковали?
dlinyj Автор
01.04.2024 08:06У уж не помню, тоже из этой серии что-то. Они у меня не заработали.
MaFrance351
01.04.2024 08:06+1Они ещё отличаются по методу обнаружения прикладывания. В каких-то стоит ёмкостный датчик (электрод в виде шлейфа рядом с окошком считывателя), а где-то считывание происходит при затемнении обзора камеры.
bak
01.04.2024 08:06+3Здесь была бы лучше камера с распознаванием
лицморд. И не нужно заставлять куда-то тыкать, подошел к дверце она открылась.iliazeus
01.04.2024 08:06+21Если кот прям знакомый и прикормленный, то, наверное, лучше всего сработает ошейник с чем-то вроде rfid.
kibergus
01.04.2024 08:06+3Но это же не интересно. Прикормленным котам метка имплантируется. Кстати, дверцы для котов со считывателем меток более чем продаются. Пускают домой только своих котов.
vbifkol
01.04.2024 08:06+13Вам просто нужна на входе система поджатия кота носом к датчику (СиПоКоНоД). Навскидку: делаем коробку (котов не надо просить зайти в коробку), сзади - небольшой пресс. Один минус - прибор в базовой комплектации одноразовый, по-хорошему его надо дополнять системой отлова и доставки кота в СиПоКоНоД - СОДоК в СиПоКоНоД. Второй минус - если с мощностью и ходом пресса не подрасчитать, кот тоже может оказаться одноразовым и все инвестиции пойдут прахом.
Moog_Prodigy
01.04.2024 08:06+8Да уж, все эти отпечатки лап, усов несерьезны, надо делать сразу отпечаток кота (системы "Мокрое пятно")!
Kopcheniy
01.04.2024 08:06+3Спасибо за историю.
"Чешу любимого Бандита" - весьма забавное фото.)
самый адекватный и интеллигентный
Хороший собеседник, умеет писать код и не сильно разбрасывает детальки:)
Они бывают довольно дружные. Ваш интеллигент запустит братву после вашего
ухода и выгонит обратно до.)Теперь все знают, что у него есть крыша и личная недвижимость. Это самый уважаемый в районе кот!
NAI
01.04.2024 08:06+4Вот шутки-шутками, а проблема то есть - когда дома живет два кота, и каждого надо кормить своим кормом. Доставать\ставить миски запарно, плюс перерыв в комежке на рабочий день (8 ч. + дорога).
Мечтаю о кормушке с распознаванием, хотя бы морды.
RichardMerlock
01.04.2024 08:06Если коты предпочитают разные корма, то они сами разберутся, кому что есть. Зачем распознавать?
NAI
01.04.2024 08:06+2Если коты предпочитают разные корма...зачем распознавать?
Если предпочитают, то все равно, а если каждого надо кормить своим кормом, то нужна распознавалка. Например - одному требуется диетический корм, второму моно-белковый, третьему холистик, четвертому что-то там от МКБ и т.д. и т.п.
RichardMerlock
01.04.2024 08:06+1Клетки для кормления! Клетка с предбанником, в котором кот только вдоль помещается и может выходить только задним ходом. Еда отделена механизмом с электроприводом. Кот в ошейникe с rfid. В предбаннике считыватель хоть размером с кота. Пока правильный кот не зайдёт, еда не откроется.
УПД. Кот вышел, метка потеряна, еда закрылась.
NAI
01.04.2024 08:06+2Клетка с предбанником, в котором кот только вдоль помещается и может выходить только задним ходом.
Кот это жидкость, оно так не сработает, вернее будет работать только если у вас два сферических одинаковых по ШВГ кота. Вот только кошки и коты в принципе, статистически имеют разные веса и габариты даже в пределах одной породы =) - кошки меньше, коты больше
Пока правильный кот не зайдёт, еда не откроется.
А можно просто током е*шить неправильного кота, чёуж тут...
vbifkol
01.04.2024 08:06+1Вот только кошки и коты в принципе, статистически имеют разные веса и габариты даже в пределах одной породы =) - кошки меньше, коты больше
о, кста. если выбор из двух котов, можно идентифицировать по весу кто к миске пришел.
NAI
01.04.2024 08:06можно нанять специально обученного кожаного мешка - тоже решение, которое, кстати, самое простое (но дорогое)
RichardMerlock
01.04.2024 08:06Чтобы два кота в одну нору одновременно залезали очень маловероятно, не любят они такого. Но даже если и так, то два разных считывания засчитываются за отказ в обслуживании.
А можно просто током е*шить неправильного кота, чёуж тут...
С этим к Куклачову...
xSVPx
01.04.2024 08:06+1Они у вас нечипированные что-ли ?
NAI
01.04.2024 08:06+1Чипированные. Если вы намекаете на то что этим можно воспользоваться то я вас сильно разочарую, тем что 1. радиус действия чипов очень мал и сканер надо прям точно позиционировать на расстоянии менее сантиметра. Флиппер например не читает. Плюс шерстяные как бы все время в ждвижении. 2. готового решения нет, а сидеть и третьей работой полгода* херачить проект на esp32/ардруине, у меня лично нет никакого желания
** а то и год с учетом разработки всего - механики, корпусов, кода и отладки
xSVPx
01.04.2024 08:06+1Дверцы, которые пропускают конкретных котиков совершенно обычный продукт.
Готовые кормушки тоже есть наверняка, надо просто поискать... Хотя я скептически отношусь к тому, чтобы выдавать еду конкретному котику без контроля того, кто не по итогу сожрёт...
NAI
01.04.2024 08:06Существует очень много обычных продуктов - камер с распознаванием лиц, home assistant'ов, Agent DVR, synology-как_оно_там, прошивок для esp в которых почти не надо программировать, 3D-принтеров, приложений для моделирования корпусов, кормушек с wi-fi (и, возможно, API), кормушек с UART'ом (вангую, что их больше)
Только это все надо собирать вместе, е*ся с совместимостью, закупать кучу стаффа, учиться им пользоваться, делать ошибки, фиксить, делать эстетически красиво, в общем надо потратить кучу личного времени. Спасибо, у меня для этого есть пет-проект - от которого получаю удовольствие, в отличии от сбора из овна и палок кормушки.
И в целом, так можно про все сказать - чек энжайн в машиние загорелся? Ну ты че, нафига в сервис ехать то? ткинсь OBD, может там свеча, делов то на 20 минут - этож совершенно обычное действие
вместо отдыха потрать все выходные на подбор свечей, ключей, OBD, курение форумов и ютубов а ну и под дождем само собой.Слив забился? Ну тыче? Зачем сантехника вызывать - купи трос за 200 рублей
и охреней от запахов фановой трубы, измазюкайся в овне потрать 2 часа,делов то на 20 минутГотовые кормушки тоже есть наверняка, надо просто поискать
Найдете в свободном доступе (а не где-то там на кикстартере в стартапе) сообщите =)
Хотя я скептически отношусь к тому, чтобы выдавать еду конкретному котику без контроля того, кто не по итогу сожрёт...
Задача не в том чтобы конкретный кот ел 100% один корм (хотя этого бы очень хотелось), а сделать так чтобы он _в_основном_ ел свой корм в плюс-минус нужном количестве.
У меня кот ест в основном ночью и 2-3 раза. Кошка, наоборот маленькими порциями грамм по 5, но зато равномерно в течении дня\ночи (иллюстрация поговорки "в любой ситуации - иди поешь"). Они оба съедают +- свою дневную норму, но иногда, коту лень идти к своей миске и он пытается схомячить то, что лежит у кошки. Т.е. херак и нет пол-миски. Если бы при приближении кошки насыпалось бы 5 гр. и иногда оставался бы 1 г. то ничего страшного не произошло бы, ну съест кот этот грамм, не наестся и пойдет к своей миске =)
NiPh
01.04.2024 08:06Флиппер читает, но да, в зоне сантиметров 5 примерно.
NAI
01.04.2024 08:06Нет. Хотите я вам видео запишу?
Первое что сделал когда чипировал котшатиков потыкал в них флиппером и ... ни_че_го. Сначала подумал, что метки бракованные, но нет, во всех ветеринарках читаются. Купил 2 штуки, для тестов - так вот они флипером читаются только при прямом контакте - полсантиметра-сантиметр вправо-влево и все.
Возлагал на флиппер надежды что смогу сканить бездомных-найденных котов и возвращать хозяевам, но как показал личный тест - флиппер в этом плане очень ненадежен.
NiPh
01.04.2024 08:06У меня выборка поменьше, конечно, ровно одна своя кошка, и на ней после чипирования при прикладывании плюс минус в зону чипа считывается. Но спорить не буду, возможно у вас другая технология чипирования, или еще какие нюансы.
deathlenin
01.04.2024 08:06У меня тоже не читает. Полагаю у нас с вами чипы на 2.4ггц работают, а не на 443мгц
NAI
01.04.2024 08:06Для тестов, использовал FDX-B (134.2kHz, Озон), т.е. то же что демонстрировала команда флиппера (пруф).
Метка то в целом читается, если флиппер прям точно положить на иглу в место где лежит чип (∓ 5 мм) и подержать секунд 5. В реальной жизни, когда мы не знаем чипирован ли кот, в каком месте, плюс животное двигается (любопытничает - чем это в него тыкают) - поймать метку нереально. По крайней мере, на своих двоих не смог, даже когда они спали и не двигались
deathlenin
01.04.2024 08:06Доступ по чипу осуществляется не по тому который в коте, а потому который вы вешаете на ошейник на кота :)
Andr01D
01.04.2024 08:06можно проще, распознавание по цвету ошейника, допустим, одному красный, другому синий, кормушку сделать в виде тоннеля, чтоб вдвоем не влезли, в конце поворотная кормушка, то-есть, полез "красный", ему кормушка открывается одной стороной, "синему" - поворачивается другой
NAI
01.04.2024 08:06Вот ваш вариант пока самый реалистичный, т.к. кормушки с камерами есть, надо только openCV прикрутить и API-кормушки расковырять. Ну и котов приучить к ошейникам =)
Но как писал выше, готового решения нет, все равно придется тратить пару месяцев на реализацию =(
vbifkol
01.04.2024 08:06Ну и котов приучить к ошейникам =)
Как вариант - покрасить участки котов в яркие хорошо различимые цвета.
NAI
01.04.2024 08:06Думаю, что openCV должен справиться с двумя тайскими tabby-point (полоски вроде разные). Но в любом случае прикручивание инфраструктуры к мискам не доставляет удовольствия особенно с учетом того, что сетку еще и учить придется на каждого кота отдельно.
tea
01.04.2024 08:06+2Есть такие, я пользуюсь. У меня двое и у них разная диета. Чипируете кота (либо ошейник с чипом), у кормушки есть ворота со считкой - открывается только тому чья морда с чипом засунута в ворота. Называется SureFeed Sureflap Pet Feeder.
jawello
01.04.2024 08:06Надеюсь будет полезно:
Есть кормушки xiaomi, которые по времени насыпают корм. Если коты +- привыкли к месту где их кормят, то при звуке насыпания побегут именно к своей миске, а время кормления выставить одинаковое. Из потенциальных проблем, что более быстро кушающий котик - пойдет отбирать еду у более медленного собрата, как вариант постараться увеличить расстояние между местами кормлений + в случае таких проблем на старте (нр, в выходные) особо быстрого прыскать из пульверизатора при попытке лезть в чужую миску. Из плюсов - можно контролировать объем потребления (если есть проблемы с перееданием).
Если смотреть на более экзотические варианты, то у кормушки есть API (с Алисой работают, значит и API есть). И если окрас у котов сильно отличается, то Raspberry с камерой и в случае движения, определять перобладающие цвета и дергать кормушку пока кот не уйдет. Исключить случайны срабатывания или доедания остатков не получится, но, в среднем, каждый будет кушать свой корм.
SuharkovMP
01.04.2024 08:06+6Попробуйте в следующей версии использовать свойство котиков иметь разные голоса. Да и вероятность того, что котик сядет рядом с дверью и начнет требовательно мяукать значительно выше вероятности, что котик уткнется носом в светящуюся хрень. Это будет Сканер Автоматически и Молниеносно Определяющий Личность Его Топтейшества.
sparc64
01.04.2024 08:06+1Интересно, а голоса котов достаточно уникальны для такого?
SuharkovMP
01.04.2024 08:06+1Знакомые кошатники утверждают, что да. У меня самого выборка небольшая была (3 экземпляра в разное время), но да, мяукали по разному.
DaneSoul
01.04.2024 08:06+2Вообще, идея идентификации животного по рисунку носа весьма разумная.
Про кошек не знаю, но про собак читал, что рисунок кожный на носу уникален у каждой собаки, как у людей отпечаток пальца. Если вести базы по такой биометрии, то не будет нужды в чипировании и спец. средствах для считывания чипа.
begin_end
01.04.2024 08:06+910 лет назад я делал для своего котика на даче кормушку, открываемую фактом наличия магнитика на ошейнике. Никаких комп.систем/контроллеров - датчик Холла, чуть-чуть обвязки и механическая часть от DVD дисковода (выдвижной лоток, ставший дверцей), описание проекта.
Позже собирался переделать с магнитного датчика на более надежный и дистанционный аналог rfid+ик, даже сделал рабочий прототип. Но перестало быть нужным - кот был окончательно забран в город. Конечно это все идеи "как собрать из подручного хлама", но оно работало.
da-nie
01.04.2024 08:06А RFID-метку вживить/на ошейник не было бы проще?
begin_end
01.04.2024 08:06+6Из моей практики использования ошейников на дачных котиках - польза неоднозначна.
С одной стороны, на ошейнике можно закрепить какой-либо ключ, бирку для служб отлова и прочее полезное.
А с другой - ошейник на свободно гуляющем коте это фактор дополнительной опасности. Само кошачье тело очень гладкое, незацепистое, что важно при пролезании в узкие негабаритные проходы, лазании по веткам/кустам/мусоркам и при драках с другими животными. Если разрабатывать правильный ошейник - он должен быть легко срываемым в диапазоне доступных коту усилий.dlinyj Автор
01.04.2024 08:06+3В условиях действующего завода - ошейник на кошке почти сто процентная погибель животного.
speshuric
01.04.2024 08:06+15Ну да, ну да. Сначала "дай носик отсканировать", а потом всё это превращается в "почему в jira время не оттрекано".
MiyuHogosha
01.04.2024 08:06+3У котов на носу - щуп-сенсор (очень тонкий волосок). Поэтому носом в твердые предметы они не тыкаются. Обычно.
begin_end
01.04.2024 08:06+2А вот в мягкие тыкаются, кстати, когда просят есть. Можно попытаться сделать сканер с мягкой и теплой поверхностью и сыграть на этом поведении.
NutsUnderline
01.04.2024 08:06Вроде уже лет 10 назад делали распозновалку котов на камеру и Raspberry Pi
Gaius_Julius
01.04.2024 08:06+2Лучше было бы использовать аудиораспознование, многие кошаки так привлекают своих хозяев. Такой способ потребует сбора большого дата сета, но будет работать в любое время суток (в отличии от камеры), не потребует от кота повернуться/посмотреть/ткунться и не потребует обсулживания
Bootmen
01.04.2024 08:06Всякие измышления насчет кошек не нелигимны.
У кошек 18 пальцев на ногах. Походу с Марса? :)
Засланцы?
bodyawm
Немногие знают, но dlinyj с хабратортными статьями - тоже котик)))