Гик-снайпер или как сделать «зоркий глаз»

в 7:01, , рубрики: diy или сделай сам, Geektimes, java, Raspberry Pi, Разработка на Raspberry Pi, Разработка под android

Пригласили меня как-то на стрельбище с использованием высокоточного оружия (по простому — снайперкой пострелять). Это стрельба из ружья, которое поражает цели на довольно больших расстояниях, например, на километр. Отстреляв свои первые три пульки мне захотелось посмотреть, куда же я все-таки попал. Мишень находится очень далеко и отверстия от попадания в прицел не видны. Единственным возможным решением оказалось — двигаться к мишени и посмотреть все попадания непосредственно на месте.

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

Гик-снайпер или как сделать «зоркий глаз» - 1

Внимание, под катом много фотографий!

Вернувшись со стрельб, одна мысль не давала покоя — нужно как-то детектировать попадания и выводить результаты где-нибудь рядом со стрелком. Сначала были идеи сделать специальную мишень, при попадании в которую замыкаются контакты и данные передаются стрелку. Но такую идею пришлось забраковать, так как мишень выходила одноразовая. Затем была идея сканировать мишень на наличие неровностей, но тоже довольно сложно, плюс сразу не ясно, как его калибровать в походных условиях. Самое простое и правильное решение лежало на поверхности — нужно просто фотографировать мишень, а попадания уже смотреть на фото. Итак: устройство должно быть компактным, иметь автономное питание, работать долго и быть довольно неприхотливым. Ну и самое главное — оно должно быть очень простым в использовании. В идеале — включил и поехал занимать позицию.

Приступаем к сборке.

Нам понадобятся:

  • Raspberry Pi, чтобы эта штука могла думать
  • Камера, чтобы могла видеть
  • 3g-модем, чтобы могла говорить
  • GPS-датчик, чтобы штука знала, где находится (будем выводить расстояние от стрелка до мишени)
  • Аккумулятор, чтобы она вкусно питалась.

Больше половины из того, что нам нужно, у меня было в наличии, поэтому докупать практически ничего не пришлось.

Техническая часть готова к сборке — теперь нужно подумать об эстетической. Сначала было решено заказать красивый корпус для всего этого. И вот тут я столкнулся с первой проблемой. Площадки пестрят услугами по изготовлению корпусов, но цены ставят настолько высокие, что я перестал удивляться топорному дизайну отечественных приборов и понял, смысл бытия что у меня свой путь. Создать корпус, заказав его у кого-то — ОЧЕНЬ дорого, даже если попросить сделать просто квадратный алюминиевый куб с дыркой под камеру. Возможно, я плохо искал, но предложениями меня ставили в ступор. Я пытался объяснить, что мне нужен примитив — простой и надежный. Мне предлагали решения за пол миллиона рублей!

Пойдем иным путем — заказываем на азиатской площадке обычный алюминиевый кейс под DIY. Стоимостью в 700 рублей. Красивый, аккуратный алюминиевый кейс. Уже отшлифованный. Самое главное не промахнуться с размерами. А дырок сами насверлим.

Там же находим мини-штатив и увеличивающую насадку (телескоп) на объектив.

Со сборкой никаких сложностей нет — для камеры у малины есть разъем, а для дисплея и GPS датчика хватает GPIO ног.

Гик-снайпер или как сделать «зоркий глаз» - 2
(подключаем информационный дисплей и GPS)

Для питания используем комплект аккумуляторов 18650. Каждый аккумулятор по 3200 mAh, а пачка из 4х штук дает нам в сумме больше 12 000 mAh. Это довольно неплохо для малинки и наши потребности покрывает с лихвой. Собираем зарядное устройство для нашего аккумулятора и пробуем запитать малинку.

Гик-снайпер или как сделать «зоркий глаз» - 3
Склеиваем аккумуляторы между собой и очень аккуратно пропаиваем контакты. Лучше использовать контактную сварку

Пока наш корпус в пути — приступим к написанию программной части. Следуя пословице «Бери ношу по себе, чтоб не падать при ходьбе», — будем использовать только те инструменты, в работе с которыми есть большой опыт. Поэтому на C++ замахиваться не будем, а возьмем любимую Java.
Код выкладывать не стану, но поясню суть сделанного.

Для начала пишем сервер. Для этого нам подойдет Jetty в обвязке с MySQL. Сервер должен регистрировать у себя устройства и устанавливать связь между устройством съемки и смартфоном.

Устанавливаем на raspberry linux, подключаем яву и пишем первого клиента. Клиент должен уметь авторизоваться на нашем сервере, получить команду на съемку, сделать фото и отправить результат на сервер. Немного поразмыслив, так же напишем систему обновлений ПО и распределения версий. Наверняка, такое устройство понадобится еще кому-нибудь и на тот случай, если там будет другое железо и/или другие датчики — ПО так же будет другим и его тоже нужно будет обновлять.

Далее пишем клиента под Android. Тут все просто — добавляем устройство в список доступных по его «токену», и если устройство существует и активировано — получаем к нему доступ. Чтобы вручную не вбивать сложный токен — шифруем его в QR-код, который наносим на корпус устройства (я нанести не успел, поэтому просто распечатал, заламинировал и вложил в кейс). При добавлении устройства в смартфон нам достаточно просто отсканировать QR-код.

К тому моменту, как программная часть была готова — подоспел корпус. Делаем чертеж для нарезки отверстий в этом красавце и сдаем в любое рекламное агентство. Там на фрезе все делают быстро и дешево.

Гик-снайпер или как сделать «зоркий глаз» - 4
Размещаем дисплей

Собираем компоненты в корпус и получаем еще пару неприятных моментов. Во-первых, — GPS антенна с моим передатчиком шла пассивная — керамическая, и несмотря на то, что она прикреплена снаружи устройства, находит спутники она очень долго. Видимо, любая близость к металлу ей вредна, потому что вне корпуса скорость нахождения спутников была примерно в два раза быстрее. Во-вторых, — очень сложно припаять что-либо моим китайским кипятильником паяльником к ножкам microUSB разъема. Поэтому пришлось фиксировать разъем горячим клеем. В следующий раз такие вещи буду делать только на текстолите. (О, как я мечтаю о паяльной станции!)

Гик-снайпер или как сделать «зоркий глаз» - 5
Собираем все в корпус

Все собрано — тестируем.

Гик-снайпер или как сделать «зоркий глаз» - 6
Экраны приложения

Работает на ура, изображения может передавать в двух режимах — в режиме низкого качества (для настройки объектива устройства на мишень) и в режиме высокого качества, так сказать, «боевой режим».

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

Вносим последний штрих: покупаем «оружейный» кейс, красиво все укладываем и несем на почту.

Гик-снайпер или как сделать «зоркий глаз» - 7
Гик-снайпер или как сделать «зоркий глаз» - 8
Гик-снайпер или как сделать «зоркий глаз» - 9

UPD: На момент написания статьи уже дали отзыв, что «телескоп» устройству не нужен, так как и без него все прекрасно видно. Попросили помечать новые попадания по мишени.

Ну и видео запуска:

Прошу прощения за качество видео, снимал не для отчета.

В заключении хочу сказать, что открыл для себя новое направление в саморазвитии. Всегда думал, что у меня руки из жо транзистор работает на магии.

У устройства получилось выявить как плюсы, так и минусы.

Плюсы:

  • Цена.
  • Независимость от расстояния и прямой видимости. Качество изображения всегда одинаково хорошее и не зависит от расстояния. Можно наблюдать за целями из-за укрытия.
  • Неприхотливость и простота в использовании.
  • Можно использовать не по прямому назначению.
  • Можно комбинировать неограниченное количество устройств для наблюдения за большим количеством целей.

Минусы:

  • Устройство должно находиться в зоне покрытия мобильным интернетом, что по отзывам стрелков не всегда возможно.
  • Пассивная GPS-антена. Нужно менять на активную.

Опробовав первый блин — дальше хочется большего. А именно — более профессионального подхода. Нужно исправить ошибки в текущей реализации и добавить новые возможности, вплоть до баллистического калькулятора с датчиками влажности, температуры, ветра и расстояния. Далее есть идея для «глухих» мест, где устройство будет работать без интернета вовсе. Так что скорее всего эта статья лишь начало цикла статей.

Автор: SlyBeaver

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js