Реклама

Home style lasertag (самодельный лазертаг)

Обсуждение технических нюансов лазертаговского оборудования потребительского и HSL классов

Модератор: Steavi

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение kain » 25 дек 2010, 23:21

G_S »

Шикарный макет)))
после нового года выложу фото своего макета, пока что он в стадии чертежа.
мыло: kain@sport.ru
kain
Сержант
Сержант
 
Сообщений: 73
Зарегистрирован: 22 сен 2010, 12:03

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение RadianTOR » 26 дек 2010, 00:59

2 G_S
Смотрится классно. Немного грубовато, но это придает оружию некую серьезность. А приклад удобный вышел? Кажется небольшой скос уходящий подмышку проситься.
Набережные Челны
RadianTOR
Рядовой
Рядовой
 
Сообщений: 18
Зарегистрирован: 24 дек 2010, 07:11

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение G_S » 26 дек 2010, 07:27

RadianTOR писал(а):2 G_S
Смотрится классно. Немного грубовато, но это придает оружию некую серьезность. А приклад удобный вышел? Кажется небольшой скос уходящий подмышку проситься.


В этом отношении приклад удобный. Скос был бы нужен, если бы верх тыльной части приклада был существенно ниже. Тут засада в большой толщине бункера - при стрельбе "от живота" будет тереться запястье правой руки (у правши) и, кроме того, надо повысить линию прицеливания, так как, в таком варианте, не получается организовать вырез под щёку. После Нового года, планируем сделать ещё пару вариантов без этих недостатков.
Аватар пользователя
G_S
Капитан
Капитан
 
Сообщений: 553
Зарегистрирован: 19 ноя 2010, 14:46

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение egride » 26 дек 2010, 09:25

Макет классный! И видно, что технологичный за исключением разве что ручки. Чертежи уже есть или пока только образец? Если есть то я был бы рад, если бы ты поделился. Да и многим думаю они помогут.

Еще у меня вопрос к тем кто в программировании разбирается. Я сейчас делаю протокол цифровой передачи данных, а именно дешифратор для приемной части его пишу. Код, как мы здесь решили будет передаваться смешанный цифро-аналоговый, а именно: в начале 2-3 байта данных, дублирующие друг друга, показывающие номер ствола или управляющую команду например на оживление. Затем будет следовать длинный аналоговый хвост из ноликов, которые система будет считывать и вычислять урон.

Вот как я собирался реализовать прием: ИК засветка вызывает прерывание, по которому тут же запускается таймер, который отсчитывает по 11 мкс. При достижении 11 мкс делается проверка состояния входа. если состояние изменилось (была короткая посылка), значит это ноль, если не изменилось, это единица. Далее через 11 мкс снова разрешаются внешние прерывания и запрещаются прерывания от таймера. И так обрабатывается каждый бит информации. в конце, девятым байтом будет бит четности, повышающий устойчивость к ошибкам.

А на деле у меня выходит вот что: Прерывания и таймер в отдельности работают как надо, а когда я пытаюсь запустить таймер из прерывания, то ничего не работает. И Совсем уж странная вещь получается: Зажигаем отладочный светодиодик (PORTB.3=1;), а он зараза тухнет сразу после выхода из процедуры внешнего прерывания, хотя нигде в тексте он не обнуляется.
В общем если мозги у кого-то не взорвались от моих описаний, прошу помощи ;)

bit i = 1; //Число произведенных за такт таймера проверок
bit buff = 0; //Буфер для принятого бита информации
unsigned char data_in = 0b00000000; //Итоговое значение принятого числа

// Обработка внешнего прерывания от засветки
interrupt [EXT_INT0] void ext_int0_isr(void)
{
GIMSK=0x00; //Запрет прерывания от засветки.
TCNT0=0x00; // Сбросим таймер при появлении засветки. Начнем отсчет времени.
TIMSK=0x04; //Разрешили прерывание от таймера.
i=1; //Следующее прерывание таймера будет первым
PORTB.3=1; //Отладочный светодиод
}

// Обработка прерывания от таймера для промежуточной проверки засветки.
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
if ((PIND.2 == 1) && (i == 1)) { //Если засветка не прекратилась...
buff=0; //Значит приняли "ноль"
TCNT0=0x00; // Сбросим таймер. Начнем отсчет заново
}
if ((PIND.2 == 0) && (i == 1)) {
buff=1;
TCNT0=0x00; //Сбросим таймер. Продолжим заново считать время.
TIMSK=0x04; //Разрешили прерывание от таймера.
}
if (i == 0) {GIMSK=0x40;} // Разрешим прерывания от засветки после второго круга таймера. В этот момент засветка гарантировано закончится.
i--;
}
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение egride » 26 дек 2010, 09:37

Ай, да. Забыл сказать. Код сейчас под Tiny2313. Отлаживаю в ней, т.к. нету меги8 в дипе. Назначения ножек следовательно немного другие.
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 26 дек 2010, 09:58

MidnightDreamer писал(а):
Круто! Собираюсь пойти по такому же пути, а отсюда вопрос - материалы и технология изготовления. Видел на фотке сварку, это удручает, т.к. нет сейчас под рукой.

Квадратная металлическая труба - это что, и где берется? Можно найти в строительном магазине или только в слесарных мастерских-заводах? ;) Все что я пока видел - это жестяной П-образный профиль 50х50 для монтажа настенных или потолочных панелей, но там толщина стенки едва 1мм. придется как-то армировать дополнительно изнутри. Зато сверху уже готово "окно" и из двух таких профилей легко сделать корпус с откидывающейся крышкой.

Какой материал использовал для изящного полукруглого кожуха, который удерживает тубус излучателя? Излучатель тоже металл?

А, чуть не забыл... Какой получился вес? ;)

З.Ы. Сразу массовое производство наладил? Неужели не страшно растиражировать какую-нибудь неучтенную ошибку на всю партию?


На самом деле сварки не так и много но это самый технологичный метод соединения металлических частей. Квадратная труба это такой вид металопрофиля используюшихся в строительстве. Приобретается на любой металобазе стоит сущие копейки ( в таком виде себестоимость макета рублей 60 получается ). Кожух излучателя закрыт крашеной нержавейкой нержавейкой. Излучатель канализационная труба диаметром 40мм ( думаю нет смысла ставить что то крепче при такой броне вокруг). Вес примерно 1,2 кг хотя выглядит на все 4. Пока в изготовлении 6 макетов причем 2 идут со значительным опережением для отработки технологии. А вообще чем и хорош металл что всегда при помоши сварки и болгарки все можно исправить.

G_S писал(а):может стоит укоротить ствол и добавить приклад (лучше складной) Судя по спусковому крючку, с качественным исполнением защёлки проблем возникнуть не должно.


ствол планируется укоротить сантиметров на 5 но это после покраски одного из макетов будет видно ( восприятие некрашеного металла немного другое ). Приклад скорее всего будет по крайней мере в проекте есть вот только будет он откидоваться или нет и как в бок или под основание как в МР40 пока не определился это же промежуточная стадия макета. Но точно знаю что сверху должна быть рукоять для переноса оружия и установки прицельного преспособления.

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

RadianTOR писал(а):У мега128 действительно побольше возможностей. Жаль только в PDIP корпусе её нет. Но если разница в цене тоже такая разительная, по отношению к мега8, то ИМХО лучше использовать 2шт. мега8. Будет полная паралельность процессов.
Можно даже распараллелить так: первая на звук и стрельбу, вторая на обработку ИК датчиков. (Тут появиться возможность распределить датчики по весам, и медленный eeprom заюзать для статистики, но это уже другая история ...)
Связался Михаилом, буду заказывать 8-е.


Я с тобой согласен что паралельная работа двух 8 в данном случае сделает 128 по быстродействию вот только необходимость использовать внешнюю eeprom выведет себестоимость проекта за цену 128. Если делать звук отличный от пиу-пиу то 128 руль потому как можно все звуки зашить в область памяти программ и тогда обработка прерывания от PWM сведется к паре строчек кода что для пользование пройдет незамеченным в плане быстродействия. Если программа пишется на языке С то изменение звуков будет сводится к прошивке всей микросхемы но в обработчике прерываний от PWM необходимо использовать функцию sizeof что бы получить конечный индекс массива того или иного звука а сам массив выполнить как:

union имя объединения
{
массив[ размер ] = { hex представление файла wav с обрезаным рифом }
} обявление объединения;

тогда тело прерывания будет выглядеть так:

static unsigned int i;

while( i < sizeof( объединения )
{
OCRA0 = объединение.массив[i];
++i;
break;
}
i = 0;

а для запуска воспроизведения звука достаточно указать имя массива в котором хранится тот или иной звук и запустить в работу таймер который работает в режиме PWM ( в примере это Т0 с выводом звука на OCA0 )
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 26 дек 2010, 10:11

egride писал(а):Еще у меня вопрос к тем кто в программировании разбирается. Я сейчас делаю протокол цифровой передачи данных, а именно дешифратор для приемной части его пишу. Код, как мы здесь решили будет передаваться смешанный цифро-аналоговый, а именно: в начале 2-3 байта данных, дублирующие друг друга, показывающие номер ствола или управляющую команду например на оживление. Затем будет следовать длинный аналоговый хвост из ноликов, которые система будет считывать и вычислять урон.

Вот как я собирался реализовать прием: ИК засветка вызывает прерывание, по которому тут же запускается таймер, который отсчитывает по 11 мкс. При достижении 11 мкс делается проверка состояния входа. если состояние изменилось (была короткая посылка), значит это ноль, если не изменилось, это единица. Далее через 11 мкс снова разрешаются внешние прерывания и запрещаются прерывания от таймера. И так обрабатывается каждый бит информации. в конце, девятым байтом будет бит четности, повышающий устойчивость к ошибкам.

А на деле у меня выходит вот что: Прерывания и таймер в отдельности работают как надо, а когда я пытаюсь запустить таймер из прерывания, то ничего не работает. И Совсем уж странная вещь получается: Зажигаем отладочный светодиодик (PORTB.3=1;), а он зараза тухнет сразу после выхода из процедуры внешнего прерывания, хотя нигде в тексте он не обнуляется.
В общем если мозги у кого-то не взорвались от моих описаний, прошу помощи ;)

bit i = 1; //Число произведенных за такт таймера проверок
bit buff = 0; //Буфер для принятого бита информации
unsigned char data_in = 0b00000000; //Итоговое значение принятого числа

// Обработка внешнего прерывания от засветки
interrupt [EXT_INT0] void ext_int0_isr(void)
{
GIMSK=0x00; //Запрет прерывания от засветки.
TCNT0=0x00; // Сбросим таймер при появлении засветки. Начнем отсчет времени.
TIMSK=0x04; //Разрешили прерывание от таймера.
i=1; //Следующее прерывание таймера будет первым
PORTB.3=1; //Отладочный светодиод
}

// Обработка прерывания от таймера для промежуточной проверки засветки.
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
if ((PIND.2 == 1) && (i == 1)) { //Если засветка не прекратилась...
buff=0; //Значит приняли "ноль"
TCNT0=0x00; // Сбросим таймер. Начнем отсчет заново
}
if ((PIND.2 == 0) && (i == 1)) {
buff=1;
TCNT0=0x00; //Сбросим таймер. Продолжим заново считать время.
TIMSK=0x04; //Разрешили прерывание от таймера.
}
if (i == 0) {GIMSK=0x40;} // Разрешим прерывания от засветки после второго круга таймера. В этот момент засветка гарантировано закончится.
i--;
}



Конечно взорвались :) но идея понятная.

Все гораздо проще.

тебе надо в настроить внешнее прерывание на по спаду, а по изменению на пине.во внешнем прерывании ты анализируешь по какому фронту ( переднему или заднему ) произошло прерывание и если прерывание произошло по спаду ( задний фронт) ты просто запускаешь таймер. По пришествию переднего фронта ты останавливаешь таймер и анализируешь его значение если значение укладывается в интервал для 0 то это 0 если в интервал для 1 то это 1. При таком алгоритме прерывание от таймера не нужны.


А светодиод тухнуть не должен судя по твоей проге.
У тебя перекрестные прерывания. Внешнее прерывание разрешает прерывание от таймера а в теле прерывания от таймера разрешаются внешние прерывания.
Ты не запрещаешь прерывание от таймера но при этом разрешаешь внешние прерывание хотя у тебя перекрестное управление должно быть вот тут конфликт гарантирован.
Еще причиной конфликта может быть выполнении команды GIMSK = 40; вот здесь сразу при выходе из прерывания по таймеру возможно возникновение поразитного прерывания ( почитай даташит я такое встречал ( описание внешних прерываний ) существуют условия при которых возникают поразитные внешние прерывания )

И еще Братья по разуму обясните мне зачем ущерб передавать какими то хвостатыми посылками если можно передать это байтом как у того же Miles помоему ваше усложнение только ухудшает помехозащищенность ситемы.
У меня передается 3 байта
1. - информация о том чем ты был поражен ( игроком или игровым гатжетом )
2. - информация о силе поражения в % ( не может превышать 100 )
3. - контрольная сумма

При использовании такой посылки мы имеем возможность использовать 127 гатжетов и кол-во одновременных игроков может достигать 127. Уменьшением ко-ва гатжетов можно зарезервировать коды команд для передачи служебной информации как то програмирование сценариев через датчики и управление игрой с пульта управления.


P.S

Всем начинающим прогерам кто еще не прочитал книгу Алена Голуба "правила програмирования на языке С и С++" рекомендую прочесть. Там в очень легкой форме объясняется как правильно писать программы которые в дальнейшем станут понятны всем кто знаком с этими языками.

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

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

это цитаты из книги Алена Голуба.
Последний раз редактировалось jong73 26 дек 2010, 10:55, всего редактировалось 1 раз.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение egride » 26 дек 2010, 10:53

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

Твоя система мне тоже понятна. Может я тоже попробую так сделать, только вот что делать, если произойдет сбой при передаче. Контрольная сумма не совпадет. Каковы будут действия приемника?

Забавные цитаты :) А книжка заточена под МК или просто СИ? Еще не направите ли меня на путь истинный чем отлаживать проги написанные в CvAVR? Я их в железе тестирую. С VMLAB разобраться так и не смог, хотя не раз пытался.
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 26 дек 2010, 11:00

Ничего страшного. Байты посылки следую один за другим без паузы. При приеме заголовка я устанавливаю флаг начала посылки и запускаю таймер тайм-аута посылки. Если за отведенное на прием посылки время, посылка была принято не целиком я не считаю это поражением и воспроизвожу звук пули. Неверная посылка то-же не считается попаданием и так же воспроизводиться звук пролетевшей мимо пули.

Книжка заточена под язык. Основной концепт книги в том что языки высокого уровня схожи с нормальным человеческим языком а принципы построения программ поддаються законам жизни. Как утверждает автор лучшие програмисты не математики а люди гуманитарных профессий которые могут человеческим языком поставить задачу. Почитай книга зачетнейшая. Сразу в програмировани все упростится до смешного. И в языках высокого уровня нет заточки под конкретное устройство просто в некоторых компиляторах вводят дополнительные возможности ( компиляторы заточены ).

Куски кода тотлаживаю в AVR Studio только там не работают некоторые моменты как то прерывания от TWI и не видо работы WDR
Последний раз редактировалось jong73 26 дек 2010, 11:08, всего редактировалось 1 раз.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение egride » 26 дек 2010, 11:04

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

Книжку уже качаю. Почитаемс... :)
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 26 дек 2010, 11:16

egride писал(а):Как думаешь, редко будут случаи, что при прямой наводке (или почти прямой на гране чувствительности) не дойдут некоторые биты? Тогда выходит дальность ограничена дистанция четкого безошибочного приема.


ССылу дай откуда качаешь а то меня просили а я её уже давно удалил потому как прочел её еще лет 7-8 назад

Поверь все будет хорошо я проверял. 200м при токе через диод 400ма и оптике на основе канцелярской лупы день солнечный небольшая дымка как с куста 100 из 100 думаю еще снижать ток.

Курсант: А что если на горе стоит нинзя и делает маятьник?
Подполковник: Точный прицел и плавный плавный спуск.

Реальный бой сильно отличается от игры какой бы симулятор не использовали. Смерть это конец! И находясь под огнем попасть в бегущего противника гораздо сложнее чем поразить мишень в тире. Поверь.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область


Re: Home style lasertag (самодельный лазертаг)

Новое сообщение jong73 » 26 дек 2010, 11:23

КодеВижен создает файл с расширением cof вот его и надо открывать приотладке проекта и отлаживать по коду С тогда не возникае проблемм. А библиотечные файлы подключаются к проекту процедурой препроцессора #include <путь к файлу>

За ссылку спасибо.
Последний раз редактировалось jong73 26 дек 2010, 11:31, всего редактировалось 1 раз.
Аватар пользователя
jong73
Капитан
Капитан
 
Сообщений: 421
Зарегистрирован: 29 окт 2010, 07:19
Откуда: Шахты Ростовская область

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение egride » 26 дек 2010, 11:31

Забавные анекдоты, особенно про программиста очень актуально :) Буду читать в свободное время. За подсказки спасибо!
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

Re: Home style lasertag (самодельный лазертаг)

Новое сообщение G_S » 26 дек 2010, 11:43

egride писал(а):Макет классный! И видно, что технологичный за исключением разве что ручки. Чертежи уже есть или пока только образец? Если есть то я был бы рад, если бы ты поделился. Да и многим думаю они помогут.


Чертежи есть, но я вносил небольшие изменения в процессе изготовления, как подкорректирую - выложу. Поскольку делал в автокаде, могу выслать dwg, а так экспортирую в pdf

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

jong73 писал(а):ствол планируется укоротить сантиметров на 5 но это после покраски одного из макетов будет видно ( восприятие некрашеного металла немного другое ). Приклад скорее всего будет по крайней мере в проекте есть вот только будет он откидоваться или нет и как в бок или под основание как в МР40 пока не определился это же промежуточная стадия макета. Но точно знаю что сверху должна быть рукоять для переноса оружия и установки прицельного преспособления.

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


Спасибо, посмотрим как в эксплуатации. А ручка будет очень в тему. Я тоже сначала планировал с ручкой, но потом пришлось отказаться, слишком большая нагрузка получалась на крышку коробки.
Аватар пользователя
G_S
Капитан
Капитан
 
Сообщений: 553
Зарегистрирован: 19 ноя 2010, 14:46

Пред.След.

Вернуться в Оборудование потребительского / HSL классов: технические вопросы

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron