Реклама

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

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

Модератор: Steavi

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

Новое сообщение egride » 01 май 2011, 14:37

Не кипешуйте ;) Мега8А это обновленная Мега8 и ничем (за исключением мелочей) от нее не отличается. С производства никто ничего снимать не собирается. Я уже давно все чипы только с буквой "А" и использую. Старых почти нет уже.
egride
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 248
Зарегистрирован: 18 сен 2010, 10:27

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

Новое сообщение LtagKirov » 02 май 2011, 09:01

Тема в работе, но я сейчас очень сильно занят много дел, потому отложена на пару недель.
LtagKirov
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 260
Зарегистрирован: 20 сен 2010, 22:02
Откуда: Киров

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

Новое сообщение MidnightDreamer » 10 май 2011, 17:40

Наткнулся на одном из заграничных сайтов на интересный способ оформления датчиков - монолитные цельнозалитые в формочке какой-то акриловой субстанцией типа эпоксидки! Абсолютно неремонтопригодные, но при этом обалденно защищенные от влаги и прочные! ) А сделать другой -копейки и пол дня на застывание!

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

http://www.youtube.com/watch?v=3wxdvIdDv1w
MidnightDreamer
Майор
Майор
 
Сообщений: 1054
Зарегистрирован: 17 сен 2010, 15:00

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

Новое сообщение KorSar » 16 май 2011, 10:12

Что-то затихли все.
Тем временем я потихоньку пытаюсь решить проблемку приметивного разкодирования сигнала. ТОлько для защиты от помех солнца (переход свет/тень)
задавал в прошивку Сергея пару вариантов, но пока без результатов. Все равно срабатывает на солнце.
Может кто занет алгоритм и какого характера сама помеха.

Я сейчас пытаюсь задавать
Распознование количество посылок (сколько посылок (неважно 1 или 0 ) было) за определенный промежуток времяни (время существования сигнала + короткий промежуток его отсутствия) .
Делаю для Miles.
У кого какие идеи и знания? А то я действую на обум.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

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

Новое сообщение koppet » 16 май 2011, 10:38

KorSar писал(а):Что-то затихли все.
Тем временем я потихоньку пытаюсь решить проблемку приметивного разкодирования сигнала. ТОлько для защиты от помех солнца (переход свет/тень)
Как вариант - добавить бит четости, чтоб отсеивать битые пакеты.

offtop:
Ребят, выб выложили централизованно куда-нить в открытый доступ наработки. Какие схемы актуальны, какой протокол. Стороннему человеку совсем ничего не понять - прочитал всю тему, похоже, что прошивку передаете через e-mail друг другу (та что на ltagkirov - уже скомпилирована).
koppet
Рядовой
Рядовой
 
Сообщений: 44
Зарегистрирован: 12 май 2011, 10:46
Откуда: Пермь

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

Новое сообщение KorSar » 16 май 2011, 10:59

koppet писал(а):
KorSar писал(а):Что-то затихли все.
Тем временем я потихоньку пытаюсь решить проблемку приметивного разкодирования сигнала. ТОлько для защиты от помех солнца (переход свет/тень)
Как вариант - добавить бит четости, чтоб отсеивать битые пакеты.

offtop:
Ребят, выб выложили централизованно куда-нить в открытый доступ наработки. Какие схемы актуальны, какой протокол. Стороннему человеку совсем ничего не понять - прочитал всю тему, похоже, что прошивку передаете через e-mail друг другу (та что на ltagkirov - уже скомпилирована).

Так и есть, исходники нам высылает автор, т.к. выкладывать в открытый доступ не желает.
Вы в програмировании МК разбираетесь? Может выслать исходники? Я думаю ltagkirov против не будет, если пользы ради.
Протокол.
В оригинале просто посылка 16 мс. Прием: фиксируется сигнал 4 мс. Никакого кодирования нет. По этому в солнечную погоду не поиграть (при переходе свет/тень - срабатывание).
Я задал посылку протокола Miles II (но с живым Miles не проверял). А вот с приемом (простейшим распознованием для защиты от солнца) сейчас и бьюсь. Свой/чужой пока не нужно (это более далекие планы).
Последний раз редактировалось KorSar 16 май 2011, 11:06, всего редактировалось 1 раз.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

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

Новое сообщение koppet » 16 май 2011, 11:02

Буду премного благодарен.
koppet
Рядовой
Рядовой
 
Сообщений: 44
Зарегистрирован: 12 май 2011, 10:46
Откуда: Пермь

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

Новое сообщение jong73 » 16 май 2011, 12:17

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

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

Новое сообщение KorSar » 16 май 2011, 12:37

В Miles II в посылке контрольной суммы нет.(??). Значит дублировать посылку инвертированными данными.
Т.е. Посылку нужно добавлять?
Я, честно говоря, не очень понимаю физику процесса.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

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

Новое сообщение koppet » 16 май 2011, 12:43

проверка четности как раз и даст - битый/не битый пакет. +можно игнорировать всплески по длительности меньше какого-нить порога (например, взять для майлс всё что меньше 300us - не существенно). зачем дублировать - не ясно :( из дублирования того же, но инвертированного, даже ведь и не восстановить исходника. может тогда лучше слать пакет выстрела дважды/трижды (и таки да, добавить контрольную информацию - четность/crc/т.п.)?
koppet
Рядовой
Рядовой
 
Сообщений: 44
Зарегистрирован: 12 май 2011, 10:46
Откуда: Пермь

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

Новое сообщение jong73 » 16 май 2011, 12:44

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

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

Новое сообщение LtagKirov » 16 май 2011, 14:57

KorSar писал(а):Что-то затихли все.


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

KorSar писал(а): пытаюсь решить проблемку разкодирования сигнала.
ТОлько для защиты от помех солнца (переход свет/тень)


В аналоговом сигнале не избавится от помех солнца, иначе придётся точно измерять длительность принятого сигнала, и пропадёт вся "вкусность" аналогового сигнала - дальнобойность при слабом ИК излучателе. Нужно переходить на кодирование. У меня при модуляции Майлс/Полигон (PCM), дальность связи меньше на 20..30% при одинаковых излучателях и подводимых к ИК мощностях по сравнению с аналоговым или PSK кодированием. Мощность ИК пули при любой модуляции можно существенно увеличить, если изменить скважность несущей с 50% до 70..80%, минусы - батареи расходуются сильнее, ИК диод нагревается - особенно при бесконечной очереди, можно даже сжечь неправильной программой ;), программа усложняется без прерываний обойтись уже не получается.

Простой алгоритм для приёма Майлс/Полигона, модуляция PCM, цифры примерные ;)

1. Ждать приёма ИК сигнала
2. Измерить длительность импульса, фильтруя мелкие пропадания сигнала
3. Обнаружна длинная пауза, оценить длинну импульса,

если длительность не менее 1200мс - значит преамбула
нет обозначить близкий выстрел, вернутся на начало 1 пункт

4. Обнаружена преамбула, теперь ждём импульс ноля или единицы - определять конец импульса по длинне паузы
один или ноль принят вычислять по длинне импульса.

Всё работает, при отсутствии серьёзных помех. От коротких пропаданий ИК сигнала, помогает фильтр. От помех в виде "иголок", в основном солнце (тень от куста с множеством листьев), уже не помогает. Как определить начало преамбулы или бита если он повреждён пакетом "иголок" ?- фильтр уже не работает, а если включить его, то будет затянут фронт и длинна посылки сильно искажается. При появлении помехи от солнца, придётся просто отбрасывать пакет по ошибке контрольной суммы. Если выпадает хоть один бит то все остальное тоже принимаются с ошибкой. Для модуляции с постоянной бодовой скоростью (PSK), такое не происходит, и вероятность доставки пакета сильно повышается, почти сравниваясь с аналоговым кодированием.

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


Бит чётности слабо поможет (50/50), нужна контрольная сумма (хэш функция). От помех солнца непоможет, будет сигнал "близкий выстрел", но это лучше чем "поражение". Схема есть на форуме (последняя) и на сайте(первая версия).


KorSar писал(а):> Ребят, вы-б выложили централизованно куда-нить в открытый доступ наработки.
Может выслать исходники? Я думаю ltagkirov против не будет, если пользы ради.


Исходники первой версии не рапространяются через сайт, по двум причинам. Основная - чтобы не делали из запорожца мерседес :) Программа примитивная, если её переделывать, получатся "макароны" а не программа, надо писать заново. Вторая причина это побуждает действительно заинтересованных людей написать письмо. По количеству писем могу сказать что все кто интересуется разработкой лазертага, уже отметились в этой ветке форума ;)
LtagKirov
Ст. Лейтенант
Ст. Лейтенант
 
Сообщений: 260
Зарегистрирован: 20 сен 2010, 22:02
Откуда: Киров

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

Новое сообщение trener » 16 май 2011, 16:30

Если я правильно понимаю то модуляцию PCM мы не можем использовать, так как сигнал у нас вовсе не аналоговый а цифровой, то что при передаче идёт модуляция с частотой 36 кгц, это связано только с применяемым в схеме ИК приёмником, это условие его работы, а стало-быть мы не можем менять частоту модуляции как предполагает (PCM). На выходе-же фотоприёмника мы получаем только 0 или 1 , это тоже не аналоговый сигнал.
Поэтому используя заводские фотоприёмники мы можем применять только цифровую кодировку сигнала, например RC5.

http://avrlab.com/node/74

Такая кодировка сигнала будет в любом случае получше чем полное отсутствие таковой.
trener
Рядовой
Рядовой
 
Сообщений: 40
Зарегистрирован: 02 апр 2011, 18:53
Откуда: Донецк

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

Новое сообщение KorSar » 16 май 2011, 18:29

Я попробовал так переделать часть программы. Переделывая так и эдак один раз у меня получилось, что не было реакции на включение света и пульт.
Но при этом что-то сбивалось (думаю какой-то счетчик не обнулялся) и переставало реагировать на все.
Вернее так если включить и стрелять то все ок, если дать помеху (пульт тв лампа), то не реагирует и перестает после этого реагировать вовсе.
Вот последний вариант, правда реагирует на все. Думаю нужно подобрать значение для clkIRS в строке if (clkIRR==14 && clkIRS<190) //

// ------------------------------------------------------------------------------
// Автомат для ИК датчика IRR D.2, выход датчиков открытый коллектор,
// при появлении засветки ИК сигнала замыкается на землю.

// Объявление звуковых сигналов состояния оборудования
#define onEndGame 0 // Конец игры - длинный гудок, иди на базу '----'
#define onBase 1 // Игрок на базе '-..' Домики
#define onShot 2 // Противник попал в игрока '.'
#define onStop 9 // Все звуки успешно проиграны и закончены.
#define offShot 10 /// Осечка

unsigned char numSound = onStop;// Текущий проигрываемый звук.
unsigned char PscSound = 0; // Прескалер для звука, 0 .. 255
unsigned int clkSound = 0; // Часы автомата проигрывания звуков, 0..65535

#define ALive 3 // жизни
#define PinIRR PIND.2

// Переменные
unsigned char OutGame = 1; // Игрок закончил игру
unsigned int clkIRR = 0; //
unsigned int clkIRB = 0; // счетчикнизкого уровня - сигнала
unsigned int clkIRA = 0;
unsigned char AB = 0;
unsigned char AD = 0;

unsigned char clkIRL =0;
unsigned int clkIRS =0;// счетчик сравнения


inline void AvtIRR()
{
if ( OutGame == 1 ) return;
if (PinIRR == 0) // Если сигнал низкого уровня сигнал фиксируется
{
clkIRB++; // то запускаем счетчик и считаем пока есть этот сигнал

clkIRS++; // запускаем счетчик сравнения он должен досчитать до
if (clkIRB >= 6 && clkIRB <= 10 ) // если попадает в интервал
{
AD=1; // то переменной AD присваиваем 1.

clkIRB=0; // и сбрасываю счетчик интервала низкого уровня
}
else return; // иначе выхожу
};

if (PinIRR == 1 && AD == 1 ) // Если на ноге высокий уровень (отсутствие сигнала) и ему предшествовал низкий уровень сигнал

{
clkIRA++; // то запускаем счетчик RA и считаем пока сигнал отсутствует

if (clkIRA >=3 && clkIRA <= 6 ) // если попадает в интервал
{
AB=1; // то АВ присвоить 1
clkIRA=0; // и сбросить таймер интервала высокого уровня

if (AD==1 && AB==1) // если два условия выполнились, т.е. сигнал хх мс принят, а за ним был промежуток хх мс
{
AD = 0; // Эти флаги нам больше не нужны можем их сбросить
AB = 0;

clkIRR++; // Вот теперь считаем переходы (0…255)


if (clkIRR==14 && clkIRS<190) // если было 14 переходов и они были зафиксированы в промежуток времяни >ХХХ (нужно уточнять, подбирать)

{ clkIRR=0; clkIRS=0; clkIRL++; numSound = onShot; return;} то считаем попадания и збрасываем счетчики


if (clkIRL > ALive) // После каждого попадания проверяем осталась ли еще жизнь если не осталось....
{
OutGame = 1; // Игрок выходит из игры
AmmoClip= 0; // Блокировка выстрелов, пустая обойма
PortEmptyLed = 0; // Включить светодиод "Обойма"
clkSound = 0; // Остановить проигрывание других звуков
numSound = onEndGame; // Включить звук "Конец Игры"
return;
}
}
else // иначе ( оба условия не выполнились )
{
AD = 0; // Эти флаги нужно сбросить потому как один из них может быть установлен
AB = 0;
}
}
}

} // конец автомата обработки ИК датчика
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

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

Новое сообщение KorSar » 16 май 2011, 18:35

LtagKirov писал(а):В аналоговом сигнале не избавится от помех солнца, иначе придётся точно измерять длительность принятого сигнала, и пропадёт вся "вкусность" аналогового сигнала - дальнобойность при слабом ИК излучателе.

Выбирать не приходится либо терять вкусность либо не играть вовсе на солнышке, а сейчас весна, лето. Зимой было все ок.
пуля - дура, луч - молодец
KorSar
Капитан
Капитан
 
Сообщений: 409
Зарегистрирован: 17 сен 2010, 06:36
Откуда: Санкт-Петербург

Пред.След.

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

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

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

cron