Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Equipment >> Промышленное оборудование

Отслеживание полетов над головой с помощью Raspberry Pi Zero Wireless, программно определяемого радио и FlightAware

В этой статье показаны два способа использования Raspberry Pi Zero Wireless для отслеживания полетов в вашем районе. Он также демонстрирует, как он может управлять матрицей RGB 64 × 64.

Raspberry Pi Zero Wireless - это микрокомпьютер за 10 долларов, способный на очень многое. В этой статье показаны два способа использования Pi для отслеживания полетов в вашем районе. Он также демонстрирует, как он может управлять матрицей RGB 64 × 64 для отображения номеров рейсов!

В этой статье я сделаю три отдельных проекта с использованием Raspberry Pi Zero Wireless. В Project 1 я создам устройство слежения за самолетом с помощью PiAware. В Проекте 2 я буду собирать данные с указанных самолетов. В Project 3 я покажу вам, как использовать RPi Zero W для управления RGB-матрицей 64 × 64.

Проект 1:Raspberry Pi Zero Wireless Plane Tracker

Часть Стоимость Примечания
Raspberry Pi Zero Wireless 10 долларов
получатель SDR 21 доллар Многие другие USB SDR-приемники, вероятно, будут работать
Карта microSD на 4 ГБ 6 долларов Подойдут карты большего размера
Адаптер USB-MicroUSB 5 долларов
Концентратор MicroUSB (необязательно) 8 долларов Pi Zero имеет только порты microUSB; для крепления аксессуаров понадобится хаб / преобразователь
Широкополосная антенна (необязательно) 50 Антенна должна покрывать 1090 МГц
полосовой фильтр 1090 МГц (необязательно) 20 долларов

Ресурсы

Этот эксперимент был проведен с использованием Raspberry Pi Zero Wireless. Однако следующий код должен работать на любой Raspberry Pi версии 2 или новее. Если вы покупаете Pi Zero без беспроводной сети, вы можете добавить его с помощью адаптера беспроводной сети USB.

Шаг 1. Подготовьте SD-карту

Загрузите последнюю версию Raspbian Jessie на свой компьютер.

Запишите образ на SD-карту (вот руководства для Linux, Mac OS и Windows).

Шаг 2. Измените SD-карту

Создайте файл с именем «ssh» в корневом каталоге SD-карты. Ни расширения файла, ни содержимого файла. Этот файл включает SSH, что позволит вам получить удаленный доступ к Pi.

Создайте файл с именем "wpa_supplicant.conf" со следующим содержимым. Измените значения YourWifiName и YourWifiPassword на имя и пароль, которые вы используете для подключения к своей сети Wi-Fi.

network ={
ssid ="YourWifiName"
psk ="YourWifiPassword"
key_mgmt =WPA-PSK
}

Шаг 3. Установка и загрузка

Извлеките SD-карту из своего компьютера и установите ее в Raspberry Pi Zero Wireless. Подключите Raspberry Pi к источнику питания, используя порт MicroUSB, ближайший к концу платы. Подождите примерно одну минуту, пока Raspberry Pi загрузится и подключится к Wi-Fi. С этими файлами конфигурации нет необходимости использовать клавиатуру, мышь или дисплей с вашим устройством.

Шаг 4. Найдите свой Pi

Определите IP-адрес вашего Pi - это можно сделать, войдя в свой маршрутизатор и посмотрев на подключенные устройства, или с помощью IP-сканера, такого как Look @ Lan (Windows) или nmap (Linux и Mac). Если ваше устройство не появляется в течение двух или трех минут, отключите питание, извлеките SD-карту из Pi, снова вставьте ее в свой компьютер и дважды проверьте ssh и wpa_supplicant.conf файлы.

Шаг 5. Подключитесь к Pi

Windows:используйте такой инструмент, как Putty, для подключения к вашему Pi. Загрузите и запустите программу, введите IP-адрес вашего Pi и нажмите «Подключиться». Появится окно, в котором вас спросят о сертификате безопасности - нажмите «да».

Linux и Mac:откройте терминал и введите ssh [email protected] или ssh pi @ ipaddress (например, ssh [email protected]).

В приглашении имя пользователя по умолчанию - «пи», а пароль по умолчанию - «малина».

Шаг 6. Настройте Pi

Введите «sudo raspi-config» и нажмите Enter.

Измените свой пароль, часовой пояс и локализацию.

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

Затем введите следующие команды и позвольте им выполняться:

wget http://flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.3.0_all.deb
sudo dpkg -i piaware-repository_3.3.0_all. deb
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install -y piaware fail2ban libio-socket-ssl-perl
sudo piaware- config allow-auto-updates да
sudo piaware-config allow-manual-updates да
sudo apt-get install dump1090-fa -y
sudo reboot

После того, как Rapsberry Pi завершит процесс загрузки, откройте веб-браузер на своем компьютере и перейдите по адресу http://raspberrypi.local:8080 (или замените raspberrypi.local IP-адресом вашего устройства). Уменьшите масштаб, а затем приблизьте свое местоположение, поскольку самолеты начинают появляться, а затем исчезают с вашего экрана.

Чтобы увеличить количество самолетов, вынесите Pi, SDR и антенную систему на улицу. Дальнейшие улучшения можно найти, добавив полосовой фильтр 1090 МГц и улучшенную антенну.

Снимок экрана P iAware приемник, который показывает область к востоку от Лос-Анджелеса, Калифорния, 14.03.17 (День числа числа!). Линейные гусеницы наверху показывают самолеты, готовые к приземлению в Лос-Анджелесе. Также виден правительственный самолет, летящий по кругу.

Наконец, создайте учетную запись FlightAware.com, а затем свяжите приемник со своей учетной записью FlightAware.com.

ADS-B, PiAware и dump1090

Приемоответчики, прикрепленные к самолету, позволяют им передавать четырехзначный восьмеричный идентификатор (Mode-A AKA «Squawk»), идентификатор плюс высоту (Mode-C), 24-битный уникальный номер ICAO (Mode-S) и 24-битный Номер ИКАО с дополнительной информацией (расширенный сквиттер режима S). Последний режим также известен как ADS-B.

Автоматическое зависимое наблюдение-вещание (ADS-B) определяет местоположение воздушного судна (определяемое GPS, ГЛОНАСС и т. Д.), Объединяет его с идентифицирующей информацией и передает ее на частоте 1090 МГц. В отличие от других кодов транспондеров, которые передаются только в ответ на запрос радиолокационным сигналом, ADS-B передается примерно два раза в секунду.

PiAware и dump1090 используют программно-определяемое радио (SDR), настроенное на 1090 МГц, для приема и декодирования трансляций всех находящихся поблизости самолетов и отправки их на серверы FlightAware. Информация отображается на веб-странице, размещенной на Raspberry Pi через порт 8080.

Иллюстрация Джона Макнейла, www.aopa.org.

Все самолеты должны быть оснащены транспондерами ADS-B Out до 1 января 2020 года. Но до тех пор FlightAware использует мультилатерацию для определения местоположения самолетов, которые не передают информацию о своей широте и долготе. При мультиплексировании используется известное положение по крайней мере трех получателей и время приема сообщения для расчета местоположения самолета.

Проект 2:Использование Pi Zero Wireless для сбора данных о самолетах с FlightAware.com

FlightAware.com имеет два интерфейса прикладных программ (API), которые позволяют добывать и использовать данные:FlightXML и Firehose. Выберите один из двух вариантов в зависимости от типа информации, которая вам нужна, и количества запросов, которые вам нужны каждый месяц. Для этого проекта All About Circuits был предоставлен бесплатный доступ на один месяц. Чтобы продолжить, вам нужно будет связаться с FlightAware.com для получения ключа API.

Ресурсы:

Шаг 1. Проверьте подключение

Подключитесь к Pi Zero по SSH и проверьте возможность подключения к Firehose API.

openssl s_client -host firehose.flightaware.com -port 1501 -tls1

Если вы видите страницу или две с подробностями о сертификации, все работает правильно.

Шаг 2. Получите образцы файлов и данных

FlightAware размещает образцы файлов в GitHub. Начните с загрузки и редактирования файлов примеров с вашим именем пользователя и ключом API.

git clone http://github.com/flightaware/firehose_examples.git
cd firehose_examples / perl / example1
sudo nano example1.pl

Измените имя пользователя и апики поля в соответствии с вашей информацией, затем выйдите ([Ctrl] + [x]) и сохраните.

perl example1.pl

Вы должны увидеть данные в формате JavaScript Object Notation (JSON):

$ VAR1 ={
'aircrafttype' => 'B738',
'heading' => '105',
'pitr' => '1490038420',
'gs' => '334',
'clock' => '1490038413',
....
'hexid' => 'A44591',
'identify' => ' DAL751 '
' alt '=>' 25100 ',
' lon '=>' -117.38051 ',
' lat '=> '33 .53288'
};

Шаг 3. Настройте Pi для сбора данных

Firehose удачно назван тем, что может производить огромное количество данных за очень короткий период времени (~ 1 ГБ / день) - заполняя ваш диск и увеличивая расходы на вашу учетную запись. Поэтому, когда вы создаете сценарий для сбора информации, вы должны проверять его через регулярные промежутки времени, так как вы можете очень быстро заполнить свой диск и очистить свой счет расходов.

В зависимости от размера вашей карты MicroSD и того, что вы надеетесь собрать, вам может потребоваться добавить дополнительное хранилище или вернуться к raspi-config и расширить файловую систему (вариант 7, вариант A1).

В моем примере я собираюсь собрать данные для географической области 2 ° × 2 °, которая включает LGB, LAX, ONT, SNA и т. Д. (34 ° N ± 1 °, 118 ° W ± 1 °). Я выбрал этот регион, потому что он примерно соответствует моей зоне приема.

Область интереса находится в диапазоне от 33 ° N до 35 ° N и от 117 ° до 119 ° W.

Следующий код - example1.pl с изменениями в строках 18 и 45. Все строки показаны ниже, чтобы читатели могли следить за ними, не загружая файл. Создайте копию example1.pl называется position.pl и используйте nano для редактирования position.pl.

cp example1.pl position.pl
sudo nano position.pl

Внесите необходимые правки и выйдите, нажав [Ctrl] + [x].

  1 #! / usr / local / bin / perl 2 3 используйте строгое; 4 используйте IO ::Socket ::SSL; 5 используйте JSON ::PP; 6 используйте IO ::Uncompress ::Inflate qw ($ InflateError); 7 используйте Data ::Dumper; 8 9 мое $ username ='allaboutcircuits'; 10 мой $ apikey ='allaboutcircuitsreallylongapikey'; 11 мое сжатие $ =0; 12 13 # Откройте соединение сокета TLS с FlightAware. 14 мой $ sock =IO ::Socket ::SSL-> new ('firehose.flightaware.com:1501') or die $ !; 15 # print "Подключено! \ N"; 16 17 # Послать команду инициации несжатому сокету. 18 my $ initcmd ="live version 8.0 пользователь $ имя пользователя пароль $ apikey events \" позиция \ "latlong \" 33 -117 35 -119 \ ""; 19 if ($ сжатие) { 20 $ initcmd. ="Сжатие сжимать"; 21} 22 binmode $ sock; 23 print $ sock "$ initcmd \ n"; 24 25 # Активировать сжатие, если требуется. 26 мой $ zsock; 27 if ($ сжатие) { 28 $ zsock =new IO ::Uncompress ::Inflate $ sock 29 или умереть "IO ::Uncompress ::Inflate failed:$ InflateError \ n"; 30} else { 31 $ zsock =$ sock; 32} 33 34 # Основной цикл, чтение строк JSON с сервера. 35 мой $ i =1; 36 while (my $ line =$ zsock-> getline ()) { 37 #print "СТРОКА $ i \ n"; 38 #print "LINE $ i:", $ line, "\ n"; 39 40 мои $ data =eval {decode_json $ line}; 41 die «Не удалось декодировать JSON:$ line» if! Defined ($ data) || $ @; 42 43 print $ data -> {identity}. "\ T". $ Data -> {lat}. "\ T". $ data -> {lon}. "\ t". $ data -> {alt}. "\ n"; 44 45 последний if ($ i ++> =10); 46} 47 близких $ sock; 48 49 # print "Все готово. \ N";  

Строка 18 ограничивает запрос самолетами в географическом регионе от 117 ° W до 119 ° W (обозначается -117 и -119). Строка 43 изменена, чтобы продемонстрировать метод нацеливания только на интересующие области. В этом случае мы нацелены на номер полета, широту, долготу и высоту самолета. Строка 45 запрашивает у сервера 10 самолетов (эту строку можно закомментировать в окончательном сценарии).

Следующие две команды запускают программу и позволяют отслеживать ход выполнения программы:

sudo perl position.pl>> position.txt &
tail -f position.txt

В первой строке суперпользователь использует программу perl для запуска программы position.pl и добавьте (>>) вывод в файл position.txt а символ &заставляет программу работать в фоновом режиме.

Во второй строке используется программа tail . следить (-f) за изменениями в файле position.txt , что позволяет отслеживать выполнение команды. Когда закончите, используйте [Ctrl] + [c] для выхода из tail . . Если вас больше не интересует сбор данных, используйте fg вывести программу position.pl на передний план и остановите его или прервите с помощью [Ctrl] + [c].

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

Эти файлы были сделаны с небольшими изменениями в example1.pl, предоставленном FlightAware. Чтобы создать свой собственный, который собирает только интересующие вас данные, используйте документацию FlightAware Firehose API для запроса соответствующей информации в формате JSON, а затем используйте правильный синтаксис внутри файла для вывода только той информации, которая вам нужна.

Проект 3. Использование Pi Zero Wireless для управления матрицей RGB 64 × 64

Часть Стоимость Примечания
(2) Матрица дисплея 2 × 32 × 32 RGB + блок питания 75 долларов США (150 долларов США) Требуется четыре всего 32 × 32 RGB-матрицы для создания отображения 64 × 64 пикселей
RGB-матрица Adafruit HAT + часы RTC 25 долларов Таблицы данных
20-контактный кабель IDC (Hub75) 7–13 долларов Требуемая длина зависит от конфигурации панелей и расстояния до Pi
0,1-дюймовые штекерные разъемы (40-контактные, 2 × 20) 1 доллар 2,54 мм

Шаг 1. Подготовка Adafruit Matrix HAT

Припаяйте мужской и женский разъемы на Adafruit HAT в соответствии с инструкциями на Adafruit.com. Затем припаяйте провод или установите перемычку между контактами 4 и 18. Для этого проекта вам не нужно прикреплять ни штекер постоянного тока, ни соединители с винтовыми клеммами.

Шаг 2. Подготовка Raspberry Pi

Припаяйте штекерные разъемы 2 × 20 на место.

Шаг 3. Подготовка матрицы RGB

Сориентируйте матрицы RGB так, чтобы стрелки в нижнем ряду были направлены вниз, а стрелки в верхнем ряду - вверх (см. Изображение здесь). Используйте кабель IDC 2 × 10 для подключения выхода Adafruit HAT ко входу первой платы. Затем соедините выход первой платы со входом второй, выход второй со входом третьей и т. Д.

Задняя сторона панели матрицы RGB. Сигнал передается от доски к доске в форме буквы «C».

Если вам посчастливилось иметь в своем распоряжении лазерный резак или станок с ЧПУ, я включил чертежи задней пластины, которая может удерживать все четыре из используемых матричных пластин RGB. Монтажные отверстия заменены прорезями, чтобы обеспечить выравнивание от общей центральной точки.

Шаблон для монтажа четырех панелей 32 × 32 для создания большой панели 64 × 64; Возможны различные варианты расположения панелей.

Hughes_4x4RGBMatrix.zip

Полная документация и исходный код написаны Хеннен Зеллер.

После того, как все электрические соединения будут выполнены, включите Raspberry Pi. Примерно через минуту попробуйте войти в Pi с помощью Putty или SSH.

Войдя в систему, введите следующее, чтобы отключить звук на Pi (в документации указано, что аппаратная подсистема конфликтует со звуком и оборудованием матрицы RGB).

кошка < черный список snd_bcm2835
EOF
sudo update-initramfs -u

Затем используйте apt-get для установки Python и файлов изображений.

sudo apt-get install -y build-essential libconfig ++ - dev python-dev python-imaging libgraphicsmagick ++ - dev libio-socket-ssl-perl

Получите необходимые файлы для запуска матрицы RGB и скомпилируйте их.

git clone https://github.com/hzeller/rpi-rgb-led-matrix
cd rpi-rgb-led-matrix
HARDWARE_DESC =adafruit-hat-pwm make -C examples-api-use
sudo examples-api-use / demo -L -D0
cd utils /
HARDWARE_DESC =adafruit-hat-pwm make

При желании, если у вас также есть камера, подключенная к вашему Pi, вы можете сделать снимок размером 64 × 64 пикселя и передать его на дисплей.

raspistill -w 64 -h 64 -o myimg.png
sudo ./led-image-viewer -L -f myimg.png

Предыдущие две строки захватывают изображение размером 64 × 64 на дисплей и используют программу led-image-viewer (скомпилированную в предыдущем разделе) для отображения его на большом дисплее (-L) навсегда (-f).

Что дальше?

Теперь у вас есть компьютер за 10 долларов, который может отслеживать (либо с помощью антенны и приемника SDR, либо с помощью вызова API) летательные аппараты вокруг вас и отображать любую информацию о тех, которые вы хотите, на своем 64-пиксельном на 64-пиксельном дисплее или на Raspberry. Выход HDMI Pi Zero W.

То, что вы с ним делаете, ограничивается только вашим воображением.

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

И не забывайте, что ваш Raspberry Pi Zero - это работающая установка Linux с часто используемыми командами, такими как Cron , Grep и Awk . Все, чего еще нет на вашем Pi, - это всего лишь короткий apt-get install прочь.

Посмотрите видео ниже, чтобы увидеть кульминацию этих проектов!

Попробуйте сами! Получите спецификацию.


Промышленное оборудование

  1. Pixus:защищенные программно-определяемые радиорешения
  2. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  3. Мониторинг комнатной температуры с Raspberry Pi и Nagios
  4. Мониторинг комнатной температуры с помощью Moteino’s и Raspberry Pi
  5. Контроллер умного дома 433 МГц с Sensorflare и RaspberryPi
  6. Считывание аналоговых датчиков с помощью Raspberry Pi и Zabbix Supervisor
  7. Создайте свой первый IOT с помощью Raspberry Pi, датчика DHT11 и Thingspeak.
  8. Аэропоника с Raspberry Pi и датчиком влажности
  9. Начало работы со шлюзом RAK831 LoRa и RPi3
  10. Создание роботов с Raspberry Pi и Python