Устройство предназначено для звуковой имитаций работы двигателя самолёта и звуковой и световой имитации работы бортового оружия.
Имитатор построен на использовании 2-х микроконтроллеров ATtiny2313 и ATtiny13.
Имитатор построен на использовании 2-х микроконтроллеров ATtiny2313 и ATtiny13.
На ATtiny2313 собран плеер wav файлов, которые записаны на SD карте.
Особенности работы этого плеера можно (нужно) посмотреть на странице его создателя http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/. Выражаю огромную благодарность GetChiper’у за данный плеер и доступный открытый код, который я немного того... поэтому если что будет глючить, все шишки на меня :).
Основные принципы работы плеера остались без изменений.
Изменения:
1. отсутствие управления кнопками, управление плеером происходит только через UART;
2. отсутствие переключателей Monster, Helium, Repeat (функция Repeat включена по умолчанию)
3. к переключателю DIR1 / DIR2 добавлен переключатель DIR3 / DIR4 (количество папок для звуковых схем увеличено до 4-х);
4. Сделан выход для включения усилителя, на котором появляется лог ”1” при проигрывании звукового файла;
5. Т.к. освободились ножки контроллера, переделана цепь светодиодной индикации.
На ATtiny13 собран RC-Switch с 2-я входами, который управляет работой плеера в зависимости от входных сигналов.
1 вход подключается через Y разъём к каналу газа (3 канал) и в зависимости от длительности канального импульса идёт передача по UART в плеер первой буквы названия файла и происходит его запуск, который должен соответствовать текущим оборотам двигателя.
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
A – холостые обороты, B, C, D, E, F, G, H, I, J, K
Особняком стоит файл с буквой “Z” это звук старта двигателя. Он при старте проигрывается 1 раз и далее запускается файл соответствующий ширине канального импульса.
Если какой-либо файл будет отсутствовать, плеер автоматически будет проигрывать предыдущий.
2 вход подключается к крутилке или 3-х позиционному тумблеру. (возможно его никуда не подключать, при отсутствии надобности в данной функции)
Этот канал управляет включением звука оружия и световых эффектов на соответствующих ножках контроллера RC-Switch.
Плеер способен одновременно воспроизводить только 1 файл, поэтому микшера нет, и звук оружия перекрывает звук двигателя. При выключении оружия, звук двигателя восстанавливается (звук оружия как бы имеет больший приоритет при воспроизведении).
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
“1” – первое оружие (пулемёт, быстрое мигание пина 2);
“2” – второе оружие (пушка, умеренное мигание пина 3);
“3” – первое + второе оружие (пушка + пулемёт, одновременное мигание пина 3 и 2).
Замечание:
При использовании 3-х позиционного тумблера, будут возможны только 2-а включения: “1” первое оружие и “3” первое + второе оружие (либо микшировать 2-а тумблера).
При первом включении устройства, первый канал RC-Switch необходимо откалибровать (второй канал настраивается по первому). Для этого надо установить стик в максимум и включить питание. (Чтобы не вызвать возможный запуск программирования регулятора, устройство для калибровки подключаем на любой канал).
После подачи питания (если канальный импульс в канале больше 1,5ms) одновременно начнут мигать пины (оружие 1 и оружие 2). После движения стика, мигание ускорится и в течении 6 секунд (время калибровки) надо перевести стик несколько раз в положение MIN и MAX. Прекращение мигания пинов оружия – калибровка завершена.
При прошивке плеера, фьюзы ставятся, как в описании на странице автора. (все фьюзы оставляются исходные, только отменить деление частоты на 8 – CK DIV8, по умолчанию включено деление, надо просто считать исходные фьюзы и инвертировать состояние фьюза CK DIV8)
При прошивке RC-Switch (ATtiny13), фьюзы оставляются исходные.
Было пару случаев, когда при работе плеер вдруг затихал, переставал на всё реагировать и начинал моргать красный светодиод. Причину я пока не откопал (может SD карта глючила), спасает кнопка Reset.
Даю наводку, где можно взять звуки. Есть такая игра IL-2, и к ней существуют звуковые моды, поискав по интернету, можно найти. Для примера я оттуда взял звук двигателя M-105 и звук пушки ШВАК и пулемёта УБ. Конечно, пришлось ещё повозиться в звуковом редакторе, чтоб сделать больше переходов (в игре как-то всё микшируется автоматически).
Чтоб было громко, необходимо ещё собрать усилитель мощности и взять соответствующий динамик, но без фанатизма, а то весь пар уйдёт в свисток динамик и вместо самолёта получится кирпич :)
Все исходники и файлы прошивки в архиве (RC_Sound.rar)
(также в архиве рисунок платы в Sprint Layout и звуковой пример - папка "1")
SDC_Talking_DimaMode4.hex - прошивка для Tiny2313
прошивка для Tiny13:
RC_2IN_ATtiny13_UART_1_inv_12.hex - диапазон разбивается на 12 отрезков (11 букв - A,B,C,...K + отрезок "выключено")
RC_2IN_ATtiny13_UART_1_inv_18.hex - диапазон разбивается на 18 отрезков (17 букв - A,B,C,...Q + отрезок "выключено")
Всё тоже самое, только сигнал UART (звязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора))
RC_2IN_ATtiny13_UART_1_no_inv_12.hex
RC_2IN_ATtiny13_UART_1_no_inv_18.hex
Первый вариант для работы, как на схеме. Два контроллера звязаны по UART, но 2313 работает от 3.3 вольт. Для согласования уровней сигнала я использовал транзистор (их везде навалом). Но данное включение инвертирует сигнал, поэтому выход UART надо инвертировать, что и делает парвая прошивка.
Второй вариант для более простого согласования уровней стабилитроном (у кого он есть), тогда инвертировать ничего не надо.
Все элементы кроме контроллеров и мосфетов на светодиоды, выпаяны из разного старого компьютерного хлама.
Вроде всё, если что упустил, отвечу в комментариях. (Заходить буду не очень часто, но постараюсь ответить всем).
А тут немного видео как это работает, извиняюсь за качество съёмки.
Проект получил дальнейшее развитие.
Сергей КСВ 45 предложил одну идею:
вот видео
и начиная с 1.28 мин на нем при перегазовке слышны ступенчатые изменения оборотов турбины, в нашем случае так же идет эта ступенька, а вот если бы сделать алгоритм такой:
Разбиваем сэмплами полностью по звуковым отрезкам всю работу турбины (самый короткий алгоритм)
1- запуск
2- малые обороты
3- увеличение с малых до средних
4- средние
5- увеличение со средних до максимальных
6- максимальные
7- уменьшение с максимальных до средних
8- уменьшение со средних до малых
9- глушение
в чем изюминка реалистичности звука - так в полной имитации проигрывания всех сэмплов поочередно без ступеньки.
Сложность заключается в том что пока например после увеличения стика газа полностью не воспроизведется трек "3" в нашем случае, не включится трек 4
так получится плавный переход - малые обороты трек "2" добавили газу проиграется трек "3" и за ним будет в повторе играть трек "4" пока стик газа в 50%
если стик газа сразу с мин перевести на макс - воспроизводится "2" далее "3" потом "5" и трек "6" макс обороты.
Вот что получилось:
(RC_Sound_New.rar)
Диапазон газа разбивается на равные отрезки, каждому соответствует свой звуковой файл + отрезок "выключено".
Файлы (первая буква) именуются по очереди начиная с "С" и через 2: C, F, I, L, ...
Файлы соответствующие промежуточным буквам: A,B,D,E,G,H... определяют звук изменения оборотов.
А - нарастание (пуск двигателя), B - спадание (выключение)
D - нарастание с "С" до "F", E - спадание с "F" до "C"
и.т.д. см. приложенный рисунок.
SDC_Talking_DimaMode5.hex - прошивка для Tiny2313
прошивка для Tiny13:
RC_2IN_ATtiny13_UART_2_inv_6.hex - диапазон разбивается на 6 отрезков (5 букв - C,F,I,L,O + отрезок "выключено")
RC_2IN_ATtiny13_UART_2_inv_10.hex - диапазон разбивается на 10 отрезков (9 букв - C,F,I,L,O,R,U,X,[ + отрезок "выключено")
Всё тоже самое, только сигнал UART (cвязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора)
RC_2IN_ATtiny13_UART_2_no_inv_6.hex
RC_2IN_ATtiny13_UART_2_no_inv_10.hex
В архиве есть пример звуков для 6 диапазонного разбиения.
===========================================================================
Звуковой модуль для автомобилистов (RC_Sound_Auto_v2.rar)
Сам я нисколько не автомобилист, но по просьбе читателей сделал данную вещь.
Постарался сделать её как можно более универсальной, возможно некоторые фишки надуманы и никому не будут нужны.
Принцип наименования файлов и логика их запуска, думаю, понятена из рисунка.
- На 3 ножку Tiny13 выводится лог. "1" при запуске двигателя (включение канал2) и держится во время работы. Выводится "0" при глушении двигателя.
(Например туда можно подключить фары.)
- Сделан ещё один (по сравнению с RC_Sound) входной канал3 (2 ножка Tiny13) для включения (бибикалка, сирена, крякалка) любого звука (логика работы, как оружие на звуковом модуле для самолёта).
Этот канал разбит на 3-и диапазона: |-- выкл. --|-- сигнал"1" --|-- сигнал"2" --|
При включении сигнала "1" на 8 пине Tiny2313 появляется лог."1" (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала "1")
При включении сигнала "2" на 9 пине Tiny2313 появляется лог."1" (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала "2")
Соответственно при подключении к дискретному каналу возможно только состояние - выкл. и сигнал "2"
- Калибровка запускается как обычно, только под конец светодиод (3 ножка Tiny13) начинает ускоренно мигать, приглашая перевести стик в нейтраль
(можно и раньше, главное чтоб по окончании ускоренного мигания стик был в нейтрали).
- Индикация потери сигнала: т.к. 3 ножка постоянно включена при "работе" двигателя. Теперь при потере сигнала следуют периодические двойные короткие вспышки на 3 ножке.
Схема фактически идентична схеме RC_Sound, за исключением добавленного канала3, вместо одного выхода на световую индикацию (оружие1). Кому он не нужен, прошивка будет работать и на старой схеме.
Особенности работы этого плеера можно (нужно) посмотреть на странице его создателя http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/. Выражаю огромную благодарность GetChiper’у за данный плеер и доступный открытый код, который я немного того... поэтому если что будет глючить, все шишки на меня :).
Основные принципы работы плеера остались без изменений.
Изменения:
1. отсутствие управления кнопками, управление плеером происходит только через UART;
2. отсутствие переключателей Monster, Helium, Repeat (функция Repeat включена по умолчанию)
3. к переключателю DIR1 / DIR2 добавлен переключатель DIR3 / DIR4 (количество папок для звуковых схем увеличено до 4-х);
4. Сделан выход для включения усилителя, на котором появляется лог ”1” при проигрывании звукового файла;
5. Т.к. освободились ножки контроллера, переделана цепь светодиодной индикации.
На ATtiny13 собран RC-Switch с 2-я входами, который управляет работой плеера в зависимости от входных сигналов.
1 вход подключается через Y разъём к каналу газа (3 канал) и в зависимости от длительности канального импульса идёт передача по UART в плеер первой буквы названия файла и происходит его запуск, который должен соответствовать текущим оборотам двигателя.
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
A – холостые обороты, B, C, D, E, F, G, H, I, J, K
Особняком стоит файл с буквой “Z” это звук старта двигателя. Он при старте проигрывается 1 раз и далее запускается файл соответствующий ширине канального импульса.
Если какой-либо файл будет отсутствовать, плеер автоматически будет проигрывать предыдущий.
2 вход подключается к крутилке или 3-х позиционному тумблеру. (возможно его никуда не подключать, при отсутствии надобности в данной функции)
Этот канал управляет включением звука оружия и световых эффектов на соответствующих ножках контроллера RC-Switch.
Плеер способен одновременно воспроизводить только 1 файл, поэтому микшера нет, и звук оружия перекрывает звук двигателя. При выключении оружия, звук двигателя восстанавливается (звук оружия как бы имеет больший приоритет при воспроизведении).
Порядок чередования файлов (по первой букве в имени) в зависимости от ширины канального импульса:
“1” – первое оружие (пулемёт, быстрое мигание пина 2);
“2” – второе оружие (пушка, умеренное мигание пина 3);
“3” – первое + второе оружие (пушка + пулемёт, одновременное мигание пина 3 и 2).
Замечание:
При использовании 3-х позиционного тумблера, будут возможны только 2-а включения: “1” первое оружие и “3” первое + второе оружие (либо микшировать 2-а тумблера).
При первом включении устройства, первый канал RC-Switch необходимо откалибровать (второй канал настраивается по первому). Для этого надо установить стик в максимум и включить питание. (Чтобы не вызвать возможный запуск программирования регулятора, устройство для калибровки подключаем на любой канал).
После подачи питания (если канальный импульс в канале больше 1,5ms) одновременно начнут мигать пины (оружие 1 и оружие 2). После движения стика, мигание ускорится и в течении 6 секунд (время калибровки) надо перевести стик несколько раз в положение MIN и MAX. Прекращение мигания пинов оружия – калибровка завершена.
При прошивке плеера, фьюзы ставятся, как в описании на странице автора. (все фьюзы оставляются исходные, только отменить деление частоты на 8 – CK DIV8, по умолчанию включено деление, надо просто считать исходные фьюзы и инвертировать состояние фьюза CK DIV8)
При прошивке RC-Switch (ATtiny13), фьюзы оставляются исходные.
Было пару случаев, когда при работе плеер вдруг затихал, переставал на всё реагировать и начинал моргать красный светодиод. Причину я пока не откопал (может SD карта глючила), спасает кнопка Reset.
Даю наводку, где можно взять звуки. Есть такая игра IL-2, и к ней существуют звуковые моды, поискав по интернету, можно найти. Для примера я оттуда взял звук двигателя M-105 и звук пушки ШВАК и пулемёта УБ. Конечно, пришлось ещё повозиться в звуковом редакторе, чтоб сделать больше переходов (в игре как-то всё микшируется автоматически).
Чтоб было громко, необходимо ещё собрать усилитель мощности и взять соответствующий динамик, но без фанатизма, а то весь пар уйдёт в свисток динамик и вместо самолёта получится кирпич :)
Все исходники и файлы прошивки в архиве (RC_Sound.rar)
(также в архиве рисунок платы в Sprint Layout и звуковой пример - папка "1")
SDC_Talking_DimaMode4.hex - прошивка для Tiny2313
прошивка для Tiny13:
RC_2IN_ATtiny13_UART_1_inv_12.hex - диапазон разбивается на 12 отрезков (11 букв - A,B,C,...K + отрезок "выключено")
RC_2IN_ATtiny13_UART_1_inv_18.hex - диапазон разбивается на 18 отрезков (17 букв - A,B,C,...Q + отрезок "выключено")
Всё тоже самое, только сигнал UART (звязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора))
RC_2IN_ATtiny13_UART_1_no_inv_12.hex
RC_2IN_ATtiny13_UART_1_no_inv_18.hex
Первый вариант для работы, как на схеме. Два контроллера звязаны по UART, но 2313 работает от 3.3 вольт. Для согласования уровней сигнала я использовал транзистор (их везде навалом). Но данное включение инвертирует сигнал, поэтому выход UART надо инвертировать, что и делает парвая прошивка.
Второй вариант для более простого согласования уровней стабилитроном (у кого он есть), тогда инвертировать ничего не надо.
Все элементы кроме контроллеров и мосфетов на светодиоды, выпаяны из разного старого компьютерного хлама.
Вроде всё, если что упустил, отвечу в комментариях. (Заходить буду не очень часто, но постараюсь ответить всем).
А тут немного видео как это работает, извиняюсь за качество съёмки.
Проект получил дальнейшее развитие.
Сергей КСВ 45 предложил одну идею:
вот видео
и начиная с 1.28 мин на нем при перегазовке слышны ступенчатые изменения оборотов турбины, в нашем случае так же идет эта ступенька, а вот если бы сделать алгоритм такой:
Разбиваем сэмплами полностью по звуковым отрезкам всю работу турбины (самый короткий алгоритм)
1- запуск
2- малые обороты
3- увеличение с малых до средних
4- средние
5- увеличение со средних до максимальных
6- максимальные
7- уменьшение с максимальных до средних
8- уменьшение со средних до малых
9- глушение
в чем изюминка реалистичности звука - так в полной имитации проигрывания всех сэмплов поочередно без ступеньки.
Сложность заключается в том что пока например после увеличения стика газа полностью не воспроизведется трек "3" в нашем случае, не включится трек 4
так получится плавный переход - малые обороты трек "2" добавили газу проиграется трек "3" и за ним будет в повторе играть трек "4" пока стик газа в 50%
если стик газа сразу с мин перевести на макс - воспроизводится "2" далее "3" потом "5" и трек "6" макс обороты.
Вот что получилось:
(RC_Sound_New.rar)
Диапазон газа разбивается на равные отрезки, каждому соответствует свой звуковой файл + отрезок "выключено".
Файлы (первая буква) именуются по очереди начиная с "С" и через 2: C, F, I, L, ...
Файлы соответствующие промежуточным буквам: A,B,D,E,G,H... определяют звук изменения оборотов.
А - нарастание (пуск двигателя), B - спадание (выключение)
D - нарастание с "С" до "F", E - спадание с "F" до "C"
и.т.д. см. приложенный рисунок.
SDC_Talking_DimaMode5.hex - прошивка для Tiny2313
прошивка для Tiny13:
RC_2IN_ATtiny13_UART_2_inv_6.hex - диапазон разбивается на 6 отрезков (5 букв - C,F,I,L,O + отрезок "выключено")
RC_2IN_ATtiny13_UART_2_inv_10.hex - диапазон разбивается на 10 отрезков (9 букв - C,F,I,L,O,R,U,X,[ + отрезок "выключено")
Всё тоже самое, только сигнал UART (cвязь Tiny13 и Tiny2313) не инвертируется (при согласовании уровней без транзистора)
RC_2IN_ATtiny13_UART_2_no_inv_6.hex
RC_2IN_ATtiny13_UART_2_no_inv_10.hex
В архиве есть пример звуков для 6 диапазонного разбиения.
===========================================================================
Звуковой модуль для автомобилистов (RC_Sound_Auto_v2.rar)
Сам я нисколько не автомобилист, но по просьбе читателей сделал данную вещь.
Постарался сделать её как можно более универсальной, возможно некоторые фишки надуманы и никому не будут нужны.
Принцип наименования файлов и логика их запуска, думаю, понятена из рисунка.
- На 3 ножку Tiny13 выводится лог. "1" при запуске двигателя (включение канал2) и держится во время работы. Выводится "0" при глушении двигателя.
(Например туда можно подключить фары.)
- Сделан ещё один (по сравнению с RC_Sound) входной канал3 (2 ножка Tiny13) для включения (бибикалка, сирена, крякалка) любого звука (логика работы, как оружие на звуковом модуле для самолёта).
Этот канал разбит на 3-и диапазона: |-- выкл. --|-- сигнал"1" --|-- сигнал"2" --|
При включении сигнала "1" на 8 пине Tiny2313 появляется лог."1" (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала "1")
При включении сигнала "2" на 9 пине Tiny2313 появляется лог."1" (подразумевается использовать для запуска
световой илюминации сопровождения звукового сигнала "2")
Соответственно при подключении к дискретному каналу возможно только состояние - выкл. и сигнал "2"
- Калибровка запускается как обычно, только под конец светодиод (3 ножка Tiny13) начинает ускоренно мигать, приглашая перевести стик в нейтраль
(можно и раньше, главное чтоб по окончании ускоренного мигания стик был в нейтрали).
- Индикация потери сигнала: т.к. 3 ножка постоянно включена при "работе" двигателя. Теперь при потере сигнала следуют периодические двойные короткие вспышки на 3 ножке.
Схема фактически идентична схеме RC_Sound, за исключением добавленного канала3, вместо одного выхода на световую индикацию (оружие1). Кому он не нужен, прошивка будет работать и на старой схеме.
RC_2IN_ATtiny13_UART_2_inv_10.hex должны быть все файлы A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [ (у меня в примере файлы только для RC_2IN_ATtiny13_UART_2_inv_6.hex) иначе будут небольшие глюки (когда плеер не сможет найти файл).
Файлы при записи на флешку надо писать все разом, на флешке файлы нельзя улалять и перезаписывать - форматируешь и все разом пишешь. Программа плеера не отслеживает цепочки ФАТ
Также, кому нужен первоначальный вариант, перекачайте архив (в статье). Я в прошлый раз что-то намудрил и записал не окончательный вариант (когда исправлял ошибки). Прошу прощения.
С разъемами еще не совсем определился. Вот файл (NEW2-1.lay6)
И для тини2313 файл EE_SDC_Talking_DimaMode4 заливать в Eeprom?
для Tiny2313 SDC_Talking_DimaMode4.hex
для Tiny13:
RC_2IN_ATtiny13_UART_1_inv.hex для 11 звуковых файлов от A - K (Z - не считается, он отдельно)
(диапазон канала газа телится на 12 областей: всё выключено + 11 файлов)
RC_2IN_ATtiny13_UART_1_inv_18.hex для 17 звуковых файлов от A - Q
(диапазон канала газа телится на 18 областей: всё выключено + 17 файлов)
( вариант с увеличенным количеством семплов (17 шт) от A до Q. внутри архива)
надеюсь ошибок больше не осталось :)
Ещё в начале пограммы, у меня есть вставка данных в программный код. И я эту вставку не там сделал(главное такая-же ошибка была в RC_Light, тоже исправлено). Получилось, что этот код данных стал исполняьтся как программа (а там вообще может быть что хочешь и последствия непредсказуемы). Я вообще удивлён, что пограмма без последствий проскакивала это место.
Обнаружил случайно, когда решил поизучать Proteus, и моя программа отказалась в нём работать. Там получалась неизвестная инструкция и протеус останавливал эмуляцию.
и добавил вариант с увеличенным количеством семплов (17 шт) от A до Q.