Meteostanice s hodinami a s ukazatelem měsíčních fází

Nastavení a komunikace přes sériovou linku

Základní nastavení zařízení se provádí přes USB sériový port v libovolném sériovém terminálu pomocí jednoduchých textových příkazů.

Jedná se o nastavení datumu a času, nastavení korekcí čidel, stažení všech naměřených hodnot,  nebo stažení aktuálních hodnot, které jsou zobrazené na displeji.

Příkaz začíná vždycky znakem "#"  a pokračuje dalším znakem, který určuje funkci. Některé funkce pak vyžadují ještě další číslo jako parametr (například při nastavení korekcí), nebo řetězec čísel (například při nastavení času).
Neodesílá se žádné ukončení řádky. Je nutné celý příkaz odeslat najednou (během 0,1 sekundy).

Komunikační parametry sériové linky jsou nastavené napevno:  "38400,n,8,1".



Přehledný seznam příkazů pro sériovou komunikaci

Detailní popis jednotlivých příkazů je pod tabulkou.

Příkaz Parametr   Popis
#? - Nápověda (seznam příkazů)
#d - Detailní informace o systému
## - Výpis aktuálních hodnot v CSV formátu.
#D - Displej do sériové linky
#T[str] yyyymmddhhnnssW Nastavení datumu, času a dne v týdnu. Příklad: #T201809261645003 = 26.9.2018 16:45:00 Středa
#P[b] 0 až 255 Korekce tlakoměru ( -1000 až +1550Pa ). Příklad: #P105 =+50Pa
#O[b] 0 až 255 Korekce prvního (hlavního) čidla venkovní teploty  (-10°C až + 15,5°C). Příklad: #O103 = +0,3°C
#o[b] 0 až 255 Korekce druhého čidla venkovní teploty  (-10°C až + 15,5°C). Příklad: #o95 = -0,5°C
#I[b] 0 až 255 Korekce vnitřní teploty  (-10°C až + 15,5°C). Příklad: #I94 = -0,6°C
#V[b] 0 až 255 Korekce vlhkoměru  (-100% až + 155%). Příklad: #V2 = +2%RH
#A[b] 0 až 255 Nastavení "Aging offset" registru v RTC obvodu DS3231. Příklad: #A7 = +0,7PPM
#x - Výpis 150 5-minutových záznamů všech hodnot.
#X - Výpis 150 hodinových průměrů všech hodnot.
#M - Mazání celkových rekordů

#m

- Zhasnutí všech LED (potvrzení rekordů).

#-

- Mazání polodenních rekordů
#Z[w] 0 až 1440 Čas blokování R/G LED. Příklad: #Z600 = 10 hodin se nebude signalizovat rekord pomocí LED.
#U1,[w] -500 až 1000 Spínací úroveň v desetinách °C pro modrou LED (-50.0°C až +100°C). Příklad: #U1,278 = 27,8°C
#U2,[w] -500 až 1000 Rozpínací úroveň v desetinách °C pro modrou LED (-50.0°C až +100°C). Příklad: #U2,300 = 30,0°C
#g[f,f] 47 až 52, 11 až 23 Zeměpisné souřadnice. Příklad: #g49.84,14.3 = 49,84°s.š. ; 14,30°v.d.
#G[w] 0 až 3000 Nadmořská výška. Příklad: #G523 = 523 m.n.m.
#L - Informace o Slunci a Měsíci
#B[w,w,b] 0 až 1440, 0 až 255 Nastavení budíku. Příklad: #B334,354,248 = 5:34 až 5:54, Pondělí až Pátek
#b - Informace o nastavením budíku.



Detailní informace o systému

#d

Tady asi nemá cenu nic podrobně vysvětlovat.

#d
Casova zona      :  2
Korekce tepl. IN :  100
Korekce tlaku    :  100
Korekce vlhkosti :  100
Korekce tepl. OUT:  100
Korekce tepl. OUT2: 100
Prepinaci uroven 1: 50.00'C
Prepinaci uroven 2: 50.00'C
Stari Mesice [d] :  8.82
Aktualni teplota    OUT: 8.87'C
Maximalni teplota:  30.27'C (28. 8. 14:49)
Minimalni teplota:  5.74'C ( 4. 9.  6:11)
Reset rekordu    :  24. 8. 19:58
 
Puldenni rekordy   
Aktualne od: 6:00
   Minimum:  7.5'C ( 6:15)    Maximum:  9.2'C ( 8:03)
Nocni rekordy (18:00 az 6:00)          
   Minimum:  7.5'C ( 5:32)    Maximum: 11.7'C (18:00)

 


Výpis aktuálních hodnot v CSV formátu.

##

Aktuální naměřené hodnoty v jedné řádce oddělené středníky.

##
 8. 9.2019; 8:15:30;590;731;59;42697;0b00000000;6;12698

První dvě hodnoty jsou datum a čas.

Pak následují údaje o venkovní a vnitřní teplotě.
Tyto hodnoty jsou v desetinách °C zvětšené o 500. Je to z toho důvodu, aby byly v celočíselném formátu unsigned int, který se pak jednoduše zpracovává.
  (pro -50°C je tedy odeslána hodnota 0; pro 0°C je odeslána hodnota 500; pro 20°C je odeslána hodnota 700 ...)

Další číslo je vlhkost v %. Tady žádný přepočet není. vždycky je to celé číslo v rozsahu 0 až 100%

Dále je pak odeslána informace o atmosférickém tlaku. I tady je proveden přepočet.
Aby se hodnota vešla do rozsahu unsigned int, je od naměřené hodnoty odečteno číslo 60000.
V případě, že je v systému zadaná nějaká nadmořská výška, provádí se na tuto výšku přepočet tlaku.

Další je binární řetězec, který informuje o stavech LED:
bit 7 ... modré LED
bit 5 ... stav červené ED
bit 4 ... stav zelené LED

Předposlední číslo udává index ikony Měsíce. Je to v číslo 0 až 119 pro jeden celý měsíční cyklus (od novu do novu).
Pokud se toto číslo vynásobí 3, je možné získat přibližné colongitudo.

Poslední číslo je stáří Měsíce v minutách od posledního novu.

Celá sekvence končí Windowsovským koncem řádky (CR+LF).
 
 

Displej do sériové linky

#D

Funkce je podobná výstupu odeslání CSV dat, ale je čitelnější a obsahuje některé údaje navíc:

#D
Datum:  8. 9.2019 Ne
Cas:  8:50:36 SELC
Teplota OUT: 9.97 ['C]
Teplota IN: 23.22 ['C]
Tlak: 102684 [Pa]
   (pro nadm. vysku: 544 m.n.m.)
Vlhkost: 59 [%]
Stavy:
Modra LED: 0
Zelena LED: 0
Cervena LED: 0
Modra pamet: 0
Bluetooth: 1
SD log: 1
Blokovani LED: 1


Nastavení času

#T

Nastavení času se provádí odesláním příkazu "#T", za kterým následuje řetězec 15 čísel s významem YYYYMMDDhhnnssW.
(4 znaky pro rok, po dvou znacích měsíc, den, hodiny, minuty a sekundy. Poslední číslo je den v týdnu Po=1 ....Ne=7).
Před nastavením je nutné přepnout přepínač SEČ / SELČ do správné polohy. Čas se pak zadává v místním časovém pásmu.

#T201807112147103
Rok     :           2018
Mesic   :           7
Den     :           11
Hodiny  :           21
Minuty  :           47
Sekundy :           10
Den v tydnu:        St
Po zadání příkazu se zobrazí rozložené položky s popisy.

Při změně mezi SEČ a SELČ pak stačí jen přepnout přepínač a čas se automaticky o hodinu upraví.
Jedinou podmínkou je, aby toto přepnutí bylo učiněno v době, kdy přičtení, nebo odečtení hodiny nezpůsobí přechod mezi dny.
Takže podzimní přechod ze SELČ na SEČ by neměl být prováděn v době mezi půlnocí a jednou hodinou ráno.
A jarní přechod ze SEČ na SELČ by neměl být prováděn mezi 23. hodinou a půlnocí.
Pokud by k přepnutí došlo v těchto "nedovolených" intervalech, hodina se automaticky neposune a čas se pak bude muset nastavit přes 
sériový port.


 

Nastavení korekcí čidel

Každou naměřenou hodnotu je možné před zobrazením o něco posunout. Tuto funkci jsem zavedl pro zlepšení přesnosti.
Posunutí je ale jen o konstantní hodnotu.

 Pro korekci zobrazení naměřených hodnot se používají příkazy:
  "#P" pro korekci tlaku
  "#O" pro korekci prvního (hlavního) čidla venkovní teploty (OUT)
  "#o" pro korekci druhého čidla venkovní teploty (OUT)
  "#I" pro korekci vnitřní teploty (IN)
  "#V" pro korekci vlhkoměru

Číslo 100 ve všech případech znamená bez korekce.
Pro vlhkost platí, že každé jedno číslo nad, nebo pod 100 je korekce o +/- 1%
příklad:
#V102 bude zobrazovat a ukládat hodnoty o 2% vlhkosti větší, než čidlo změřilo (čidlo změří 54%, zobrazí se 56%).


Pro korekci tlaku odpovídá každé číslo nad nebo pod 100 deseti Pascalům.
příklad
#P95 bude zobrazovat o 50Pa méně, než je měřená hodnota (čidlo změří 95123Pa, ale zobrazí se 95073Pa)


Pro venkovní a vnitřní teploty je kažné číslo nad, nebo pod 100 desetina °C.
příklad:
#O103 bude zobrazovat teplotu z prvního venkovního čidla o 0,3°C vyšší, než je změřená.
#I98  bude zobrazovat teplotu z vnitřního čidla teploty o 0,2°C nižší, než je naměřená.

 


Doladění přesnosti RTC obvodu

#A

Použitý RTC obvod DS3231 je velice přesný.
Podle katalogového listu je při použití v běžných teplotách (0°C až 40°C) maximální odchylka +/-2ppm. 
To znamená maximální odchylku za rok:
  365 [dní] * 24 [hodin] * 60 [minut] * 60 [sekund] * 0.000 002 [ppm] = 63 sekund za rok.

   
Frekvenci krystalu v RTC obvodu je možné ještě doladit pomocí registru "Aging Offset" (viz katalogový list obvodu DS3231).
Hodnotu tohoto registru je možné upravovat přes sériovou linku příkazem "#A", za kterým následuje číslo v rozsahu 0 až 255.  

Takže například odesláním sekvence znaků "#A127" se frekvence krystalu zrychlí na maximum, nebo odesláním "#A255" se frekvence sníží na minimum. Změna o jedno číslo zrychluje nebo zpomaluje krystal o 0,1ppm.
    Defaultní hodnota je "#A0".

#A5
5
Zvýšení frekvence krystalu o 0,5ppm.



Export naměřených hodnot  

#x

#X

V programu jsou zavedené ještě exportní funkce, které jsou přístupné přes sériový terminál.

Po zadání příkazu "#x" (malé x) dojde k exportu 150 posledních hodnot zaznamenaných s intervalem 5 minut.

Výpis ze sériového terminálu pak vypadá nějak takto:
#x
0;1230;42771;611;727;55;
1;1235;42772;609;727;55;
2;1240;42763;608;727;55;
3;1245;42764;609;727;55;
4;1250;42772;608;728;55;
5;1255;42769;608;728;55;
6;1260;42780;608;728;55;
7;1265;42785;607;728;55;
8;1270;42787;607;729;55;
9;1275;42780;606;729;55;
10;1280;42782;606;729;55;
11;1285;42784;606;729;55;
.
.       
(tady data pokračují)
.
147;525;42690;598;731;59;
148;530;42686;599;732;59;
149;535;42687;601;731;59;


Podobně pak příkaz "#X" (velké X) slouží k přenosu posledních 150 hodinových průměrů záznamů.
#X
0;5860;42462;654;762;60;
1;5861;42487;655;760;60;
2;5862;42520;650;757;59;
3;5863;42606;639;754;58;
4;5864;42701;634;753;58;
5;5865;42798;627;750;57;
6;5866;42862;627;748;56;
.
.
.       
(tady data pokračují)
.
147;6007;42747;576;728;58;
148;6008;42730;581;729;58;
149;6009;42685;597;731;59;


Jednotlivé sloupce dat jsou odděleny středníkem.

První číslo je pořadové číslo vzorku.

Druhé číslo udává časovou značku při ukládání vzorku do paměti
              u 5-minutových záznamů je to počet minut od půlnoci aktuálního dne (0 až 1435)
              u hodinových záznamů je to počet hodin od půlnoci 1.ledna aktuálního roku (0 až 8783)

Třetí číslo je hodnota tlaku v Pascalech, od které jo odečtena konstanta 60000
                   To je z toho důvodu, aby se hodnota tlaku vešla do velikosti proměnné "unsigned int" (to je 0 až 65535)

Čtvrté číslo je teplota z venkovního čidla teploty DS18B20 v desetinách °C zvětšená o 500 (například číslo 425 znamená -7,5°C)

Páté číslo je vnitřní teplota z čidla vlhkosti v desetinách °C zvětšená o 500 (například číslo 737 znamená 23,7°C)

Poslední číslo je vlhkost v %

Všechny hodnoty se ukládají včetně nastavených korekcí.

Pokud se vrací jako hodnota číslo 65535, znamená to, že se do této paměťové pozice ještě žádné hodnoty neuložily.

 


Nulování celkových rekordů

#M

Příkaz #M smaže celkové rekordy, zaznamená datum a čas smazání, na 24 hodin zablokuje červenou a zelenou LED, na paměťové kartě založí nový soubor pro záznam rekordů.




Zhasínání všech LED

#m

Příkaz #m zhasne červenou a zelenou LED (pokud svítily z důvodu nějakého rekordu).




Mazání polodenních rekordů

#-

Při  příkazu #- se smažou rekordy od 6:00 (případně od 18:00) do aktuálního času.
Je to pozůstatek testování programu, který se asi běžně nevyužije. Používal jsem ho například kdy se mi poškodilo čidlo a zaznamenaly se nesmyslné rekordy.



Čas blokování R/G LED

#Z

Po smazání celkových rekordů je nastaveno na 24 hodin (1440 minut) blokování rozsvěcení červené a zelené LED. Je to z toho důvodu, že se po vymazání rekordu obě LED vždycky okamžitě rozsvítily.
Blokování umožňuje, že  se začnou rozsvěcovat až když dojde k překročení rekordů následující den.

Příkazem #Z je možné tento čas blokování oddálit, nebo zkrátit.

Příklad pro nastavení blokování LED na 2 hodiny:

#Z120



Nastavení úrovní spínání modré LED

#U

Modrá LED se ovládá pomocí 2 úrovní teplot.
1. úroveň říká, kdy se má LED rozsvítit, 2. úroveň je pro zhasínání.
Jejich kombinacemi je možné dosáhnout toho, že se LED rozsvítí například mezi 15°C a 20°C.
Pokud je 2. úroveň nižší, než 1., je možné nastavit inverzní funkci (LED bude rozsvícená od -50°C do 15°C a pak od 20°C do 100°C).

Úrovně se dají nastavit přes dotykový panel, kde je pak i jednoduchý sloupcový graf signalizující rozsvícené pásmo, nebo je možné tyto úrovně nastavit přes sériovou linku (bluetooth).

Příklad pro nastavení první úrovně na 10,2°C:
#U1,10.2

Příklad nastavení druhé úrovně na 25,7°C:
#U2,25.7




Nastavení zeměpisných souřadnic

#g

#G

Kvůli astronomickým výpočtům je nutné zastavit zeměpisné souřadnice. Program je omezený na souřadnice v okolí ČR, protože při zadání souřadnic za polární kruh by mohlo docházet k problémům například při výpočtech východů a západů SLunce.

příklad:
#g49.44,14.37    nastaví souřadnice na Milevsko

Nadmořská výška nemá vliv na astronomické výpočty, ale pouze na přepočet tlaku na hladinu moře.
příklad:
#G523  nastaví nadmořskou výšku na 523 m.n.m.

 


Detailní informace o Slunci a Měsíci

#L

Ani tady nemá cenu detailně popisovat jednotlivé položky.
Položka PeriApo udává poměr aktuální vzdálenosti Měsíce k perigeu a apogeu.
Když je Měsíc nejdál o Země je hodnota 0%, když je nejblíž, je hodnota 100%

#L
Mesic (pro geosouradnice: LAT=49.44 / LON=14.37)
Azimut: 21
Elevace: -61
Colongitudo: 18
Osvetleni [%]: 71
Stari [d]: 8.87
PeriApo [%]: 24
pristi faze: Uplnek           14.9.  6:33
Dalsi vychod: 8.9.  16:53
     na azimutu: 126
Dalsi zapad:  9.9.   1:19
     na azimutu: 234
 
Slunce:
 Aktualni azimut:  115
 Aktualni elevace: 27
 Aktualni uhel Mesic - Slunce:115.51
 
 Dnes vychazi:  6:27
     na azimutu: 80
 Dnes zapada:  19:32
     na azimutu: 280
 



Nastavení budíku

#B

#b

 
Nastavení budíku je jednodušší dělat přes dotykový displej, ale je to možné i přes sériovou linku.


při příkazu #B je prvním parametrem počet minut od půlnoci, kdy se má displej rozsvítit.
Druhý parametr je počet minut od půlnoci, kdy má displej zhasnout.
Třetí parametr je bitová maska, která udává, ve kterých dnech se má displej rozsvěcet (bit 7 = Po; bit 6 = Út; ......;  bit 1 = Ne ; bit 0 není využitý).

Příklad:
#B334,354,248    nastaví rozsvěcení displeje mezi 05:34 až 05:54 v pondělí až pátek


Příkaz #b slouží ke kontrole nastaveného budíku:
#b
Budik ON: 5:34
Budik OFF: 5:54
Maska Po,...,Ne,X:  0b11111000


Pípání probíhá vždycky první minutu po rozsvícení displeje (pokud není vypnuté vypínačem na zadní straně meteostanice)

Pokud je nastaveno, že se má displej automaticky rozsvítit za méně než 24 hodin, svítí na něm ikona zvonku.
Když je ale zablokované pípání pomocí zadního přepínače, je ikona zvonku přeškrtnutá.
Pokud má nastat rozsvícení displeje za více než 24 hodin, žádná ikona zvonku se nezobrazuje.




úvodní strana webu AstroMiK.org

poslední úprava stránky 21.10.2019