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.
Odpovědět
ohruska
Příspěvky: 145
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 146 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: 348
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

pavel1tu
Příspěvky: 474
Registrován: 26 říj 2017, 08:28
Reputation: 1
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
http://pavel1tu.8u.cz/

ohruska
Příspěvky: 145
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: 22
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.

Odpovědět

Kdo je online

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