Схема, прошивка и описание программы лазертаг платы LTAscetic

Плата лазертаг Аскет (LTAscetic).

Администрация ресурса Open-tag.ru благодарит Pingvin'а за предоставленный материал.

Принципиальная схема.

Схема лазертаг

Возможности прошивки лазертаг-платы Аскет.

Прошивка версии 0.1 ориентирована на открытый протокол Miles tag II. Подробнее о протоколе Вы можете прочитать здесь

http://www.open-tager.ru/masterskaya/spetsifikatsii-protokola-miles-tag-ii

Пока совместимость реализована на уровне «выстрела». «Пуля» представляет собой стандартный пакет данных Milestag II. Передается идентификатор игрока, идентификатор (цвет) команды и урон, который нанесёт наш выстрел противнику в случае попадания. Реализовано воспроизведение звука выстрела, возможность переключения режима огня (очередью/одиночными), индикация уровня «жизни» линейкой из 4 светодиодов, индикатор «закончились патроны» а так же индикатор «вспышек выстрела». Кроме того, есть возможность варьировать значения «цвет команды», «наносимый урон» и «количество патронов» посредством двойных движковых переключателей (не меняя ничего в прошивке).

Готовая прошивка:

https://github.com/PingvinOpenTag/LTPingvin/blob/master/firmware/ltag_ascetic.hex

Состав исходных файлов прошивки

(найти можно здесь: 

tag_ascetic.c — в этом файле содержится основной цикл (функция main()) и реализованы все основные функции.

global_variables.c — название файла говорит само за себя — здесь объявлены все глобальные переменные, используемые в прошивке.

isr.c — опять, название файла нам как бы намекает … ;-) в этом файле описаны обработчики различных прерываний и функции, используемые этими обработчиками.

Заголовочные файлы:

types.h — здесь мы определяем нужные нам типы переменных.

definition_of_ports_atmega16.h — в этом файле мы описываем назначение портов и ножек контроллера, какой порт является портом для ИК-диода, на какой ножке он «висит», какой порт (ножки) использованы для светодиодов «жизни» и так далее.

Зачем это сделано?

А затем, чтобы, если вдруг мы захотим подключить ИК-диод на другую ножку (порт) контроллера (кстати — ситуация реальная) то не будет необходимости «перелопачивать» все исходники прошивки и заменять, к примеру, PORTA на PORTB там, где мы обращаемся к порту ИК-диода (тут запутаться — в два счёта!).

Достаточно будет лишь в этом файле заменить

#define IR_LED_PORT PORTA на #define IR_LED_PORT PORTAB

#define IR_LED_PIN (1<<3) на #define IR_LED_PIN (1<<[номер новой ножки])

и не лезть больше в исходники совсем! Потому что в исходниках мы обращаемся к порту (ножкам) ИК-диода через макроопределение (псевдонимы) IR_LED_PORT (IR_LED_PIN) а компилятор сам уже сделает замену PORTA на PORTB автоматически в тех функциях, где есть обращение к порту ИК-диода.

Надеюсь, смысл ясен? :-)

miles_protocol.h — здесь мы описываем то, что нам понадобиться для формирования пакета «выстрела» в соответствии с протоколом Miles tag II. А именно — длительность «старт бита», длительность паузы между передаваемыми битами, длительность импульса, соответствующего «единице», длительность импульса, соответствующего «нулю» и так далее.

Также тут описаны причисляемые типы для «цвет команды» и «урона».

Еще одно важное макроопределение — частота несущей TSOP #define IR_F0 36000

Если ваш TSOP работает на другой частоте — просто измените значение на нужное, к примеру, для 48 КГц-ового TSOPа запишем #define IR_F0 48000 и все должно работать (по идее :-)).

hal.h — сюда я попытался вынести те макроопределения, которые относятся к аппаратной части контроллера — частоту кварца, а так же, для удобства, написал макросы для управления подключенным к контроллеру оборудованием.

Например #define LIFE_LED1_ON LIFE_LEDS_PORT|=LIFE_LED1_PIN

Теперь, чтобы зажечь первый светодиод индикатора жизни, мне достаточно в исходном файле написать LIFE_LED1_ON, а не городить огород из LIFE_LEDS_PORT|=LIFE_LED1_PIN.

Оно и нагляднее получается! :-)

milshot_snd.h — а здесь, собственно, и лежит звук! Просто описан массив в памяти программ со значениями сеймплов нашей «фонограммы». :-)

ltag_ascetic.h — здесь мы просто декларируем наши глобальные переменные и функции, чтобы они были «видны» из любого исходного файла проекта. Ну и здесь же подключаем стандартные Си-шные библиотеки, например, для работы с памятью программ #include <avr/pgmspace.h>

Примеры изменения параметров, касающихся протокола Miles tag II

Идентификатор игрока можно изменить, только исправив код прошивки, затем скомпилировав её и по новой запрограммировав контроллер.

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

Как это делается?

В файле ltag_ascetic.c находим описание функции void init_var(void){…}.

В ней меняем в строке set_player_id(1); передаваемое функции значение на нужное Вам.

Например, для ИД = 23 пишем set_player_id(23);

Всё, теперь в пакете «выстрела» будет передаваться идентификатор игрока, равный 23.

Идентификатор (цвет) команды задается движковым переключателем SW1 (TEAM COLOR).

 

Цвет команды

Состояние контакта 1

Состояние контакта 2

RED (Красные)

OFF

OFF

BLUE(Синие)

ON

OFF

YELLOW(Желтые)

OFF

ON

GREEN(Зелёные)

ON

ON

В прошивке, касаемо цвета команды, менять нечего и, главное, незачем, все и так «по протоколу»! :-)

Урон задается движковым переключателем SW2 (DAMAGE)

 

Наносимый противнику урон

Состояние контакта 1

Состояние контакта 2

10%

OFF

OFF

25%

ON

OFF

50%

OFF

ON

100%

ON

ON

Примечание! Так как отобразить при помощи 4 светодиодов урон, равный 10% (1/10) сложно, пришлось «округлить» минимальный урон до 1/8 (12,5%). То есть мигающий светодиод как раз и означает 1/8 (12.5%) жизни, а горящий — ¼ (25%). Хотя в пакете передается урон именно 10% и оригинальная плата этот урон и посчитает. Если в Вас будут «стрелять» из оригинального милеса, то любой урон, отличный от перечисленных (10%, 25%, 50%, 100%) будет воспринят прошивкой как 10%-ный. То есть в Вас палят 75%-ным уроном, а с Вас снимется только 1/8 (12,5%) — красота! :-) Попадания с 0%, 25%, 50%, 100%-ным уроном должны обрабатываться корректно. Просто так поменять эти значения не получится — Вам тогда придется позаботиться о корректном отображении «неудобных» значений жизни, и исправлять код, обрабатывающий попадания в Вас. Но если есть желание — дерзайте!

Количество (лимит) патронов задается движковым переключателем SW3 (BULLETS LIMIT)

 

Количество (лимит)

Состояние контакта 1

Состояние контакта 2

16

OFF

OFF

32

ON

OFF

64

OFF

ON

128

ON

ON

 

А тут можно «порезвится». :-) Если Вам «маловато будет» (С) то открываем файл ltag_ascetic.c и в функции uint8_t bullets_limit(void){…} меняем значения на нужные Вам. Но, ВНИМАНИЕ, тип uint8_t накладывает ограничение на максимальное значение переменной — 255. Хотите ещё больше — переопределите функцию как uint16_t bullets_limit(void){…} Хотя, я и сам это сделаю, чуть позже… :-)

 

Изменения параметров, касающихся аппаратной части

Ну про то, как подправить прошивку под используемый Вами TSOP (детектор ИК-сигнала) я уже описал выше. Теперь, что делать, если не нашли кварца на 16 МГц? Можете поставить и другой, но, желательно, не меньше 7 МГц, иначе кроме прошивки надо будет править так называемые «фьюзы» (хотя это тоже не страшно) и быстродействие процессора будет существенно ниже. Итак, к примеру, у Вас установлен кварц на 8 МГц. Открываем файл hal.h и правим строку

#define F_CPU 16000000

на

#define F_CPU 8000000

Если при этом Вы работаете в AVR-Studio, то не забудьте в свойствах проекта указать нужную частоту кварцевого резонатора!

 

Краткое описание алгоритма работы прошивки

Всю прошивку можно разделить на две основные части — это главный цикл программы (функция main()) и прерывания.

Прерываний у нас три:

  1. Прерывание по переполнению/захвату таймера taimer2. Генерируется с частотой, вдвое большей, чем частота несущей TSOPа. Это прерывание формирует несущую частоту ИК сигнала необходимой длительности при передаче пакета. При приёме пакета здесь происходит подсчет длительности сигнала низкого уровня на ножке TSOP, а так же подсчет длительности сигнала высокого уровня.
  2. Прерывание по переполнению/захвату тамера taimer1. Генерируется с частотой выборки звука — 8 Кгц. Здесь мы формируем звук — считываем из массива сеймпл и записываем его в спец. регистр таймера taimer0.
  3. Внешние прерывания INT0 — генерируется, когда TSOP фиксирует несущую ИК сигнала. Тут же мы сравниваем длительность последнего принятого импульса/паузы (см пункт.1), сравниваем их с корректными значениями длительности (с учетом погрешности) для старт-бита, «нулевого» бита и «единичного» бита. На основании этого делается вывод — что было получено «ноль» или «единица» (и заносим соответствующее значение в буфер приема) или это просто помеха. Также следим, чтобы паузы между битами соответствовали стандарту, иначе — выдаём «ошибка приёма пакета».

Всю основную «работу» выполняют прерывания — передача/прием пакета, опрос клавиатуры (кнопки огня), генерация звука, индикация. Прерывания, при наступлении определённых событий (прием пакета, нажатии кнопки огня) сообщают об этом главному потоку через глобальные переменные. Главному потоку остаются лишь должным образом отреагировать на события. Через глобальные же переменные, в свою очередь, главный поток «приказывает» прерываниям выполнить то или иное действие (воспроизвести звук, отправить ИК-пакет). Еще надо упомянуть, что, хоть и не генерирует прерывания, но зато используется в качестве ЦАП преобразователя таймер timer0. Он работает в режиме быстрого ШИМ, и с частотой кварца генерирует импульсы на выводе контроллера, скважность которых зависит от состояния специального регистра. Меняя значение этого регистра, от 0 до 255 мы меняем скважность от 0 (на выводе 0 В) до 100% (на выводе напряжение питания). Присваивая регистру новые значения с частотой 8 КГц и усредняя через RC цепочку напряжение на выводе, мы, в итоге, получаем аналоговый сигнал (звук выстрела).


49 комментариев: Схема, прошивка и описание программы лазертаг платы LTAscetic

  1. Александр говорит:

    Здраствуйте. Вопрос к автору этой замечательной схемы. Хотелось бы узнать предназначение выводов 
    con3 и con4 а то не очень понятно.
    по поводу питания, почему именно 5.5 v, можно ли поставить на питанием кренку 7805
    и для не очень сведующих, объяснить полезность разъема JTAG.
    Заранее спасибо.

    • Pingvin говорит:

      Здравствуйте!
      В общем то, kindats правильно ответил.
      Con3(Power) — это разъём для подключения питания. Старался схему максимально упростить, и удешевить, потому и отказался от кренки.
      Питать схему можно:
      1. От свинцовой аккумуляторной батареи 6 В. Тогда ставим два "гасящих" диода, так как на полностью заряженной батареи напряжение может достигать 6,8 Вольт.
      2. От "пальчиковых" батареек — 4 штуки дадут 6 Вольт ровно. Ставим один гасящий диод.
      3. От "пальчиковых" аккумуляторов — 4 штуки дадут 4,8 Вольт. Не ставим диоды вообще.
      ПРИМЕЧАНИЕ — в случае использования батареек и пальчиковых аккумуляторов рекомендую параллельно разъёму питания Con3 подключить электролитический конденсатор на 2 000 — 3 000 микроФарад. Это позволит избежать "просадки" напряжения на элементах питания при пиковом потреблении тока (вспышка ИК-диода ).
      Con4 (IR LED) — разъём для подключения инфракрасного светодиода.
      Прошу прощения за некоторые неточности в схеме и описании — буду исправлять по мере обнаружения и возможности.
      Например, выложенная прошивка скомпилированна под кварц 16 МГц (а на схеме указано 8 МГц).
      И репозиторий я уже другой сделал.
      https://github.com/PingvinOpenTag/LTAscetic.git&nbsp;
      И схему датчика здесь не привел — испавлю.
      А разъём JTAG нужет тем, кто хочет не только повторить схему, но и сам "поковырять" прошивку.
      Можно не ставить. Прошивать можно через другой разъём — ISP connector при помощи простейшего программатора на LPT-порту "пять проводков".
       
       
       
       

  2. kindats говорит:

    Хоть вопрос был и к Pingvin'у отвечу пока я, а далее, если не прав, он меня поправит. Питание выбрано 5,5-6 Вольт исходя из того, что на двух диодах, включенных в цепь питания будет падение напряжения по 0,5 вольт на каждом. Итого — 5 Вольт для питания микроконтроллера. Их (диоды), в принципе, можно заменить и на кренку. Разъем Con3 предназначен для подключения питания (1 минус, 2 плюс). Con4 ведет к ИК-диоду — излучателю.

    Разъем JTAG предназначен для отладки программы и в конечном варианте (если не собираетесь переписывать прошивку) может быть опущен.

  3. Александр говорит:

    Спасибо за ответ. Но тогда у меня есть еще вопросы
    по поводу con4: если я правильно понял несущяя частота реализованно не спомощью аппаратного ШИМ( порт OC2) а с помощью програмного ШИМ (ножка 38 контроллера). Тогда становится вопрос что подключено к ножке 21(OC2) через транзистор КТ961 коллектор которого соединен с выводом LED. Как я понял по схеме к этому разъему подключаются датчики, и мне не очень понятно функция вывода LED.
    по поводу JTAG: разве я не смогу удалять и записывать прошивку с помощью стандартного разъема (mosi,miso,sck,gnd,reset,vcc), или JTAG имеет какието приемущества?
    Заранее спасибо за ответ.

    • Pingvin говорит:

      Да, несущая генерируется программно — вернее, переключение состояния ИК диода происходит в прерывании с частотой 72 кГц (удвоенная частота несущей).
      К выводу LED подключается светодиод на повязка, а так же можно и "вибратор" зацепить, потому и через транзистор — ток побольше выдержет.
      JTAG позволяет не только "прошивать" контроллер, но и отлаживать программу в реальном времени прямо на контроллере — ставить точки остонова, смотреть значения переменных, регистров и переферии контроллера — вещь незаменимая при ловле "багов"!

  4. Александр говорит:

    Pingvin, спасибо за ответ.
    Я так понимаю если прошивка написана под кварц 16мгц тогда наверно проше купить кварц на 16 чем изменять все необходимые параметры, или может быть в вашей замечательной прошивке предусмотрена и эта опция)
    По поводу прошивки, было бы более надежно, если вы еще скинули какие fuse нужно зашивать.
    насчет диода на повязке, он сигнализирует попадание или имеет какието дополнительные функции?
    Насчет динамика: я планирую использовать 8 Ом-ный динамик мощностью 1 вт, этого будет достаточно, так как по даташиту TDA7267 его выходная мощность 2 вт.
    насчет диода излучателя, нашел ИК диод мощностью 1 Вт, ток потребления 350 мА, питание 1,6-2 вольта. из за этого прийдется предусмотреть делитель напряжения. Противопоказаний использовать такой мощный диод нету?
    Заранее благодарен за ответ. 

    • Pingvin говорит:

      Частота кварца меняется легко — все вроде описано выше, но повторю
       
      Открываем файл hal.h и правим строку

      #define F_CPU 16000000

      на

      #define F_CPU 8000000
      и всё! 
      Только заново компилируем и перешиваем.
      Фьюзы я настраивал в AVR студии — там просто считываю их из контроллера, меняю только источник тактирования — ставлю внешний кварцевый резонатор высокой частоты.
      Но выложу скриншоты.
      Динамик подойдет.
      По поводу ИК диода — попробовать можно и с маломощным, но "классика жанра" — это пока  TSAL6100.
      Кстати, токоограничиваюший резистор в схеме указан 51 Ом — это очень много, не будет бить далеко.
      Я советую поставить несколько Ом (зависит от используемого диода), а чтобы в помещении не было рикошетов, через переключатель подключать дополнительный резостор, чтобы в сумме они были около 51 Ом.
      Никаких делителей не надо!
      Перезарядка — имеется в виду, "заменить магазин"?
      Не сделал, честно говоря, думал — просто давить кнопку — пустая формальность.  

  5. Александр говорит:

    Извиняюсь. Забыл спросить про перезарядку, не заметил кнопки на плате.

  6. Pingvin говорит:

    Если Вам нужна прошивка уже скомпилированная (hex — файл) под другой кварц — выложу, дело пары минут!

  7. Pingvin говорит:

    Диод на повязке — да, для обозначения попаданий и состояния "игрок вне игры".

  8. Александр говорит:

    Спасибо за ответ. 
    Извиняюсь за свою не внимательность, теперь все встало на свои места.
    По поводу диода какоето недопонимание. Диод TSAL6100 имеет мощность 210 мВт и потребление тока 100 мА. Диод который попался мне, имеет мощность 1000 мВт(1Вт) и потребление порядка 350 мА. Из за этой существенной разницы, я спросил у вас, не будет ли эти параметры влиять на работу схемы. Мне кажется что необходимо использовать токо ограничивающий резистор с рассеиваемой мощность 2-3Вт.  Извиняюсь если я чтото не понял
    Заранее благодарен за ответ.

    • Pingvin говорит:

      Если не секрет — что за диод такой?
      Учтите, что кроме мощности важен такой параметр, как длинна волны излучения, ибо датчики расчинанны на 940 нанометров.
      Мощный резистор не нужен — импульсы короткие, не успеет сильно нагреться.

    • Pingvin говорит:

      Транзистор выдержит ток диода.
      А чтобы не проседало напряжение на аккумуляторах, ставьте конденсатор по питанию на 2000 — 3000 мкФд.

  9. Александр говорит:

    Спасибо за разъяснения. Все вопросы закрыли. Пока не могу сказать точное название диода, когда буду еще покупать, отпишусь. Насчет перезарядки. программа выжидает определенное время, а потом сама востанавливает возможность стрелять. Можно ли его регулировать. Есть идея установить геркон в подсумок например, или в жилет, а в обойму магнит. Соответственно для перезарядки необходимо достать магазин и поднести к подсумку. вставить обратно. Я думаю было бы более реалистично. соответственно надо изменить прошивку.  Заранее Спасибо

    • Pingvin говорит:

      На данный момент просто осчитывается количество выпущенных патронов, и, если лимит исчерпан, просто загорается светодиод "патроны кончились" и таг больше не стреляет.
      Конечно, прошивку можно подправить.
      Да и схему тоже.
      Воспринимайте проект как некоторую "заготовку", от которой можно "оттолктуться" (базовый функционал есть) и смело экспериментируйте!
      Будут вопросы — постараюсь помоч.

  10. Александр говорит:

    Доброго времени суток. Уважаемый Pingvin. Я уже в плотную подошел к прошивке. Хочу сказать вам огромное спасибо за эту прошивку. Она сделана очень качественно, с чуством с толком))) заметил маленькую не точность в схеме. fire key должен быть подключен к порту PC1, а fire mode соответственно к PC7. видимо просто названия перепутались. Еще раз огромное спасибо.

    • Pingvin говорит:

      Совершенно верно — неточности есть, надо бы подправить, мне даже права админские дали на сайт, но я движок плохо знаю и боюсь чего нибудь тут поломать. :-(

       

  11. Александр говорит:

    честно говоря не разобрался как вернуть таг к жизни после того как у него кончилась обойма.((
     может вы мне подскажете? буду очень признателен. Кстати насчет фьюзов. я зашил их вот так
    CKSEL=1111, SUT=10, BODEN=0,BODLEVEL=0, BOOTRST=1,BOOTSZ=00, EESAVE=1, CKOPT=0, JTAGEN=1, 0CDEN=1. Заранее благодарен

    • Pingvin говорит:

      Я не планировал делать перезарядку.

      Просто запас патронов от 16 до 255.

      Но если Вам всё же хочется иметь такую функцию, можно, чтобы ничего не менять в схеме, сделать перезаряд при длительном нажатии на курок (например — 5 секунд).

      Соответственно, надо подправть прошивку.

      Кстати, я хочу ещё "античит" добавить — при отключении повязки будет звук и стрельба будет невозможна.

      Ещё есть версия прошивки (не выложена ещё) под 32 Атмегу с криком раненного бойца при попадании.  

    • Pingvin говорит:

      Да, про фьюзы…

      Я выставлял как указано тут в статье

      http://easyelectronics.ru/vnutrisxemnaya-otladka-avr-cherez-jtag-ice.html

      Кстати, и программатор по этой статье сделал — рекомендую!

    • Pingvin говорит:

      А чем программируете?

      Какой софт?

      Какой программатор?

  12. Pingvin говорит:

    Александр, а Вы плату уже протравили?

    Надеюсь, то версию, что с транзистором для ИК диода?

    А то в прошлой весии у меня диод через резистор напрямую к контроллеру был подключен.

    Отсюда файлы брали?

    https://github.com/PingvinOpenTag/LTAscetic.git

    А может, вообще сами по новой развели?

  13. Pingvin говорит:

    Натолкнули на мысль по поводу перезарядки — а если, когда закончатся патроны в обойме (загориться синий диод), просто "передёрним" переключатель режима огня туда-обратно?

    При этом можно и звук щелчка завора воспроизвести.

    Как такой вариант?

    Устроит?

  14. Александр говорит:

    Здраствуйте. Давайте обо всем по порядку. 
    Перезарядка. Я всетаки думаю что для реалистичности зарядка нужна. 16 патронов, даже если у тебя снайперская винтовка это уже слишком по спартански. а 100 уже как у пулемета, многовато. о вот стандарт типа 30 я думаю в самый раз. И перезарядка. Мне очень нравится идея с передергиванием режима огня для перезарядки. Я планирую использовать страйкбольный привод только без начинки в качестве ствола. и там будет подпружининый затвор. можно использовать концевой выключатель или контактный в конце хода затвора. передернул затвор перезарядился))) можно добавить задержку для реалистичности.
    По поводу софта и схемы. Я кстати пользуюсь программой codevisionAVR, там много полезных штук. и компилятор, я зашивать можно. но так как у них различия в названий стандартных библиотек, установил AVRstudio и компилятор. Пока не удобно но я думаю что привыкну, заметно что в программе много полезного, буду изучать. зашиваю USB прогромматором AVR910, на буке ЛПТ нету) очень доволен, работает стабильно без сбоев) Схему разводил сам, у меня мания все делать под себя, зато все свои косяки нашел, да и в схеме лучше ориентируюсь. тем более я использовал только смд элементы и мегу в TQFP корпусе поэтому и схему переделал) получилась 6см на 5см компактная, а самое главное односторонняя. 
    На счет античит, я считаю очень полезная штука, с ней будет намного лучше. темболее она полезна даже при повреждении провода который подключает датчики. будет сигнализировать о неполадках.
    По поводу  звуков. Крик раненного бойца просто бомба)))) обязательно нужно вставить, согласен купить 32 мегу для этого. я поигрался с прошивкой звуков конечно не хватает. Былобы не плохо добавить звук, самый простой при включении, когда произошла перезарядка звук затвора, может когда патроны кончаться металичетский звук бойка бьющего в холостую, как нажимаешь на курок а таг в ответ дзынь дзынь. Я думаю если наполнить работу тага звуками будет очень круто.

  15. Александр говорит:

    кстати насчет звуков. Может вам нужна помощь, например найти подходящий звук , может в нете поискать, или где с реального ствола записать. Как я понял чтобы написать звук нужно написать массив из скважностей, если можно так сказать. Хотя скважность это длительность, нет я все таки не понимаю как это делать. но если нужна помощь, пишите помогу чем смогу. мой ник в скайп Zoombyk, metl15@rambler.ru мое мыло, http://vk.com/id9483777 ID  вконтакте. 

  16. Pingvin говорит:

    Доброго времени суток, Александр!

    Смотрю — да Вы уже дел наворотили грамодьё!  :-)

    Очень рад, что проект Вас заинтересовал, вдвойне рад, что Вы творчески подошли к делу!

    Очень заинтриговали своей версией платы!

    Не планируете поделиться своими наработками с общественностью? ;-)

    И уж коли пошёл такой предметный разговор, может, перенесём его на просторы форума?

    Вы ещё не зарегестрированы там?

    Со звуками все намного проще — находите понравившийся звук, конвертируете его в RAW формат, а дальше …

    Врочем, все это уже описано на форуме!

  17. Pingvin говорит:

    И ещё, Александр, хочу поделиться "по секрету всему свету" своими планами.

    Хочу следующее поколение уже делать.

    Побаловался с внешней eeprom на 64 КБт (это 8 секунд звука), удалось воспроизводить звук, считывая данные непосредственно с неё.

    И ещё подключал ЖКИ на 2 ряда по 16 символов.

    Работает!

    Так что библиотечки уже есть, и добавить их к существующей прошивке — не проблема.

    Ну и RS232 для связи с компом.

    Звуки и прошивку можно будет так же через него менять.

    Еще "положил глаз" на флеш память — вообще копейки стоит, а объём мегобайт и выше.

    Аппаратный mp3 декодер тоже вещь интересная…

    Но время надо на все.

    И если бы Вы сочли для себя возможным поучавствовать в проекте, я был бы рад.

    Дело быстрее пойдет.

    Да и технологические возможности, смотрю,  у Вас на высоте — как смогли плату протравить под такие корпуса?

  18. Pingvin говорит:

    Былобы не плохо добавить звук, самый простой при включении, когда произошла перезарядка звук затвора, может когда патроны кончаться металичетский звук бойка бьющего в холостую, как нажимаешь на курок а таг в ответ дзынь дзынь. Я думаю если наполнить работу тага звуками будет очень круто.

    А в версии прошивки, что у Вас, нет звука при включении?

    Уже запутался, у меня их несколько — моя винтовка на 32 Атмеге при включении "пищит", а при попадании "кричит" как раненная. :-)

    • Pingvin говорит:

      Писать то комент начал, чтобы сказать — эти звуки и в 32 Атмегу "залезут" и без внешней eeprom.

  19. Александр говорит:

    Добрый день.
    Я с удовольствием поучаствую в проекте просто нужно детальней обсудить задачи, я помогу. Я думаю все получится. я зарегестрировался на форуме. не знаю, нужно ли открывать специальную тему под этот проект, или лучше все сделать в личном порядке. Кстати это не вы отправили мне приглашение в Скайпе, ник andrey_v_ch. Там нет никаких данных. жду ваших указаний)
    По поводу трасировки платы. Ничего сверхестественного. Единственная загвоздка в моем методе это ламинатор. а так, схема проста. лазерный принтер, пленка или даже глянцевая бумага, ламинатор травим, сверлим, собираем, радуемся. Кстати по поводу смд элементов и TQFP ATMEGA тут не все так страшно как вам кажется. даже скажу больше. Несколько месяцев я хотел сделать сделать демо-плату на корпусных элементах, после того как запаял 3 резистора. бросил это дело. И развел плату на смд. Технологических операций при пайке  стандартного смд(размер 1206) намного меньше. В итоге получается намного быстрее. а по поводу микроконтроллера — главное чтобы площадки под ножки протравились. а пайка совсем не сложная.
    Я подготовился, и купил 32мегу. очень хочется попробывать вашу прошивку если можно)
     

    • Pingvin говорит:

      Здравствуйте!

      Отлично, я очень рад!

      Тоже не вижу препятствий для реализации того, чего хотим!

      По Скайпу — это я "стучался"! :-)

      По поводу SMD монтажа — согласен полностью!

      Намного технологичней, да ещё если пользоваться паяльной станцией … :-)

      Сам планировал под SMD развести, но время … :-(

      Не поделитесь разводкой?

      И если Вы не против, можно и репозиторий добавить SMD-вариант.

      Могу Вам и доступ полный к нему предоставить.

      Что касается планов — для начала не плохо бы довести "до ума" то что уже имеем — добавить звуки, перезарядку.

      А дальше … ну в краце я уже описал выше.

      Я правильно понял — Вы схему собрали, прошили и они работают?

  20. Pingvin говорит:

    Прошивку под 32 Атмегу постараюсь выложить в ближайшее время, лико скину на "мыло"!

  21. Pingvin говорит:

    Выложил прошивку и исходники для 32 Атмеги.

    Ищите в репозитории. 

  22. Александр говорит:

    Спасибо за прошивку, сегодня буду записывать))))
    По поводу схемы, конечно я сброшу ее вам, давайте спишемся в скайпе, там договоримся.
    кстати сейчас делаю нехитрую приспособу в виде миншени, буду собирать излучатель из прицела, займусь пристрелкой ИК излучателя.
    Насчет работоспособности моей платы. Да я все зашил, сделал навесные шилды, с диодами, дипами. Я даже сделал 2 демо платы, чтобы стрелять друг в друга))) Все работает. Сегодня впаяю 32 мегу вместо 16, послушаю как она кричит)))

  23. Александр говорит:

    Ну да чуть чуть проще. жду вас в скайпе. Я там почти целый день
     

  24. ФТВКУН говорит:

    А есть у кого схема подключения датчиков??

  25. Pingvin говорит:

    Вам нужна схема датчика или именно как одключать?
    Датчики собраны по стандартной схеме — как у милеса или как LTKirov.
    Датчики подключаются к Con2 
    5V -"плюс" питания
    LED — на катод светодиода (анот через 300 Ом на плюс посажен)
    В схеме, к сожалению, есть неточности — кварц 16 МГц (под него в репозитории откомпелированная прошивка лежит), перепутаны FIRE_KEY и FIRE_MODE.
    И ГЛАВНОЕ!!!!
    Транзисторы должны быть КТ972А!
     
    GND — "минус" питания
    INT0 — на выход TSOPa
     

  26. Pingvin говорит:

    Чего то в коменте строки перепуталисью

    Если что — ищите меня на форуме.

     

  27. Greg говорит:

    Подскажите пожалуйста номиналы диодов на схеме с LCD на атмеге32  — D1-D5?
    Как я понимаю, на Д4 и Д5 пойдут 1n4148, Д3 — светодиод, Д1 и Д2 нужны для падения напряжения (так же 1n4148, по 0.6 падения на каждом).
    Поправьте меня пожалуйста, если где ошибся. Заранее спасибо!

  28. Pingvin говорит:

    Ток и 1n4748 маловат!

    У меня стоят 1n4007.

    D3 — не светодиод! Это диод защиты транзистора от индуктивной нагрузки.

    Вдруг вибромоторчик захотите подключить или релюшку.

    Практически готов новый релиз!

    Там добавлено max232 и внешняя eeprom.

    Это позволяет хранить больше звуков и менять их через COM-порт программой-конфигуратором.

    Так же основные настройки выполнять ей же.

    Только Атмега уже в SMD корпусе.

    Зарегистрируйтесь на форуме, там ветка есть LTascetic.

    Удобней будет общаться.  ;-)

    И спасибо, что написали — буду исправлять недочеты в документации! smiley

     

     

  29. Pingvin говорит:

    Прошивку в новой версии так же по COM-порту менять можно! 

  30. Денис говорит:

    Уважаемый Pingvin скажите пожалуйста, у вас модуляция ик диода с какой скважностью происходит? 50% ?

     

  31. Pingvin говорит:

    Да — скважность 50%.

  32. Артур говорит:

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

  33. Александр говорит:

    Парни а есть у кого проверенная печатная плата ?

  34. Pingvin говорит:

    Что имеется в виду под проверенной?

    Есть более поздние варианды плат — 3.0 и 3.1

    Или нужен именно первый релиз?

    Есть печатки заводского изготовления.

     

     

  35. Богдан говорит:

    Добрый день, Pingvin. Спасибо Вам за статью. Возникло несколько вопросов по прошивке, и схеме. Хотел бы переговорить по скайпу, если это в озможно. Мой ник: kotalan1. Зарание спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


5 − = 0

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>