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

Тут надо сделать уточнение, что соединение подразумевает слаботочную передачу сигналов, в основном от датчиков к контроллеру или на дисплей.

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

Для передачи на физическом уровне выбрана шина CAN 2.0B, как наиболее универсальная под эти задачи.

Сам протокол передачи реализуется на микросхеме контроллера шины MCP2515 и приемопередатчика SN65HVD230, все это есть на модуле

Микросхему п/п U1 заменил на указанную выше, чтобы модуль можно было запускать от 3.3. вольт

Планируемый функционал описанного концентратора:

  • получение широковещательных ID из шины и передача их в сериал порт или в FIX-gateway для работы с pyEfis

  • парсинг данных из симулятора FlightGear и передача в шину CAN

  • запуск демо-режима

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

Для запуска функционала шины CAN на esp8266, а точнее esp07

Используется библиотека https://github.com/coryjfowler/MCP_CAN_lib с небольшими доработками под кварц 16 мГц.

В коде микроконтроллера указал ID из can aero space

#define BODY_PITCH_ANGLE_ID    0x137    /* in DEC 311 a/c pitch angle */

#define BODY_ROLL_ANGLE_ID     0x138    /* in DEC 312 a/c roll angle */

#define BODY_SIDESLIP_ID       0x139    /* in DEC 313 a/c sideslip */

#define ALTITUDE_RATE_ID       0x13A    /* in DEC 314 vertical speed */

#define IND_AIRSPEED_ID        0x13B    /* in DEC 315 indicated airspeed */

#define CHANGE_ID              0x13E    /* in DEC 318 QNH change flag */

#define BARO_CORRECTION_ID     0x13F    /* in DEC 319 barometric correction (QNH) */

#define BARO_ALTITUDE_ID       0x140    /* in DEC 320 barometric altitude */

#define HEADING_ANGLE_ID       0x141    /* in DEC 321 heading angle */

В качестве проводки выбрал 4-х жильную витую пару и быстросъемные разъемы.

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

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

Ниже показан ДЕМО-режим.

Соединение компьютера воздушных данных и CAN-концентратора

P.S. Всем интересующимся, могу скинуть код проекта в .pio

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


  1. GDI
    29.01.2025 15:29

    esp8266 уже устарел, к тому же, в тегах статьи у Вас указана esp32-s3, вот серию esp32 лучше и использовать. К тому же там есть встроенный контроллер CAN, программный, правда. MCP2515 не нужен. Вот статью просто нагуглил для пруфа CAN на ESP32-C3 https://habr.com/ru/articles/793326/ и есть поддержка в SDK https://docs.espressif.com/projects/esp-idf/en/v5.0/esp32c3/api-reference/peripherals/twai.html


    1. Angrim17
      29.01.2025 15:29

      Сонласен. esp8266(на самом деле сейчас Espressif актуальные ссчитает вроде именно 8285) только из-за цены, либо только потому, что он есть. Пол новые проекты esp32-c серия из самых бюджетных, в esp32-c6 даже 2 кана

      Использование esp8266 плюс mcp2515 плюс can трансивер против esp32-c3 плюс can трансивер уже не бьется по экономике