имитация радиации

si4re
Offline
Зарегистрирован: 02.10.2014

Добрый день.

Выезд на природу. Там играем в коммандную игру сталкер.
Нужно придумать имитацию нахождения в зоне радиации.
При нахождении на определенной территории устройство будет каждую секунду  отнимать по 5% жизни.
Важно: 1. Зону радиации нужно регулировать! 
            2. Как в фильме Тарковского, нужно что-то (устройство) привязывать к веревке и забрасывать. Если есть                      радиация - оно должно пищать.
 
На чем лучше все организовать?
Варианты, которые я вижу:
1. Радио маяки и приемники на 433мГц.
   Мощность маяков можно регулировать - уменьшая радиус.
 
2. Bluetooth или WIFI на смарфоне.
   
у кого есть какие мысли?
 
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

квесты снова))

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

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

inspiritus
Offline
Зарегистрирован: 17.12.2012

.... а какоого размера должна быть зараженная зона ?

si4re
Offline
Зарегистрирован: 02.10.2014

от 10 до 30 метров

примерно

si4re
Offline
Зарегистрирован: 02.10.2014

почему опять квесты?))

уже были?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

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

а зачем регулировать дальность от многих окружающих параметров ?
чем изрезаннее диаграмма заражения - тем интересснее.... нет ?
один передатчик имитирует зараженность радиусом 100 м +/- 20 м
другой - имитирует зараженность радиусом 50 м +/- 10 м
третий - лишь бы не на пол-Европы.... проходили....
:(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

si4re пишет:

почему опять квесты?))

уже были?

ага ! были и будут....

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

т.е. - у каждого игрока не только волына с шариками , а и ещё ардуина ?
...для учёта облучения ?
круто , но дороговато будет ! 

si4re
Offline
Зарегистрирован: 02.10.2014

дорого?

у меня есть решение на Pic - вприципе спаять можно, но при вводных данных и замене комплектующих на arduino решение лучше.

 

 

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

может быть не поняли - или я не понял :
- у каждого игрока будет по ардуинке ?
на каком камне дешевле - тибе решать :)

si4re
Offline
Зарегистрирован: 02.10.2014

да у каждого

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

а как другие игроки узнают что какой-то юнит "облучён до смерти" и на него можно не обращать внимания ?
и ещё 1001 вопрос.....

si4re
Offline
Зарегистрирован: 02.10.2014

данные о смерти можно передавать на центральный сервер.

Судья видит это и принимает решение

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

нет вопросов !
реализуете это всё в железе - сюда выложите ?

1. Радио маяки и приемники на 433мГц.
   Мощность маяков можно регулировать - уменьшая радиус.

да

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

20 сек на территории с радиацией и сдох. не маловато ли?

Coolerr
Offline
Зарегистрирован: 30.06.2014

У меня готовая система есть, для страйкболистов делал.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

jeka_tm пишет:

20 сек на территории с радиацией и сдох. не маловато ли?

не суди..... 10 сек и через час сдох...
так и было :(

в игре можно всё отмаппить же , нет ?
можно дифференцировать время нахождения , уровень и время нахождения ТАМ....
только кто код напишет-то ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Coolerr пишет:

У меня готовая система есть, для страйкболистов делал.

она ( система ) - логическая или на МК построена ?

Coolerr
Offline
Зарегистрирован: 30.06.2014

На мк

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

прикольно...
поделитесь кодом ?

Coolerr
Offline
Зарегистрирован: 30.06.2014

Там такой расклад. Датчиков три типа, один активирует приемники, второй имитирует радиацию, третий химзаражение. На приемнике обратный таймер при попадании под радиацию сразу кирдык, под химзаражение 15минут обратного отсчета, есть кнопка для огнестрельного попадания(для страйкбола же). Передатчики на Attiny2313, приемники Atmega8.

ПРИЕМНИК

#define SEC 8                                                
#define DSEC 10                                                
#define EMIN 11
#define DMIN 12                                                                                                                           
#define ON HIGH                                               
#define OFF LOW 
#define buttonFire 13
#define dp 9  
#define STD A2                              
unsigned long oldtime=0;
unsigned long oldTime=0;
int razr[4];                                                
unsigned int simbol[]={128,182,66,18,52,24,8,178,0,16,0};            
byte es=0;                                                  
byte ds=0;                                                    
byte em=0;
byte dm=0;
byte point=1;
char radio=0;   
boolean fire=0;
byte inc=0;
boolean flag=false;
boolean go=0;
boolean stled=0;
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);pinMode(4,OUTPUT);
pinMode(5,OUTPUT);pinMode(6,OUTPUT);
pinMode(7,OUTPUT);pinMode(SEC,OUTPUT);
pinMode(DSEC,OUTPUT);pinMode(EMIN,OUTPUT);
pinMode(DMIN,OUTPUT);pinMode(STD,OUTPUT); 
pinMode(buttonFire,INPUT);
pinMode(dp,OUTPUT);
digitalWrite(buttonFire,HIGH);
Serial.begin(2400);
}


void loop()                                               
{
while(go==0){
if(Serial.available()>1){   //
if(Serial.read()=='D'){
delay(10);                                 //
radio=Serial.read();                       //
if(radio=='q'){
  go=1;        
}  //
	               }                   //
	               }
digitalWrite(SEC,ON);digitalWrite(2,ON);digitalWrite(3,ON);digitalWrite(4,ON);
digitalWrite(5,ON);digitalWrite(6,ON);digitalWrite(7,ON);
}
digitalWrite(dp,ON);            //
while(flag==true)pizdedz();                          //                  //
if(Serial.available()>1){                    //
if(Serial.read()=='D'){                    //
delay(10);                                 //
radio=Serial.read();                       //
if(radio=='x'){
tone(A1,2500,1000);
digitalWrite(STD,OFF);  //                             //                        //                             
flag=!flag;                                // 
es=1;                                      // Обработка радио
ds=0;                                      // 
em=5;                                      //
dm=1; 
Serial.end();
pinMode(1,OUTPUT); //
print();                                   //
                          }                //
	               }                   //
	               }

if(Serial.available()>1){                    //
if(Serial.read()=='D'){                    //
delay(10);                                 //
radio=Serial.read();                       //
if(radio=='c'){
tone(A1,2500,1500);
Serial.end();
pinMode(1,OUTPUT); //
flag=!flag;                                   //
                          }                //
	               }                   //
	               }
fire=digitalRead(buttonFire);//опрос кнопки
   if(fire==true)inc=0;//если кнопка в исходном счетчик обнуляется
   if(millis()-oldTime>200){
    stled=!stled;
     if(fire==false&&flag==false)inc++; //если кнопка нажата инкрементируем счетчик
      oldTime=millis();
}
digitalWrite(STD,stled);
  if(inc==10){          //
Serial.end();                          // 
pinMode(1,OUTPUT);
digitalWrite(STD,OFF);//   Обработка кнопки огнестрел
flag=!flag;                            //
es=1;                                  //
ds=0;                                  // 
em=2;                                  //
dm=0;                                  //
print();                               //
               }
}                                          // 

void print(){                       //
while(es+ds+em+dm>0){               //
if(millis()-oldtime>1000UL)          //
{                                   //
es--;                               //
point=!point;                       //
if(es>9){                           //
ds--;                               //
es=9;                               //
if(ds>5){                           //
em--;                               // Счет 
ds=5;                               //
if(em>9){                           //
dm--;                               //
em=9;                               // 
if(dm>5){  //
dm=5;                               //
        }                           //  
        }                           //
        }                           //
        }                           //
oldtime=millis();                   //     //
}                               //                  //
razr[3]=simbol[dm];                  //
razr[2]=simbol[em];                  // Запись обновленных символов в массив
razr[1]=simbol[ds];                  //
razr[0]=simbol[es];                  //  
digitalWrite(SEC,ON);            //                            
PORTD=razr[0];                   //
delay(5);                        //
digitalWrite(SEC,OFF);           //
digitalWrite(DSEC,ON);           //
PORTD=razr[1];                   //
delay(5);                        // 
digitalWrite(DSEC,OFF);          //
digitalWrite(EMIN,ON);           //
digitalWrite(dp,point);          //  Вывод символов в порт и мигание анодами
PORTD=razr[2];                   //
delay(5);                        // 
digitalWrite(EMIN,OFF);          //
digitalWrite(dp,ON);             //
digitalWrite(DMIN,ON);           //
PORTD=razr[3];                   //
delay(5);                        //
digitalWrite(DMIN,OFF);          //
}
}

void pizdedz(){   //
PORTD=128; //
delay(300);                  //
digitalWrite(SEC,ON);        //
digitalWrite(DSEC,ON);       // 
digitalWrite(EMIN,ON);       //
digitalWrite(DMIN,ON);       //  Обработка пиэдеца, мигание нулями
digitalWrite(STD,ON);        //
delay(300); 
tone(A1,2500,100);//
digitalWrite(SEC,OFF);       //
digitalWrite(DSEC,OFF);      //
digitalWrite(EMIN,OFF);      //
digitalWrite(DMIN,OFF);      //
	      }              //

ПЕРЕДАТЧИК АКТИВАТОР


void setup()
{
  Serial.begin(2400);
}
void loop()
{
  Serial.write('D');
  Serial.write('q');
delay(10);
}

ПЕРЕДАТЧИК ХИМЗАРАЖЕНИЕ


void setup()
{
  
}
void loop()
{
  Serial.begin(2400);
  Serial.write('D');
  Serial.write('x');
delay(10);
Serial.end();
}

ПЕРЕДАТЧИК РАДИАЦИЯ

void setup()
{
 
}
void loop()
{
   Serial.begin(2400);
  Serial.write('D');
  Serial.write('c');
delay(10);
 Serial.end();
}

Извините что без комментариев, но сложных алгоритмов нет.

si4re
Offline
Зарегистрирован: 02.10.2014

а передетчики какие?

в железе проект собирали?

 

Coolerr
Offline
Зарегистрирован: 30.06.2014

Всё в железе и прошло полевые испытания. 

Вот такой комплект http://ru.aliexpress.com/item/Wireless-Module-kit-RF-transmitter-STX882-RF-receiver-SRX887-2-pcs-nickel-plated-spring-antenna/1627179400.html

Тут файлы протеуса, скетчи, платы, хексы. https://yadi.sk/d/kWmqhmslivXU4

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

зачем тема тогда ? если всё реализовано ?

si4re
Offline
Зарегистрирован: 02.10.2014

спасибо посмотрю

на этих модулях rssi  можно регулировать?

на какой дальности счетчик начинает работать?

 

Coolerr
Offline
Зарегистрирован: 30.06.2014

Метров 20, все зависит от места. При наличии прямой видимости метров до 50. Железобетонные конструкции тоже неплохо влияют. Регулировать ничего в передатчиках нельзя, по крайней мере программными методами. Дальность можно попробовать менять скоростью UART, и согласованием антенны. С УАРТом игрался 2400 самый оптимальный вариант, с согласованием это только теория на практике не проверялась. Счетчик срабатывает как только попал в зону передатчика. В режиме ожидания мигает светодиод, на неактивированом передатчике на дисплее горит десятичная точка.

si4re1
Offline
Зарегистрирован: 30.06.2015

а как тут вам в личку написать?

Coolerr
Offline
Зарегистрирован: 30.06.2014

Нет тут лички.

Парфирий Пряников
Offline
Зарегистрирован: 01.08.2016

Coolerr пишет:

Метров 20, все зависит от места. При наличии прямой видимости метров до 50. Железобетонные конструкции тоже неплохо влияют. Регулировать ничего в передатчиках нельзя, по крайней мере программными методами. Дальность можно попробовать менять скоростью UART, и согласованием антенны. С УАРТом игрался 2400 самый оптимальный вариант, с согласованием это только теория на практике не проверялась. Счетчик срабатывает как только попал в зону передатчика. В режиме ожидания мигает светодиод, на неактивированом передатчике на дисплее горит десятичная точка.

Как можно с вами связаться в л/с?

Coolerr
Offline
Зарегистрирован: 30.06.2014

На электропочту. trojan.dowloaderсобакаgmail.com