Как стать автором
Обновить

Создание CAN-концентратора на базе esp8266

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров6.9K

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

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

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

Для передачи на физическом уровне выбрана шина 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

Теги:
Хабы:
Всего голосов 7: ↑7 и ↓0+9
Комментарии2

Публикации

Работа

Ближайшие события