Leonardo | ФОТО
Дата и час: Чет Мар 28, 2024 6:51 pm

Часовете са според зоната UTC + 2 часа




Напиши нова тема Отговори на тема  [ 38 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
Автор Съобщение
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Чет Мар 03, 2016 8:40 am 
Offline

Регистриран на: Чет Юли 31, 2014 9:05 am
Мнения: 47
Местоположение: София
Име: Александър Шопов
Калмановия филтър си е съвсем уместен, защото именно предикативността дава бързодействие и добра филтрация едновременно.
Има достатъчно сравнения, включително и с графично представяне на резултатите.


Върнете се в началото
  Профил    +1 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Пон Яну 30, 2017 10:28 am 
Offline

Регистриран на: Пет Авг 12, 2016 4:15 pm
Мнения: 16
Местоположение: София
Име: Валери Михайлов
За ентусиастите с поялници! Това може да е полезно на някого.
Познавам хора летящи с такъв уред и е почти без недостатъци! Може би, тихия звук е един от тях.
Kobo (Четец за книги) в комбинация с BlueFlyVario

https://www.youtube.com/watch?v=0DPh_KYunbE

https://www.blueflyvario.com/product/bl ... l_gps_v11/

_________________
U-turn BlackLight 2 (синьо-зелен)


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Пон Яну 30, 2017 10:46 pm 
Offline

Регистриран на: Пон Юли 04, 2016 8:41 am
Мнения: 51
Име: Ivo Bozhinov
Поръчал съм частите и ще постна резултата, когато съм готов. Всичко ми излезе около 220 лв - Кобо на старо, вариото с гпс, 3д принт на кутийката+разширител за батерия,допъпнителна батерия 3800mAh.
http://www.dotmana.com/weblog/2014/05/k ... i-gps-mod/

А иначе това е първото ми домашно варио. Използвах инфо от нета + тази статия. Модифицирах леко кода, за да намяля чуствителността. Пиезо бъзерчето е отвън с цел пестене на място, а също така кутийката не събра модула за зареждане, затова направих нещо като докинг станция - двете метални пинчета са съответно + и - и се свързват с дока.

Доста е компактно и удобно за ползване.

Изображение
Изображение
Изображение
Изображение


Ето това са специвичните материали, които пасват в кутийката. Другото го има вече описано.

https://www.aliexpress.com/item/New-10P ... 0.0.4KLp2x
https://www.aliexpress.com/item/2pcs-lo ... 0.0.4KLp2x
https://www.aliexpress.com/item/Bluelan ... 0.0.4KLp2x


Върнете се в началото
  Профил    +1 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Нед Мар 19, 2017 8:25 pm 
Offline

Регистриран на: Пон Юли 04, 2016 8:41 am
Мнения: 51
Име: Ivo Bozhinov
Вариото + Кобо е готово.

Ето го резултатът - разширител , 4МАН батерия, XC Soar. Тествано е само в асансьор, но резултатите са доста добри. Вариото няма почти никакъв шум, но е много чуствително, ГПС-ът работи перфектно.

Ако някой иска да си прави да пише на лични. Мога да дам малко съвети относно запояването, защото доста се поизмъчих.


https://drive.google.com/open?id=0B7B_7 ... JCZld4S1p3
https://drive.google.com/open?id=0B7B_7 ... hYcnk3Zy00
https://drive.google.com/open?id=0B7B_7 ... R3aHZFazNJ


Върнете се в началото
  Профил    +5 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Чет Мар 30, 2017 10:38 am 
Offline

Регистриран на: Съб Окт 17, 2015 10:12 pm
Мнения: 13
Име: Andrey Manolov
Много се радвам че статията е свършила работа на нкои от колегите. Оправих снимките :)


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Нед Май 14, 2017 8:12 pm 
Offline

Регистриран на: Пет Авг 12, 2016 4:15 pm
Мнения: 16
Местоположение: София
Име: Валери Михайлов
http://www.ebay.com/itm/Kobo-GPS-vario- ... 2410255574

Ако на някой не му се занимава да майстори! :)

Kobo с варио за 175 $ с доставката!

_________________
U-turn BlackLight 2 (синьо-зелен)


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Пон Май 15, 2017 9:42 am 
Offline

Регистриран на: Пет Апр 20, 2012 12:04 pm
Мнения: 608
Име: Милен Димитров
Вальо написа:
http://www.ebay.com/itm/Kobo-GPS-vario-with-XCSoar-or-LK8000-for-paragliding-gliding-hang-gliding/222410255574?_trksid=p2045573.c100033.m2042&_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D41376%26meid%3D011e319964154e419d450ffda6a6bc9a%26pid%3D100033%26rk%3D1%26rkt%3D2%26sd%3D222410255574

Ако на някой не му се занимава да майстори! :)

Kobo с варио за 175 $ с доставката!


245 $ e с варио и доставката, ще трябва и ДДС да се плати, около 300$ , ще прибавим и таксата на пощата или митническа агенция /може да се избере един от двата варианта/, кой ще те представи пред митницата да освободи пратката, цената ще е над 300.......

_________________
https://www.facebook.com/Paragliding4Fun?ref=hl


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Сря Май 17, 2017 8:31 pm 
Offline

Регистриран на: Пет Авг 12, 2016 4:15 pm
Мнения: 16
Местоположение: София
Име: Валери Михайлов
Oooo ако е така значи не е оферта!
Благодаря за пояснението! Не знаех че е така!
Просто видях 160$ +15$ транспорт и идва от Украйна!
Мислех че това е всичко, а и защо митници когато стоката не е в търговски количества, а единична бройка!
Не знаех че е толкова сложно! Още веднъж благодаря!

_________________
U-turn BlackLight 2 (синьо-зелен)


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Чет Май 18, 2017 10:19 am 
Offline

Регистриран на: Пет Апр 20, 2012 12:04 pm
Мнения: 608
Име: Милен Димитров
Щото е най-бедната територия, не само в EU.... ,до 30 лв. е без митнически такси....... скоро пращах едно крило в Индия, там границата беше няколкостотин долара за безмитен внос........

_________________
https://www.facebook.com/Paragliding4Fun?ref=hl


Върнете се в началото
  Профил    +1 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Чет Авг 10, 2017 2:51 pm 
Offline

Регистриран на: Чет Апр 08, 2004 10:02 am
Мнения: 129
Местоположение: Казанлък
Име: байРос
Вчера пристигна от братчеда Али датчика ми GY BMP280 и с копи/пейст скалъпих следния код:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10

float toneFreq, toneFreqLowpass, flpressure, lowpassFast, lowpassSlow ;
int temperature, altitude, ddsAcc;
long pressure;
unsigned long time = 0;

Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}

}

void loop() {
flpressure=bmp.readPressure();
altitude=bmp.readAltitude(1013.25);
lowpassFast = lowpassFast + (flpressure - lowpassFast) * 0.3; // Andrew mod better values for bmp180 boards
lowpassSlow = lowpassSlow + (flpressure - lowpassSlow) * 0.15; // Andrew mod better values for bmp180 boards
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
toneFreq = constrain(toneFreqLowpass, -500, 500); // Andrew mod better values for bmp180 boards and my speaker
ddsAcc += toneFreq * 50 + 3000; // better values for bmp180 //andrew mod

// if (toneFreq < 0 || ddsAcc > 0)
Serial.print("toneFreq=");
Serial.println(toneFreq);
if ((toneFreq > 5 && ddsAcc > 0) ) // only sound on positive climb #andrew mod

{
tone(9, toneFreq + 700);
}
else
{
noTone(9);
}
while (millis() < time); //loop frequency timer
time += 20;

}

/*И заработи :D
Незнам как :P .*/


Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Чет Авг 10, 2017 6:21 pm 
Offline

Регистриран на: Нед Апр 23, 2006 6:04 pm
Мнения: 1183
Местоположение: Велико Търново
Име: Ивелин Калушков
От един руски форум намерих един код който е сдота подобра филтрация - в момента не ми е под ръка но щом се прибера на Сопот ще го пусна - шумовите случайни препищявания са почти 0-леви с другата филтрация.

В момент а правя опит да си сглобя нещо подобно на БЛУ-флай и почти съм успял - щом го подкарам финално ще кача документацията.

_________________
"Успехът не е траен, провалът не е окончателен, важна е волята да продължиш напред!" - сър. Уинстън Чърчил

Independence Dragon 3 M (бяло, черно, червено)/Advance Impress 2+
Aerodyne Massai M (червено, жълто, оранжево)/Advance Impress 2+
Advance Omega 8 - 27 (бяло, жълто, зелено)/Advance Impress 2+

Advance Omega X-Alps - 25 (зелено, бяло, синьо)/Advance Impress 2+

Изображение


Върнете се в началото
  Профил    +1 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Вто Авг 22, 2017 12:48 am 
Offline

Регистриран на: Съб Фев 05, 2011 3:02 pm
Мнения: 81
Местоположение: Алпите
Име: Ивайло Митев
Здравейте,

и аз си направих такава джаджа около 2014, до сега съм добавил и малко екстри BT с "PLXVS - NMEA SENTENCE" за да мога да си използвам барометъра и на телефона където съм инсталирал "XCТrack" и "XCSoar".

Надявам се да е от полза на някой. ;-)

Схема:
https://drive.google.com/open?id=0BzGomicB3bezWmhrd0dEU0wtc28

кодът:
Код:
/

/****************************************************
  Mini Vario mit Bluetooth
  * Bluetooth Modul ist H-06
  * Barometer Modul ist MS5611
  * Mini PRO 3.3V 8 MHz

  Auf der Misst von Ivaylo gewachsen.
  2017-03-15 n
****************************************************/

#include <Wire.h>
#include <MS5611.h>

MS5611 bpm;

/////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////   Variablen die man aendern kann!   /////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
float min_steigen = 0.20;               //Minimale Steigen (Standart Wert ist 0.4m/s).
float max_sinken = -3.50;               //Maximales Sinken (Standart Wert ist - 1.1m/s).
int leseZeit = 200;                   // Interval zum lesen vom Baro, Standart(min) ist 150.


unsigned int konst_frqz = 150;          //Minimale Audio Frequez.
unsigned int max_frqz = 1900;           //Maximale Audio Frequenz.

short a_pin1 = 6;                       //Lautsprecher Pin definieren!
//short a_pin1 = 5;                       //Lautsprecher Pin definieren! <<= fuer Micro Vario
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

double Hoehe, Temp, Temp0, HoeheB, TempB;
long Druck, Druck0, DruckB;

short startCH = 0;
int PinBT,  XOR, c;
float FehlerV = 1.200 * min_steigen;         //Fehler fuer Vario Filter berechnen.
float ZeitS = millis();
float kal[6], Vario, VarioR, dZeit, ZeitA, ZeitE, ZeitPipA, ZeitPipE;

void setup() {
  leseZeit = leseZeit -33;
 
  Serial.begin(9600);

  pinMode(2, INPUT);        // Definiert den Pin für der BT Schalter.
  PinBT = digitalRead(2);   // Definiere Schalter Zustand fuer BT.
  //PinBT = 0;                   // Wenn keine BT-Modul eingebaut ist.

  pinMode(7, OUTPUT);       // Pin zum BT Versorgung.
  pinMode(8, OUTPUT);       // Pin zum BT Versorgung.
 

// Initialize the sensor (it is important to get calibration values stored on the device).
    // Initialize MS5611 sensor
    // Ultra high resolution: MS5611_ULTRA_HIGH_RES
    // (default) High resolution: MS5611_HIGH_RES
    // Standard: MS5611_STANDARD
    // Low power: MS5611_LOW_POWER
    // Ultra low power: MS5611_ULTRA_LOW_POWER
  while(!bpm.begin(MS5611_ULTRA_HIGH_RES))
  {
    delay(750);
  }

//BT umbenenen START
  if (PinBT == 1)
  {
    digitalWrite(7, HIGH);    // BT Versorgung einschalten.
    digitalWrite(8, HIGH);    // BT Versorgung einschalten.
    delay(1000);

    Serial.begin(9600);
   
    /*Serial.println("AT");
    delay(1500);
    Serial.println("AT+NAMEivkos_miniVARIO");
    delay(500);*/
    // PIN ist 1234 <= ##############################################################################
  }
  else
  {
    digitalWrite(7, LOW);    // BT Versorgung einschalten.
    digitalWrite(8, LOW);    // BT Versorgung einschalten.
  }
//BT umbenenen ENDE */


//welcome_beep();       // Spielt den Start Tonfolge.
            tone(a_pin1 , 300, 150);
            delay(175);
            tone(a_pin1 , 200, 150);
            delay(175);
            tone(a_pin1 , 100, 150);
            delay(250);
// */
}

void loop()
{
 
  dZeit=(ZeitE-ZeitS);
 
  if (dZeit >= leseZeit )
  {
    if(PinBT==0)
    {
      SteigenBerechnen();
    }
    else
    {
      Bloetooth();
    }
  }
  else
  {
    PipserX();
    ZeitE = millis();
  }
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
// Unterfunktionen und Programme   //////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////

// Luftdrucksensor auslesen #########################################################################
// ##################################################################################################
void BaroAuslesen()
{
  Temp = bpm.readTemperature();
  Druck = bpm.readPressure();
  Hoehe = bpm.getAltitude(Druck);
}
// ##################################################################################################
// ##################################################################################################



// Steigen berechnen ################################################################################
// ##################################################################################################
void SteigenBerechnen()
{
// Barometrischehoehe - Vario(Steigen) berechnungen - START  ========================================
      BaroAuslesen();
     
      ZeitE = millis();
      dZeit=(ZeitE-ZeitS);
     
      if(startCH==0)
      {
        kal[0] = Hoehe;
        kal[1] = 0.00;
        startCH=1;
      }
     
      //* Steigwerte berechnen.
        Vario=((Hoehe - kal[0]) / (dZeit/1000));
      //VarioR=Vario;
        kal[0]=Hoehe;
        if (FehlerV > 0.5) FehlerV = 0.5;
   
      // Filter fuer die Steugung anwenden.
        kal[1]=Vario;
        Vario = FehlerV*(kal[1] + kal[2] + kal[3])/3 + (1-FehlerV)*(kal[5] + kal[4])/2;

        kal[4] = kal[5];
        kal[3] = kal[2];
        kal[2] = kal[1];
        kal[5] = Vario; // */

      /*/ Zum Testen ueber Serial-Port
      //Temperatur in °C
      Serial.print(Temp, 2);     
      Serial.print("; ");
     
      Serial.print(Druck);
      Serial.print("; ");
     
      Serial.print(Hoehe, 2);
      Serial.print("; ");
     
      Serial.print(dZeit);
      Serial.print("; ");
     
      Serial.print(Vario, 2);
      Serial.print("; ");
     
      Serial.print(VarioR, 2);
      Serial.print("; ");
     
      Serial.print(PinBT);
      Serial.println(); //*/

      ZeitS = ZeitE;
// Barometrischehöhe - Vario(Steigen) berechnungen - ENDE  ==========================================
}
// ##################################################################################################
// ##################################################################################################



// Bloetooth ########################################################################################
// ##################################################################################################
void Bloetooth()
{
      BaroAuslesen();

      // Ausgabe im BlueFlyVario Format.
      // The standard BlueFlyVario outp ut mode. This sends raw pressure measurements in the form:
      // "PRS XXXXX\n"
      // : XXXXX is the raw (unfiltered) pressure measurement in hexadecimal pascals.
      Serial.print("PRS ");               //Ausgabe an der
      Serial.println( Druck, HEX);         //BT-Serial schnitstelle ungefiltert. */


     /* Send LXWP0 output mode for use with a range of apps:
    //"$LXWP0,loger_stored (Y/N), IAS (kph), baroaltitude (m), vario (m/s),,,,,,heading of plane,windcourse (deg),windspeed (kph)*checksum \r\n"

        String s = "LXWP0,N,,";
        s = String(s+ String(Hoehe,2) + ",,,,,,,,"  );

     // Checksum berechnen und als int ausgeben
     // wird als HEX benötigt im NMEA Datensatz
     // zwischen $ und * rechnen
     int i, XOR, c;
     XOR = 0;

     for (i = 0; i < s.length(); i++) {
      c = (unsigned char)s.charAt(i);
      if (c == '*') break;
      if (c!='$') XOR ^= c;
     }
     // Checksum berechnen

     Serial.print("$");
     Serial.print(s);
     Serial.print("*");
     Serial.println(XOR,HEX);  // */
    

      delay(175);
}
// ##################################################################################################
// ##################################################################################################



// Pipser ###########################################################################################
// ##################################################################################################
void PipserX()
{
    double frequency = max_frqz / (1.00 + pow((Vario - 11.30) / -6.80, 5.10));
    double duration = (-60.00*Vario + 500)*0.75;         // Variable Pause
    frequency = int(frequency);
    duration = int(duration);
   
  // Wenn Steigen groesser als min_steigen 
      if ( Vario >= min_steigen)
        {
            if ( Vario <= 7  )
            {
              if ( (ZeitPipE - ZeitPipA) >= (2*duration) || 2*duration <= leseZeit-35 )
              {
                ZeitPipA = millis();
                tone(a_pin1 , frequency, duration);
              }
              else
              {
                ZeitPipE = millis();
              }

            if ( Vario > 7)
              {
                if ( Vario > 9) noTone(a_pin1);
                else tone(a_pin1 , max_frqz/2);
                delay(0);
              }
        }
        }

  // Wenn Sinken kleiner als max_sinken
      if ( Vario < max_sinken)
        {
            tone(a_pin1 , 300, 150);
            delay(125);
            tone(a_pin1 , 200, 150);
            delay(150);
            tone(a_pin1 , 100, 150);
            delay(175);
        }

}
// ##################################################################################################
// ##################################################################################################



П.С.: Коментарите са на немски за съжаление. Но не би трябвало да е трудно да се преведат с Google. :wink:
Говорителчето или пищялката са на пин 6.

2017-08-22 - 15:45 : Промяна на протокола за изпращане на данните. Мерси Viper_Weasel
# Сега изпраща вър формата на "BlueFlyVario" само необработеното атмосферно налягане в Pa ("PRS XXXXX\n" - XXXXX is the raw (unfiltered) pressure measurement in hexadecimal pascals.) Така с този протокол съм го използвал повече от година и работеше супер.
# Но съм програмирал и LXWP0 протокола, който иска да използва него трябва само да го от коментира и да коментира другият. За съжаление не съм го тествал още не остана време в обедната почивка. ;-)

2017-08-23 - 12:45 : Използваната библиотека е от тук: https://github.com/jarzebski/Arduino-MS5611

_________________
Крило: 777 - Rook2 S - Lilac....................................XContest - Ivko
Сбруя: Woody Valley GТО Light - S......................... Страницата на Клуба ни.


Последна промяна Ivko на Чет Апр 05, 2018 10:36 pm, променена общо 10 пъти

Върнете се в началото
  Профил    +0 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Вто Авг 22, 2017 10:10 am 
Offline

Регистриран на: Нед Апр 23, 2006 6:04 pm
Мнения: 1183
Местоположение: Велико Търново
Име: Ивелин Калушков
Само една корекция LX8EX1 вече не се поддържа от XC soar - просто заради вътрешната вражда между LK и XCSOAR.
Аз смених моя протокол на LXNAV който е по универсален.

_________________
"Успехът не е траен, провалът не е окончателен, важна е волята да продължиш напред!" - сър. Уинстън Чърчил

Independence Dragon 3 M (бяло, черно, червено)/Advance Impress 2+
Aerodyne Massai M (червено, жълто, оранжево)/Advance Impress 2+
Advance Omega 8 - 27 (бяло, жълто, зелено)/Advance Impress 2+

Advance Omega X-Alps - 25 (зелено, бяло, синьо)/Advance Impress 2+

Изображение


Върнете се в началото
  Профил    +2 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Вто Авг 22, 2017 10:31 am 
Offline

Регистриран на: Съб Фев 05, 2011 3:02 pm
Мнения: 81
Местоположение: Алпите
Име: Ивайло Митев
@Viper_Weasel

Благодаря за информацията.
Би ли пуснал един примерен текст за синтаксиса на LXNAV, или линк към страница където е разяснен. Подмяната не би трябвало да е трудна. ;-)
Мерси.

_________________
Крило: 777 - Rook2 S - Lilac....................................XContest - Ivko
Сбруя: Woody Valley GТО Light - S......................... Страницата на Клуба ни.


Върнете се в началото
  Профил    +1 / -0 
 
 Заглавие: Re: Домашно Варио
МнениеПубликувано на: Сря Авг 23, 2017 1:27 am 
Offline

Регистриран на: Нед Апр 23, 2006 6:04 pm
Мнения: 1183
Местоположение: Велико Търново
Име: Ивелин Калушков
$LXWP0,Y,222.3,1665.5,1.71,,,,,,239,174,10.1
0 loger_stored (Y/N)
1 IAS (kph)
2 baroaltitude (m)
3 vario (m/s)
4-8 unknown
9 heading of plane
10 windcourse (deg)
11 windspeed (kph)

_________________
"Успехът не е траен, провалът не е окончателен, важна е волята да продължиш напред!" - сър. Уинстън Чърчил

Independence Dragon 3 M (бяло, черно, червено)/Advance Impress 2+
Aerodyne Massai M (червено, жълто, оранжево)/Advance Impress 2+
Advance Omega 8 - 27 (бяло, жълто, зелено)/Advance Impress 2+

Advance Omega X-Alps - 25 (зелено, бяло, синьо)/Advance Impress 2+

Изображение


Върнете се в началото
  Профил    +2 / -0 
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 38 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Часовете са според зоната UTC + 2 часа



Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Преведено от: SEO блог на Йоан Арнаудов