Проект COVID-19, чтобы избавиться от скуки

Фон

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

Нынешняя ситуация с COVID-19 оставила у меня много свободного времени и желание заняться проектом. Кэти напомнила мне, что у нас есть несколько старых ноутбуков, и мне может понравиться их разбирать. Она действительно была права. Тщательно разбирая их, я заметил, что у каждого есть маленькая веб-камера. Хм, а их можно спасти? Быстрый поиск в Google показал, что большинство этих веб-камер совместимы с USB-кабелем. Фантастика… родилась идея проекта.

Идея

Мы живем в квартире, и на улице бродит довольно много бездомных кошек. Симпатичные маленькие черные сажевые шарики. Мы оставляем миски с едой и водой на улице, чтобы им было что поесть, но мы никогда толком их не разглядываем, только мельком бросаем взгляды в сумерках то тут, то там. Идеальный вариант использования для создания шпионской камеры, поэтому я взял некоторые детали.

Части

  • Веб-камера на старом компьютере
  • Старый шнур USB
  • малиновый пи
  • Липкая шпаклевка (для крепления камеры)
  • Кусачки и изолента

Сборка

Первой целью после того, как вытащил веб-камеру из ноутбука, было срастить ее со старым USB-шнуром. С USB-шнурами легко работать. Все они соответствуют стандарту: красный — питание, черный — земля, зеленый и белый — данные. А как насчет этой веб-камеры?

Я развязал шнур камеры, чтобы посмотреть, с чем я работаю. Внутри было 6 очень тонких цветных проводов. Два из которых были сплетены вместе. Я попытался найти номер детали, указанный сбоку, чтобы увидеть, смогу ли я найти схему, объясняющую каждый из проводов. Нет такой удачи. Что я действительно обнаружил, так это то, что должно быть 2 кабеля данных (обычно скрученных вместе), заземление, кабель питания 5 вольт и, возможно, аудио левый / правый, если у камеры есть микрофон. В моей первой попытке я просто сопоставил все цвета: зеленый с зеленым, черный с черным и т. д., а затем подключил это к ПК. Ни сообщения об ошибке, ни звукового сигнала, ничего… конечно, все не могло быть так просто. Я знал, что кабели передачи данных на камере были зелеными и белыми. Я попытался поменять местами эти два с соответствующими USB-кабелями — зеленый к белому и белый к зеленому. Компьютер сказал «неопознанное устройство», так что я знал, что был рядом. Еще несколько проб и вуаля, компьютер сказал «установка веб-камеры HP». Я должен упомянуть, что это заняло довольно много времени, и в какой-то момент я полностью вырвал один из кабелей из камеры. Я думал, что я был мертв в воде, но в то время я был в Discord с приятелем, и он сказал: «Ну, просто вставь его обратно!».

Следующим шагом было получение программного обеспечения для обнаружения движения. Поскольку я знал, что хочу запустить это на raspberry pi, я снова обратился к Google. Я нашел пакет с подходящим названием Движение, в котором были все необходимые мне функции. Установка/настройка выполняется быстро, и для этого есть масса инструкций в Интернете. Итак, с работающей веб-камерой и программным обеспечением пришло время взять немного липкой замазки, установить ловушку для шпионской камеры и протестировать ее.

Я установил камеру снаружи окна и установил пи внутри, чтобы я мог подключить его к розетке. После того, как он включился, я сел за компьютер, чтобы посмотреть, все ли в порядке. Одна из замечательных особенностей Motion заключается в том, что, если он работает в вашей сети, вы можете просто посетить IP-адрес устройства и просмотреть прямую трансляцию даже на своем телефоне!

Теперь, когда все на месте и работает, остается только ждать. Через несколько часов у нас появились первые посетители. Короткошерстного кота мы называем Боу (сокращение от Радуга), а длинношерстного — Форель.

После первой ночи я понял несколько вещей.

  • Смотреть прямую трансляцию миски с едой скучно
  • Кошки приходят очень часто, а малиновый пи имеет ограниченное хранилище.
  • Мы случайно захватываем кучу других случайных вещей

Улучшения

Я ленивый, и каждое утро вручную входить в систему, чтобы копировать изображения и видео на компьютер, это раздражало. Итак, первое усовершенствование, которое я сделал, заключалось в том, чтобы автоматизировать это. Но как их снять с устройства? В Motion есть обработчик событий, который может вызывать скрипт после завершения каждого события захвата, поэтому я начал с него. Я написал простую программу на Python для загрузки файлов в облако. Раньше я работал в Box, поэтому я неравнодушен к их продукту, и у них также есть удобный python sdk для работы с их API. К сожалению, обработчик событий не сработал. Согласно форумам, существует давняя ошибка, из-за которой, если вы запускаете Motion в режиме демона, он не выполняет ваш скрипт. Так что, если у нас нет хука, то лучше всего запустить задание в планировщике. На pi установлен crontab (планировщик Linux), поэтому я добавил запись для запуска моего скрипта каждые 10 минут. Теперь я могу просто проснуться утром и проверить приложение Box на своем телефоне!

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

Опять же, я ленив. Я не собираюсь разбирать все это и удалять вручную. К счастью, это идеальный вариант использования машинного обучения. В прошлом мне везло с продуктами Google, и их обычно очень легко настроить. Я установил SDK, чтобы опробовать их Vision API. Я ожидал, что мне придется научить его распознавать котят, но на самом деле он работал довольно хорошо прямо из коробки. Вы можете попробовать это на их сайте здесь: Google Vision

Итак, мы почти достигли нирваны автоматизации. Есть только одна последняя вещь. Как я узнаю, когда пришла кошка, потому что, давайте будем честными, цель состоит в том, чтобы погладить ее. У Motion есть простой способ отправить вам электронное письмо при обнаружении активности, но электронная почта… неэффективна. Я мог бы не видеть его, и мои текущие значки электронной почты имеют около 600+ непрочитанных уведомлений.

Мой текущий план состоит в том, чтобы использовать Twilio для отправки мне текста в любое время, когда API видения обнаруживает котенка в помещении. У них есть библиотека Python, которая выглядит достаточно простой в использовании, и это цель этих выходных.

Заключительные мысли

  • Старые ноутбуки можно использовать повторно для обучения, а разбирать вещи — это очень весело.
  • 90% вещей, упомянутых в этой статье, я исследовал на лету, поэтому не бойтесь прыгать вглубь, даже если у вас нет опыта в том, чем вы хотите заниматься.
  • Кошки забавные. Лук отодвинет миску от остальных, потому что думает, что еда предназначена только для него. Форель ЛЮБИТ валяться в кошачьей мяте.
  • Вороны тоже едят кошачью еду.