Плата Jetson, к которой подключены:
OpenVpn настроен на автоматический запуск с определенным config файлом.
Для обработки входящих запросов на Jetson реализован сервер при помощи Python Flask.
В зависимости от входящего запроса вызываются функции, управляющие светодиодом и рамкой.
Рамка реализована при помощи Python Tkinter, толщина рамки и отступ от края экрана параметризированы.
Файлы:
wsgi.py
-- содержит код запуска всего проекта, создает отдельные потоки для сервера и для рамки;frame.py
-- содержит код создания и управления рамкой;server.py
-- содержит код создания сервера, его настройки, а так же логика для каждого endpoint-а;lederControl.py
-- содержит код управления работой светодиодов;wsgi.ini
-- содержит настройки socket для работы сервера на Flask.
Так как сервер на Flask и рамка на tkinter работают каждый в своем потоке, необходимо распараллелить программу в wsgi.py, являющимся точкой входа.
На строках 9 и 13 создаются 2 функции для запуска сервера и рамки.
На строках 18-20 запускается фоновый поток для сервера.
На строке 22 выполняется функция запуска рамки в основном потоке.
Так как Tkinter требует основного потока для выполнения, то именно сервер был переведен в фоновый режим.
Для создания скетча для Arduino использовалась программа Arduino IDE. В ней в цикле считываются значения кнопок и джойстика, которые затем через пробел передаются в подключенный к Jetson Nano USB-порт.
Для считывания информации, посылаемой Arduino на порт микроконтроллера, мы использовали библиотеку pyserial. В переменной last_line мы хранили последнюю переданную на порт строку значений, которую считывали в отдельном потоке, чтобы отсутствовала задержка (при обработке в основном цикле считывание строк с порта могло происходить реже, чем они приходили на порт, из-за чего возникала задержка). Затем в зависимости от пришедших значений мы либо изменяли зум с помощью библиотеки onvif-zeep, либо меняли фокус камеры, либо настраивали автофокус (автофокус сделали с помощью небольшого приближения и отдаления, поскольку не получилось обычным способом включить автофокус).
rtsp://192.168.15.25:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream
Рисунок 7 Разъем питания со штекером
Взять звуковую карту MyzLady и подключить к ней микрофон через провод XLR (см. рис. 8-11).
Подключить Muzlady к камере посредством USB в любой порт на хабе камеры кроме самого левого(см. рис. 12-14).
Рисунок 10 Muzlady
На рисунке 15 изображен пульт управления с условными номерами кнопок.
Кнопка 1: автофокус;
Кнопка 2: фокус ближе;
Кнопка 3: фокус дальше;
Кнопка 4: не используется.
Джойстик помечен цифрой 5 и отвечает за зум. Он принимает данные только от одной его оси (вертикальной).
Чтобы сделать зум дальше - нужно сместить джойстик вверх, ближе - соответственно вниз.