SkyNomad
http://forum.skynomad.net/

Домашно Варио
http://forum.skynomad.net/viewtopic.php?f=14&t=8333
Страница 2 от 3

Автор:  Lord Ruthven [ Чет Мар 03, 2016 8:40 am ]
Заглавие:  Re: Домашно Варио

Калмановия филтър си е съвсем уместен, защото именно предикативността дава бързодействие и добра филтрация едновременно.
Има достатъчно сравнения, включително и с графично представяне на резултатите.

Автор:  Вальо [ Пон Яну 30, 2017 10:28 am ]
Заглавие:  Re: Домашно Варио

За ентусиастите с поялници! Това може да е полезно на някого.
Познавам хора летящи с такъв уред и е почти без недостатъци! Може би, тихия звук е един от тях.
Kobo (Четец за книги) в комбинация с BlueFlyVario

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

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

Автор:  Buga [ Пон Яну 30, 2017 10:46 pm ]
Заглавие:  Re: Домашно Варио

Поръчал съм частите и ще постна резултата, когато съм готов. Всичко ми излезе около 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

Автор:  Buga [ Нед Мар 19, 2017 8:25 pm ]
Заглавие:  Re: Домашно Варио

Вариото + Кобо е готово.

Ето го резултатът - разширител , 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

Автор:  andrew [ Чет Мар 30, 2017 10:38 am ]
Заглавие:  Re: Домашно Варио

Много се радвам че статията е свършила работа на нкои от колегите. Оправих снимките :)

Автор:  Вальо [ Нед Май 14, 2017 8:12 pm ]
Заглавие:  Re: Домашно Варио

http://www.ebay.com/itm/Kobo-GPS-vario- ... 2410255574

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

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

Автор:  Милен [ Пон Май 15, 2017 9:42 am ]
Заглавие:  Re: Домашно Варио

Вальо написа:
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.......

Автор:  Вальо [ Сря Май 17, 2017 8:31 pm ]
Заглавие:  Re: Домашно Варио

Oooo ако е така значи не е оферта!
Благодаря за пояснението! Не знаех че е така!
Просто видях 160$ +15$ транспорт и идва от Украйна!
Мислех че това е всичко, а и защо митници когато стоката не е в търговски количества, а единична бройка!
Не знаех че е толкова сложно! Още веднъж благодаря!

Автор:  Милен [ Чет Май 18, 2017 10:19 am ]
Заглавие:  Re: Домашно Варио

Щото е най-бедната територия, не само в EU.... ,до 30 лв. е без митнически такси....... скоро пращах едно крило в Индия, там границата беше няколкостотин долара за безмитен внос........

Автор:  Росен [ Чет Авг 10, 2017 2:51 pm ]
Заглавие:  Re: Домашно Варио

Вчера пристигна от братчеда Али датчика ми 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 .*/

Автор:  Viper_Weasel [ Чет Авг 10, 2017 6:21 pm ]
Заглавие:  Re: Домашно Варио

От един руски форум намерих един код който е сдота подобра филтрация - в момента не ми е под ръка но щом се прибера на Сопот ще го пусна - шумовите случайни препищявания са почти 0-леви с другата филтрация.

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

Автор:  Ivko [ Вто Авг 22, 2017 12:48 am ]
Заглавие:  Re: Домашно Варио

Здравейте,

и аз си направих такава джаджа около 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

Автор:  Viper_Weasel [ Вто Авг 22, 2017 10:10 am ]
Заглавие:  Re: Домашно Варио

Само една корекция LX8EX1 вече не се поддържа от XC soar - просто заради вътрешната вражда между LK и XCSOAR.
Аз смених моя протокол на LXNAV който е по универсален.

Автор:  Ivko [ Вто Авг 22, 2017 10:31 am ]
Заглавие:  Re: Домашно Варио

@Viper_Weasel

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

Автор:  Viper_Weasel [ Сря Авг 23, 2017 1:27 am ]
Заглавие:  Re: Домашно Варио

$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)

Страница 2 от 3 Часовете са според зоната UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/