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

в 11:09, , рубрики: diy-проекты, авиация, микроконтроллеры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Используется библиотека 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-концентратора на базе esp8266 - 4
Создание CAN-концентратора на базе esp8266 - 5

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

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

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

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

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

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

Автор: Engineer747

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js