Modelářská meteostanice

Tvoříte zajímavý projekt? Pochlubte se s ním.
Pravidla fóra
Vkládejte prosím jen HOTOVÉ projekty, které chcete představit ostatním.
ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Modelářská meteostanice

Příspěvek od ohruska » 30 lis 2018, 10:09

Rozhodl jsem se napsat o modelářské meteostanici, o kterou se starám a pomalu měním a vylepšuji.
Původní projekt jsem zprovoznil na začátku roku 2015. Tehdy jsem použil RASPBERRY Pi 3 a USB kameru, plus čidla a anemometr a směr větru.
Všechno celkem fungovalo, ale celé zařízení se kousalo asi 1x za týden. Tak jsem udělal to, že se raspberry restartovalo každý den ráno. To bohužel zapříčinilo zničení mikro sd karty.
webcamera.jpg
METEO.JPG
METEO.JPG (22.75 KiB) Zobrazeno 5571 x
Tak jsem se rozhodl pro meteostanici postavené na arduinu.
Místo USB kamery byla použita nová, kvalitnější, WIFI kamera. Tato měla několikanásobný odběr proudu z baterie než stará USB kamera, proto bylo přikročeno k samostatnému napájení kamery a meteostanice z baterie 12V 95Ah. Tato je nabíjena přes regulátor ze solárního panelu. Řešení maximálního vybití baterie je omezením od solárního regulátoru. Při napětí 11.2V odpojí všechnu elektroniku. A pokud další den bude slunečno a baterie se nabije na hodnotu 12.4V, takse vše znovu připojí.
<br/>
Data z meteostanice jsou měřena Arduinem UNO a posílána přes ethernetovou desku W5100 na servr Thinkspeak.com. Tady je dovoleno uložit 8219 dat denně, a to zadarmo. Z tohoto servru je možno číst data a používat je na webových stránkách.
Anemometr a směr větru je použit z meteostanice WH1080.</t>
Měření směru větru.
Pro měření směru větru je použit analogový vstup arduina A0, ale pro větší přesnost porovnávám měřené napětí s referenční napětím, které měřím přes ADS1115, kterým se také měří přes odporový dělič, napětí na baterii.
Zkoušel jsem měřit směr větru a toto průměrovat, ale výsledné hodnoty nebyly dobré. Proto jsem použil filtr, který ze tří změřených hodnot odfiltruje nejmenší a největší hodnotu.
Měření rychlosti větru.
Spínací kontakt anemometru je přiveden na vstup 2 arduina a je použito programové přerušení.
Měření probíhá 6 sekund. Vyhodnocuje se nejdelší a nejkratší interval mezi sepnutím kontaktu anemometru, to odpovídá minimální a maximální rychlosti větru. Pro průměrnou hodnotu rychlosti větru se počítá počet sepnutí/6s.
Protože se mě projevila velká chyba měření maximální
Měření napětí baterií pro elektroletce.
Baterie 2x140Ah je napájena ze stejného solárního panelu jako meteostanice, ale přes samostatný regulátor.
Protože tyto regulátory mají společný +pól, nemohl jsem použít pro měření arduino UNO meteostanice.
Byl použit WEMOS D1 MINI a pro měření napětí baterie obvod INA 219. Tento byl zvolen proto, že nepotřebuje žádný napěťový dělič a může měřit napětí až 26V. Stačí jen naletovat odpor 100kOhm.
Napětí - data jsou posílána každou minutu na servr Thinkspeak.com. Jinak se WEMOS D1 MINI, po měření a odeslání dat, hluboce uspí.

Měření teploty, vlhkosti a barometrického tlaku.
Toto zatím zkouším doma na balkoně. Je použito WEMOS D1 s čidlem BME280. Napájení je z jedné baterie LION SAMSUNG 2600 mAh, přes Battery Shield V1.1.0 For WEMOS D1 mini, která je nabíjena ze solárního panelu 6V 0.6W přes shottky diodu a omezovač napětí DD08CRMA.
Přes ADS1115 se měří, napětí baterie, napětí ze solárního panel a napájecí napětí desky.
Měří se v intervalu 5 minut. Data se posílají na servr Thinkspeak.com. Je také použito hluboké uspání.
Pro konečnou variantu bude použit senzor VEML6070, pro měření osvitu ve W/m2.
Konečná varianta pro letiště, záleží na tom, jak přežije LION akumulátor zimu. Toto je zatím hlavní úkol pro testy, životnost baterie. Zatím se dá říci že to funguje i při noční teplotě -8.7°C a pár dnů v kuse okolo 0°C.
Jen se zatím projevuje nedostatek slunečního svitu pro nabíjení článku v zimním období. Slunce je příliš nízko nad obzorem a málo svítí nebo vůbec nesvítí. Budu zkoušet přidat ještě leden solární panel pootočený asi o 30°. A uvidíme.

Výsledky měření, jsou prezentovány na stránkách modelářského klubu http://www.modelari.estranky.cz/, ve formě grafů napětí bateriehttp://www.modelari.estranky.cz/clanky/ ... terii.html, směru a rychlosti větru http://www.modelari.estranky.cz/clanky/vitr.html, teploty a vlhkosti http://www.modelari.estranky.cz/clanky/teplota.html a ciferníkových ukazatelůhttp://www.modelari.estranky.cz/file/76 ... ri_mdk.htm nebo číselných hodnothttp://www.modelari.estranky.cz/file/77/index1.htm.
kamera.JPG

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Modelářská meteostanice

Příspěvek od jankop » 30 lis 2018, 17:07

Dík, že sis dal práci s popisem vaší stanice. Se zájmem jsem si to přečetl.
Pavel

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Modelářská meteostanice

Příspěvek od pavel1tu » 30 lis 2018, 17:58

Pěkné počtení ... díky
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Modelářská meteostanice

Příspěvek od ohruska » 04 pro 2018, 10:54

Jenom pro doplnění uvedu filtr pro odfiltrování nejnižší a nejvyšší hodnoty ze tří měření.
Příklady ukazují, když se naměří 3 různé hodnoty směru větru. Střední hodnota je vždy směr J - jižní vítr.

Kód: Vybrat vše

//int aa[]={180,180,180}; // Mereni smeru vetru 3x smer J,J,J
//int aa[]={205,180,180}; // Mereni smeru vetru 3x smer JZ,J,J
//int aa[]={157,180,180}; // Mereni smeru vetru 3x smer JV,J,J
int aa[]={205,157,180}; // Mereni smeru vetru 3x smer JZ,JV,J
//int aa[]={180,205,157}; // Mereni smeru vetru 3x smer J,JZ,JV

int pocet=3; //pocet mereni (prvku v poli)
float smer=0.00;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); 
  smer=avergearray(aa,pocet);
  Serial.println();
  Serial.print("Vysledna hodnota smeru vetru =  ");
  Serial.print(smer);
}

void loop() {
  // put your main code here, to run repeatedly:

}

double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<2){   //less than 5, calculated directly statistics
    for(i=0;i<number;i++){
      amount+=arr[i];
    }
    avg = amount/number;
    return avg;
  }else{
    if(arr[0]<arr[1]){
      min = arr[0];max=arr[1];
    }
    else{
      min=arr[1];max=arr[0];
    }
    for(i=2;i<number;i++){
      if(arr[i]<min){
        amount+=min;        //arr<min
        min=arr[i];
      }else {
        if(arr[i]>max){
          amount+=max;    //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
           Serial.print("  ");Serial.print(arr[i]);
        }
      }//if
    }//for
    avg = (double)amount/(number-2);
  }//if
         Serial.println();
         Serial.print("min=  ");
         Serial.print(min);
         Serial.print("  max=  ");
         Serial.print(max);       
         Serial.print("  prum=  ");
         Serial.print(avg);
  return avg;
}
min= 157 max= 205 prum= 180.00
Výsledek je 180.00

cz_marek
Příspěvky: 104
Registrován: 31 led 2018, 09:01
Reputation: 0

Re: Modelářská meteostanice

Příspěvek od cz_marek » 05 pro 2018, 07:17

Moc hezke počtení. Pro me i hodne inspirativni.

osmoulaa
Příspěvky: 1
Registrován: 04 čer 2019, 09:00
Reputation: 0

Re: Modelářská meteostanice

Příspěvek od osmoulaa » 04 čer 2019, 09:06

Narazil jsem na Vaši meteostanici. Vypadá to super. Asi nebudete chtít uvolnit zapojení a kód?
Něco podobnýho by se nám hodilo na naše letiště (Kožichovice).
Petr

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Modelářská meteostanice

Příspěvek od ohruska » 04 čer 2019, 22:51

Zdravím.
Momentálně předělávám meteostanici na WEMOS D1.
Je to výhodnější z hlediska spotřeby a hlavně je možné desku uspat. Takže momentálně se měří asi 20 vteřin, pak se data pošlou na server a deska se uspí na 100 sekund.
Akorát nejde použít kalmanův filtr, protože se smyčka neopakuje, ale provede se jenom jednou. Pomocná data jsou zapomenuta.
Zapojení je podle dokumentace ke stanici.
nebo tady: https://www.vodnici.net/wiki/meteostani ... eru-vetru/
Směr větru je zapojen na analogový vstup A0 a rychlost větru na vstup přerušení.
Pro měření teploty, tlaku a vlhkosti je použito BME280 pro měření napětí baterie je výhodné použít INA219.
Kód je zatím ve výstavbě.
Ota

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Modelářská meteostanice

Příspěvek od pavel1tu » 05 čer 2019, 10:22

ohruska píše:
04 čer 2019, 22:51
... a deska se uspí na 100 sekund.
Akorát nejde použít kalmanův filtr, protože se smyčka neopakuje, ale provede se jenom jednou. Pomocná data jsou zapomenuta.
... a rychlost větru na vstup přerušení.
tak to já se optám ....
- deska se uspí na 100s - to umí každé Arduino, ale asi to moc nenaspí, když to přerušením probudíš od čidla větru - a to jde prakticky pořád (u mne 2x za otáčku)
- kalmanův filtr - proč to zapomíná data ? Při uspání se data vymažou ? (ptám se, chci to používat, tak abych se zbytečně nezaseknul na tomto problému

děkuji

Pavel
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: Modelářská meteostanice

Příspěvek od ohruska » 05 čer 2019, 11:01

Arduino to umí, ale neuměla to eternetová deska W5100, která hodně žere.
Data měřím pouze 20s. První změřím směr větru - 9 měření a potom změřím rychlost větru 15s a uložím data na server, zbytek spím.
Kalmanův filtr si v podprogramu (rutině výpočtu), pamatuje poslední vypočítané hodnoty z předchozího měření a s nimi počítá dál.
Když se program spustí vždy jen 1x, tak nezná poslední vypočítané hodnoty filtru, proto dosadí hodnoty 0 a výsledek je potom třeba 1/2 skutečné hodnoty.
Chtěl bych to obejít načtením poslední změřené hodnoty ze serveru, udělat výpočet kalnovým filtrem a po změření nové hodnoty výpočet zopakovat.
Pak by to mohlo fungovat. Zatím nemám odzkoušeno...
Jinak bych musel použít externí paměť, kde ty vypočtené hodnoty uložím a po startu si je znovu načtu.
Ota

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Modelářská meteostanice

Příspěvek od pavel1tu » 05 čer 2019, 13:29

AHA, díky ....

my tam máme GSM modul s daty, ten spát umí a nový solární panel 12V/6W + baterku 6V/2Ah

v plánu je měřit jednou za minutu, data ukládáme do pole a co 15min odesíláme domů na server (no, zatím neodesíláme, nedaří se).
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů