Skip to content

gerasimenkoao/BoomPass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

BoomPass

Пишу эти строки на русском, может прочитав их у кого-то из той страны проснется понимание происходящего:

Указатель направления взрыва.

https://i.postimg.cc/BQF1s44h/Boom1.jpg

До 24 февраля у нас было все (с. "Не смотри вверх").

Не от хорошей жизни собрал я данное устройство.

У меня не было электиричества, связи и учебника геометрии.

А был ноутбук, Ардуино и взрывы ...

В системе много условностей - что земля плоская, сектор обнаружения - 180 градусов, а скорость звука равна 340м/с.

И еще принималось во внимание, что расстояние до источника на порядки больше базы(340мм) между микрофонами, иначе я не писал-бы эти строки.

https://i.postimg.cc/y6kQzQxf/degree.jpg

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

Собственно, устройство - примитив - цифровые выходы датчиков включаются на входы 2(левый) и 3(правый) Ардуино.

Скетч тоже не отличается изяществом, ибо в таких условиях не до красоты кода:

// Point to shoot sound with two microphones (340mm between it) and one serwo, ~10 degree accuracy
#include <Arduino.h>
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int degree;    // degree to shoot point
int delta = 0; // delay between microphones
boolean Left = false ;  // mark of sound from left side sensor (number 2)

// variables to write interrupts time
volatile unsigned long int time1 = 0;
volatile unsigned long int time2 = 0;

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
// set pins to work with interrupts;   
      myservo.write(180); //test servo to left
      delay(1000);
      myservo.write(0); //test servo to right
      delay(1000);
       myservo.write(90); //test servo to center
      delay(1000);
      attachInterrupt(0, sensor_1, RISING); //left sensor
      attachInterrupt(1, sensor_2, RISING); //right sensor
}

void loop() 
{
  if ( time1 != 0 && time2 != 0 ) {  
    if ( time2<time1 ) {delta=time1-time2; Left=true;} //sound from the left
    if ( time1<time2 ) {delta=time2-time1; Left=false;} //sound from the right
    time1=0;
    time2=0;
       
       if ( delta > 0 ) {degree=90;}
       if ( delta > 52 ) {degree=80;}
       if ( delta > 223 ) {degree=70;}
       if ( delta > 423 ) {degree=60;}
       if ( delta > 576 ) {degree=50;}
       if ( delta > 702 ) {degree=40;}
       if ( delta > 808 ) {degree=30;}
       if ( delta > 897 ) {degree=20;}
       if ( delta > 959 ) {degree=10;}
       if ( delta > 990 ) {degree=0;}

       if (!Left){degree=180-degree;}
        }
  myservo.write(degree);                  // sets the servo position according to the scaled value
  delay(333);

}

void sensor_1()
{ if ( time1 == 0 ) { time1 = micros(); } }

void sensor_2()
{ if ( time2 == 0 ) { time2 = micros();}  }

Питание схемы - от стабилизированного источника 5В (powerbank). Отладка производится подстроечниками на звуковых сенсорах. При постукивании отверткой посередине между датчиками, сервопривод должен устанавливаться в центральное положение.

https://i.postimg.cc/KjPg2hMk/bereza.jpg

"Хотят-ли русские войны?" С этого стихотворения обычно начинается урок мира. Очень жаль, что многие его не усвоили...

Arduino pointer to explosion sound

I make this project under enemy fire. Without phone or Internet. But under bomb explosion, when russian soldier shoot civilians.

System use SG-90 servo, Arduino pro mini (or just Arduino) and powered from 5v PowerBank.

Digital pin from left sensor connected to #2 of Arduino, right - to #3.

System tuning comes with adjucting of MIC sensitivity when tapping on miidle between it servo must point to centre.

On russian site i be banned just for verse "Is a russians will war?"

About

Arduino pointer to explosion sound

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published