Arduino

Hodiny pro astronomická pozorování

SOFTWARE


Displej

Pro ovládání displeje Nokia jsem použil základ z těchto stránek:

http://arduino8.webnode.cz/news/lekce-7-modul-displeje-z-nokie-5110/

Vzhledem k tomu, že ten program obsahoval několik funkcí, které jsem nepotřeboval a které mi tedy zbytečně zabíraly místo v paměti, tak jsem program dost poopravil.

Velkým zásahem bylo převedení fontu do EEPROM.
Do EEPROM jsem ještě přidal grafické definice velkého číselného fontu (zobrazování hodin a minut) a středního fontu (zobrazování sekund). 
Jedna z nejdůležitějších funkcí byla možnost regulace podsvětu displeje. Tuto funkci jsem také musel do původního programu dopsat.  

Sketch pro generování obsahu EEPROM včetně popisu uspořádání dat v EEPROM je tady:
   fonteeprom.zip

 

Rozložení prvků na základním displeji je vidět na tomto obrázku:
  


RTC obvod

Vycházel jsem z ukázkového příkladu I2C komunikace s obvodem DS1307 pomocí knihovny RTClib.cpp, ze které jsem vyházel nepotřebné věci a zbytek jsem upravil pro obvod M41T81M6.

 


Externí SRAM

Komunikaci s externí pamětí 23lcv512 jsem opsal z příkladu SpiRAM
I tady jsem kvůli úspoře FLASH paměti odstranil nepotřebné podprogramy  (například sekvenční čtení a zápis a nastavení rychlosti komunikace).

Organizace dat v paměti je popsána v tomto dokumentu: organizace_sram.xls

 


Stručný návod k použití - hodiny

Okamžitě po zapnutí napájení se displej přepne do základního nastavení, ve kterém je vidět čas a několik dalších informací, popsaných na předchozí stránce.   

Při pohybu joysticku do libovolné strany dochází k záznamu aktuálního času do paměti. Pokud je nastaveno pípání při pohybu joysticku (viz níže), ozve se krátké pípnutí. Pokud je doba vychýlení delší než 2 sekundy, ozve se při návratu joysticku do klidové polohy druhé hlubší pípnutí.

Při stisku tlačítka, které je součástí joysticku se vstoupí do základního menu, ve kterém je možné měnit jas, listovat alarmy a zaznamenanými časy, nastavovat čas v hodinách. Listování v menu se provádí pohybem joysticku nahoru nebo dolu. Vybraná položka je označena malou šipkou na začátku řádky ">".
Potvrzení položky je možné vychýlením joysticku vpravo, nebo stiskem tlačítka. 

 

 


Hrubá změna jasu se provádí pohybem joysticku nahoru nebo dolu (+/- 20 jednotek) Jemná změna jasu se provádí vychýlením joysticku vlevo nebo vpravo (+/- 1 jednotka). Rozsah nastavení jasu je 0 až 255 jednotek pro zhasnutý displej až 100% jasu.

 


Listování jednotlivými záznamy času se provádí vychýlením joysticku do stran. Zrychlené listování po 20 záznamech se provádí vychýlením joysticku nahoru, nebo dolu. Při přelistování za poslední záznam se na displeji objeví dotaz, jestli se mají všechny záznamy smazat. Potvrzení smazání se provede tlačítkem na joysticku. Pokud se záznamy smazat nemají, nalistuje se na nějaký předchozí zaznamenaný čas a stiskem tlačítka se provede návrat na hlavní obrazovku.

   

 


Listování alarmy je možné pouze po jednom - náklonem joysticku vlevo, nebo vpravo. 
Stiskem tlačítka se provede návrat do hlavní obrazovky.
Při vychýlení joysticku nahoru je možné u zvoleného alarmu provést úpravu datumu a času jeho spuštění.
Není možné měnit textový popis.

Úprava jednotlivých položek se provádí pomocí joysticku (náklon do stran je listování po jednotlivých položkách - hodiny, minuty, dny ... náklon nahoru nebo dolu je změna hodnoty). Pod právě nastavovanou položkou je malá šipka 

Pokud má být alarm aktivní, je třeba v editaci nastavit v hranaté závorce znak [A] (nahnutí joysticku nahoru). Pokud je závorka prázdná, je alarm neaktivní.

  

 


Nastavení času se provádí podobným způsobem, jako nastavení alarmu. Pohybem joysticku do stran se vybere příslušný parametr (hodina, minuta, den, rok...) a pohybem joysticku nahoru a dolu se mění hodnota. 
Při stisku tlačítka se nastavené parametry uloží do RTC obvodu.

Zvláštní význam má hranatá závorka v pravé dolní části displeje. Pokud se v ní nastaví [X], dojde po následném stisku tlačítka k ukončení editace, ale čas se nenastaví - zůstane beze změny. To je ochrana proti tomu, aby se při náhodném vstupu do nastavení času dalo odejít bez přenastavení. Má to tedy význam jakéhosi "Cancel" tlačítka.

Přesné nastavení času je možné také přes PC program - popsáno níže.

  


Položka "Přenos PC" připraví hodiny na komunikaci s počítačem.
Po vybrání této položky se hodiny přepnou do vyčkávacího režimu, ve kterém čekají na příkaz z PC, který zvolí směr přenosu.
Tento vyčkávací režim je možné přerušit stiskem tlačítka na joysticku.

Během přenosu je v pravém dolním rohu displeje zobrazován údaj o stavu přenesených dat v procentech.
Pokud během přenosu dojde k přerušení spojení, je možné zastavit přenos stiskem tlačítka a vrátit se do základní obrazovky. 

Po ukončení přenosu je na několik sekund zobrazen kontrolní součet přenesených dat.
Stejný součet je vytvářen i v  programu na PC a po skončení je tak možné zkontrolovat, že se data přenesla bez chyb. 

Přenos dat mezi hodinami a PC je možný i bez vstupu do menu.
Když se hodiny nachází v základním zobrazení, je možné inicializovat přenos přímo - pomocí PC programu.

       

  
  

  


Položka "Nastaveni" umožňuje nastavit následující parametry:

- Jemné doladění frekvence krystalu RTC obvodu v rozsahu -32 až +31 (detaily o tomto parametru viz katalogový list)

- Nastavení vnitřního pískáku na pípnutí každou hodinu (H=1), na pípání při alarmu (A=1), na písknutí při záznamu času při pohybu joystickem J=1) a na pípnutí při ukládání naměřené hodnoty teploty, nebo napětí do paměti (S=1).

- Výběr kanálů, které se budou ukládat do paměti (T=teplota; U1= první napěťový kanál; U2 = druhý napěťový kanál) 

- Čas v sekundách, po kterém bude docházet k ukládání hodnot zvolených kanálů do paměti.

Výběr položky se provádí náklonem joysticku nahoru nebo dolu, nastavení hodnoty konkrétní položky je proveden vychýlením joysticku vlevo, nebo vpravo. Aktuálně zvolená položka má stejně jako v hlavním menu na začátku řádky malou šipku ">"

 

  


Program má zabudovanou "skrytou" funkci servisního menu.
Toto menu se zobrazuje v případě, že je při zapnutí napájení joystick nakloněný nahoru.

Servisní menu umožňuje nastavení komunikační rychlosti mezi PC a hodinami, jemné nastavení kontrastu displeje, smazání naměřených hodnot teploty a napětí, a uvedení hodin včetně RTC obvodu do základního (továrního) nastavení.

  


Stručný návod k použití - PC program

Program obsahuje 4 záložky (Info+Komunikace+Čas, Záznamy času, Alarmy, Naměřené hodnoty)

Po spuštění programu je většina funkcí zablokována do doby, než dojde k prvnímu stažení dat z hodin.

Před stažením dat je třeba nastavit správný sériový port a rychlost komunikace (defaultně 38400).
Po stisku tlačítka "[Stáhnout všechna data z hodin]" dojde k přenosu dat směrem z hodin do PC.
Hodiny musí být buď v základním režimu (zobrazují čas), nebo musí být z hlavního menu zvolena položka "Prenos PC", čímž jsou hodiny ve vyčkávacím režimu.

Průběh přenosu se zobrazuje pouze na hodinách.
Po skončení přenosu se na pár sekund objeví kontrolní součet, který se porovná s údajem v hodinách.

Stažená data se automaticky rozdělí na záznamy času, alarmy a naměřené hodnoty. Tím se zpřístupní i ostatní funkce programu.

Na první záložce se po dokončení přenosu zobrazí i systémové proměnné. 

 

Všechny úpravy, které se pomocí PC programu provedou, zůstávají pouze v PC. Pro přenesení do hodin je třeba stisknout tlačítko "[Poslat upravené údaje do hodin]".

Myslím, že ovládání programu je tak jasné, že nemá cenu se tím nějak detailně zabývat.

Upozorním snad jen na rámeček "Napěťové rozsahy", ve kterém je možné změnit rozsah měřených napětí při použití přídavných děličů napětí na dvou měřících napěťových vstupech. Bez děličů je měřící rozsah obou kanálů 5V.

Rámeček "Ruční editace SRAM" umožňuje ručně nastavovat systémové proměnné přes PC. U každé položky je uveden krátký popis. Je to stejné jako v tomto souboru.

Tlačítko "[Zjistit rozdíl časů]" umožňuje dlouhodobě sledovat, jak se rozchází čas na PC s časem v hodinách a podle toho je možné jemně doladit kalibraci krystalu RTC obvodu. Při každém stisku tlačítka dochází k záznamu rozdílů časů do logovacího souboru "CasoveSychro.txt". Zároveň je v hodinách vytvořen časový záznam. Na rozdíl od časového záznamu, který vzniká při pohybu joysticku, má tento záznam jako směr uvedeno písmeno "S".

Tlačítkem "[Nastavit čas v hodinách]" se nastavuje čas v hodinách přesně podle času v PC. Před použitím je tedy dobré provést na PC seřízení času podle nějakého NTP serveru. V případě použití této funkce je třeba přepnout hodiny přes menu do režimu nastavení času. Nastavení času je také zaznamenáno do logovacího souboru "CasoveSychro.txt".
Jen pro vysvětlení: Hodnoty označené v souboru jako "t_stamp" udávají počet sekund od 1.1.2000. Tato hodnota se zaznamenává při seřízení hodin. Hodnota "t_diff" je čas v sekundách od posledního seřízení hodin. A hodnota "rozdil" je rozdíl mezi časem v PC a v hodinách (v milisekundách)

V případě problému s komunikací je možné přenos ukončit žlutým tlačítkem "[Přerušit přenos]". Na jednom počítači se mi stalo, že při takovémto přerušení zůstal zaseklý komunikační port a bylo třeba restartovat počítač. Doplnil jsem tedy funkci na tlačítku "[Uvolnit COM]", která tento problém řeší.

Složka pro ukládání záznamů udává místo na disku, kam se budou ukládat zpracované CSV soubory (viz níže).

Desetinný oddělovač v souborech je snad také jasný (jako oddělovač se může v exportovaných souborech používat tečka, nebo čárka).

  


Druhou záložkou v programu je záložka "Záznamy času", která obsahuje tabulku se seznamem zaznamenaných časových okamžiků.
Tyto záznamy je možné filtrovat podle značky směru vychýlení joysticku a dále je možné zobrazené záznamy exportovat do textového souboru (CSV soubor s položkami oddělenými středníky). Tento soubor je pak možné zpracovávat třeba v Excelu.

 


Na třetí záložce se připravují alarmy.

Kromě ručního vložení alarmu pomocí zápisu hodnot do jednotlivých políček pod tabulkou je možné importovat alarmy z kalendářových souborů .VCS (příklad). Speciálně jsem pak doplnil možnost zkracování komentářů pro alarmy importované z mých vlastních stránek.
Zaškrtávací políčko před datumem udává, jestli bude alarm aktivní. V tabulce jsou aktivní alarmy označené písmenem "A".

Editace alarmu v tabulce se provádí dvojklikem na požadované řádce.

Alarmy je možné smazat dvěma způsoby:
1) pomocí tlačítka "Defragmentace alarmů". Tím se neaktivní alarmy smažou a aktivní se přeskupí.
2) Tlačítkem "Smazat všechny alarmy" se prvních 5 alarmů nastaví na defaultní hodnoty (1.1. 0:00:00) a zbylé alarmy se smažou (nezávisle na tom, jestli jsou aktivní, nebo neaktivní).

Prvních 5 uživatelských alarmů není možné úplně smazat, ani není možné jim nastavit textový popis. Jejich hlavní účel je v tom, že je možné je upravovat v hodinách i v případě, že nejsou jiné alarmy v hodinách nahrané.

Jak jsem psal už výše, všechny provedené změny se týkají pouze dat v počítači. Pro provedení změn i v hodinách je třeba upravená data nahrát do hodin (první záložka, tlačítko "Poslat upravené údaje do hodin").

  


Poslední záložkou je záložka "Naměřené hodnoty".
V každé řádce je blok naměřených hodnot. Při přerušení měření (například vstupem do menu v hodinách, vypnutím napájení, nebo přerušením měření z důvodu komunikace s PC) dochází vždy k založení nového bloku.

V tabulce udávají sloupce "datum" a "čas" start měření příslušného bloku.
"Perioda" je čas v sekundách mezi jednotlivými záznamy.
"DATA start" je adresa v SRAM, na které se začala ukládat naměřená data.
"Kanály" udávají typ a počet měřených kanálů (T= teplota; 1=první napěťový kanál; 2=druhý napěťový kanál).
"Rozsah U1 (U2)" je nastavený rozsah měření - je možné ho změnit při použití děličů napětí na napěťových vstupech.
"Počet" - počet naměřených vzorků v bloku. Když je například počet vzorků 128 a perioda je 5 sekund, znamená to, že záznam dat do bloku trval 10 minut  a 40 sekund.

Data z označené řádky je možné vyexportovat do textového CSV souboru (data oddělená středníky). S takto vzniklým souborem je pak možné pracovat třeba v Excelu (třeba tvořit grafy vývoje teploty).  

Data z každého kanálu se ukládají ve dvou bajtech. Pomocí zaškrtávacích políček je možné zvolit, jestli bude export proveden pouze v neupraveném číselném formátu (RAW = hodnota 0 až 65535), nebo jestli se tato hodnota má převádět na čitelné hodnoty (°C nebo volty).

Příklady takovýchto souborů jsou zde:

Dva měřené kanály (Teplota , Napětí 2)
   neupravené hodnoty (RAW)
mer-tu2-rr.csv
Tři měřené kanály (Teplota , Napětí 1, Napětí 2). 
  Teplota převedená na °C, oba napěťové kanály neupravené hodnoty (RAW)
mer-tu1u2-crr.csv
Jeden měřený kanál (Napětí 2). 
  Hodnota převedena na volty. 
mer-u1-c.csv

Tlačítko "[Formátovat FAT]" smaže všechny naměřené hodnoty. V hodinách se smažou hodnoty až po stisku tlačítka "[Poslat upravené údaje do hodin]" na první záložce.

 

 

 

 

 


Download a používání následujících souborů
 je na vaše vlastní riziko.
Nepřebírám žádnou zodpovědnost za
 případné škody nebo nefunkčnosti.


Programy pro Arduino a PC

Program pro PC jsem vytvořil ve Visual Basicu 6 a odzkoušel jsem ho na Windows XP.
HEX soubory byly zkompilovány pro Arduino NANO bez bootloaderu.
Vždy je třeba používat stejné verze programů pro PC i pro Arduino.

Verze Datum Zdrojáky, knihovny a instalační balík Popis změn
2 4.12.2014 astrohodiny-pc-v2.zip astrohodiny-arduino-v2.zip changelog.txt
1 17.11.2014 astrohodiny-pc-v1.zip astrohodiny-arduino-v1.zip první verze

  


 

 

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 4.12.2014