Понадобился на легком самолете цифровой компас, какое-то подобие привычному КИ-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.

Небольшой код проекта, который необходимо собрать и загрузить в устройство
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 и получении данных из симулятора полетов будет позже отдельная статья.
Помимо отрисовки виджетов компаса, сделано несколько версий для прибора отображения воздушных параметров - воздушной и вертикальной скорости, а также высоты.


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

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