Понадобился на легком самолете цифровой компас, какое-то подобие привычному КИ-13.

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

Непосредственно в качестве индикатора выбрано довольно интересное устройство для умного дома - круглая шайба, диаметром 58 мм в алюминиевом корпусе с цветным дисплеем.

Само устройство базируется на микроконтроллере ESP32-S3 с 16 мб flash для программ и дисплей 360х360, подключенный по интерфейсу quad SPI.

Также есть довольно приличный ЦАП для проигрывания музыки и возможность осуществлять беспроводное питание устройства от wireless charger, но встроенной АКБ нет.

Последние две "фичи" пока без надобности, возможно их применение в будущем.

Первой задачей было все как-то нарисовать и в поле зрения попала программа EEZ studio, которая довольно тесно интегрирована с графической библиотекой LVGL.

Навыков в отрисовке интерфейсов никогда не было, но есть такое выражение:
fly by the seat of one's pants, что буквально означает действовать наугад, опираясь на ситуацию, а не на опыт.

Поэтому была скачана программа и с ней проведено несколько вечеров, по итогу вышла шкала с секторами и стрелками

Еще около недели ушло на отрисовку непосредственно самого компаса, устранение ошибок в шкалах и наведения красоты

По задумке компас должен иметь возможность отображения как линейной

так и круговой шкалы компаса

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

Экспорт файлов проекта с нужными битмапами и структурой выполняется не сложно, для работы с кодом используется IDE vscode.

Небольшой код проекта, который необходимо собрать и загрузить в устройство

#include "Arduino.h"

#include "scr_st77916.h"

#include <lvgl.h>

#include <ui.h>

void setup()
{
Serial.begin(115200);
scr_lvgl_init();

#if LV_USE_LOG != 0
    lv_log_register_print_cb( my_print ); /* register print function for debugging */
#endif

ui_init();

} // SETUP

void loop()
{
Compass_Widget_TaskInit();

lv_timer_handler(); /* Let the GUI do its work */
delay(5);

} // LOOP

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

Третьей задачей было продумать как из плоской "шайбы" сделать объемный корпус с возможностью крепления в стандартное отверстие приборки 58 мм, как обычно крепятся все круглые авиаприборы.

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

В итоге корпус получился вместительный и легкий

Сразу подумал о методе соединения этого прибора с системой - шина CAN 2.0, которую реализуем на микросхеме приемо-передатчика SN65HVD230D, с рабочим напряжением 3.3 вольта.

Осуществить подключение данной микросхемы к плате есп32 не простая задача, учитывая, что почти все GPIO на плате заняты каким-либо функционалом.

Вооружившись мультиметром и лупой началось изучение схемы и печатной платы

Свободными были назначены пины GPIO21 и GPIO18, но чтобы не было влияния на микросхемы ЦАП на базе PCM5100APWR, выпаял пару сопротивлений

Корпус был напечатан на 3Д принтере и подогнал под алюминиевый, смонтирован 5-ти контактный быстросъемный разъем для CAN шины и для питания устройства

Для связи прибора с датчиками и системами на самолете разработан небольшой can-концентратор, позволяющий собирать данные из шины CAN или например получать их из полетного симулятора FlightGear

О конструкции концентратора шины CAN и получении данных из симулятора полетов будет позже отдельная статья.

Помимо отрисовки виджетов компаса, сделано несколько версий для прибора отображения воздушных параметров - воздушной и вертикальной скорости, а также высоты.

Примерно так это все выглядит

В планах написать о каждом этапе более подробно позднее и спасибо за внимание?

Комментарии (4)


  1. DMGarikk
    15.01.2025 14:27

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

    или это для симулятора экран? или всётаки для настоящего самолёта?

    и вообще, разве можно такой тюнинг делать самопальный?


  1. Viacheslav01
    15.01.2025 14:27

    А не страшно по такому компасу летать?


  1. Indemsys
    15.01.2025 14:27

    ChatGPT говорит, что GUI был сделан в SquareLine Studio, а не в EEZ studio.


  1. Vad344
    15.01.2025 14:27

    Оборудование у вледельцев сверхмалой авиации пугает.

    Мой знакомый планерист из e-ink читалки сделал gps - навигатор: от батарейки долго работает и на солнце хорошо видно.

    Бесстрашные, им хоть на метле лететь, и даже парашюты им не нужны.Самые осторожные все же летают с парашютами, правда, используют списанные "запаски": дешево и компактно.