Радиостек на Ардуино для X-Plane
08.04.2020: Прошивка панелей доработана с целью работы с новым плагином xpiohub. Исправлена ошибка (некорректная работа кнопки STB/ACT). Необходимые материалы
в архиве (прошивка, плагин, дефолтный инишник и ардуино скетч)
radio-0.3.0-08042020.zip. СОДЕРЖАНИЕВВЕДЕНИЕ
|
Таблица 1 | |||||||||||||||||||||||||||
|
Таблица 2 | |||||||||||||||||||||||||||||||||||
|
Панели смонтированы в приборных корпусах Gainta Industries G1024B, Корпус для РЭА 158х95.5х53мм, пластик, черный
(''Чип и Дип'', Артикул G1024B
http://www.chipdip.ru/product/g1024b.
На рис.1 показан общий вид стека.
Рис.1 |
А это вид со стороны монтажа (рис.2).
Рис.2 |
На рис.3 показан шаблон панели, который распечатывается из файла
Разметочные шаблоны панелей в формате Open Office Draw или
Разметочные шаблоны панелей в формате PDF.
После поечати размеры должны быть 149 х 88 мм по внешнему контуру.
Разметочные наклейки клеятся на корпус для кернения, сверления отверстий согласно
кодировочной таблице и вырезания прямоугольного отверстия под индикатор.
Рис.3 |
Шаблон для печати финальной наклейки на передние панели (рис.4) печатается из
из файла
Финальные шаблоны панелей в формате Open Office Draw или
Финальные шаблоны панелей в формате PDF.
Рис.4 |
Финальная наклейка печатается лазерным принтером по
бумаге с адгезивным слоем (самоклейка А4 LOMOND) с последующим покрытием
защитной плёнкой. В качестве последей может быть использована прозрачная
плёнка А4 с клеящим слоем для лазерных принтеров того же LOMOND (используется только для защиты)
или прозрачная самоклейка
(Erich Krause Пленка, рулон, самоклеящаяся, 400мм х3м).
Чередование слоёв финальной наклейки в ''сборе'' показано на рис.5.
Рис.5 |
Распечатанные изображения следует сразу же после печати закрыть защитным слоем.
С первого раза может не получиться. Главное ноу-хау заключается в том, что
нужно постепенно освобождать плёнку от защитного слоя и тут же прикатывать
освобождённую
часть валиком в виде линейки, обёрнутой тканью. Делать это нужно по всей ширине.
Неплохо бы, в самом начале операции, освобождённым краем приклеиться к столу,
прихватив и край защищаемой заготовки.
После всего этого наклейки обрезаются канцелярским ножом под металлическую линейку.
На финальных наклейках нужно прорезать прямоугольные отверстия под индикаторы
таким образом, чтобы белый контур остался на отрезанной части. Круглые отверстия
вырезаются
после приклеивания на корпус после "нащупывания" контуров резки.
1. Наклеить на корпус изображение с центрами отверстий и разметкой прямоугольного
отверстия под индикатор радиостека.
2. Вырезать прямоугольное отверстие под индикатор
специальным ножом для оргстекла под металлическую линейку за несколько
проходов инструмента по контуру.
3. Произвести сверление отверстий согласно таблице кодировки отверстий.
Использовать ступенчатое сверло или производить сверление постепенно увеличивая
диаметр сверла, начиная от 4 мм с шагом в 1-2 мм.
4. Удалить использованное разметочное изображение.
5. Удалить с лицевой поверхности все заусенцы и задиры, проверить поверхность
на ровность проходом металлической линейки, поставленной на ребро.
6. Повторить операции 1-5 для второго модуля.
7. Вклеить индикатор, соблюдая ориентацию согласно документации на конкретный тип.
Делать на опорной повехности, положив корпус лицом к опорной поверхности.
Использовать термоклей, дождаться остывания клея до температуры среды.
8. Наклеить финальные наклейки на лицевые поверхности корпусов,
обращая внимание на точное совмещение прорези для LCD индикатора с маской самого
LCD индикатора.
9. Притереть наклейки мягкой тканью так, чтобы обозначились контуры отверстий.
10. Хвостовиком сверла, которым производилось сверление под светодиоды,
продавить отверстия в наклейках в соответствующих местах (при этом корпус с
отверстием выполняет роль матрицы, а хвостовая часть сверла — роль пуансона).
11. Остальные отверстия прорезать канцелярским ножом, по кругу в несколько
приёмов, не стремясь срезать за один "рез" слишком много во избежание задиров.
12. Смонтировать детали в свои отверстия согласно рисунка 3 и таблицы 2.
13. Принять решение о взаимной компоновке панелей
(вертикальная или горизонтальная)затем свинтить оба блока вместе,
предварительно сделав по два отверстия в нужных местах под винты (размер М3 или М4).
14. Произвести монтаж "общего" провода на выводы деталей, предназначенных
для объединения согласно таблице 2, колонка 5: Контакты для соединения с цепью GND.
15. Выполнить монтаж согласно схеме электрической соединений.
1. Установить среду разработки Arduino IDE (если не установлена)
https://www.arduino.cc/en/Main/Software
2. Скачать архив скетча arduino_radio-0.2.0.zip и распаковать в удобное место.
3. Подключить плату Mega2560 к PC при помощи USB кабеля.
4. Определить имя нового коммуникационного USB устройства Arduino Mega 2560 при помощи Диспетчера устройств,
как показано на рис.6 в качестве примера.
Рис.6 |
Рис.7 |
#ifndef HardwareSerial_h #define HardwareSerial_hПосле изменений:
#include <inttypes.h>
#include "Stream.h"
#ifndef HardwareSerial_h #define HardwareSerial_h #define SERIAL_TX_BUFFER_SIZE 512 #define SERIAL_RX_BUFFER_SIZE 1024 #include <inttypes.h>7. Выполнить действия, показанные на рис.8, используя в качестве имени порта данные, полученные в п.4
#include "Stream.h"
Рис.8 |
8. Если в результате загрузки выдана ошибка
#error SERIAL_TX_BUFFER_SIZE still is not 512 bytes
или
#error SERIAL_RX_BUFFER_SIZE still is not 1024 bytes,
это может означать, что изменение размера буфера, описанное в п. 6 не выполнено или выполнено, но не
в актуальной папке. Такое возможно, если имеются множественные установки Arduino IDE разных версий.
Автономное программирование удобно в том случае, когда нет необходимости
вносить изменения в код. Иногда, для успешной компиляции, необходимо доустанавливать
дополнительные библиотеки и менять некоторые параметры ядра. Часто бывает так, что
при использовании некоторых дополнительных библиотек возникают проблемы при компиляции
в Arduino IDE новейших версий.
В этом случае использование уже протестированных готовых
бинарных или .hex прошивок упрощает задачу.
Но и в этом случае нельзя полностью отказаться от необходимости устанавливать
среду разработки, которая содержит в себе необходимые драйверы для подключения
плат по USB.
1. Скачать пакет программирования
(программатор avrdude и прошивка в формате .hex)
radio_programming_set-0.2.0.zip
и распаковать в удобное место.
2. Открыть в блокноте на редактирование файл prog_2_units.bat (или prog_1_unit.bat, если построена одномодульная радиопанель) и указать актуальный порт подключения платы, как показано на рис.9.
Рис.9 |
3. Запустить на выполнение файл prog.bat. После окончания процесса программирование, окно будет иметь вид, как показано на рис.10.
Рис.10 |
1. Скачать тестовую программу mcptest.zip
и распаковать в удобное место.
2. Отрыть файл удобное_место\mcptest\Resources\plugins\xpiohub.ini и отредактировать в секции [serial]
значение для port_0 согласно полученному значению в разделе 6 п.4.
Ниже, для справки, содержимое этого файла.
[mode] log=on [serial] port_0=COM36 [debug] keyinfo=on
3. Запустить на выполнение файл удобное_место\mcptest\mcptest.exe.
4. В результате п.3 должно появиться консольное окно (рис.11).
Рис.11 |
5. Выполнять действия с органами управления, наблюдать код в окне тестовой программы
и сравнивать с кодами в таблицах 3...5.
Таблица 3 +------------------------------------------+ | E N C O D E R E V E N T C O D E S | +---------+---------+------+-------+-------+ | MODE | STB/ACT | STEP | UP | DN | +---------+---------+------+-------+-------+ | COM1 | 0 | 0 | 0000 | 0001 | | COM1 | 0 | 1 | 0004 | 0005 | +---------+---------+------+-------+-------+ | COM2 | 0 | 0 | 0016 | 0017 | | COM2 | 0 | 1 | 0020 | 0021 | +---------+---------+------+-------+-------+ | NAV1 | 0 | 0 | 0032 | 0033 | | NAV1 | 0 | 1 | 0036 | 0037 | +---------+---------+------+-------+-------+ | NAV2 | 0 | 0 | 0048 | 0049 | | NAV2 | 0 | 1 | 0052 | 0053 | +---------+---------+------+-------+-------+ | ADF | 0 | 0 | 0064 | 0065 | | ADF | 0 | 1 | 0068 | 0069 | | ADF | 0 | 2 | 0072 | 0073 | | ADF | 1 | 0 | 0066 | 0067 | | ADF | 1 | 1 | 0070 | 0071 | | ADF | 1 | 2 | 0074 | 0075 | +---------+---------+------+-------+-------+ | DME | 0 | 0 | 0080 | 0081 | | DME | 0 | 1 | 0084 | 0085 | | DME | 1 | 0 | 0082 | 0083 | | DME | 1 | 1 | 0086 | 0087 | +---------+---------+------+-------+-------+ | TXPND | 0 | 0 | 0096 | 0097 | | TXPND | 0 | 1 | 0100 | 0101 | | TXPND | 0 | 2 | 0104 | 0105 | | TXPND | 0 | 3 | 0108 | 0109 | +---------+---------+------+-------+-------+ | NAV_CRS | 0 | 0 | 0112 | 0113 | | NAV_CRS | 0 | 1 | 0116 | 0117 | | NAV_CRS | 1 | 0 | 0114 | 0115 | | NAV_CRS | 1 | 1 | 0118 | 0119 | +---------+---------+------+-------+-------+ Таблица 4 +------------------------------------------+ | U N I T 1 buttons and switches codes | +--------------------+---------------------+ | BUTTON/SWITCH | EVENT CODE | +--------------------+---------------------+ | ADF1 | 0152 | | ADF2 | 0153 | | NAV1 | 0154 | | NAV2 | 0155 | | MRK | 0156 | | DME | 0157 | | COM1/COM2 | 0158 | | FREQ STB/ACT | 0131 | | FREQ STB/ACT(COM1) | 0176 | | FREQ STB/ACT(COM2) | 0177 | | FREQ STB/ACT(NAV1) | 0178 | | FREQ STB/ACT(NAV2) | 0179 | | XPND STB/ACT | 0159 | | IDENT | 0160 | +--------------------+---------------------+ Таблица 5 +------------------------------------------+ | U N I T 2 buttons and switches codes | +--------------------+---------------------+ | BUTTON/SWITCH | EVENT CODE | +--------------------+---------------------+ | ADF1 | 0161 | | ADF2 | 0162 | | NAV1 | 0163 | | NAV2 | 0164 | | MRK | 0165 | | DME | 0166 | | COM1/COM2 | 0167 | | FREQ STB/ACT | 0131 | | FREQ STB/ACT(COM1) | 0176 | | FREQ STB/ACT(COM2) | 0177 | | FREQ STB/ACT(NAV1) | 0178 | | FREQ STB/ACT(NAV2) | 0179 | | XPND STB/ACT | 0168 | | IDENT | 0169 | +--------------------+---------------------+
1. Загрузить плагин xpiohub-0.6.0-radio_preconfigured.zip
и разместить файлы по своим местам, как показано ниже.
Содержание архива: =================== Resources\plugins\xpiohub.xpl - плагин, скопировать в папку Resources\plugins\ симулятора Resources\plugins\xpiohub.ini - дефолтные настройки, скопировать в папку Resources\plugins\ симулятора Следующие файлы разместить в соответствующих папках моделей самолётов: for_carenado_c172_folder\xpiohub.ini - файл с настройками для Carenado Cessna 172N for_felis_tu154_folder\xpiohub.ini - файл с настройками для Felis Tu-154M for_sts_ff_b757_folder\xpiohub.ini - файл с настройками для Boeing757/767 by FF&STS
2. Отрыть файл папка_симулятора\Resources\plugins\xpiohub.ini и отредактировать в секции [serial] значение для port_0 согласно полученному значению в разделе 6 п.4. Ниже, для справки, часть содержимого этого файла с настройками последовательного порта.
[mode] log=on [serial] port_0=COM36 [debug] keyinfo=on [operation] reload_key=160
3. Запустить симулятор и проверить функционирование.
Примечание 1. Настроек в самом симуляторе не требуется.
Примечание 2.Лог плагина ведётся в файле папка_симулятора\Resources\plugins\xpiohub.log
и пересоздаётся при каждом запуске плагина.
Примечание 3. Текущий файл настроек можно редактировать на лету, чтобы перезагрузить
настройки нужно вызвать пункт меню симулятора
Plugins/FlyingCat USB I/O hub -> Re-register all
Рис.12 |
или нажать специальную выделенную кнопку (по умолчанию это кнопка IDENT с кодом 160)
Примечание 4. Служебную функцию перезагрузки настроек допускается назначать на любую кнопку,
занятую в обычных настройках. Но, желательно назначать малоиспользуемую кнопку.
Примечание 5. При необходимости перегрузить устройство,
можно остановить плагин через Plugin Admin симулятора:
Рис.13 |
Останов плагина не происходит мгновенно, нужно подождать, пока чек в чекбоксе исчезнет. После этого можно переподключить устройство путём отсоединения/присоединения USB кабеля.
Плагин xpiohub.xpl допускает одновременное подключение до восьми устройств (пока известно два устройства, поддерживающие тот же протокол событий: MultiRadio и MCP. Возможно создание устройств пользователя, протокол описан здесь), для этого нужно дополнить секцию serial, как показано ниже.
[serial] port_0: com22 port_1: com20 port_2: com12 port_3: com8
Здесь port_N (N от 0 до 7) - условный номер порта, которому сопоставляется физический порт.
Блок описаний правил обработки событий для отдельного устройства должен предваряться секцией device, как показано ниже
[device] port: 0 # здесь начинается описательная часть для устройства, подключенного к порту с условным номером 0 [device] port: 1 # здесь начинается описательная часть для устройства, подключенного к порту с условным номером 1 [device] port: 2 # здесь начинается описательная часть для устройства, подключенного к порту с условным номером 2 [device] port: 3 # здесь начинается описательная часть для устройства, подключенного к порту с условным номером 3