Искусственный горизонт на базе ESP32: разработка индикатора

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

Искусственный горизонт на базе ESP32: разработка индикатора
искусственный горизонт

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

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

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

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

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

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

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

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

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

https://wokwi.com/projects/374228486620365825

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

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

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

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

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

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

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

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

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

        // надпись 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);

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

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

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

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

прототипы АГ
прототипы АГ

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

в полете
в полете

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

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

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

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

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

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

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

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

 

Источник

Читайте также