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
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
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
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
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".
Zvýšení
frekvence krystalu o 0,5ppm.
Export
naměřených hodnot
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ů
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
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
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
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
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
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
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.
|