А вы знали, что при помощи Raspberry Pi можно следить за опознанными летающими объектами? Вы можете настроиться на радио-сигналы самолетов на расстоянии до 400 км от вас и отслеживать все рейсы. Для этого вам достаточно найти дешевый USB TV и пару свободных минут.  Изображение: dump1090 — тестирую антенну FlightAware против четвертьволновой гибкой антенны и антенны из банки. В этой статье вы найдете краткое введение в отслеживание рейсов: обзор софта, аппаратуры и — самое главное — необходимой терминологии и жаргонных выражений. Также я покажу, как Docker и технология контейнеризации помогут управлять софтом в IoT-проектах. На сайтах типа FlightAware.com можно отслеживать десятки тысяч самолетов при помощи краудсорсинга: задачу выполняют люди по всему миру с помощью своих компьютеров Raspberry Pi (цена вопроса — $35) и дешевых USB TV тюнеров. Можно следить за рейсами исключительно в личных целях, а можно внести свою маленькую лепту на таких сайтах, как FlightAware.com, FlightRadar24 и PlaneFinder.net и получить взамен детальные показатели — данные радаров и другие ништяки.  Изображение: FlightRadar показывает самолеты в воздушном пространстве Великобритании. Зачем отслеживать рейсы? Вот несколько доводов: И самое главное — это просто веселый проект, который можно провернуть при помощи своего Pi и получить моментальное удовлетворение от каждого кусочка. При этом затраты на него стремятся к нулю. Raspberry Pi, SD-карта с Raspbian Lite Лучше используйте Raspberry Pi 2 или 3, потому что у них больше памяти и они лучше подходят для многозадачности. USB TV Tuner — цена вопроса от 8 до 30 долларов. Если нужен результат, лучше покупайте технику (DVB-T sticks) известных брендов. Представленные выше ссылки — не пиар по партнерке. К большинству DVB-T тюнеров прилагаются антенны, которые скорее ловят сигналы TV на суше, а не нужные нам сигналы ADS-B на частоте 1090 мГц. Если вам нужна антенна на 1090 мГц, можете купить домашнюю версию 3 dBi с функцией SMA. Антенна, которую я тестил, улавливала рейсы на расстоянии 240 км, если ее положить на подоконник. Антенна FlightAware ловила сигнал в застроенной местности еще круче, на расстоянии свыше 400 км, когда я ее вывесил за окно. Говорят, результаты будут еще круче, если разместить ее на крыше. На сайте ModMyPi также можно купить весь необходимый набор в одном флаконе. Итак, наша цель — настроить USB TV тюнер таким образом, чтобы он ловил ADS-B трансляции рейсов в заданном диапазоне. Для начала давайте определимся с некоторыми определениями и терминами из области отслеживания рейсов. На борту современных самолетов есть автоматические транспондеры, которые собирают информацию с навигационных инструментов и транслируют ее в окружающую среду через ADS-B. Эта информация не зашифрована, так что подхватить ее может любой — что диспетчер, что другой самолет, что владелец Raspberry Pi.
ADS-B (Automatic dependent surveillance-broadcast, автоматическое зависимое наблюдение-вещание) — технология, позволяющая и лётчикам в кабине самолета, и авиадиспетчерам на наземном пункте наблюдать движение воздушных судов с большей точностью, чем это было доступно ранее, и получать аэронавигационную информацию. Источник — Википедия. TV-тюнер, который нам понадобится, называется DVB-T, что расшифровывается как Digital Video Broadcasting — Terrestrial. Это европейский стандарт эфирного цифрового телевидения. Это устройство также можно использовать как теле-антенну для просмотра любимых ТВ-шоу. Не все устройства DVB-T можно настроить на авиа-сигналы, так что лучше выбирайте что-то из рекомендованного или же тщательно изучите характеристики сами перед покупкой. Википедия: sub-miniature version A. Такие разъемы меньше коаксиальных и обычно есть у премиальных или целевых DVB-T. У дешевых DVB-T, скорей всего, будет маленький разъем. Пигетйл можно купить на eBay или в любом магазине электроники. Он понадобится, чтобы совмещать любые крупные антенные разъемы — коаксиальные, SMA или RF.
  Ключевой компонент для расшифровки сигналов ADS-B — это софт dump1090. Это число означает частоту, на которой мы работаем, а dump — команда, которую он выполняет — расшифровывает и дампит необработанные данные. Приложение dump1090 — это open-source проект, у которого есть несколько форков благодаря разным людям, которые вносили новые и улучшали старые функции. Выбрать нужный форк может быть довольно затруднительно. Я воссоздал историю этого приложения по данным с GitHub: Мы будем использовать Docker для сборки кода, но при желании вы можете точно так же запускать команды отдельно в терминале. Вот несколько причин, почему стоит пользоваться Docker-контейнерами: У большинства версий dump1090 также есть веб-интерфейс, где можно увидеть самолеты в определенном диапазоне в режиме реального времени. FlightAware — это один из нескольких сайтов-агрегаторов, которые собирают данные с программы dump1090.При помощи виртуальной визуализации радара вы можете собрать детальную статистику по тем рейсам, которые вы помогли отследить, а также узнать, в каком диапазоне вы работали. Вот мои результаты, которые я увидел в своем профиле. Я использовал выделенную антенну и тюнер DVB-T с шумоизоляцией.  Также вы можете посмотреть мой профиль на FlightAware, чтобы получить больше данных. MLAT (аббр. мультилатерация) — это технология, при которой можно использовать некоторое количество наземных станций, чтобы отслеживать самолеты, которые не передают данные ADS-B. Можно почитать подробнее в статье на сайте FlightAware. Она основывается на оценке разности времени прихода сигналов: она должна работать из коробки, и поэтому позволяет вам отслеживать намного больше рейсов, чем вы смогли бы при помощи одного только ADS-B. Добавляем эту строку в /etc/modprobe.d/blacklist.conf:
blacklist dvb_usb_rtl28xxu Теперь перезагружаемся.  Изображение: тестирую DVB-T от Pimoroni, прикрепленный к Pi Zero и оставленный дома у родственников. ‘-t’ — устанавливает название образа для дальнейшего использования. -f — позволяет выбрать Dockerfile с кастомным названием. Также я задал имя для форка mutability. Docker позволяет вам расшарить свои образы с кем угодно при помощи команды push, которая выгружает их на Docker Hub. Чтобы скачать dump1090 без сборки кода с нуля, выполняем команду: Команда docker run отвечает за запуск нашего кода. Чтобы потом код остановить, используйте docker rm -f 1090, а если вы перезагрузили Pi — restart 1090. При помощи -p Docker определяет, какие порты надо раскрыть из контейнера. Можно запустить две копии кода dump1090, если поменять номер порта и имя контейнера. При помощи -d контейнер перемещается в фон в качестве демона, так что если вы хотите увидеть консольный вывод, просто напишите ‘docker logs --tail 20 -f 1090’ Пример логов:  Если вы знаете IP-адрес вашего Raspberry Pi, то вы можете открыть его во встроенной странице: http://192.168.0.10:8080/ Чтобы узнать IP-адрес, напишите ifconfig. Теперь вы сможете залогиниться в ваш Pi из любой точки и увидеть рейсы в вашей местности, а также насколько хороший у вас диапазон в данной локации. Если вы не хотите запускать контейнер с привилегиями, то вы можете узнать ID устройства USB, а затем заменить --privileged на --device=/dev/bus/usb/001/004, например. Для своего случая вам следует заменить последние цифры, т.е. 004 в моем примере. Нужные цифры вы можете получить при помощи команды lsusb: Есть несколько сайтов по отслеживанию рейсов, я начал с FlightAware. Их софт подключается к вашему коду dump1090 и передает данные в их сервера, где вы уже можете сверять статистику и сравнивать свои данные с другими участниками. Можно установить .deb файл прямо на свой Pi, но я создал отдельный Dockerfile. У него есть два преимущества: можно запустить две и более копий софта и переключаться между версиями без перепрошивки Pi. Дальше собираем образ при помощи следующей команды или скачиваем образ при помощи docker pull alexellis2/flightaware:3.5.0: Обратите внимание на точку в конце строки, не пропустите ее. Теперь регистрируемся на сайте FlightAware.com и задаем имя пользователя и пароль. Редактируем файл piaware.conf, заменяем следующие поля: У FlightAware есть классная функция, которая позволяет отслеживать ваш Raspberry Pi по MAC-адресу. К счастью, Docker позволяет подменять MAC-адреса, и поэтому мы можем запустить несколько копий софта. Если вы так делаете, просто поменяйте MAC, чтобы он был уникальным для каждой копии. Теперь запустим образ и посмотрим логи: Посмотрите логи и нажмите Control + C в любой момент времени. $ docker logs --tail 20 -f piaware_1 Ваш Pi появится на сайте через несколько минут. Какой будет расход электричества?
Pi Zero или 2/3 потребляет 2-3 Ватта во время простоя. Приложение dump1090 задействует процессор Pi, до 50% его мощностей на Zero, поэтому учитывайте, что будет расходоваться дополнительное электричество для нагрузки и USB DVB-T. Можно ли провернуть операцию с USB-аккумулятора?
Да, в течение ограниченного времени. Аккумулятор, которого мне обычно хватало на 3 дня, ушел за 3 часа, когда я с его помощью отслеживал рейсы. Можно ли использовать солнечную энергию?
Солнечная энергия, возможно, — не совсем правильное решение. Raspberry Pi не будет надежно работать напрямую от солнечной панели. Вам понадобится сложное оборудование, включая контроллер зарядки, солнечные панели адекватных размеров и батарейки, которых должно хватать на несколько дней.
Лучше подключать Pi через Power over Ethernet с водонепроницаемым корпусом. Вот список необходимых деталей. Существует ли коробочное решение — образ или ISO?
Можно найти полный образ на SD-карте на сайте FlightAware, но если вы будете строить систему из модульных компонентов, то у вас будет преимущество перед любым другим софтом, разработанным под dump1090.  Изображение: тестирую антенны — антенна из банки, FlightAware, 2x 1090 MHz. Также вам могут понравиться следующие блоги и статьи о том, что можно сделать с помощью Raspberry Pi и Docker: DevOps