- PVSM.RU - https://www.pvsm.ru -

Индикатор искусственного горизонта на базе esp32

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

искусственный горизонт

искусственный горизонт

Хотелось немного рассказать о разработке такого прибора для небольшого самолета.

Первое, что приходит в голову, когда речь заходит о создании какой-то графической подсистемы - использовать одноплатный ПК и с помощью вычислительных мощностей и видеокарты выводить красивые элементы прибора на дисплей.

Было интересно решить эту инженерную задачу с использованием микроконтроллера семейства esp32-s3, попытать удачу и выжать из него максимум возможного.

На другой случай использовать что-либо мощное с GUI всегда можно позже.

Первоначально был заложен концепт самого прибора с внешний кольцом 80 мм под стандартное отверстие приборной панели.

один из ранних прототипов с инкрементальным энкодером и кнопкой

один из ранних прототипов с инкрементальным энкодером и кнопкой

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

отладочная плата с джамперами

отладочная плата с джамперами
плата с esp32-s3 на 16 мб FLASH и 512 kb SDRAM

плата с esp32-s3 на 16 мб FLASH и 512 kb SDRAM

До производства и напайки элементов на печатной плате, отладку выполнял через онлайн симулятор

Индикатор искусственного горизонта на базе esp32 - 5

https://wokwi.com/projects/374228486620365825 [1]

Код уже довольно сильно рефакторен и переписан мной под разные платформы, благо он базируется на c-библиотеке TFT_eSPI [2]

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

Но делает она это в двойном буфере, т.е. холст изображения формируется в буфере микроконтроллера, затем поступает в буфер дисплея.

Благодаря такому фокусу с помощью есп32 с частотой процессора 240 мГц и памятью SDRAM 512 кб, можно отрисовать некоторые элементы графики без мерцания и задержки.

Не смотря на то, что код графической части прибора довольно шустро работает на есп32, некоторые новые приборы были разработаны с использованием ОСРВ [3] freeRTOS.

прототип под различные дисплеи с FPC-коннектором

прототип под различные дисплеи с FPC-коннектором

Сам процесс отрисовки вытекает из концепции библиотеки TFT_eSPI [2], а именно отрисовка элементов прибора "нанизывается" на пустой холст, чем выше в коде элемент, тем он раньше рисуется.

Индикатор искусственного горизонта на базе esp32 - 7

Таким нехитрым способом отрисованы тени на шкале указателя скорости.

Индикатор искусственного горизонта на базе esp32 - 8

Как пример код ниже 

        // надпись HDG тень

          gdraw.setFreeFont(FF5);

          gdraw.setTextDatum(MC_DATUM);

          gdraw.setTextColor(TFT_BLACK);

          gdraw.drawString(hdgUnit, 135, 11, GFXFF);

          // надпись HDG

          gdraw.setTextColor(TFT_CYAN);

          gdraw.drawString(hdgUnit, 136, 12, GFXFF);

Индикатор искусственного горизонта на базе esp32 - 9

Данный проект легко устанавливался на стм32 и дисплей подключенный по SPI, данные с блока AHRS в этом случае поступали через Wi-Fi по UDP.

тестовый прототип подключенный по Wi-Fi

тестовый прототип подключенный по Wi-Fi

Для приборов 80 мм данные передаются по шине CAN, наподобие модуля, описанного здесь [4].

Про разработку IMU/AHRS модулей позже будет отдельная статья.

прототипы АГ

прототипы АГ

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

в полете

в полете

Испытания показали все в динамике.

P.S. Самая холиварная тема авиаторов - прямая и обратная индикации АГ.

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

Да и как показала практика разработок таких приборов, какая там индикация обратная или прямая - не самое сложное в этом процессе.

Обычно в споры про индикацию АГ вступают те, кто не сильно разбирается в пилотировании и авиаприборах.

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

Быстродействие микроконтроллера и быстрота отклика.

И еще много и много других интересных инженерных задач.

Автор: Engineer747

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/grafika/413812

Ссылки в тексте:

[1] https://wokwi.com/projects/374228486620365825: https://wokwi.com/projects/374228486620365825

[2] TFT_eSPI: https://github.com/Bodmer/TFT_eSPI

[3] ОСРВ: https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8

[4] здесь: https://habr.com/ru/articles/885094/

[5] Источник: https://habr.com/ru/articles/891606/?utm_campaign=891606&utm_source=habrahabr&utm_medium=rss