<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ggaspar</id>
	<title>Kiwiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ggaspar"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Ggaspar"/>
	<updated>2026-04-16T16:25:33Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=11022</id>
		<title>Návrh a realizácia zapojenia senzorov systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=11022"/>
		<updated>2012-03-01T16:10:31Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|5|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia zapojenia senzorov=&lt;br /&gt;
Pri realizácii zapojenia senzorov bolo nutné rozdeliť prácu na dve časti. Prvou časťou je vytvorenie nevodivého, vodotesného puzdra odolného na mechanické namáhanie, súčasne dostatočne tepelne vodivého. Druhá časť sa zaoberá zložením senzorov do sondy. Je v nej rozobraté pripájanie senzorov k zbernici 1-Wire a zabezpečenie spojov voči náhodnému skratu.&lt;br /&gt;
&lt;br /&gt;
==Návrh zapojenia==&lt;br /&gt;
Teplomery DS18S20 zapojíme v parazitnom zapojení, aby sme využili možnosti poskytované touto technológiou a zároveň prezentovali jej možnosti. Na Obr. 5.1 je typické zapojenie DS18S20 v parazitnom režime.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.1.png|framed|center|Obr. 5.1 Zapojenie DS18S20 v parazitnom režime]]&lt;br /&gt;
&lt;br /&gt;
Bolo stanovené, že merania budeme vykonávať na piatich senzoroch umiestnených podľa Tab. 5.1.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;600&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 5.1 Umiestnenie teplomerov vzhľadom na povrch&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Názov teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Adresa teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vzdialenosť od povrchu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;cm&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 1&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|109699FF00080021&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;150&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 2&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10466EFF00080012&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;75&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 3&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10C3C82301080004&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 4&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10662D9C010800B0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|101975FF00080014&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|100&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Senzory boli zapojené podľa Obr. 5.2. Teplomer 1 bol umiestnený 150 cm pod povrch a Teplomer 5 bol umiestnený 100 cm nad povrch zeme.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.2.png|framed|center|Obr. 5.2 Skutočné zapojenie senzorov DS18S20]]&lt;br /&gt;
&lt;br /&gt;
==Realizácia senzora==&lt;br /&gt;
Pri realizácii senzora je nutné zohľadniť vplyvy vonkajšieho prostredia a pôdy. Ako puzdro teplomera boli zvolené plastové výlisky na Obr. 5.3, ktorých tepelná zotrvačnosť je podstatne nižšia, ako pri kovových elementoch a zároveň netrpia koróziou.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.3.jpg|framed|center|Obr. 5.3 Plastové puzdro a DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Do plastového puzdra bola natlačená nevodivá silikónová pasta. Pre zamedzenie vzniku vzduchových bublín bolo pri jej aplikácii nutné do vnútra plastového výlisku zaviesť pomocnú trubičku, ktorou unikal vzduch. Takýmto spôsobom bolo celé vnútro puzdra vyplnené silikónom a pripravené na vloženie teplomeru.&lt;br /&gt;
DS18S20 na Obr. 5.3 má spojené vývody  GND a VDD a je pripravené na použite v režime parazitného napájania. Obidva spoje sú obalené tepelne sťahujúcou sa bužírkou. K jeho DQ kontaktu je pripojený čierny vodič a ku kontaktu GND je pripojený zelený vodič podľa Obr. 5.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.4.jpg|framed|center|Obr. 5.4 Vkladanie senzora do puzdra]]&lt;br /&gt;
&lt;br /&gt;
Finálny výrobok na Obr. 5.5 má vstupnú stranu obalenú tepelne sťahujúcou sa bužírkou, do ktorej bolo pred použitím aplikované tavné lepidlo.&lt;br /&gt;
Všetky vyrobené senzory boli testované ponorením do vody na 24 hodín. Aj po takejto záťaži všetky senzory komunikujú, čo potvrdzuje spoľahlivosť takejto formy hydroizolácie.&lt;br /&gt;
&lt;br /&gt;
==Realizácia sondy==&lt;br /&gt;
Na realizáciu sondy bola zvolená plastová lišta, ktorá vzhľadom na svoju nízku tepelnú zotrvačnosť neovplyvňuje presnosť merania. Senzory boli upevnené na lištu v požadovaných vzdialenostiach plastovou sťahovacou páskou a ich poloha bola zaznamenaná permanentným popisovačom podľa Obr. 5.5 a Obr. 5.6. Pre zabezpečenie senzorov proti neželanému pohybu, bolo medzi jednotlivé senzory a steny lišty aplikované tavné lepidlo.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.5.jpg|framed|center|Obr. 5.5 Upevnenie senzora na lištu]]&lt;br /&gt;
&lt;br /&gt;
Pripojenie k zbernici 1-Wire bolo vykonané spájkovaním. Spájkované spoje boli potreté silikónovou pastou a zabezpečené tepelne sťahujúcou sa bužírkou. Následne boli oba izolované spoje vložené do tepelne sťahujúcej sa bužírky s väčším priemerom a silikónovou výplňou. Takáto dvojitá izolácia bola opäť testovaná ponorením do vody na 24 hodín.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.6.jpg|framed|center|Obr. 5.6 Vyznačenie polohy senzora]]&lt;br /&gt;
&lt;br /&gt;
Záverečné pripojenie k mikroprocesoru bolo vykonané v hornej časti lišty, ktorá je uzatvorená zo všetkých strán a vyplnená silikónom. Vzdialenosť od sondy k mikroprocesoru je 12,5 metra a spojenie je vykonané na bifilárne vinutej dvojlinke.&lt;br /&gt;
&lt;br /&gt;
==Inštalácia sondy==&lt;br /&gt;
Pre sondu bolo potrebné vyhĺbiť jamu s hĺbkou 1,5 metra od povrchu. Na Obr. 5.7 je možné vidieť, že do hĺbky 1 meter bolo hĺbenie možné rýľom. Od 1 metra bola na hĺbenie použitá oceľová trubka. Od 0,8 metra bolo v pôde viac kamenia a približne v hĺbke 1,25 metra sme narazili na štrko-pieskovú vrstvu. Vyhĺbenie zvyšných 0,25 metra zabralo 2-krát viac času, ako vyhĺbenie do hĺbky 1,25 metra.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.7.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 5.8 je vidieť, že sonda bola vo svojom označení nulovej hodnoty zarovnaná s povrchom pôdy&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.8.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Povrch v okolí sondy bol utlačený a po týždni, keď pôda klesla, bol znova utlačený a doplnený, aby bol zarovnaný s  nulovou značkou na sonde podľa Obr. 5.9.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.9.jpg|thumb|center|Obr. 5.9 Konečná podoba umiestnenia sondy]]&lt;br /&gt;
&lt;br /&gt;
Pre zamedzenie vplyvu ohrievania teplomeru priamym slnečným žiarením boli na obidva vonkajšie senzory upevnené clony z reflexného materiálu.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_obvodov%C3%A9ho_zapojenia_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=11021</id>
		<title>Návrh a realizácia obvodového zapojenia systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_obvodov%C3%A9ho_zapojenia_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=11021"/>
		<updated>2012-03-01T16:09:55Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|4|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia obvodového zapojenia systému=&lt;br /&gt;
V obvodovom zapojení musíme zohľadniť zapojenie jednotlivých častí návrhu. Celková schéma zapojenia je na Obr. 4.3.&lt;br /&gt;
V nasledujúcich podkapitolách rozoberieme jednotlivé časti zapojenia a popíšeme ich vlastnosti a činnosť. Zapojenie samotného mikroprocesora je vzhľadom na konfigurovateľnosť veľmi flexibilné, pretože skoro každý vstup alebo výstup môže byť zapojený na ľubovoľný pin. Bolo zvolené zapojenie podľa Obr. 4.1. Na ochranu procesora pred rázmi je paralelne s jeho napájacími pinmi zapojený kondenzátor C10.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.1.png|framed|center|Obr. 4.1 Zapojenie PSoC]]&lt;br /&gt;
&lt;br /&gt;
==Ochrana 1-Wire portu==&lt;br /&gt;
Na Obr. 4.2 je zobrazená  prepäťová ochrana 1-Wire zbernice použitím jednoduchého zapojenia rezistora R1 a transilovej diódy D2. V prípade, že napätie na medzi 1-Wire dátovým vodičom a zemou prekročí prierazné napätie transilu, ten sa otvorí a ochráni obvod zvedením napätia na zem. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.2.png|framed|center|Obr. 4.2 Prepäťová ochrana 1-Wire zbernice]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.3.png|thumb|center|Obr. 4.3 Zapojenie systému]]&lt;br /&gt;
&lt;br /&gt;
==Zdroj stabilizovaného napätia 5 V a 3,3 V==&lt;br /&gt;
Na Obr. 4.4 je schéma stabilizovaného zdroja napätia 5 V. Zdroj napätia 3,3 V je napájaný priamo zo zdroja 5 V. Na vstupné svorky A1, B2 pripájame vstupné napätie od 7,5 V do 35 V. Obvod je chránený proti prepólovaniu diódou a proti preťaženiu tepelnou poistkou. Kondenzátory C1 a C5 slúžia na vyhladenie vstupného a výstupného napätia. Aby sme zamedzili vzniku šumu na stabilizátore, do schémy sme zaradili kondenzátory C2 a C3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.4.png|framed|center|Obr. 4.4 Zdroj stabilizovaného napätia]]&lt;br /&gt;
&lt;br /&gt;
Napätie 3,3 V potrebujeme pre napájanie pamäte F-RAM. Obvod je tvorený modifikovaným sériovým stabilizátorom. Tranzistor T1 sa otvára, až pokiaľ na odporovom deliči medzi R4 a zemou nie je 2,5 V. Ak sa bude napätie na emitore ďalej zvyšovať, zdroj referenčného napätia IC2 začne otvárať polovodičový prechod, čo spôsobí pokles bázového prúdu a následne sa zníži napätie na emitore. Výstupné napätie 3,3 V je dané pomerom rezistorov R3 a R4. Na výstup je pripojený kondenzátor C8, ktorý má vyhladiť prípadný superponovaný šum v obvode. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;R_{3}=\frac{3,3}{2,5}.R_{4}-R_{4}=1320-1000=320\Omega &amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(4.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ak k vypočítanému rezistoru R3 zvolíme najbližšiu vyrábanú hodnotu 330 Ω, výstupné napätie bude 3,325 V.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;U=2,5.\left( \frac{R_{3}+R_{4}}{R_{4}} \right)=2,5*1.333=3,325V&amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(4.2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prevodník úrovní z EIA-232 na TTL==&lt;br /&gt;
Prevodník úrovní z EIA-232 na TTL je riešený jednoducho použitím prevodníka MAX232. Napájacie napätie tohto obvodu je 5 V a potrebné napätie pre úrovne EIA-232 je vyrábané pomocou kapacitného generátora napätia – „kapacitnej pumpy“ na Obr. 4.5. Paralelne k napájacím pinom je pripojený kondenzátor C11.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.5.png|framed|center|Obr. 4.5 Zapojenie kapacitného generátora napätia na MAX232]]&lt;br /&gt;
&lt;br /&gt;
==Zapojenie I2C komponentov==&lt;br /&gt;
Na Obr. 4.6 je zapojenie RTC PCF8563 a F-RAM pamäti FM24V10. Zapojenie SDA a SCL vodičov je rovnaké pre oba integrované obvody. Pri RTC je potrebné medzi piny 1 a 2 zapojiť 32,768 kHz kryštál a pri návrhu dosky plošných spojov rozšíriť plôšky podľa odporúčania výrobcu. Na vizuálnu kontrolu funkčnosti RTC je na pin 7 pripojená LED1 s rezistorom R5 napájaná napätím 5 V. Pin 3 je pinom prerušenia, ktoré je vyvolané alarmom alebo ukončením odpočítavania a je pripojený k pinu kontroly prerušenia na mikroprocesore.&lt;br /&gt;
Pri zapojení RTC je odporúčané do zapojenia zahrnúť aj záložnú batériu alebo veľkokapacitný kondenzátor, aby pri náhodnej poruche nedošlo k strate časových údajov v RTC. Aj keď sa v našom zapojení počíta s napájaním zo zálohovaného napájacieho zdroja, na zálohovanie RTC je použitý veľkokapacitný kondenzátor C13.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.6.png|framed|center|Obr. 4.6 Zapojenie I2C komponentov]]&lt;br /&gt;
&lt;br /&gt;
Pamäť F-RAM nevyžaduje žiadne prídavné súčiastky a tak je paralelne k jej napájacím pinom pripojený iba kondenzátor C12, ktorý slúži na vyhladenie napájacieho napätia.&lt;br /&gt;
&lt;br /&gt;
==Realizácia zapojenia==&lt;br /&gt;
Zapojenie bolo realizované na univerzálnej doske plošných spojov. Jednotlivé časti zapojenia sú riešené formou zásuvných modulov. Príklad zásuvného modulu pre komunikáciu EIA-232 je na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.7.jpg|thumb|right|Obr. 4.7 Modul EIA-232]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=11020</id>
		<title>Rozhranie I2C</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=11020"/>
		<updated>2012-03-01T16:09:16Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|3|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Rozhranie I2C=&lt;br /&gt;
Rozhranie I2C bolo vyvinuté firmou Philips pre komunikáciu zariadení na krátke vzdialenosti, typicky na doske plošných spojov. Všetky I2C kompatibilné zariadenia majú zabudované rozhranie, ktoré im umožňuje priamu vzájomnú komunikáciu pomocou zbernice I2C. Vďaka tomuto konceptu je jednoduché vyriešiť množstvo problémov pri navrhovaní obvodov digitálnej elektroniky&lt;br /&gt;
[[Súbor:bcgg3.1.png|framed|center|Obr. 3.1 Zapojenie zariadení na zbernicu I2C]]&lt;br /&gt;
&lt;br /&gt;
==Vlastnosti rozhrania I2C==&lt;br /&gt;
Na pripojenie zariadenia k zbernici I2C sú potrebné iba dva vodiče. SDA – sériová dátová linka a SCL - sériová hodinová linka. &lt;br /&gt;
Každé zariadenie pripojené ku zbernici je softvérovo adresovateľné jedinečnou adresou a jednoduchým vzťahom master/slave. Master zariadenia môžu komunikovať v režime master-vysielač a master-prijímač.&lt;br /&gt;
V I2C protokole je zavedená detekcia kolízií, aby sa zamedzilo poškodeniu dát pri prenose. Na Obr. 3.1 je zobrazený systém, v ktorom by mohlo dôjsť ku kolízii, ak by obidve master zariadenia začali komunikovať súčasne.&lt;br /&gt;
Pripojenie je sériové, 8 bitové, obojsmerné. Dátové prenosy môžu byť vykonávané rýchlosťami až do 100 kHz v štandardnom režime, 400 kHz rýchlom režime a 3,4 MHz vo vysokorýchlostnom režime.&lt;br /&gt;
&lt;br /&gt;
==Ramtron FM24V10==&lt;br /&gt;
FM24V10 je 1 Mb fero-elektrická napäťovo nezávislá RAM pamäť označovaná F-RAM. Firma RAMTRON navrhla túto pamäť pre protokol I2C a garantuje konzistentnosť dát po dobu do 10 rokov. Pre zápis používa technológiu NoDelay Writes, a teda parametre čítania a zápisu ma podobné ako pamäť typu RAM. Programovanie pamätí typu F-RAM je oproti pamätiam typu EPROM a starším EEPROM podstatne menej komplikované.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
Pamäť je organizovaná do 131072 blokov po 8 bitov a podporuje vysokorýchlostný režim I2C, ako aj režimy 100 kHz a 400 kHz. Je dimenzovaná na 1014 cyklov zápis/čítanie a je schopná uchovať dáta intaktné po dobu 10 rokov. V aktívnom stave odoberá typicky menej ako 150 µA pri 100 kHz a napájaní od 2,0 V do 3,6 V. Dodáva sa v puzdre SOIC-8.&lt;br /&gt;
&lt;br /&gt;
FM24V10 vykonáva zápis rýchlosťou zbernice. Ďalší cyklus sa môže vykonať okamžite po zápise, bez nutnosti kontroly či sú dáta už zapísané. Pri zápise má nižšie nároky na napájanie, ako pamäte typu EEPROM.&lt;br /&gt;
&lt;br /&gt;
Každá takáto pamäť má unikátne sériové číslo, ktoré môže byť využité na identifikáciu zariadenia. Takisto obsahuje aj identifikačné číslo výrobcu, ktoré obsahuje meno výrobcu, hustotu prvkov a revíziu produktu.&lt;br /&gt;
&lt;br /&gt;
===Blokový diagram===&lt;br /&gt;
Na Obr. 3.2 je zobrazená vnútorná štruktúra FM24V10. Popíšeme si jednotlivé piny puzdra SO-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.2.png|framed|center|Obr. 3.2 Vnútorná štruktúra FM24V10]]&lt;br /&gt;
&lt;br /&gt;
Vstupy A1, A2 slúžia na nastavenie adresy pamäti. Na jednu zbernicu je pomocou tohto dvoj-bitového adresovania možné pripojiť štyri takéto zariadenia. Kontakty sú vnútorne uzemnené. SDA je pin pre obojsmernú komunikáciu v zapojení s otvoreným kolektorom. Vstupný buffer zahŕňa Schmittov preklápací obvod pre odolnosť voči superponovanému šumu na vstupe a výstup obsahuje ovládanie sklonu zostupnej hrany. Pre správnu funkciu je nutný pull-up rezistor. SCL je pin pre hodinový signál, podľa ktorého prebieha generácia a synchronizácia dát. WP je pin pre ochranu pamäti pred neželaným prepisom. Je vnútorne uzemnený, čo znamená, že pamäť je štandardne prepisovateľná. Ochrana sa aktivuje pripojením pinu WP k pinu VDD. VDD je pin, na ktorý sa pripája napájacie napätie a VSS je pin, na ktorý sa pripája uzemnenie.&lt;br /&gt;
&lt;br /&gt;
==PCF8563 Real-Time clock/calendar==&lt;br /&gt;
PCF8563 Real-Time clock/calendar ďalej RTC, je nízkoenergetický obvod firmy NXP Semiconductors, poskytujúci dáta času a dátumu v binárne kódovanom decimálnom čísle (BCD – binary-coded decimal) pre protokol I2C. Obvod poskytuje údaje o sekundách, minútach, dňoch, dátume, mesiaci a roku. Mesiace, ktoré majú menej, ako 31 dní sú automaticky  ošetrené. Takisto sú priamo v obvode softvérovo vyriešené aj prestupné roky. Čas je poskytovaný v 24-hodinovom a 12-hodinovom formáte. Obvod má detekciu zlyhania napájania.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
RTC počíta sekundy, minúty, deň, dátum, mesiac a rok podľa pripojeného 32,768 kHz kryštálu. Výstupný hodinový signál je nastaviteľný a zariadenie spotrebúva menej, ako 500 nA. Má funkcie alarmu a časovača, a pin prerušenia, ktorý je v zapojení s otvoreným kolektorom. Dodáva sa v puzdrách SO-8 a DIP-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.3.png|framed|center|Obr. 3.3 Bloková schéma PCF8563]]&lt;br /&gt;
&lt;br /&gt;
Má šestnásť 8-bitových registrov podľa Obr. 3.3, integrovaný 32,768 kHz kryštál s kondenzátorom, frekvenčný delič slúžiaci, ako zdroj hodinovej frekvencie pre RTC, programovateľný výstup hodinovej frekvencie, časovač, alarm a detekciu nízkeho napätia.&lt;br /&gt;
&lt;br /&gt;
===Časovač===&lt;br /&gt;
8-bitový časovač na adrese 0x0F je riadený registrom timer control na adrese 0x0E, ktorý pre operácie vyžaduje jeden zo 4 voliteľných hodinových frekvencií. Časovač odpočítava zo zadanej 8-bitovej binárnej hodnoty a na konci odpočítavania nastaví príznak Timer Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované, ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;br /&gt;
&lt;br /&gt;
===Alarm===&lt;br /&gt;
V registroch alarmu od adresy 0x09 po adresu 0x0C sú uložené nastavenia alarmu  pre minúty, hodiny, dni alebo dni v týždni. Zodpovedajúci bit AE je rovný logickej nule. Uložené nastavenia sa porovnávajú s aktuálnym časom. Keď sa všetky nastavené hodnoty rovnajú aktuálnym hodnotám, nastaví sa príznak Alarm Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované rovnako, ako v prípade časovača -ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Protokol_1-Wire&amp;diff=11019</id>
		<title>Protokol 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Protokol_1-Wire&amp;diff=11019"/>
		<updated>2012-03-01T16:08:30Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
[[Kategória:Konfigurovateľné mikroprocesorové systémy]]&lt;br /&gt;
[[Kategória:Sériové komunikačné zbernice]]&lt;br /&gt;
{{Praca_uvod|2|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Protokol 1-Wire=&lt;br /&gt;
Protokol 1-Wire &amp;lt;ref&amp;gt;http://www.maxim-ic.com/app-notes/index.mvp/id/1796&amp;lt;/ref&amp;gt; vznikol v laboratóriách firmy Dallas Semiconductor pôvodne na komunikačné prepojenie zariadení na krátke vzdialenosti, typicky na vzdialenosti na plošnom spoji a na komunikáciu používa iba jeden vodič. Rozšírením používania tohto protokolu sa tento rozvinul a umožňuje prepojenie zariadení na oveľa väčšie vzdialenosti. 1-Wire sieť (ďalej sieť) predstavuje komplexné usporiadanie 1-Wire zariadení, komunikačných liniek a prepojení, pričom každá takáto sieť je navrhnutá podľa požiadaviek na topológiu a hardvér. 1-Wire master zariadenie (ďalej master)  je kľúčový prvok siete. Ako jediné zariadenie môže inicializovať komunikáciu s 1-Wire slave zariadeniami (ďalej slave).&lt;br /&gt;
&lt;br /&gt;
==Popis 1-Wire siete==&lt;br /&gt;
Kritické hodnoty, ktoré popisujú siete sú rádius a záťaž. Rádius predstavuje najväčšiu  vzdialenosť medzi masterom a slaveom a je meraný v metroch. Záťaž reprezentuje celkovú dĺžku vodiča zapojeného v sieti a rovnako je meraná v metroch. Na príklad v sieti zapojenej do hviezdy s tromi vetvami s dĺžkami 10, 20 a 30 metrov máme rádius 30 metrov a záťaž 60 metrov Všeobecne, záťaž siete obmedzuje dobu nábehu na vodiči a rádius stanovuje načasovanie najpomalšieho odrazu signálu.&lt;br /&gt;
Záťaž, ktorú sieť podporuje je obmedzená a okrem dĺžky samotného vodiča je určená aj počtom prepojení a slave zariadení a je stanovená na maximálne 500 metrov. Každý slave pridá záťaž podobnú záťaži kusa vodiča, takže pri návrhu siete treba pripočítať pre každé slave zariadenie záťaž 0,5 metra a pri zariadeniach typu iButton 1 meter. Aj keď je záťaž  ovplyvnená viacerými faktormi, najväčším prispievateľom je kapacita. Podľa [3], každé prepojenie, ktorého parazitná kapacita prekračuje 24 pF pridáva záťaž 0,5 metra.&lt;br /&gt;
&lt;br /&gt;
==Topológie 1-Wire siete==&lt;br /&gt;
1-Wire siete sa vyznačujú možnosťou vybudovať sieť prakticky v akomkoľvek tvare&amp;lt;ref&amp;gt;http://www.maxim-ic.com/app-notes/index.mvp/id/148&amp;lt;/ref&amp;gt;. Zvyčajne ich je však možné zaradiť do troch kategórií.&lt;br /&gt;
Lineárna topológia – 1-Wire zbernica je pár vodičov s počiatkom v master, rozširujúci sa až do najvzdialenejšieho slave. Prípadné ďalšie slave zariadenia sú k zbernici pripojené podľa Obr. 2.1 odbočkami s dĺžkou menej, ako tri metre.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.1.png|thumb|center|Obr. 2.1 Lineárna topológia]]&lt;br /&gt;
&lt;br /&gt;
Vetvená topológia – 1-Wire zbernica má počiatok v master a predlžuje sa až do posledného slave. Ďalšie slave zariadenia sú pripojené k zbernici podľa Obr. 2.2 odbočkami s dĺžkou viac, ako 3 metre.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.2.png|thumb|center|Obr. 2.2 Vetvená topológia]]&lt;br /&gt;
&lt;br /&gt;
Topológia „do hviezdy“ – 1-Wire zbernica je rozdelená pri alebo blízko master zariadenia a rozširuje sa vo viacerých vetvách s rôznymi dĺžkami. Slave zariadenia sú umiestnené na každej vetve podľa Obr. 2.3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.3.png|thumb|center|Obr. 2.3 Topológia „do hviezdy“]]&lt;br /&gt;
&lt;br /&gt;
Uvedené topológie predstavujú kategóriu nespínaných sietí. Nespínané siete zapojené do hviezdy ale vykazujú najvyššiu poruchovosť. Prepojenie viacerých vetiev predstavuje spojenie rôznych impedancií a odrazy z koncov dlhých vetiev môžu spôsobiť chyby v dátach. Kvôli týmto dôvodom je vhodnejšie zvoliť spínanú sieť podľa Obr. 2.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.4.png|thumb|center|Obr. 2.4 Spínaná sieť]]&lt;br /&gt;
&lt;br /&gt;
Spínaná sieť umožňuje obísť limitácie 1-Wire protokolu a vybudovať sieť rozdelenú do sekcií, ktoré sú podľa požiadavky elektronicky pripájané k master zariadeniu. Sieť na Obr. 2.4  zapojená do hviezdy, takto vlastne predstavuje tri nezávislé siete s lineárnou topológiou, z ktorých je súčasne pripojená len jedna.&lt;br /&gt;
&lt;br /&gt;
==OneWire SW v1.3==&lt;br /&gt;
OneWireSW modul pre PSoC bol vyvinutý nezávislým vývojárom Wesom Randallom v roku 2006. Jeho výhodou je, že pre svoju činnosť nepotrebuje bloky PSoC a používa iba 1 pin. Nevýhodou je, že hodinová frekvencia mikroprocesora musí byť minimálne 12 MHz.&lt;br /&gt;
Modul (knižnica) je množina rutín, ktoré zapisujú a čítajú dáta a umožňujú mikroprocesoru  plniť funkciu master zariadenia podľa protokolu 1-Wire. Modul OneWireSW bol doplnený do knižníc aplikácie PSoC Designer, a je oficiálne podporovanou knižnicou firmy Cypress.&lt;br /&gt;
==DS18S20==&lt;br /&gt;
===Popis a vlastností===&lt;br /&gt;
DS18S20&amp;lt;ref&amp;gt;http://datasheets.maxim-ic.com/en/ds/DS18S20.pdf&amp;lt;/ref&amp;gt; je digitálny teplomer s rozlíšením 9 bitov merajúci teplotu v stupňoch Celzia dodávaný v puzdrách TO-92 a SO-8 na Obr. 2.5. Má funkciu alarmu s užívateľsky nastaviteľnou vysokou a nízkou hodnotu teploty, ktorá je uložená v nezávislej EEPROM pamäti. Teplomer komunikuje po 1-Wire zbernici a podľa špecifikácie 1-Wire vyžaduje iba jeden vodič na komunikáciu s mikroprocesorom. Operačná teplota je v rozsahu od –55 °C do +125 °C a má presnosť ±0.5 °C na meracom rozsahu od –10 °C do +85 °C. DS18S20 môže byť napájaný parazitným napájaním priamo z dátovej linky, čím nám ubudnú náklady na externý napájací zdroj.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.5.png|thumb|center|Obr. 2.5 Puzdrá DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Každý DS18S20 má unikátne 64-bitové sériové číslo so štruktúrou zobrazenou na Obr. 2.6, čím je možné identifikovať&amp;lt;ref&amp;gt;http://pdfserv.maxim-ic.com/en/an/AN187.pdf&amp;lt;/ref&amp;gt; a používať viacero týchto teplomerov na jednej komunikačnej linke. Je teda jednoduché použiť jeden mikroprocesor na riadenie väčšieho počtu teplomerov distribuovaných na veľkej ploche, čo je výhodné pre aplikácie ako vykurovanie, ventilácia a klimatizácia budov,  kontrola prostredia, teplotné monitorovacie systémy budov, ale aj strojov a vybavenia.&lt;br /&gt;
[[Súbor:bcgg2.6.png|framed|center|Obr. 2.6 Štruktúra 64 bitového sériového čísla]]&lt;br /&gt;
&lt;br /&gt;
===Bloková schéma DS18S20===&lt;br /&gt;
[[Súbor:bcgg2.7.png|framed|center|Obr. 2.7 Bloková schéma DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 2.7 je bloková schéma DS18S20, ktorá sa dá rozdeliť na dve časti. &lt;br /&gt;
Napájacia časť je napájaná buď externým zdrojom alebo pomocou parazitného napájania. Pri parazitnom napájaní je prúd privádzaný cez pull-up rezistor na pin DQ, aby bolo napätie zbernice vo vysokom stave signálu. V tomto stave sa súčasne nabíja vnútorný kondenzátor CPP, ktorý napája zariadenie, keď je zbernica v nízkom stave signálu. Pri parazitnom napájaní musí byť pin VDD prepojený s pinom GND.&lt;br /&gt;
Pamäťová časť DS18S20 je rozdelená na dve oblasti. Nezávislá pamäť EEPROM, v ktorej môžu byť uložené nízka a vysoká hodnota teploty pre funkciu alarmu. Pokiaľ sa táto pamäť nevyužíva pre funkciu alarmu, môže byť využitá aj na uloženie iných údajov. Pamäť SRAM označovaná, ako scratchpad obsahuje údaje o nameranej teplote a vypočítané CRC.&lt;br /&gt;
Bajty scratchpadu sú rozdelené podľa Tab. 2.1. Bajty  0 a 1 obsahujú LSB a MSB registra teploty a sú označené iba pre čítanie. Bajty 2 a 3 poskytujú prístup k registrom TH a TL a sú určené pre nastavovanie vysokej a nízkej hodnoty teploty pre funkciu alarmu. O znamienku uloženej hodnoty rozhoduje  príznak S uložený na  bite 7 na Obr. 2.8. Ak je S rovné 0, hodnota je pozitívna, ak je rovné 1 hodnota je negatívna.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.8.png|framed|center|Obr. 2.8 Štruktúra registrov TH a TL]]&lt;br /&gt;
&lt;br /&gt;
Bajty 4 a 5 sú rezervované výrobcom a majú hodnotu 0xFF. Bajty 6 a 7 obsahujú registre COUNT_REMAIN a COUNT PER_C, v ktorých sú uložené dáta pre výpočet rozšíreného rozlíšenia merania teploty. Posledný 8. bajt obsahuje kontrolný súčet CRC vypočítaný teplomerom.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.9.png|framed|center|Tab. 2.1 Štruktúra scratchpadu]]&lt;br /&gt;
&lt;br /&gt;
CRC je počítaný z dát uložených v scratchpade a mení sa vždy, keď nastane zmena scratchpadu. CRC predstavuje metódu kontroly&amp;lt;ref&amp;gt;http://pdfserv.maxim-ic.com/en/an/AN4600.pdf&amp;lt;/ref&amp;gt; validity dát načítaných z DS18S20. Aby sme overili, že dáta boli načítané korektne, je nutné vykonať prepočet CRC v master zariadení a výsledok porovnať s CRC zo scratchpadu. Pokiaľ je načítané aj vypočítané CRC zhodné, dáta boli načítané bez chyby. Ekvivalentná polynómiálna funkcia pre výpočet CRC je&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;CRC=X^{8}+X^{5}+X^{4}+1&amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(2.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Meranie teploty===&lt;br /&gt;
DS18S20 má rozlíšenie 9 bitov, a k tomu zodpovedajúci krok 0,5 °C. Po prijatí príkazu na vyhodnotenie teploty, teplomer vykoná meranie a analógovo-digitálnu konverziu. Po konverzii sú namerané hodnoty uložené v dvoj-bajtovom registri v scratchpade podľa Obr. 2.9 a sú kalibrované v stupňoch Celzia.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.9a.png|framed|center|Obr. 2.9 Štruktúra MSB a LSB]]&lt;br /&gt;
&lt;br /&gt;
MSB slúži na rozlíšenie znamienka uloženej hodnoty. Ak je S rovné 0, hodnota je pozitívna, ak je rovné 1, hodnota je negatívna.&lt;br /&gt;
Použitím dát z registrov COUNT_REMAIN a COUNT PER_C je možné dosiahnuť rozlíšenie vyššie, ako 9 bitov. COUNT_PER_C je fixne nastavený na hodnotu 0x10. Po načítaní zo scratchpadu je hodnota TEMP_READ získaná odstránením nultého bitu z teplotných dát podľa Obr. 3.9. Rozšírené rozlíšenie je potom vypočítané pomocou vzorca&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;Teplota=TEMP\_READ-0,25+\frac{COUNT\_PER\_C-COUNT\_REMAIN}{COUNT\_PER\_C}&amp;lt;/math&amp;gt;  &lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(2.2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklady číselných hodnôt teplôt sú v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;500&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 2.2 Príklady prepočtu teplôt&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Teplota &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;°C&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Digitálny zápis &amp;lt;br/&amp;gt; (binárny)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Digitálny zápis&amp;lt;br&amp;gt;(hexadecimálny)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;85,0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1010 1010&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0x00AA&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;25,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;| 0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0011 0010&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0032&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;0,5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0000 0001&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0001&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0000 0000&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;0,5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1111 1111&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFFFF&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;25,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1100 1110&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFFCE&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;55,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1001 0010&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFF92&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Odkazy a referencie ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Auton%C3%B3mny_syst%C3%A9m_pre_zber_teplotn%C3%BDch_d%C3%A1t_z_p%C3%B4dneho_profilu&amp;diff=11018</id>
		<title>Autonómny systém pre zber teplotných dát z pôdneho profilu</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Auton%C3%B3mny_syst%C3%A9m_pre_zber_teplotn%C3%BDch_d%C3%A1t_z_p%C3%B4dneho_profilu&amp;diff=11018"/>
		<updated>2012-03-01T16:07:41Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Gabriel Gašpar|Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}} &lt;br /&gt;
{{Praca_uvod|1|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|Práca sa zaoberá návrhom a realizáciou hardvérovej a softvérovej časti systému pre zber teplotných dát z pôdneho profilu. V prvej časti sú popísané použité technológie z oblasti hardvéru. Je popísaná technológia PSoC, ktorá predstavuje rodinu mikroprocesorov novej generácie, ktoré sú konfigurovateľné presne podľa požiadaviek používateľa. Rýchly komunikačný protokol I2C pre krátke vzdialenosti je predstavený v samostatnej kapitole s konkrétnymi príkladmi komponentov použitých v systéme. Podobne, protokol 1-Wire zabezpečujúci komunikáciu na väčšie vzdialenosti, zaberá samostatnú kapitolu, v ktorej je časť venovaná použitému teplomeru. Druhá časť sa zaoberá  samotným návrhom systémového hardvéru. Náležitá pozornosť bola venovaná návrhu puzdier senzorov tak, aby ich mechanické vyhotovenie bolo odolné voči vplyvom agresívneho prostredia, a aby nedošlo k fyzickému poškodeniu samotného senzora. Pre zapojenie mikroprocesora bola navrhnutá schéma zapojenia. Táto obsahuje návrh napájacej časti, ochranný obvod pre sieť 1-Wire, prevodník z RS-232 na TTL úrovne a zapojenie I2C komponentov. Následne bolo zapojenie realizované. Tretia časť sa venuje návrhu firmvéru a  multiplatformovej aplikácie pre vyhodnotenie zozbieraných dát. Architektúra distribuovaného merania je zložená z troch vzájomne spolupracujúcich vrstiev. Firmvérová vrstva opisuje udalosťami riadený pseudo operačný systém mikroprocesora, komunikáciu so sieťou 1-Wire a sériovým rozhraním. Záznamová vrstva sa venuje opisu odosielania požiadaviek na meranie teploty a ich záznamu do databázy. Prezentačná vrstva opisuje interakciu web stránky, webového servera a databázy. &lt;br /&gt;
|The work deals with design and implementation of the hardware part of the system for collecting temperature data from the soil profile. The first section describes the used technologies. PSoC technology represents a family of microprocessors of the next generation, which are configurable exactly by the user's requirements. Fast I2C communication protocol used for a short distance communication is presented in a separate chapter with specific examples of components used in the system. Similarly, 1-Wire protocol providing communications at greater distances, occupies a separate chapter, where one section is dedicated to the used thermometer. The second section deals with the actual system hardware design. Particular attention was paid to the sensors encapsulation, so that the mechanical construction was resistant to the influence of aggressive environment, and to avoid physical damage to the sensor itself. The proposed schematics for the microprocessor’s connections, includes power supply, protective circuit for the 1-Wire network, converter from RS-232 to TTL levels and I2C components circuitry. Using this schematics we built circuits board.The third part deals with the design of the firmware and the multiplatform application for the evaluation of the collected data. Distributed measurement architecture is composed of three cooperating layers. Firmware layer describes the event controlled pseudo-operating system of the microprocessor, the communication with 1-Wire network and serial interface. Recording layer deals with a description of sending the requirements for temperature measurement and saving the records into database. The presentation layer describes the interaction of the web site, the web server and the database.&lt;br /&gt;
}}&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
Meranie teploty a následne teplotný profil predstavujú nevyhnutnú súčasť vstupných informácií pri realizácii environmentálnych, stavebných, konštrukčných, a aj elektronických a elektrotechnických projektov. V tejto práci sa budeme zaoberať návrhom systému pre  meranie teplôt v rozsahu od –55°C do +85°C. Teplota sa dá merať viacerými metódami. Ako príklad mechanickej metódy uvedieme bimetalový teplomer, kde sa ručička ukazovateľa vychyľuje podľa teploty využívajúc tepelnú rozťažnosť materiálov. Príkladom elektrickej metódy je odporový teplomer, kde sa využíva zmena elektrického odporu vodiča alebo polovodiča od teploty. Elektronická metóda využíva, integrovaný obvod, ktorý analógovo meria teplotu a následne ju prevádza zabudovaným A/D prevodníkom na digitálne vyjadrenie.&lt;br /&gt;
&lt;br /&gt;
V práci sa zaoberáme prehľadom technológií Cypress PSoC, Philips I2C a Dallas Semiconductor 1-Wire a ich využitím na zber teplotných dát z pôdneho profilu. Programovateľný systém na čipe - PSoC predstavuje inovatívnu rodinu mikroprocesorov, ktoré sú flexibilne programovateľné  v jazyku C a v jazyku symbolických adries (assembler). Ich výhodou je možnosť vystavať a nakonfigurovať želané prídavné obvody, ktoré sa pri tradičných rodinách mikroprocesorov pripájajú externe. Na skladanie takýchto obvodov sa používajú digitálne a analógové bloky, ktoré predstavujú základné stavebné jednotky podporných obvodov mikroprocesora. Ako príklad slúži populárne rozhranie RS-232, ktoré je na PSoC možné vytvoriť pomocou digitálnych blokov. Dostatočné množstvo pamäti RAM a Flash poskytuje priestor aj pre pamäťovo náročnejšie aplikácie. &lt;br /&gt;
&lt;br /&gt;
I2C je protokol vytvorený firmou Philips na komunikáciu medzi zariadeniami na krátku vzdialenosť, typicky na doske plošných spojov. Je často používané v spotrebnej elektronike, telekomunikáciách a  priemyselnej elektronike. Každé zariadenie na rozhraní I2C má svoju unikátnu adresu, pomocou ktorej komunikuje s mikroprocesorom, a tak je možné na jednu zbernicu pripojiť i viac zariadení rovnakého typu.&lt;br /&gt;
 &lt;br /&gt;
Protokol 1-Wire bol podobne, ako protokol I2C vyvinutý na komunikáciu na krátku vzdialenosť. Rozšírením jeho používania bola táto špecifikácia prepracovaná a v súčasnosti je maximálna podporovaná vzdialenosť zariadenia od mikroprocesora 500 metrov. Zbernica 1-Wire sa skladá z jediného dátového vodiča a uzemnenia. Špecifickou vlastnosťou tohto systému je možnosť použiť parazitné napájanie, pri ktorom  zariadenie odoberá energiu z dátového vodiča.&lt;br /&gt;
&lt;br /&gt;
Pôda predstavuje veľmi špecifické a agresívne prostredie. Celoročne meniaca sa teplota, vplyv vlhkosti, sucha, mrázu a tepla, spolu s chemickým pôsobením látok obsiahnutých v pôde pôsobí negatívne na akýkoľvek materiál uložený v zemi. Je nutné zohľadniť vhodný výber puzdier senzorov a ich utesnenie, aby merania mohli prebiehať bez poruchy po celé stanovené obdobie. Podobne, je nutné zabezpečiť čo najmenší vplyv slnečného žiarenia na povrchové senzory pomocou clôn. Pre napájanie mikroprocesora a jeho periférií potrebujeme 5V resp. 3,3V. Napájanie musí byť stabilizované s ochranou proti prepólovaniu a tepelnou ochranou obvodu. Treba mať na pamäti, že pri práci s obvodmi digitálnej elektroniky je potrebné mať napájacie napätia čo najviac vyhladené. Na komunikáciu s užívateľom bolo vybraté rozhranie RS-232, pre jeho jednoduchú aplikovateľnosť a demonštráciu možností PSoC. Čas uloženia dát je zapisovaný podľa údajov z obvodu reálneho času, ktorý používa kódovanie BCD. Tak ušetríme miesto v pamäti, ktoré môže byť ďalej využité na uloženie väčšieho množstva údajov. Výber pamäte pre dáta je dôležitou súčasťou návrhu zariadenia. Bol vybratý typ FRAM, ktorý má podobné parametre čítania a zápisu, ako pamäte typu RAM. Fero-elektrická pamäť má významnú výhodu oproti pamätiam typu EPROM a starším typom EEPROM v rýchlosti zápisu. Pred zápisom nie je potrebné kontrolovať, či už boli predchádzajúce dáta zapísané.&lt;br /&gt;
&lt;br /&gt;
Architektúra softvérového vybavenia distribuovaného merania je zložená z troch vzájomne spolupracujúcich vrstiev. Firmvérová vrstva bola napísaná v jazyku C a predstavuje udalosťami riadený pseudo operačný systém mikroprocesora. Má naprogramované diagnostické funkcie pre systém samotný a aj pre diagnostiku 1-Wire siete. S nadradeným počítačom komunikuje prostredníctvom sériového rozhrania. &lt;br /&gt;
Záznamová vrstva predstavuje počítač na zber dát. Firmvérovej vrstve odosiela požiadavky na meranie, ktorých výsledky spracuje do želaného tvaru a zapíše do databázy. &lt;br /&gt;
Prezentačná vrstva je web stránka, na ktorej má používateľ možnosť nastaviť parametre vyhodnotenia dát. Používateľ si vyberá ktoré teplomery majú prejsť spracovaním a rovnako si vyberá obdobie za ktoré majú byť dáta spracované.&lt;br /&gt;
Pre takúto funkcionalitu bolo nutné vybrať vhodné softvérové prostriedky. Pre programovanie prístupov k firmvéru, databáze a web serveru bol zvolený otvorený programovací jazyk Python. Jeho výhodou je vysoká efektivita písania programov, kedy niekoľko riadkov v Pyhone dokáže nahradiť celé strany kódu v jazyku C.&lt;br /&gt;
&lt;br /&gt;
Databázový server MySQL bol pre systém vybratý vzhľadom na jeho jednoduché použitie a existujúci modul v jazyku Python. Je to jednochá cesta, ako získať SQL kompatibilný databázový server s minimálnymi nákladmi.&lt;br /&gt;
Otvorený webový server Apache je overená voľba pre webový server. K jeho výberu prispela aj možnosť priamej implementácie interpretera jazyka Python pomocou  jeho modulom mod_python.&lt;br /&gt;
Vďaka použitiu otvorených a slobodných softvérových riešení bude systém ľahko modifikovateľný aj pre použitie v iných aplikáciách. Zároveň, čo sa týka dodatočných nákladov na nákup podporných softvérových riešení, jeho cena bude minimálna.&lt;br /&gt;
&lt;br /&gt;
=Mikroprocesory PSoC=&lt;br /&gt;
Mikroprocesory  PSoC &amp;lt;ref&amp;gt;http://www.cypress.com&amp;lt;/ref&amp;gt;  (Programmable System on Chip – Programovateľný systém na čipe) sa skladajú z konfigurovateľných  blokov analógových obvodov a digitálnej logiky, ktoré sú vzájomne programovo prepojené. Uvedená architektúra nám podľa [1] umožňuje vytvárať zákaznícke konfigurácie mikroprocesora tak, aby boli splnené požiadavky potrebné na realizáciu jednotlivých aplikácií.&lt;br /&gt;
Blokový diagram na Obr. 1.1 zobrazuje architektúru celej rodiny mikroprocesorov PSoC. V nasledujúcich štyroch podkapitolách sa budeme venovať popisu hlavných častí mikroprocesora.&lt;br /&gt;
[[Súbor:ggbc1.1.png|thumb|Obr. 1.1 Architektúra PSoC]]&lt;br /&gt;
&lt;br /&gt;
==Jadro PSoC==&lt;br /&gt;
Na Obr. 1.2 sú zobrazené prvky architektúry jadra PSoC. Procesor je 8-bitový a dokáže spracovať až 4 milióny inštrukcií za sekundu.&lt;br /&gt;
[[Súbor:ggbc1.2.png|thumb|Obr. 1.2 Jadro PSoC]]&lt;br /&gt;
8-bitová architektúra podporuje použitie až 64 kilobajtov pamäti Flash, v ktorej je uložená užívateľská aplikácia. Flash pamäť je „in-circuit programmable“, takže PSoC je možné  programovať aj potom, ako je zapojený do dosky plošných spojov. Flash je zároveň aj „in-application programmable“, čo znamená, že mikroprocesor je schopný dynamicky meniť svoju vlastnú pamäť.&lt;br /&gt;
&lt;br /&gt;
Procesor je pripojený k viacerým digitálnym a analógovým blokom, ktoré poskytujú funkcionalitu a flexibilitu charakteristickú pre celú rodinu PSoC. Digitálne bloky môžu byť zapojené ako časovače, počítadlá, UART, PWM generátory. Analógové bloky zasa slúžia na zostavenie zosilňovacích prvkov s programovateľným zosilnením, komparátory a filtre.&lt;br /&gt;
&lt;br /&gt;
===Vnútorné registre===&lt;br /&gt;
M8C je 8-bitový mikroprocesor MIPS  harvardskej architektúry s voliteľnou hodinovou frekvenciou od 93.7 kHz do 24 MHz. Má päť vnútorných registrov, ktoré sú využívané pri vykonávaní programu:&lt;br /&gt;
;A: akumulátor&lt;br /&gt;
;X: index&lt;br /&gt;
;PC: počítadlo&lt;br /&gt;
;SP:ukazovateľ na hromadu&lt;br /&gt;
;F: príznaky&lt;br /&gt;
&lt;br /&gt;
Všetky registre okrem 16-bitového registra PC sú 8-bitové. Pri resete sa registre A, X, PC a SP nastavia na 0x00 a register F sa nastaví na 0x02. Pri každej operácii s hromadou je register SP automaticky zvýšený alebo znížený. Ak je posledný bajt v hromade na adrese 0xFF, SP bude ukazovať na adresu 0x00 v pamäti RAM. Pri vývoji firmvéru je preto dôležité zamedziť prepísaniu užívateľsky definovaného obsahu pamäti od adresy 0x00. Prístup k vnútorným registrom je vykonávaný použitím nasledujúcich inštrukcií :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
MOV A, výraz&lt;br /&gt;
MOV X, výraz&lt;br /&gt;
SWAP A, SP&lt;br /&gt;
OR F, výraz&lt;br /&gt;
JMP návestie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Adresný priestor===&lt;br /&gt;
M8C má tri adresné priestory: ROM, RAM a registre. K adresnému priestoru ROM pristupujeme cez jeho vlastné adresy a dátovú zbernicu. ROM zahŕňa SROM a Flash pamäte. &lt;br /&gt;
V pamäti Flash je uložený firmvér zariadenia a je rozdelená do 64-bajtových blokov. Používateľ  nemusí ošetrovať prechod programu na  ďalšiu pamäťovú stránku, pretože M8C automaticky zvyšuje 16-bitový register PC pri každej inštrukcii presahujúcej hranice aktuálnej stránky, ako je uvedené v [2].&lt;br /&gt;
V pamäti SROM je uložený program využívaný na spúšťanie PSoC, kalibrovanie obvodov a vykonávanie operácií s pamäťou Flash. Funkcie zabezpečované SROM sú volané z programu uloženého v pamäti Flash alebo pomocou programátora.&lt;br /&gt;
Adresný priestor registrov je využívaný na konfigurovanie programovateľných blokov mikroprocesora. Skladá sa z dvoch 256-bajtových blokov. Na prepínanie medzi blokmi sa nastavuje bit XIO v registri F. Ak je F nastavený, zvolí sa blok1, ak nie je nastavený, zvolí sa blok0.&lt;br /&gt;
&lt;br /&gt;
===Inštrukčné formáty===&lt;br /&gt;
M8C má spolu sedem inštrukčných formátov, ktoré používajú inštrukcie o dĺžkach jeden, dva a tri bajty. Všetky bajty inštrukcie sú vyvolávané z programovej pamäte Flash, za použitia adries a dátovej zbernice, ktoré sú nezávislé od adries a dátovej zbernice používaných pre registre a prístup do pamäte RAM.&lt;br /&gt;
&lt;br /&gt;
==Vstupy a výstupy PSoC==&lt;br /&gt;
Vstupy a výstupy poskytujú možnosť nastaviť režim vysokej-impedancie alebo režim s napájaním  a pre odporový stav poskytujú možnosť pre zvolenie konfigurácie pull-up alebo pull-down.&lt;br /&gt;
&lt;br /&gt;
==Digitálne a analógové bloky PSoC==&lt;br /&gt;
Digitálne a analógové bloky zobrazené na Obr. 1.3, sú moduly  vytvorené z digitálnych a analógových prvkov, ktoré sú konfigurovateľné pre rôzne druhy operácií pomocou registrov špecifických pre každý blok. Digitálne bloky vykonávajú funkcie, ako časovač, počítadlo, PWM generátor, generátor náhodných čísel alebo CRC generátor. Rôzne vstupné a výstupné signály potrebné pre funkčnosť digitálnych blokov môžu byť získané zo vstupných a výstupných signálov iných blokov alebo vstupných a výstupných pinov procesora. Bloky sú pripojiteľné k vnútornej hodinovej frekvencii procesora.&lt;br /&gt;
Analógové bloky môžu byť nakonfigurované na zosilňovacie funkcie na analógových signáloch. Môžu zosilňovať, tlmiť a invertovať vstupné signály.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:ggbc1.3.png|thumb|Obr. 1.3 Digitálne a analógové bloky PSoC]]&lt;br /&gt;
&lt;br /&gt;
Kombináciou týchto blokov má užívateľ možnosť vytvoriť si svoj obvod na mieru. V prípade, že nevyužije všetky bloky, sú tieto k dispozícii pre ďalšie použitie. Pri niektorých aplikáciách je dôležité nastaviť správnu hodinovú frekvenciu mikroprocesora.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=11017</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=11017"/>
		<updated>2012-03-01T16:06:09Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.dyndns.info/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Záver'''&lt;br /&gt;
&lt;br /&gt;
Cieľom práce bolo navrhnúť a&amp;amp;nbsp;implementovať systém pre zber teplotných dát z&amp;amp;nbsp;pôdneho profilu. V&amp;amp;nbsp;prvej časti práce boli predstavené technológie a&amp;amp;nbsp;realizácia hardvérovej časti a&amp;amp;nbsp;v&amp;amp;nbsp;druhej časti bola popísaná architektúra distribuovaného systému a &amp;amp;nbsp;jej softvérové vybavenie. Výsledkom práce je funkčný technologický prototyp, na ktorom prebiehajú v&amp;amp;nbsp;súčasnosti merania.&lt;br /&gt;
&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o&amp;amp;nbsp;type puzdra a&amp;amp;nbsp;jeho hydroizolácií. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k&amp;amp;nbsp;žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
&lt;br /&gt;
Architektúra distribuovaného systému bola zložená z&amp;amp;nbsp;troch vrstiev. Firmvérová vrstva má na starosti komunikáciu s&amp;amp;nbsp;nadradeným počítačom a so sieťou 1-Wire. Prijíma dáta od jednotlivých teplomerov, počíta ich CRC a&amp;amp;nbsp;odosiela ich do sériového rozhrania. Záznamová vrstva vysiela príkazy na meranie teploty a&amp;amp;nbsp;výsledné dáta ukladá do databázy. Prezentačná vrstva slúži na priamu interakciu s&amp;amp;nbsp;používateľom. Používateľ vyberá parametre vyhodnocovania zozbieraných teplotných dát, ktoré sú následne na webovom serveri spracované a&amp;amp;nbsp;ako odpoveď sa zobrazí vytvorený graf.&lt;br /&gt;
&lt;br /&gt;
Grafické zobrazenie výsledkov meraní zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom aj &amp;amp;nbsp;pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
&lt;br /&gt;
Záujem o&amp;amp;nbsp;modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v&amp;amp;nbsp;budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na&amp;amp;nbsp;rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o&amp;amp;nbsp;iných fyzikálnych veličinách.&lt;br /&gt;
&lt;br /&gt;
Budúci vývoj zahŕňa rozšírenie firmvéru, v&amp;amp;nbsp;ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o&amp;amp;nbsp;použitej pamäti a&amp;amp;nbsp;RTC. Pomocou tohto čísla bude systém spolupracovať s&amp;amp;nbsp;aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému, ktorá môže pozostávať z&amp;amp;nbsp;viacerých meracích uzlov, viacerých databáz a&amp;amp;nbsp;meranie nebude obmedzené iba na päť teplomerov. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a&amp;amp;nbsp;tvorbu grafov z&amp;amp;nbsp;rôznych zdrojov nameraných dát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použitá literatúra'''&lt;br /&gt;
&lt;br /&gt;
#ASHBY, Robert. ''Designer's Guide to the Cypress PSoC''. London&amp;amp;nbsp;: Elsevier, 2005. 273 s. ISBN&amp;amp;nbsp;9780750677806.&lt;br /&gt;
#CYPRESS, Semiconductor Corporation. ''PSoC Programmable System-on-Chip : Technical Reference Manual (TRM)''. San Jose, USA&amp;amp;nbsp;, c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.cypress.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products. ''Guidelines for Reliable Long Line 1-Wire Networks : AN-148''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 16 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products.''DS18S20 High-Precision 1-Wire Digital Thermometer''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 23 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''The I2C bus specification : Version 2.1''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2000. 46 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;. &lt;br /&gt;
#RAMTRON, International Corporation. ''FM24V10 : 1Mb Serial 3V F-RAM Memory''. Colorado Springs, CO, USA&amp;amp;nbsp;: Ramtron International Corporation, 2009. 15 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.ramtron.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''PCF8563 : Real-Time clock/calendar''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2008. 32 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;.&lt;br /&gt;
#Python Programming Language [online]. 2.6.4. 2009 [cit. 2010-04-02]. Www.python.org. Dostupné z WWW: &amp;lt;[http://python.org/about/ http://python.org/about/]&amp;gt;.&lt;br /&gt;
#MySQL::The world‘s most popular open source database [online]. 5.1.45. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.mysql.com/why-mysql/ http://www.mysql.com/why-mysql/]&amp;gt;.&lt;br /&gt;
#The Apache Software Foundation [online]. 2.2.15. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://httpd.apache.org/ABOUT_APACHE.html http://httpd.apache.org/ABOUT_APACHE.html]&amp;gt;.&lt;br /&gt;
#Apache/Python Integration [online]. 3.3.1. 2009 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.modpython.org/live/current/modpython.pdf http://www.modpython.org/live/current/modpython.pdf]&amp;gt;.&lt;br /&gt;
#HARMS, Daryl; MCDONALD, Kenneth. ''Začínáme programovat v jazyce Python.'' Brno : Computer Press, 2003. 456 s. ISBN 80-7226-799-X.&lt;br /&gt;
#FABO, P., GAŠPAR, G., PAVLÍKOVÁ, S., ŠIROKÝ, P.: ''Methods of statistical evaluation of data from long-term measurement of soil temperature profile using open-source tools.'' Trenčianske Teplice: ISC Mechatronika 2010&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5435</id>
		<title>Bakalárske práce</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5435"/>
		<updated>2010-06-22T15:45:59Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ako_pisat_wikiPracu|Dusan|Ggaspar|Jakub Trska}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2009/2010&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Autor&lt;br /&gt;
!Názov práce&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Porubský&lt;br /&gt;
|[[Systém tvorby rozvrhu]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Systém tvorby rozvrhu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Pagáč&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dávid Ďurika&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM]]&lt;br /&gt;
|{{stav_prace|45}}&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Gabriel Gašpar, Bc.&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Krajči&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov]]&lt;br /&gt;
|{{stav_prace|66.6}}&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Pilař&lt;br /&gt;
|[[Poloautomatický parkovací systém]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Poloautomatický parkovací systém (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ľubomír Milko&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch]]&lt;br /&gt;
|{{stav_prace|70}}&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Peter Magala&lt;br /&gt;
|[[Bezpečnosť webových aplikácií]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Bezpečnosť webových aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ján Čižmárik&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov]]&lt;br /&gt;
|{{stav_prace|20}}&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Cibulka&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme]]&lt;br /&gt;
|{{stav_prace|60}}&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Ronec&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Július Jančo&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Juraj Prívara&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS]]&lt;br /&gt;
|{{stav_prace|65}}&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Emanuel Dubovan&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Vojsovič&lt;br /&gt;
|[[Porovnanie výkonnosti virtualizačných softvérových produktov]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
||[[Porovnanie výkonnosti virtualizačných softvérových produktov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Jozef Janega&lt;br /&gt;
|[[Fotoelektrický parkovací senzor]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
||[[Fotoelektrický parkovací senzor (Zadanie)|Zadanie BP]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2008/2009&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:yellow&amp;quot;&lt;br /&gt;
! Autor&lt;br /&gt;
!Názov&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Lokšík&lt;br /&gt;
|[[Simulácia a modelovanie technologických procesov pomocou stavebnice FESTO]]&lt;br /&gt;
|{{stav_prace|5}}&lt;br /&gt;
|- &lt;br /&gt;
|Ivana Zuzinová&lt;br /&gt;
|[[Pokročilé vlastnosti skiptovacích jazykov]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|-&lt;br /&gt;
|Martin Starosta&lt;br /&gt;
|[[Webové služby v Jave]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Staršie práce budú pridané.&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Študentské práce]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_hardv%C3%A9rovej_%C4%8Dasti_dekod%C3%A9ra_RC5-BIN&amp;diff=5428</id>
		<title>Návrh hardvérovej časti dekodéra RC5-BIN</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_hardv%C3%A9rovej_%C4%8Dasti_dekod%C3%A9ra_RC5-BIN&amp;diff=5428"/>
		<updated>2010-06-22T15:39:21Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: /* Cypress PSoC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|2|Implementácia protokolu RC5 na platforme procesora Cypress|Protokol RC-5|Návrh hardvérovej časti dekodéra RC5-BIN|Implementácia dekodéra RC5-BIN v mikroprocesore Cypress||||||||||}}&lt;br /&gt;
=Návrh hardvérovej časti dekódera RC5-BIN=&lt;br /&gt;
==Cypress PSoC==&lt;br /&gt;
PSoC od spoločnosti Cypress predstavuje novú koncepciu mikroprocesorov &amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-teoreticky-uvod.php&amp;lt;/ref&amp;gt;, pretože okrem štandardných súčastí osem bitových procesorov obsahuje PSoC systém konfigurovateľných analógových a digitálnych blokov, na ktorých je možné vystavať množstvo ďalších prídavných digitálnych a analógových periférií. Digitálne konfigurovateľné bloky poskytujú základ pre výstavbu štandardných digitálnych periférií typu čítač , časovač, generátor náhodných čísiel, generátor CRC blokov UART, PWM(do slovníka cudz slov a skratiek)  a mnoho ďalších. Naproti tomu analógové bloky poskytujú základ analógovým perifériám ako sú rôzne druhy analogovo-digitálnych, digitálno-analógových prevodníkov, operačných zosilňovačov, komparátorov a podobne.&lt;br /&gt;
Architektúra PSoC je zobrazená na Obr.2.1.&amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-teoreticky-uvod.php&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr2_1.jpg|300px|center|thumb|Obr.2.1 Architektúra Cypress PSoC]]&lt;br /&gt;
&lt;br /&gt;
Základné charakteristiky:&lt;br /&gt;
Najdôležitejšie vlastnosti mikroprocesora PSoC :&lt;br /&gt;
-	voliteľné napätie 3.3 V alebo 5 V,&lt;br /&gt;
-	možnosť napájacieho napätia nižšieho ako 1 V,&lt;br /&gt;
-	programovateľná frekvencia,&lt;br /&gt;
-	až 32 kB programovej pamäti,&lt;br /&gt;
-	až 2 kB RAM,&lt;br /&gt;
-	čítače a časovače s registrami 8, 16, 24 a 32 bitov,&lt;br /&gt;
-	generátor CRC a pseudonáhodných sekvencií,&lt;br /&gt;
-	dva plne duplexné bloky UART-u,&lt;br /&gt;
-	bloky SPI,&lt;br /&gt;
-	voliteľné zapojenie všetkých vstupno – výstupných pinov,&lt;br /&gt;
-	voliteľná konfigurácia všetkých blokov,&lt;br /&gt;
-	každý pin umožňuje nastavenie v riadení (Pull-Up, Pull-Down, High-Z, Open-Drain, Strong),&lt;br /&gt;
-	možnosť generovať prerušenia po zmene logického stavu po ktoromkoľvek vstupno – výstupnom pine,&lt;br /&gt;
-	referenčný zdroj hodinového signálu.&lt;br /&gt;
&lt;br /&gt;
V nasledujúcich kapitolách budú popísané jednotlivé časti PSoC, ktoré boli využité pri implementácií protokolu RC-5.&lt;br /&gt;
===Counter===&lt;br /&gt;
Čítače poskytujú vlastnosť odčítania od nastavenej hodnoty periódy smerom k nule&amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-moduly-timmer.php&amp;lt;/ref&amp;gt;. Dĺžka periódy je voliteľná. Zdrojom hodín môže byť externý (riadiaci kryštál) alebo interný zdroj. Pokiaľ je činnosť čítača spustená, je nastavená perióda načítaná do čítacieho registra a s každou hranou hodín znížená smerom k nule. Počas odpočítavania je hodnota porovnávaná s tzv. komparačným registrom. V prípade zhody, alebo keď je hodnota čítača nižšia ako hodnota komparačného registra, je nastavená logická hodnota komparačného výstupu. Tento výstup môže byť vyvedený prostredníctvom vnútorných zberníc na ľubovoľný pin puzdra PSoC. Bloková schéma čítača je na Obr.2.2.&lt;br /&gt;
Základné vlastnosti :&lt;br /&gt;
-	8, 16, 24 alebo 32 – bitové univerzálne čítače, ktoré využívajú jeden, dva, tri alebo štyri PSoC digitálne bloky,&lt;br /&gt;
-	zdroj hodín môže poskytovať frekvenciu až do 48 MHz,&lt;br /&gt;
-	automatické opätovné načítanie periódy,&lt;br /&gt;
-	programovateľná šírka impulzu,&lt;br /&gt;
-	vstupy môžu zapínať alebo vypínať operácie čítača.&lt;br /&gt;
&lt;br /&gt;
[[Image:counter.jpg|Bloková schéma čitača]]&lt;br /&gt;
Zdroj obrázku &amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-moduly-timmer.php&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UART===&lt;br /&gt;
Používateľský blok UART (Universal Asynchronous Receiver Transmitter) je osem bitový univerzálny asynchrónny prijímač a vysielač, ktorý podporuje duplex RS-232 kompatibilitu, sériovú dátovú komunikácia skrz dva vodiče. Aplikačné programové rozhranie je vybavené rutinami firmvér na inicializáciu, konfiguráciu a ovládanie UART-u.  Na Obr. 2.3 je znázornená bloková schéma PSoC bloku UART.&lt;br /&gt;
&lt;br /&gt;
[[Image:UART.jpg|Bloková schéma UART]]&lt;br /&gt;
&lt;br /&gt;
Zdroj obrázku&amp;lt;ref&amp;gt;CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C.  Dostupný z WWW: &amp;lt;www.cypress.com&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Základné vlastnosti :&lt;br /&gt;
-	asynchrónny prijímač a vysielač&lt;br /&gt;
-	dátový formát je kompatibilný so sériovým dátovým formátom RS-232&lt;br /&gt;
-	rýchlosť dátových dávok až do 6 Mbit za sekundu&lt;br /&gt;
-	dátová štruktúra sa skladá zo štartu, voliteľnej parity a stop bitov&lt;br /&gt;
-	voliteľné prerušenie pri naplnení prijímacieho registra a pri vyprázdnení odosielacieho registra&lt;br /&gt;
-	vysoká úroveň prijímacích a vysielacích funkcií&lt;br /&gt;
&lt;br /&gt;
Používateľský blok UART implementuje sériový prijímač a vysielač. UART zaberá dva digitálne PSoC bloky určených pre TX a RX v PSoC dizajnéri &amp;lt;ref&amp;gt;CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C.  Dostupný z WWW: &amp;lt;www.cypress.com&amp;gt;&amp;lt;/ref&amp;gt;. PSoC blok TX poskytuje odosielaciu funkcionalitu a RX blok poskytuje prijímaciu funkcionalitu. RX a TX pracujú nezávisle. Každý z oboch blokov má vlastný kontrolný a stavový register, programovateľné prerušenia, vstupy a výstupy, register vyrovnávacej pamäte a posuvný register. Hodiny modulu využívajú obidva bloky TX aj RX. Frekvencia hodín musí byť nastavená na osemnásobnú hodnotu oproti žiadanej bitovej prenosovej rýchlosti hodnote. Blok UART je taktiež plne nastaviteľný v PSoC dizajnéri.&lt;br /&gt;
&lt;br /&gt;
===Digitálne vstupy a výstupy===&lt;br /&gt;
Spojenie medzi mikroprocesorom PSoC a okolitým svetom je zaistený prostredníctvom vstupno – výstupných pinov. Operácie ako čítanie alebo zápis z pinu respektíve portu sú vykonávané veľmi podobne. Registre pre prístup k portu sú súčasťou adresného priestoru v pamäti RAM pod názvami PRT0DR, PRT1DR a PRT2DR [9].&lt;br /&gt;
'''Nastavene portu'''&lt;br /&gt;
Zápis hodnoty do registra PRTxDR zaistí prostredníctvom inicializačného obvodu nastavenie požadovaných stavov na porte. Inicializačný obvod prenesie hodnotu z registra na port priamo (v režime STRONG), cez PULL-UP, PULL-DOWN alebo otvorený kolektor. &lt;br /&gt;
'''Čítanie portu'''&lt;br /&gt;
Prečítaním hodnoty PRTxDR je prenesený logický stav na portoch do registru A. V prípade, že je pripojený na port externý obvod, napríklad tlačidlo, môže sa líšiť prečítaná hodnota (A) od nastavenej (PRTxDR).&lt;br /&gt;
'''Riadenie portu'''&lt;br /&gt;
Nastavenie spôsobu, akým bude inicializačný obvod prenášať hodnotu registra PRTxDR na porty je nastavované vizuálne vo vývojovom prostredí alebo manuálne zápisom do banky PRTxDM2, PRTxDM1 a PRTxDM0. Existuje celkom osem možností ako porty inicializovať. Druh použitej inicializácie závisí na pripojených externých komponentoch. Nasledujúca tabuľka v stručnosti opisuje rôzne režimy portu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_hardv%C3%A9rovej_%C4%8Dasti_dekod%C3%A9ra_RC5-BIN&amp;diff=5426</id>
		<title>Návrh hardvérovej časti dekodéra RC5-BIN</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_hardv%C3%A9rovej_%C4%8Dasti_dekod%C3%A9ra_RC5-BIN&amp;diff=5426"/>
		<updated>2010-06-22T15:36:14Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|2|Implementácia protokolu RC5 na platforme procesora Cypress|Protokol RC-5|Návrh hardvérovej časti dekodéra RC5-BIN|Implementácia dekodéra RC5-BIN v mikroprocesore Cypress||||||||||}}&lt;br /&gt;
=Návrh hardvérovej časti dekódera RC5-BIN=&lt;br /&gt;
==Cypress PSoC==&lt;br /&gt;
PSoC od spoločnosti Cypress predstavuje novú koncepciu mikroprocesorov &amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-teoreticky-uvod.php&amp;lt;/ref&amp;gt;, pretože okrem štandardných súčastí osem bitových procesorov obsahuje PSoC systém konfigurovateľných analógových a digitálnych blokov, na ktorých je možné vystavať množstvo ďalších prídavných digitálnych a analógových periférií. Digitálne konfigurovateľné bloky poskytujú základ pre výstavbu štandardných digitálnych periférií typu čítač , časovač, generátor náhodných čísiel, generátor CRC blokov UART, PWM(do slovníka cudz slov a skratiek)  a mnoho ďalších. Naproti tomu analógové bloky poskytujú základ analógovým perifériám ako sú rôzne druhy analogovo-digitálnych, digitálno-analógových prevodníkov, operačných zosilňovačov, komparátorov a podobne.&lt;br /&gt;
Architektúra PSoC je zobrazená na Obr.2.1.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr2_1.jpg|Architektúra Cypress PSoC]]&lt;br /&gt;
Zdroj obrázku &amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-teoreticky-uvod.php&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Základné charakteristiky:&lt;br /&gt;
Najdôležitejšie vlastnosti mikroprocesora PSoC :&lt;br /&gt;
-	voliteľné napätie 3.3 V alebo 5 V,&lt;br /&gt;
-	možnosť napájacieho napätia nižšieho ako 1 V,&lt;br /&gt;
-	programovateľná frekvencia,&lt;br /&gt;
-	až 32 kB programovej pamäti,&lt;br /&gt;
-	až 2 kB RAM,&lt;br /&gt;
-	čítače a časovače s registrami 8, 16, 24 a 32 bitov,&lt;br /&gt;
-	generátor CRC a pseudonáhodných sekvencií,&lt;br /&gt;
-	dva plne duplexné bloky UART-u,&lt;br /&gt;
-	bloky SPI,&lt;br /&gt;
-	voliteľné zapojenie všetkých vstupno – výstupných pinov,&lt;br /&gt;
-	voliteľná konfigurácia všetkých blokov,&lt;br /&gt;
-	každý pin umožňuje nastavenie v riadení (Pull-Up, Pull-Down, High-Z, Open-Drain, Strong),&lt;br /&gt;
-	možnosť generovať prerušenia po zmene logického stavu po ktoromkoľvek vstupno – výstupnom pine,&lt;br /&gt;
-	referenčný zdroj hodinového signálu.&lt;br /&gt;
&lt;br /&gt;
V nasledujúcich kapitolách budú popísané jednotlivé časti PSoC, ktoré boli využité pri implementácií protokolu RC-5.&lt;br /&gt;
===Counter===&lt;br /&gt;
Čítače poskytujú vlastnosť odčítania od nastavenej hodnoty periódy smerom k nule&amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-moduly-timmer.php&amp;lt;/ref&amp;gt;. Dĺžka periódy je voliteľná. Zdrojom hodín môže byť externý (riadiaci kryštál) alebo interný zdroj. Pokiaľ je činnosť čítača spustená, je nastavená perióda načítaná do čítacieho registra a s každou hranou hodín znížená smerom k nule. Počas odpočítavania je hodnota porovnávaná s tzv. komparačným registrom. V prípade zhody, alebo keď je hodnota čítača nižšia ako hodnota komparačného registra, je nastavená logická hodnota komparačného výstupu. Tento výstup môže byť vyvedený prostredníctvom vnútorných zberníc na ľubovoľný pin puzdra PSoC. Bloková schéma čítača je na Obr.2.2.&lt;br /&gt;
Základné vlastnosti :&lt;br /&gt;
-	8, 16, 24 alebo 32 – bitové univerzálne čítače, ktoré využívajú jeden, dva, tri alebo štyri PSoC digitálne bloky,&lt;br /&gt;
-	zdroj hodín môže poskytovať frekvenciu až do 48 MHz,&lt;br /&gt;
-	automatické opätovné načítanie periódy,&lt;br /&gt;
-	programovateľná šírka impulzu,&lt;br /&gt;
-	vstupy môžu zapínať alebo vypínať operácie čítača.&lt;br /&gt;
&lt;br /&gt;
[[Image:counter.jpg|Bloková schéma čitača]]&lt;br /&gt;
Zdroj obrázku &amp;lt;ref&amp;gt;http://www.psoc.cz/psoc-moduly-timmer.php&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UART===&lt;br /&gt;
Používateľský blok UART (Universal Asynchronous Receiver Transmitter) je osem bitový univerzálny asynchrónny prijímač a vysielač, ktorý podporuje duplex RS-232 kompatibilitu, sériovú dátovú komunikácia skrz dva vodiče. Aplikačné programové rozhranie je vybavené rutinami firmvér na inicializáciu, konfiguráciu a ovládanie UART-u.  Na Obr. 2.3 je znázornená bloková schéma PSoC bloku UART.&lt;br /&gt;
&lt;br /&gt;
[[Image:UART.jpg|Bloková schéma UART]]&lt;br /&gt;
&lt;br /&gt;
Zdroj obrázku&amp;lt;ref&amp;gt;CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C.  Dostupný z WWW: &amp;lt;www.cypress.com&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Základné vlastnosti :&lt;br /&gt;
-	asynchrónny prijímač a vysielač&lt;br /&gt;
-	dátový formát je kompatibilný so sériovým dátovým formátom RS-232&lt;br /&gt;
-	rýchlosť dátových dávok až do 6 Mbit za sekundu&lt;br /&gt;
-	dátová štruktúra sa skladá zo štartu, voliteľnej parity a stop bitov&lt;br /&gt;
-	voliteľné prerušenie pri naplnení prijímacieho registra a pri vyprázdnení odosielacieho registra&lt;br /&gt;
-	vysoká úroveň prijímacích a vysielacích funkcií&lt;br /&gt;
&lt;br /&gt;
Používateľský blok UART implementuje sériový prijímač a vysielač. UART zaberá dva digitálne PSoC bloky určených pre TX a RX v PSoC dizajnéri &amp;lt;ref&amp;gt;CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C.  Dostupný z WWW: &amp;lt;www.cypress.com&amp;gt;&amp;lt;/ref&amp;gt;. PSoC blok TX poskytuje odosielaciu funkcionalitu a RX blok poskytuje prijímaciu funkcionalitu. RX a TX pracujú nezávisle. Každý z oboch blokov má vlastný kontrolný a stavový register, programovateľné prerušenia, vstupy a výstupy, register vyrovnávacej pamäte a posuvný register. Hodiny modulu využívajú obidva bloky TX aj RX. Frekvencia hodín musí byť nastavená na osemnásobnú hodnotu oproti žiadanej bitovej prenosovej rýchlosti hodnote. Blok UART je taktiež plne nastaviteľný v PSoC dizajnéri.&lt;br /&gt;
&lt;br /&gt;
===Digitálne vstupy a výstupy===&lt;br /&gt;
Spojenie medzi mikroprocesorom PSoC a okolitým svetom je zaistený prostredníctvom vstupno – výstupných pinov. Operácie ako čítanie alebo zápis z pinu respektíve portu sú vykonávané veľmi podobne. Registre pre prístup k portu sú súčasťou adresného priestoru v pamäti RAM pod názvami PRT0DR, PRT1DR a PRT2DR [9].&lt;br /&gt;
'''Nastavene portu'''&lt;br /&gt;
Zápis hodnoty do registra PRTxDR zaistí prostredníctvom inicializačného obvodu nastavenie požadovaných stavov na porte. Inicializačný obvod prenesie hodnotu z registra na port priamo (v režime STRONG), cez PULL-UP, PULL-DOWN alebo otvorený kolektor. &lt;br /&gt;
'''Čítanie portu'''&lt;br /&gt;
Prečítaním hodnoty PRTxDR je prenesený logický stav na portoch do registru A. V prípade, že je pripojený na port externý obvod, napríklad tlačidlo, môže sa líšiť prečítaná hodnota (A) od nastavenej (PRTxDR).&lt;br /&gt;
'''Riadenie portu'''&lt;br /&gt;
Nastavenie spôsobu, akým bude inicializačný obvod prenášať hodnotu registra PRTxDR na porty je nastavované vizuálne vo vývojovom prostredí alebo manuálne zápisom do banky PRTxDM2, PRTxDM1 a PRTxDM0. Existuje celkom osem možností ako porty inicializovať. Druh použitej inicializácie závisí na pripojených externých komponentoch. Nasledujúca tabuľka v stručnosti opisuje rôzne režimy portu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Implement%C3%A1cia_protokolu_RC5_na_platforme_procesora_Cypress&amp;diff=5425</id>
		<title>Implementácia protokolu RC5 na platforme procesora Cypress</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Implement%C3%A1cia_protokolu_RC5_na_platforme_procesora_Cypress&amp;diff=5425"/>
		<updated>2010-06-22T15:35:41Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Médiá:Príklad.ogg]][[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Július Jančo|RNDr Peter Fabo PhD.|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Bakalárska práca|Mechatronika}} &lt;br /&gt;
{{Praca_uvod|1|Implementácia protokolu RC5 na platforme procesora Cypress|Protokol RC-5|Návrh hardvérovej časti dekodéra RC5-BIN|Implementácia dekodéra RC5-BIN v mikroprocesore Cypress||||||||||}}&lt;br /&gt;
{{Abstrakt|Práca sa zaoberá návrhom a realizáciou softvérovej a hardvérovej časti implementácie protokolu RC-5 na platforme procesora Cypress. V prvej časti je opísaný protokol RC-5, jeho vlastnosti, opis a možnosti dekódovania signálu. Ďalšia časť práce popisuje všetky hardvérové časti, ktoré boli priamo využité pri implementácii. Opisuje novú generáciu procesorov PSoC od spoločnosti Cypress, jednotlivé bloky a časti procesora, ktoré boli pri práci využité. Taktiež sú opísané ďalšie hardvérové súčasti ako prijímač infračerveného signálu či komunikačné rozhranie RS232. V ďalšej časti sa práca zaoberá návrhom algoritmu na dekódovanie signálu, vývojom programu pre dekódovanie signálu v programovacom jazyku assembler. Vyvinutý zdrojový kód je dobre opísaný a nadväzuje na každý krok skôr navrhovaného dekódovacieho algoritmu.|The work deals with the design and implementation of software and hardware implementation of the Protocol on the RC-5 platform of Cypress Processor. The first part describes the RC-5 protocol, its characteristics and describes possible signal decoding. The next section describes all the hardware parts that were used for implementation. It describes the new generation of PSoC processors from Cypress, individual blocks and the parts of processor which were used at work. It also describes other hardware components such as an infrared signal receiver or RS232 communication interface. The next part deals with design algorithm to decode the signal, the development program to decode the signal in the assembler programming language. Developed source code is well described, and each step builds on the earlier proposed decoding algorithm.}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
V súčasnej dobe si už nedokážeme predstaviť život bez rôznych spotrebičov, zariadení či mechanizmov. Uľahčujú nám život, vykonávajú rôzne špecifické funkcie, na ktoré by sme inak museli vynaložiť veľa úsilia. Vyvstáva však potreba tieto zariadenia ovládať, zapínať, vypínať, prepínať na inú funkciu. Prvými riešeniami bolo ovládanie priamo na spotrebiči ako je napríklad televízor či rádio. Na zariadení respektíve spotrebiči bol panel s tlačidlami, ktoré mali rozličnú funkciu. Nevýhodou však očividne bolo nepohodlie, keď pri každej želanej zmene programu alebo hlasitosti musela dotyčná osoba ísť k televízoru či rádiu a prepnúť ho. Prvými takzvanými diaľkovými ovládaniami boli ovládače, ktoré mali niekoľko základných funkcií a viedol k nim viacžilový kábel z televízora. Iste, na tú dobu možno pokrokové riešenie avšak veľmi nepraktické pri predstave použitia na viacero zariadení. V 80.tych rokoch minulého storočia prišli prvé diaľkové ovládače, ktoré realizovali prenos signálu už nie tzv. „po drôte“ ale prostredníctvom infračerveného svetla. V tom momente už sa dalo hovoriť a praktickom diaľkovom ovládaní a rozširovali sa možnosti jeho využitia. Infračervené svetlo, ktoré diaľkové ovládanie vysielalo však bolo potrebné istým spôsobom modulovať aby sa doňho dala zakódovať funkcia, ktorú si užívateľ vybral stlačením príslušného tlačidla na diaľkovom ovládači. V prvých rokoch sa snažilo mnoho firiem a spoločností vytvoriť svoj vlastný mechanizmus kódovania signálu, avšak neskôr prišla myšlienka zjednocovania. Náhodou sa takýmto všeobecne uznávaným zjednotením stal protokol RC-80 od spoločnosti Philips. Kódovanie podľa tohto protokolu však nebolo spoľahlivé a preto firma vyvinula protokol RC-5, ktorý disponoval vysokou mierou možností využitia a aj spoľahlivosti. I napriek tomu, že firma Philips vydala len jednu publikáciu o tomto protokole a dá sa povedať, že sa dlho snažila uchovať čo najviac pre seba, ostatní výrobcovia kód dekódovali a protokol popísali. Touto etapou sa otvorili dvere výrobcom spotrebičov najrozličnejších funkcií. Už nemusíme hovoriť len o televízoroch čí rádiách. Množstvo zmysluplných využití môžeme napríklad nájsť aj v obyčajnej domácnosti. To môže predstavovať ovládanie intenzity svetla, ovládanie roliet či žalúzií, ovládanie strešných okien, ku ktorým býva problematický prístup. Našou úlohou bolo tento protokol pomocou technologickej novinky od spoločnosti Cypress nazvanou PSoC (programovateľný systém na čipe) dekódovať a implementovať program, ktorý bude schopný pracovať s týmto protokolom. Tým by sa naskytli nové možnosti použitia diaľkového ovládania či už v domácnosti alebo v akomkoľvek inom prostredí.&lt;br /&gt;
&lt;br /&gt;
=Protokol RC 5=&lt;br /&gt;
Prenos signálu pomocou infračerveného svetla je jedným z najpoužívanejších v spotrebnej elektronike. Typickým príkladom je diaľkové ovládanie televízora, rádia a pod. Povely, ktoré vysiela diaľkový ovládač sú vysielané LED diódou s infračerveným žiarením. Toto žiarenie sprostredkuje informáciu logickej nuly – v prípade ak LED dióda nesvieti a opačne, logickej jednotky – v prípade ak svieti. Vysielaný signál musel byť modulovaný podľa istého predpisu resp. istým spôsobom – protokolom. Koncom 80.-tych rokov 20. storočia, sa protokoly RC-80 a RC-5 spoločnosti Philips, náhodne stali medzinárodnými štandardmi. Nakoľko však protokol RC-80 nebol spoľahlivý, rýchlo ho nahradil v 90.tych rokoch protokol RC-5. Protokol sa veľmi rýchlo šíril a s istými obmenami sa využíval vo veľkej väčšine Európy a Spojených štátoch amerických. Naproti tomu, však bol v Japonsku rozšírený protokol NEC. Protokol RC-5 bol vyvinutý firmou Philips, konkrétne profesorom Ronaldom Rivestom. Bol navrhnutý pre diaľkové ovládanie prístrojov spotrebnej elektroniky. Je jedným z najpoužívanejších protokolov vďaka jeho dostupnosti a cenovej výhodnosti diaľkových ovládačov&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Consumer_IR&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opis protokolu==&lt;br /&gt;
Prenos signálu je realizovaný infračerveným svetlom, ktoré je nositeľom informácie a je vysielané diaľkovým ovládačom. Nosná frekvencia je 36 kHz. Jeden impulz má dĺžku 27,8 µs. Z tejto dĺžky LED dióda svieti 25 až 33 %, čo je približne 6,944 µs. Zostatok LED dióda nesvieti. Impulz je znázornený na Obr.1.1 V protokole reprezentuje dávku 32 impulzov nosnej frekvencie a medzeru čas, zodpovedajúci 32 impulzom nosnej frekvencie. V tom prípade má dávka(pozn. z angl „burst“) alebo pauza podľa vzťahu 1.1 trvanie: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{n_i}{T_i}=\frac{n_i}{\frac{1}{f_n}}=T_d &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde, n&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; - je počet impulzov, T&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; - perióda jedného impulzu, f&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; -nosná frekvencia a T&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt; - perióda jednej dávky.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr1_1.jpg|Priebeh impulzu]]&lt;br /&gt;
&lt;br /&gt;
Uvedieme príklad podľa 1.2 pre protokol RC-5, kde n&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;=32, f&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;=36kHz,&lt;br /&gt;
&amp;lt;math&amp;gt;T_d=\frac{32}{1/36000}=0,889.10^-3s=889 us&amp;lt;/math&amp;gt;&lt;br /&gt;
Ako vidieť, trvanie jednej dávky alebo pauzy trvá  .Jeden bit je tvorený vždy značkou a medzerou, čiže jeden bit potom trvá 2.T&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;=T&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;. T&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; je perióda jedného bitu. T&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt;=2.T&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt;=2.889µs=1,78ms.  &lt;br /&gt;
V protokole sa využíva dvoj fázová modulácia tzv.  Manchester coding , infračerveného svetla s nosnou frekvenciou 36 kHz. Všetky bity majú rovnakú dĺžku 1,78 ms. Polovica bitu je vyplnená dávkou 32 impulzov nosnej frekvencie a druhá polovica neaktívnym stavom taktiež s dĺžkou 32 impulzov. Logická jednotka je reprezentovaná dávkou v druhej polovici bitu a logická nula dávkou v prvej polovici bitu ako je možné vidieť z Obr.1.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr1_2.jpg|Priebeh bitu v RC-5]]&lt;br /&gt;
&lt;br /&gt;
Obrázok Obr.1.3 znázorňuje typický priebeh signálu protokolu RC 5. Celá správa sa skladá zo 14 bitov, takže celkovo jej prenos trvá 24,92 ms. Pokiaľ je tlačidlo na ovládači stlačené, odosielanie správy sa opakuje každých 113,792 ms.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr1_3.jpg|Priebeh signálu v RC-5]]&lt;br /&gt;
&lt;br /&gt;
==Kódovanie protokolu==&lt;br /&gt;
Vysielaný povel z diaľkového ovládača obsahuje 14 informačných bitov Obr.1.3 v Manchester code. Bližšiu špecifikáciu Manchester code je možné nájsť v &amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Manchester_code&amp;lt;/ref&amp;gt;. Každý z bitov predstavuje špecifickú informáciu. Vysielaný povel vždy začína dvoma bitmi nazvanými štart bit. Používajú sa na aktivovanie a správne zosilnenie  prijímača. Ďalej nasleduje Toggle bit, ktorý zmení svoju hodnotu vždy pri opätovnom zatlačení tlačidla na diaľkovom ovládači. Toggle bit sa vyskytuje v kóde preto, aby pri podržaní tlačidla nedošlo k vyslaniu viacerých povelov toho istého tlačidla veľmi rýchlo za sebou. Nasleduje 5 adresných bitov, ktorých súčet alebo kombinácia udáva, ktoré zariadenie má na povel reagovať, nakoľko môžeme mať v jednej miestnosti viac prijímačov napr. televízor, video, domáce kino, ovládanie svetiel, žalúzií a pod. Za nimi nasleduje 6 príkazových bitov, ktoré určujú aký príkaz sa má vykonať, t.j. prepnúť kanál na TV, spustiť DVD prehrávač a pod. Obsiahlejšiu sadu adries a príkazov je možné nájsť v &amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/RC-5&amp;lt;/ref&amp;gt;. Aj napriek tomu, že samotný protokol je dobre popísaný, jediná dokumentácia od firmy Philips &amp;lt;ref&amp;gt;Philips Semiconductors. Remote Control System RC-5 including Command Tables. December, 1992&amp;lt;/ref&amp;gt;. bola vydaná v roku 1992 a nenachádza sa dokonca ani v elektronickej forme. V tejto dokumentácii však neboli popísané všetky adresy a príkazy a firma Philips ich ani neaktualizovala a ani neskôr nezverejnila. Napríklad v dobe vydania, sa medzi adresami vyskytovali hodnoty pre zariadenia „CD-Video, CD-Photo, Compact Disc Recorder “, ktoré za pár rokov stratili opodstatnenie. Naproti  tomu neboli pridané adresy pre DVD prehrávače, domáce kiná, DVD rekordéry a zariadenia, ktoré sa objavili neskôr.  Nakoľko protokol využívalo viacero výrobcov spotrebnej elektroniky, počas rokov začalo dochádzať k chybám, pretože zariadenia rôznych značiek už mali rôznu funkciu pre ten istý povel v protokole RC-5. Podobná situácia nastala aj s adresami zariadení &amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/RC-5&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Ako nosná frekvencia sa štandardne udáva  hodnota 36 kHz. Avšak v praxi Philips využíva aj frekvenciu s hodnotou 38 kHz a 40 kHz. Preto treba brať do úvahy aj rôzne periódy bitov a výsledného povelu, čo naznačuje, že dekódujúci algoritmus respektíve program musí byť flexibilný.&lt;br /&gt;
&lt;br /&gt;
==Spôsoby dekódovania==&lt;br /&gt;
Na dekódovanie signálu bolo vytvorených viacero algoritmov. Najjednoduchším dekódovaním je postup, pri ktorom čakáme na prvú vzostupnú hranu signálu a spustíme vzorkovanie. Vzorkovanie sa uskutoční tak, že budeme merať každú druhú polovicu bitu na prítomnosť logickej jednotky alebo nuly. Na to však musíme poznať periódu a tú udáva špecifikácia protokolu RC-5 ako 1,78 ms. Ukážka dekódovania je na Obr.1.4.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr1_4.jpg|Grafické znázornenie dekódovania]]&lt;br /&gt;
&lt;br /&gt;
Pri tomto type dekódovania však nastávajú značné problémy, pretože vysielač (v bežnom prípade diaľkové ovládanie) by musel odosielať povel so značnou časovou presnosťou. Pri bežných diaľkových ovládačoch sú však používané lacné oscilátory, ktoré sú riadené nekvalitnými rezonátormi, ktoré sú v praxi nespoľahlive zapríčinenou lacnou a nekvalitnou výrobou, čo má za následok nespoľahlivý referenčný zdroj frekvencie. Ak by sme chceli s istotou používať takýto algoritmus, časovač v diaľkovom ovládaní by mohol mať odchýlku maximálne 1,96 %. V praxi sa však stretávame s bežnou odchýlkou podľa &amp;lt;ref&amp;gt;http://www.za.gaya.sk/~sinkom/konstrukcie/RC5_dekoder/RC5_I.html&amp;lt;/ref&amp;gt; až 5 %. Do úvahy treba brať aj to, že samotná firma Philips používa pre protokol RC-5 rôzne nosné frekvencie a to 36 kHz, 38 kHz a 40 kHz.&lt;br /&gt;
Z týchto dôvodov bolo treba hľadať spôsob ako korektne dekódovať prijatý povel. Bolo potrebné navrhnúť algoritmus, ktorý bude schopný dynamicky reagovať na zmenu nosnej frekvencie a tým aj zmeny v perióde dĺžky jednotlivých bitov. Riešením tohto problému bolo odmeranie periódy trvania prvého štart bitu, pretože môžeme vychádzať z predpokladu, že prvé dva štart bity sú v kódovaní logické jednotky. Dekódovací algoritmus čaká na prvú vzostupnú hranu. Ak ju zdeteguje, spustí meranie času. Meranie času trvá pokiaľ nezaznamenáme ďalšiu vzostupnú hranu, pretože to je miesto, kde už začína ďalší bit. Táto doba predstavuje periódu jedného bitu. V prípade, že sme odmerali periódu prvého bitu, môžeme postupovať ako v predchádzajúcej metóde a to opakovane s posunutím o periódu bitu zisťovať stav na prijímači – či sa v danom mieste vyskytuje logická nula alebo jednotka a následne potom určiť hodnotu bitu 0 alebo 1. Toto je potrebné opakovať 13 krát, pretože i keď v povele sa vyskytuje 14 bitov, počas prvého bitu odmeriame periódu a preto neuvažujeme s meraním všetkých 14 ale len ostávajúcich 13 bitov. Na Obr.1.5 je uvedený vývojový algoritmus tohto riešenia.&lt;br /&gt;
&lt;br /&gt;
[[Image:Obr1_5.jpg|Vývojový algoritmus dekódovania]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5423</id>
		<title>Bakalárske práce</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5423"/>
		<updated>2010-06-22T15:32:34Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ako_pisat_wikiPracu|Dusan|Ggaspar|Jakub Trska}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2009/2010&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Autor&lt;br /&gt;
!Názov práce&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Porubský&lt;br /&gt;
|[[Systém tvorby rozvrhu]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Systém tvorby rozvrhu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Pagáč&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dávid Ďurika&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM]]&lt;br /&gt;
|{{stav_prace|45}}&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Gabriel Gašpar, Bc.&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Krajči&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov]]&lt;br /&gt;
|{{stav_prace|66.6}}&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Pilař&lt;br /&gt;
|[[Poloautomatický parkovací systém]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Poloautomatický parkovací systém (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ľubomír Milko&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch]]&lt;br /&gt;
|{{stav_prace|70}}&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Peter Magala&lt;br /&gt;
|[[Bezpečnosť webových aplikácií]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Bezpečnosť webových aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ján Čižmárik&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Cibulka&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme]]&lt;br /&gt;
|{{stav_prace|60}}&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Ronec&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Július Jančo&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Juraj Prívara&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS]]&lt;br /&gt;
|{{stav_prace|65}}&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Emanuel Dubovan&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Vojsovič&lt;br /&gt;
|[[Porovnanie výkonnosti virtualizačných softvérových produktov]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
||[[Porovnanie výkonnosti virtualizačných softvérových produktov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Jozef Janega&lt;br /&gt;
|[[Fotoelektrický parkovací senzor]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
||[[Fotoelektrický parkovací senzor (Zadanie)|Zadanie BP]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2008/2009&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:yellow&amp;quot;&lt;br /&gt;
! Autor&lt;br /&gt;
!Názov&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Lokšík&lt;br /&gt;
|[[Simulácia a modelovanie technologických procesov pomocou stavebnice FESTO]]&lt;br /&gt;
|{{stav_prace|5}}&lt;br /&gt;
|- &lt;br /&gt;
|Ivana Zuzinová&lt;br /&gt;
|[[Pokročilé vlastnosti skiptovacích jazykov]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|-&lt;br /&gt;
|Martin Starosta&lt;br /&gt;
|[[Webové služby v Jave]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Staršie práce budú pridané.&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Študentské práce]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5422</id>
		<title>Bakalárske práce</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bakal%C3%A1rske_pr%C3%A1ce&amp;diff=5422"/>
		<updated>2010-06-22T15:31:07Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ako_pisat_wikiPracu|Dusan|Ggaspar|Jakub Trska}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2009/2010&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Autor&lt;br /&gt;
!Názov práce&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Porubský&lt;br /&gt;
|[[Systém tvorby rozvrhu]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Systém tvorby rozvrhu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Pagáč&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií]]&lt;br /&gt;
|{{stav_prace|50}}&lt;br /&gt;
|[[Off-line funkcionalita on-line web aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Dávid Ďurika&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM]]&lt;br /&gt;
|{{stav_prace|45}}&lt;br /&gt;
|[[Štatistický modul v systéme rozvrhu FM (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Gabriel Gašpar, Bc.&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Autonómny systém pre zber teplotných dát z pôdneho profilu (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Krajči&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov]]&lt;br /&gt;
|{{stav_prace|66.6}}&lt;br /&gt;
|[[Otvorené formáty súborov kancelárskych softvérov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Pilař&lt;br /&gt;
|[[Poloautomatický parkovací systém]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Poloautomatický parkovací systém (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ľubomír Milko&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch]]&lt;br /&gt;
|{{stav_prace|70}}&lt;br /&gt;
|[[Aplikácie teórie grafov a teórie hier v rozhodovacích problémoch (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Peter Magala&lt;br /&gt;
|[[Bezpečnosť webových aplikácií]]&lt;br /&gt;
|{{stav_prace|10}}&lt;br /&gt;
|[[Bezpečnosť webových aplikácií (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Ján Čižmárik&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov]]&lt;br /&gt;
|{{stav_prace|80}}&lt;br /&gt;
|[[Metódy riešenia optimalizačných problémov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Martin Cibulka&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme]]&lt;br /&gt;
|{{stav_prace|60}}&lt;br /&gt;
|[[Nastavenie priority procesu a vplyv na jeho činnosť v operačnom systéme (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Lukáš Ronec&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
|[[Generátor náhľadov fotografií umiestnených na webe (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Július Jančo&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|[[Implementácia protokolu RC5 na platforme procesora Cypress (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Juraj Prívara&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS]]&lt;br /&gt;
|{{stav_prace|65}}&lt;br /&gt;
|[[Použitie mikrouchopovačov MEMS (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Emanuel Dubovan&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Dušan Vojsovič&lt;br /&gt;
|[[Porovnanie výkonnosti virtualizačných softvérových produktov]]&lt;br /&gt;
|{{stav_prace|0}}&lt;br /&gt;
||[[Porovnanie výkonnosti virtualizačných softvérových produktov (Zadanie)|Zadanie BP]]&lt;br /&gt;
|-&lt;br /&gt;
|Jozef Janega&lt;br /&gt;
|[[Fotoelektrický parkovací senzor]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
||[[Fotoelektrický parkovací senzor (Zadanie)|Zadanie BP]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_topbox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;mainpage_pagetitle&amp;quot;&amp;gt;Bakalárske práce 2008/2009&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;  border=1 cellpadding=5 cellspacing=0 style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:yellow&amp;quot;&lt;br /&gt;
! Autor&lt;br /&gt;
!Názov&lt;br /&gt;
!style=&amp;quot;width:150px&amp;quot;|Stav práce&lt;br /&gt;
!style=&amp;quot;width:90px&amp;quot;|Zadanie&lt;br /&gt;
|-&lt;br /&gt;
|Milan Lokšík&lt;br /&gt;
|[[Simulácia a modelovanie technologických procesov pomocou stavebnice FESTO]]&lt;br /&gt;
|{{stav_prace|5}}&lt;br /&gt;
|- &lt;br /&gt;
|Ivana Zuzinová&lt;br /&gt;
|[[Pokročilé vlastnosti skiptovacích jazykov]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|-&lt;br /&gt;
|Martin Starosta&lt;br /&gt;
|[[Webové služby v Jave]]&lt;br /&gt;
|{{stav_prace|100}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Staršie práce budú pridané.&lt;br /&gt;
&lt;br /&gt;
[[Kategória:Študentské práce]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=5421</id>
		<title>Rozhranie I2C</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=5421"/>
		<updated>2010-06-22T15:29:40Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|3|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Rozhranie I2C=&lt;br /&gt;
Rozhranie I2C bolo vyvinuté firmou Philips pre komunikáciu zariadení na krátke vzdialenosti, typicky na doske plošných spojov. Všetky I2C kompatibilné zariadenia majú zabudované rozhranie, ktoré im umožňuje priamu vzájomnú komunikáciu pomocou zbernice I2C. Vďaka tomuto konceptu je jednoduché vyriešiť množstvo problémov pri navrhovaní obvodov digitálnej elektroniky&lt;br /&gt;
[[Súbor:bcgg3.1.png|framed|center|Obr. 3.1 Zapojenie zariadení na zbernicu I2C]]&lt;br /&gt;
&lt;br /&gt;
==Vlastnosti rozhrania I2C==&lt;br /&gt;
Na pripojenie zariadenia k zbernici I2C sú potrebné iba dva vodiče. SDA – sériová dátová linka a SCL - sériová hodinová linka. &lt;br /&gt;
Každé zariadenie pripojené ku zbernici je softvérovo adresovateľné jedinečnou adresou a jednoduchým vzťahom master/slave. Master zariadenia môžu komunikovať v režime master-vysielač a master-prijímač.&lt;br /&gt;
V I2C protokole je zavedená detekcia kolízií, aby sa zamedzilo poškodeniu dát pri prenose. Na Obr. 3.1 je zobrazený systém, v ktorom by mohlo dôjsť ku kolízii, ak by obidve master zariadenia začali komunikovať súčasne.&lt;br /&gt;
Pripojenie je sériové, 8 bitové, obojsmerné. Dátové prenosy môžu byť vykonávané rýchlosťami až do 100 kHz v štandardnom režime, 400 kHz rýchlom režime a 3,4 MHz vo vysokorýchlostnom režime.&lt;br /&gt;
&lt;br /&gt;
==Ramtron FM24V10==&lt;br /&gt;
FM24V10 je 1 Mb fero-elektrická napäťovo nezávislá RAM pamäť označovaná F-RAM. Firma RAMTRON navrhla túto pamäť pre protokol I2C a garantuje konzistentnosť dát po dobu do 10 rokov. Pre zápis používa technológiu NoDelay Writes, a teda parametre čítania a zápisu ma podobné ako pamäť typu RAM. Programovanie pamätí typu F-RAM je oproti pamätiam typu EPROM a starším EEPROM podstatne menej komplikované.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
Pamäť je organizovaná do 131072 blokov po 8 bitov a podporuje vysokorýchlostný režim I2C, ako aj režimy 100 kHz a 400 kHz. Je dimenzovaná na 1014 cyklov zápis/čítanie a je schopná uchovať dáta intaktné po dobu 10 rokov. V aktívnom stave odoberá typicky menej ako 150 µA pri 100 kHz a napájaní od 2,0 V do 3,6 V. Dodáva sa v puzdre SOIC-8.&lt;br /&gt;
&lt;br /&gt;
FM24V10 vykonáva zápis rýchlosťou zbernice. Ďalší cyklus sa môže vykonať okamžite po zápise, bez nutnosti kontroly či sú dáta už zapísané. Pri zápise má nižšie nároky na napájanie, ako pamäte typu EEPROM.&lt;br /&gt;
&lt;br /&gt;
Každá takáto pamäť má unikátne sériové číslo, ktoré môže byť využité na identifikáciu zariadenia. Takisto obsahuje aj identifikačné číslo výrobcu, ktoré obsahuje meno výrobcu, hustotu prvkov a revíziu produktu.&lt;br /&gt;
&lt;br /&gt;
===Blokový diagram===&lt;br /&gt;
Na Obr. 3.2 je zobrazená vnútorná štruktúra FM24V10. Popíšeme si jednotlivé piny puzdra SO-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.2.png|framed|center|Obr. 3.2 Vnútorná štruktúra FM24V10]]&lt;br /&gt;
&lt;br /&gt;
Vstupy A1, A2 slúžia na nastavenie adresy pamäti. Na jednu zbernicu je pomocou tohto dvoj-bitového adresovania možné pripojiť štyri takéto zariadenia. Kontakty sú vnútorne uzemnené. SDA je pin pre obojsmernú komunikáciu v zapojení s otvoreným kolektorom. Vstupný buffer zahŕňa Schmittov preklápací obvod pre odolnosť voči superponovanému šumu na vstupe a výstup obsahuje ovládanie sklonu zostupnej hrany. Pre správnu funkciu je nutný pull-up rezistor. SCL je pin pre hodinový signál, podľa ktorého prebieha generácia a synchronizácia dát. WP je pin pre ochranu pamäti pred neželaným prepisom. Je vnútorne uzemnený, čo znamená, že pamäť je štandardne prepisovateľná. Ochrana sa aktivuje pripojením pinu WP k pinu VDD. VDD je pin, na ktorý sa pripája napájacie napätie a VSS je pin, na ktorý sa pripája uzemnenie.&lt;br /&gt;
&lt;br /&gt;
==PCF8563 Real-Time clock/calendar==&lt;br /&gt;
PCF8563 Real-Time clock/calendar ďalej RTC, je nízkoenergetický obvod firmy NXP Semiconductors, poskytujúci dáta času a dátumu v binárne kódovanom decimálnom čísle (BCD – binary-coded decimal) pre protokol I2C. Obvod poskytuje údaje o sekundách, minútach, dňoch, dátume, mesiaci a roku. Mesiace, ktoré majú menej, ako 31 dní sú automaticky  ošetrené. Takisto sú priamo v obvode softvérovo vyriešené aj prestupné roky. Čas je poskytovaný v 24-hodinovom a 12-hodinovom formáte. Obvod má detekciu zlyhania napájania.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
RTC počíta sekundy, minúty, deň, dátum, mesiac a rok podľa pripojeného 32,768 kHz kryštálu. Výstupný hodinový signál je nastaviteľný a zariadenie spotrebúva menej, ako 500 nA. Má funkcie alarmu a časovača, a pin prerušenia, ktorý je v zapojení s otvoreným kolektorom. Dodáva sa v puzdrách SO-8 a DIP-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.3.png|framed|center|Obr. 3.3 Bloková schéma PCF8563]]&lt;br /&gt;
&lt;br /&gt;
Má šestnásť 8-bitových registrov podľa Obr. 3.3, integrovaný 32,768 kHz kryštál s kondenzátorom, frekvenčný delič slúžiaci, ako zdroj hodinovej frekvencie pre RTC, programovateľný výstup hodinovej frekvencie, časovač, alarm a detekciu nízkeho napätia.&lt;br /&gt;
&lt;br /&gt;
===Časovač===&lt;br /&gt;
8-bitový časovač na adrese 0x0F je riadený registrom timer control na adrese 0x0E, ktorý pre operácie vyžaduje jeden zo 4 voliteľných hodinových frekvencií. Časovač odpočítava zo zadanej 8-bitovej binárnej hodnoty a na konci odpočítavania nastaví príznak Timer Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované, ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;br /&gt;
&lt;br /&gt;
===Alarm===&lt;br /&gt;
V registroch alarmu od adresy 0x09 po adresu 0x0C sú uložené nastavenia alarmu  pre minúty, hodiny, dni alebo dni v týždni. Zodpovedajúci bit AE je rovný logickej nule. Uložené nastavenia sa porovnávajú s aktuálnym časom. Keď sa všetky nastavené hodnoty rovnajú aktuálnym hodnotám, nastaví sa príznak Alarm Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované rovnako, ako v prípade časovača -ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5420</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5420"/>
		<updated>2010-06-22T15:28:54Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Záver'''&lt;br /&gt;
&lt;br /&gt;
Cieľom práce bolo navrhnúť a&amp;amp;nbsp;implementovať systém pre zber teplotných dát z&amp;amp;nbsp;pôdneho profilu. V&amp;amp;nbsp;prvej časti práce boli predstavené technológie a&amp;amp;nbsp;realizácia hardvérovej časti a&amp;amp;nbsp;v&amp;amp;nbsp;druhej časti bola popísaná architektúra distribuovaného systému a &amp;amp;nbsp;jej softvérové vybavenie. Výsledkom práce je funkčný technologický prototyp, na ktorom prebiehajú v&amp;amp;nbsp;súčasnosti merania.&lt;br /&gt;
&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o&amp;amp;nbsp;type puzdra a&amp;amp;nbsp;jeho hydroizolácií. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k&amp;amp;nbsp;žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
&lt;br /&gt;
Architektúra distribuovaného systému bola zložená z&amp;amp;nbsp;troch vrstiev. Firmvérová vrstva má na starosti komunikáciu s&amp;amp;nbsp;nadradeným počítačom a so sieťou 1-Wire. Prijíma dáta od jednotlivých teplomerov, počíta ich CRC a&amp;amp;nbsp;odosiela ich do sériového rozhrania. Záznamová vrstva vysiela príkazy na meranie teploty a&amp;amp;nbsp;výsledné dáta ukladá do databázy. Prezentačná vrstva slúži na priamu interakciu s&amp;amp;nbsp;používateľom. Používateľ vyberá parametre vyhodnocovania zozbieraných teplotných dát, ktoré sú následne na webovom serveri spracované a&amp;amp;nbsp;ako odpoveď sa zobrazí vytvorený graf.&lt;br /&gt;
&lt;br /&gt;
Grafické zobrazenie výsledkov meraní zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom aj &amp;amp;nbsp;pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
&lt;br /&gt;
Záujem o&amp;amp;nbsp;modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v&amp;amp;nbsp;budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na&amp;amp;nbsp;rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o&amp;amp;nbsp;iných fyzikálnych veličinách.&lt;br /&gt;
&lt;br /&gt;
Budúci vývoj zahŕňa rozšírenie firmvéru, v&amp;amp;nbsp;ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o&amp;amp;nbsp;použitej pamäti a&amp;amp;nbsp;RTC. Pomocou tohto čísla bude systém spolupracovať s&amp;amp;nbsp;aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému, ktorá môže pozostávať z&amp;amp;nbsp;viacerých meracích uzlov, viacerých databáz a&amp;amp;nbsp;meranie nebude obmedzené iba na päť teplomerov. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a&amp;amp;nbsp;tvorbu grafov z&amp;amp;nbsp;rôznych zdrojov nameraných dát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použitá literatúra'''&lt;br /&gt;
&lt;br /&gt;
#ASHBY, Robert. ''Designer's Guide to the Cypress PSoC''. London&amp;amp;nbsp;: Elsevier, 2005. 273 s. ISBN&amp;amp;nbsp;9780750677806.&lt;br /&gt;
#CYPRESS, Semiconductor Corporation. ''PSoC Programmable System-on-Chip : Technical Reference Manual (TRM)''. San Jose, USA&amp;amp;nbsp;, c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.cypress.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products. ''Guidelines for Reliable Long Line 1-Wire Networks : AN-148''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 16 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products.''DS18S20 High-Precision 1-Wire Digital Thermometer''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 23 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''The I2C bus specification : Version 2.1''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2000. 46 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;. &lt;br /&gt;
#RAMTRON, International Corporation. ''FM24V10 : 1Mb Serial 3V F-RAM Memory''. Colorado Springs, CO, USA&amp;amp;nbsp;: Ramtron International Corporation, 2009. 15 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.ramtron.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''PCF8563 : Real-Time clock/calendar''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2008. 32 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;.&lt;br /&gt;
#Python Programming Language [online]. 2.6.4. 2009 [cit. 2010-04-02]. Www.python.org. Dostupné z WWW: &amp;lt;[http://python.org/about/ http://python.org/about/]&amp;gt;.&lt;br /&gt;
#MySQL::The world‘s most popular open source database [online]. 5.1.45. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.mysql.com/why-mysql/ http://www.mysql.com/why-mysql/]&amp;gt;.&lt;br /&gt;
#The Apache Software Foundation [online]. 2.2.15. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://httpd.apache.org/ABOUT_APACHE.html http://httpd.apache.org/ABOUT_APACHE.html]&amp;gt;.&lt;br /&gt;
#Apache/Python Integration [online]. 3.3.1. 2009 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.modpython.org/live/current/modpython.pdf http://www.modpython.org/live/current/modpython.pdf]&amp;gt;.&lt;br /&gt;
#HARMS, Daryl; MCDONALD, Kenneth. ''Začínáme programovat v jazyce Python.'' Brno : Computer Press, 2003. 456 s. ISBN 80-7226-799-X.&lt;br /&gt;
#FABO, P., GAŠPAR, G., PAVLÍKOVÁ, S., ŠIROKÝ, P.: ''Methods of statistical evaluation of data from long-term measurement of soil temperature profile using open-source tools.'' Trenčianske Teplice: ISC Mechatronika 2010&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5419</id>
		<title>Návrh a realizácia zapojenia senzorov systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5419"/>
		<updated>2010-06-22T15:28:21Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|5|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia zapojenia senzorov=&lt;br /&gt;
Pri realizácii zapojenia senzorov bolo nutné rozdeliť prácu na dve časti. Prvou časťou je vytvorenie nevodivého, vodotesného puzdra odolného na mechanické namáhanie, súčasne dostatočne tepelne vodivého. Druhá časť sa zaoberá zložením senzorov do sondy. Je v nej rozobraté pripájanie senzorov k zbernici 1-Wire a zabezpečenie spojov voči náhodnému skratu.&lt;br /&gt;
&lt;br /&gt;
==Návrh zapojenia==&lt;br /&gt;
Teplomery DS18S20 zapojíme v parazitnom zapojení, aby sme využili možnosti poskytované touto technológiou a zároveň prezentovali jej možnosti. Na Obr. 5.1 je typické zapojenie DS18S20 v parazitnom režime.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.1.png|framed|center|Obr. 5.1 Zapojenie DS18S20 v parazitnom režime]]&lt;br /&gt;
&lt;br /&gt;
Bolo stanovené, že merania budeme vykonávať na piatich senzoroch umiestnených podľa Tab. 5.1.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;600&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 5.1 Umiestnenie teplomerov vzhľadom na povrch&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Názov teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Adresa teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vzdialenosť od povrchu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;cm&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 1&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|109699FF00080021&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;150&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 2&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10466EFF00080012&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;75&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 3&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10C3C82301080004&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 4&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10662D9C010800B0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|101975FF00080014&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|100&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Senzory boli zapojené podľa Obr. 5.2. Teplomer 1 bol umiestnený 150 cm pod povrch a Teplomer 5 bol umiestnený 100 cm nad povrch zeme.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.2.png|framed|center|Obr. 5.2 Skutočné zapojenie senzorov DS18S20]]&lt;br /&gt;
&lt;br /&gt;
==Realizácia senzora==&lt;br /&gt;
Pri realizácii senzora je nutné zohľadniť vplyvy vonkajšieho prostredia a pôdy. Ako puzdro teplomera boli zvolené plastové výlisky na Obr. 5.3, ktorých tepelná zotrvačnosť je podstatne nižšia, ako pri kovových elementoch a zároveň netrpia koróziou.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.3.jpg|framed|center|Obr. 5.3 Plastové puzdro a DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Do plastového puzdra bola natlačená nevodivá silikónová pasta. Pre zamedzenie vzniku vzduchových bublín bolo pri jej aplikácii nutné do vnútra plastového výlisku zaviesť pomocnú trubičku, ktorou unikal vzduch. Takýmto spôsobom bolo celé vnútro puzdra vyplnené silikónom a pripravené na vloženie teplomeru.&lt;br /&gt;
DS18S20 na Obr. 5.3 má spojené vývody  GND a VDD a je pripravené na použite v režime parazitného napájania. Obidva spoje sú obalené tepelne sťahujúcou sa bužírkou. K jeho DQ kontaktu je pripojený čierny vodič a ku kontaktu GND je pripojený zelený vodič podľa Obr. 5.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.4.jpg|framed|center|Obr. 5.4 Vkladanie senzora do puzdra]]&lt;br /&gt;
&lt;br /&gt;
Finálny výrobok na Obr. 5.5 má vstupnú stranu obalenú tepelne sťahujúcou sa bužírkou, do ktorej bolo pred použitím aplikované tavné lepidlo.&lt;br /&gt;
Všetky vyrobené senzory boli testované ponorením do vody na 24 hodín. Aj po takejto záťaži všetky senzory komunikujú, čo potvrdzuje spoľahlivosť takejto formy hydroizolácie.&lt;br /&gt;
&lt;br /&gt;
==Realizácia sondy==&lt;br /&gt;
Na realizáciu sondy bola zvolená plastová lišta, ktorá vzhľadom na svoju nízku tepelnú zotrvačnosť neovplyvňuje presnosť merania. Senzory boli upevnené na lištu v požadovaných vzdialenostiach plastovou sťahovacou páskou a ich poloha bola zaznamenaná permanentným popisovačom podľa Obr. 5.5 a Obr. 5.6. Pre zabezpečenie senzorov proti neželanému pohybu, bolo medzi jednotlivé senzory a steny lišty aplikované tavné lepidlo.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.5.jpg|framed|center|Obr. 5.5 Upevnenie senzora na lištu]]&lt;br /&gt;
&lt;br /&gt;
Pripojenie k zbernici 1-Wire bolo vykonané spájkovaním. Spájkované spoje boli potreté silikónovou pastou a zabezpečené tepelne sťahujúcou sa bužírkou. Následne boli oba izolované spoje vložené do tepelne sťahujúcej sa bužírky s väčším priemerom a silikónovou výplňou. Takáto dvojitá izolácia bola opäť testovaná ponorením do vody na 24 hodín.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.6.jpg|framed|center|Obr. 5.6 Vyznačenie polohy senzora]]&lt;br /&gt;
&lt;br /&gt;
Záverečné pripojenie k mikroprocesoru bolo vykonané v hornej časti lišty, ktorá je uzatvorená zo všetkých strán a vyplnená silikónom. Vzdialenosť od sondy k mikroprocesoru je 12,5 metra a spojenie je vykonané na bifilárne vinutej dvojlinke.&lt;br /&gt;
&lt;br /&gt;
==Inštalácia sondy==&lt;br /&gt;
Pre sondu bolo potrebné vyhĺbiť jamu s hĺbkou 1,5 metra od povrchu. Na Obr. 5.7 je možné vidieť, že do hĺbky 1 meter bolo hĺbenie možné rýľom. Od 1 metra bola na hĺbenie použitá oceľová trubka. Od 0,8 metra bolo v pôde viac kamenia a približne v hĺbke 1,25 metra sme narazili na štrko-pieskovú vrstvu. Vyhĺbenie zvyšných 0,25 metra zabralo 2-krát viac času, ako vyhĺbenie do hĺbky 1,25 metra.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.7.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 5.8 je vidieť, že sonda bola vo svojom označení nulovej hodnoty zarovnaná s povrchom pôdy&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.8.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Povrch v okolí sondy bol utlačený a po týždni, keď pôda klesla, bol znova utlačený a doplnený, aby bol zarovnaný s  nulovou značkou na sonde podľa Obr. 5.9.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.9.jpg|thumb|center|Obr. 5.9 Konečná podoba umiestnenia sondy]]&lt;br /&gt;
&lt;br /&gt;
Pre zamedzenie vplyvu ohrievania teplomeru priamym slnečným žiarením boli na obidva vonkajšie senzory upevnené clony z reflexného materiálu.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5418</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5418"/>
		<updated>2010-06-22T15:27:40Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Záver'''&lt;br /&gt;
&lt;br /&gt;
Cieľom práce bolo navrhnúť a&amp;amp;nbsp;implementovať systém pre zber teplotných dát z&amp;amp;nbsp;pôdneho profilu. V&amp;amp;nbsp;prvej časti práce boli predstavené technológie a&amp;amp;nbsp;realizácia hardvérovej časti a&amp;amp;nbsp;v&amp;amp;nbsp;druhej časti bola popísaná architektúra distribuovaného systému a &amp;amp;nbsp;jej softvérové vybavenie. Výsledkom práce je funkčný technologický prototyp, na ktorom prebiehajú v&amp;amp;nbsp;súčasnosti merania.&lt;br /&gt;
&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o&amp;amp;nbsp;type puzdra a&amp;amp;nbsp;jeho hydroizolácií. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k&amp;amp;nbsp;žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
&lt;br /&gt;
Architektúra distribuovaného systému bola zložená z&amp;amp;nbsp;troch vrstiev. Firmvérová vrstva má na starosti komunikáciu s&amp;amp;nbsp;nadradeným počítačom a so sieťou 1-Wire. Prijíma dáta od jednotlivých teplomerov, počíta ich CRC a&amp;amp;nbsp;odosiela ich do sériového rozhrania. Záznamová vrstva vysiela príkazy na meranie teploty a&amp;amp;nbsp;výsledné dáta ukladá do databázy. Prezentačná vrstva slúži na priamu interakciu s&amp;amp;nbsp;používateľom. Používateľ vyberá parametre vyhodnocovania zozbieraných teplotných dát, ktoré sú následne na webovom serveri spracované a&amp;amp;nbsp;ako odpoveď sa zobrazí vytvorený graf.&lt;br /&gt;
&lt;br /&gt;
Grafické zobrazenie výsledkov meraní zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom aj &amp;amp;nbsp;pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
&lt;br /&gt;
Záujem o&amp;amp;nbsp;modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v&amp;amp;nbsp;budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na&amp;amp;nbsp;rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o&amp;amp;nbsp;iných fyzikálnych veličinách.&lt;br /&gt;
&lt;br /&gt;
Budúci vývoj zahŕňa rozšírenie firmvéru, v&amp;amp;nbsp;ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o&amp;amp;nbsp;použitej pamäti a&amp;amp;nbsp;RTC. Pomocou tohto čísla bude systém spolupracovať s&amp;amp;nbsp;aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému, ktorá môže pozostávať z&amp;amp;nbsp;viacerých meracích uzlov, viacerých databáz a&amp;amp;nbsp;meranie nebude obmedzené iba na päť teplomerov. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a&amp;amp;nbsp;tvorbu grafov z&amp;amp;nbsp;rôznych zdrojov nameraných dát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použitá literatúra'''&lt;br /&gt;
&lt;br /&gt;
#ASHBY, Robert. ''Designer's Guide to the Cypress PSoC''. London&amp;amp;nbsp;: Elsevier, 2005. 273 s. ISBN&amp;amp;nbsp;9780750677806.&lt;br /&gt;
#CYPRESS, Semiconductor Corporation. ''PSoC Programmable System-on-Chip : Technical Reference Manual (TRM)''. San Jose, USA&amp;amp;nbsp;, c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.cypress.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products. ''Guidelines for Reliable Long Line 1-Wire Networks : AN-148''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 16 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#MAXIM, Integrated Products.''DS18S20 High-Precision 1-Wire Digital Thermometer''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 23 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''The I2C bus specification : Version 2.1''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2000. 46 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;. &lt;br /&gt;
#RAMTRON, International Corporation. ''FM24V10 : 1Mb Serial 3V F-RAM Memory''. Colorado Springs, CO, USA&amp;amp;nbsp;: Ramtron International Corporation, 2009. 15 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.ramtron.com&amp;gt;.&lt;br /&gt;
#NXP, B.V. ''PCF8563 : Real-Time clock/calendar''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2008. 32 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;.&lt;br /&gt;
#Python Programming Language [online]. 2.6.4. 2009 [cit. 2010-04-02]. Www.python.org. Dostupné z WWW: &amp;lt;[http://python.org/about/ http://python.org/about/]&amp;gt;.&lt;br /&gt;
#MySQL::The world‘s most popular open source database [online]. 5.1.45. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.mysql.com/why-mysql/ http://www.mysql.com/why-mysql/]&amp;gt;.&lt;br /&gt;
#The Apache Software Foundation [online]. 2.2.15. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://httpd.apache.org/ABOUT_APACHE.html http://httpd.apache.org/ABOUT_APACHE.html]&amp;gt;.&lt;br /&gt;
#Apache/Python Integration [online]. 3.3.1. 2009 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.modpython.org/live/current/modpython.pdf http://www.modpython.org/live/current/modpython.pdf]&amp;gt;.&lt;br /&gt;
#HARMS, Daryl; MCDONALD, Kenneth. ''Začínáme programovat v jazyce Python.'' Brno : Computer Press, 2003. 456 s. ISBN 80-7226-799-X.&lt;br /&gt;
#FABO, P., GAŠPAR, G., PAVLÍKOVÁ, S., ŠIROKÝ, P.: ''Methods of statistical evaluation of data from long-term measurement of soil temperature profile using open-source tools.'' Trenčianske Teplice: ISC Mechatronika 2010&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5416</id>
		<title>Návrh a realizácia zapojenia senzorov systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5416"/>
		<updated>2010-06-22T15:24:27Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|5|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia zapojenia senzorov=&lt;br /&gt;
Pri realizácii zapojenia senzorov bolo nutné rozdeliť prácu na dve časti. Prvou časťou je vytvorenie nevodivého, vodotesného puzdra odolného na mechanické namáhanie, súčasne dostatočne tepelne vodivého. Druhá časť sa zaoberá zložením senzorov do sondy. Je v nej rozobraté pripájanie senzorov k zbernici 1-Wire a zabezpečenie spojov voči náhodnému skratu.&lt;br /&gt;
&lt;br /&gt;
==Návrh zapojenia==&lt;br /&gt;
Teplomery DS18S20 zapojíme v parazitnom zapojení, aby sme využili možnosti poskytované touto technológiou a zároveň prezentovali jej možnosti. Na Obr. 5.1 je typické zapojenie DS18S20 v parazitnom režime.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.1.png|framed|center|Obr. 5.1 Zapojenie DS18S20 v parazitnom režime]]&lt;br /&gt;
&lt;br /&gt;
Bolo stanovené, že merania budeme vykonávať na piatich senzoroch umiestnených podľa Tab. 5.1.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;600&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 5.1 Umiestnenie teplomerov vzhľadom na povrch&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Názov teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Adresa teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vzdialenosť od povrchu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;cm&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 1&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|109699FF00080021&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;150&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 2&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10466EFF00080012&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;75&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 3&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10C3C82301080004&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 4&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10662D9C010800B0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|101975FF00080014&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|100&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Senzory boli zapojené podľa Obr. 5.2. Teplomer 1 bol umiestnený 150 cm pod povrch a Teplomer 5 bol umiestnený 100 cm nad povrch zeme.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.2.png|framed|center|Obr. 5.2 Skutočné zapojenie senzorov DS18S20]]&lt;br /&gt;
&lt;br /&gt;
==Realizácia senzora==&lt;br /&gt;
Pri realizácii senzora je nutné zohľadniť vplyvy vonkajšieho prostredia a pôdy. Ako puzdro teplomera boli zvolené plastové výlisky na Obr. 5.3, ktorých tepelná zotrvačnosť je podstatne nižšia, ako pri kovových elementoch a zároveň netrpia koróziou.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.3.jpg|framed|center|Obr. 5.3 Plastové puzdro a DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Do plastového puzdra bola natlačená nevodivá silikónová pasta. Pre zamedzenie vzniku vzduchových bublín bolo pri jej aplikácii nutné do vnútra plastového výlisku zaviesť pomocnú trubičku, ktorou unikal vzduch. Takýmto spôsobom bolo celé vnútro puzdra vyplnené silikónom a pripravené na vloženie teplomeru.&lt;br /&gt;
DS18S20 na Obr. 5.3 má spojené vývody  GND a VDD a je pripravené na použite v režime parazitného napájania. Obidva spoje sú obalené tepelne sťahujúcou sa bužírkou. K jeho DQ kontaktu je pripojený čierny vodič a ku kontaktu GND je pripojený zelený vodič podľa Obr. 5.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.4.jpg|framed|center|Obr. 5.4 Vkladanie senzora do puzdra]]&lt;br /&gt;
&lt;br /&gt;
Finálny výrobok na Obr. 5.5 má vstupnú stranu obalenú tepelne sťahujúcou sa bužírkou, do ktorej bolo pred použitím aplikované tavné lepidlo.&lt;br /&gt;
Všetky vyrobené senzory boli testované ponorením do vody na 24 hodín. Aj po takejto záťaži všetky senzory komunikujú, čo potvrdzuje spoľahlivosť takejto formy hydroizolácie.&lt;br /&gt;
&lt;br /&gt;
==Realizácia sondy==&lt;br /&gt;
Na realizáciu sondy bola zvolená plastová lišta, ktorá vzhľadom na svoju nízku tepelnú zotrvačnosť neovplyvňuje presnosť merania. Senzory boli upevnené na lištu v požadovaných vzdialenostiach plastovou sťahovacou páskou a ich poloha bola zaznamenaná permanentným popisovačom podľa Obr. 5.5 a Obr. 5.6. Pre zabezpečenie senzorov proti neželanému pohybu, bolo medzi jednotlivé senzory a steny lišty aplikované tavné lepidlo.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.5.jpg|framed|center|Obr. 5.5 Upevnenie senzora na lištu]]&lt;br /&gt;
&lt;br /&gt;
Pripojenie k zbernici 1-Wire bolo vykonané spájkovaním. Spájkované spoje boli potreté silikónovou pastou a zabezpečené tepelne sťahujúcou sa bužírkou. Následne boli oba izolované spoje vložené do tepelne sťahujúcej sa bužírky s väčším priemerom a silikónovou výplňou. Takáto dvojitá izolácia bola opäť testovaná ponorením do vody na 24 hodín.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.6.jpg|framed|center|Obr. 5.6 Vyznačenie polohy senzora]]&lt;br /&gt;
&lt;br /&gt;
Záverečné pripojenie k mikroprocesoru bolo vykonané v hornej časti lišty, ktorá je uzatvorená zo všetkých strán a vyplnená silikónom. Vzdialenosť od sondy k mikroprocesoru je 12,5 metra a spojenie je vykonané na bifilárne vinutej dvojlinke.&lt;br /&gt;
&lt;br /&gt;
==Inštalácia sondy==&lt;br /&gt;
Pre sondu bolo potrebné vyhĺbiť jamu s hĺbkou 1,5 metra od povrchu. Na Obr. 5.7 je možné vidieť, že do hĺbky 1 meter bolo hĺbenie možné rýľom. Od 1 metra bola na hĺbenie použitá oceľová trubka. Od 0,8 metra bolo v pôde viac kamenia a približne v hĺbke 1,25 metra sme narazili na štrko-pieskovú vrstvu. Vyhĺbenie zvyšných 0,25 metra zabralo 2-krát viac času, ako vyhĺbenie do hĺbky 1,25 metra.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.7.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 5.8 je vidieť, že sonda bola vo svojom označení nulovej hodnoty zarovnaná s povrchom pôdy&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.8.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Povrch v okolí sondy bol utlačený a po týždni, keď pôda klesla, bol znova utlačený a doplnený, aby bol zarovnaný s  nulovou značkou na sonde podľa Obr. 5.9.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.9.jpg|thumb|center|Obr. 5.9 Konečná podoba umiestnenia sondy]]&lt;br /&gt;
&lt;br /&gt;
Pre zamedzenie vplyvu ohrievania teplomeru priamym slnečným žiarením boli na obidva vonkajšie senzory upevnené clony z reflexného materiálu.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5415</id>
		<title>Návrh a realizácia zapojenia senzorov systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_zapojenia_senzorov_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5415"/>
		<updated>2010-06-22T15:24:05Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|5|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia zapojenia senzorov=&lt;br /&gt;
Pri realizácii zapojenia senzorov bolo nutné rozdeliť prácu na dve časti. Prvou časťou je vytvorenie nevodivého, vodotesného puzdra odolného na mechanické namáhanie, súčasne dostatočne tepelne vodivého. Druhá časť sa zaoberá zložením senzorov do sondy. Je v nej rozobraté pripájanie senzorov k zbernici 1-Wire a zabezpečenie spojov voči náhodnému skratu.&lt;br /&gt;
&lt;br /&gt;
==Návrh zapojenia==&lt;br /&gt;
Teplomery DS18S20 zapojíme v parazitnom zapojení, aby sme využili možnosti poskytované touto technológiou a zároveň prezentovali jej možnosti. Na Obr. 5.1 je typické zapojenie DS18S20 v parazitnom režime.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.1.png|framed|center|Obr. 5.1 Zapojenie DS18S20 v parazitnom režime]]&lt;br /&gt;
&lt;br /&gt;
Bolo stanovené, že merania budeme vykonávať na piatich senzoroch umiestnených podľa Tab. 5.1.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;600&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 5.1 Umiestnenie teplomerov vzhľadom na povrch&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Názov teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Adresa teplomera&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vzdialenosť od povrchu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;cm&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 1&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|109699FF00080021&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;150&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 2&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10466EFF00080012&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;75&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 3&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10C3C82301080004&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 4&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10662D9C010800B0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|10&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Teplomer 5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|101975FF00080014&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|100&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Senzory boli zapojené podľa Obr. 5.2. Teplomer 1 bol umiestnený 150 cm pod povrch a Teplomer 5 bol umiestnený 100 cm nad povrch zeme.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.2.png|framed|center|Obr. 5.2 Skutočné zapojenie senzorov DS18S20]]&lt;br /&gt;
&lt;br /&gt;
==Realizácia senzora==&lt;br /&gt;
Pri realizácii senzora je nutné zohľadniť vplyvy vonkajšieho prostredia a pôdy. Ako puzdro teplomera boli zvolené plastové výlisky na Obr. 5.3, ktorých tepelná zotrvačnosť je podstatne nižšia, ako pri kovových elementoch a zároveň netrpia koróziou.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.3.jpg|framed|center|Obr. 5.3 Plastové puzdro a DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Do plastového puzdra bola natlačená nevodivá silikónová pasta. Pre zamedzenie vzniku vzduchových bublín bolo pri jej aplikácii nutné do vnútra plastového výlisku zaviesť pomocnú trubičku, ktorou unikal vzduch. Takýmto spôsobom bolo celé vnútro puzdra vyplnené silikónom a pripravené na vloženie teplomeru.&lt;br /&gt;
DS18S20 na Obr. 5.3 má spojené vývody  GND a VDD a je pripravené na použite v režime parazitného napájania. Obidva spoje sú obalené tepelne sťahujúcou sa bužírkou. K jeho DQ kontaktu je pripojený čierny vodič a ku kontaktu GND je pripojený zelený vodič podľa Obr. 5.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.4.jpg|framed|center|Obr. 5.4 Vkladanie senzora do puzdra]]&lt;br /&gt;
&lt;br /&gt;
Finálny výrobok na Obr. 5.5 má vstupnú stranu obalenú tepelne sťahujúcou sa bužírkou, do ktorej bolo pred použitím aplikované tavné lepidlo.&lt;br /&gt;
Všetky vyrobené senzory boli testované ponorením do vody na 24 hodín. Aj po takejto záťaži všetky senzory komunikujú, čo potvrdzuje spoľahlivosť takejto formy hydroizolácie.&lt;br /&gt;
&lt;br /&gt;
==Realizácia sondy==&lt;br /&gt;
Na realizáciu sondy bola zvolená plastová lišta, ktorá vzhľadom na svoju nízku tepelnú zotrvačnosť neovplyvňuje presnosť merania. Senzory boli upevnené na lištu v požadovaných vzdialenostiach plastovou sťahovacou páskou a ich poloha bola zaznamenaná permanentným popisovačom podľa Obr. 5.5 a Obr. 5.6. Pre zabezpečenie senzorov proti neželanému pohybu, bolo medzi jednotlivé senzory a steny lišty aplikované tavné lepidlo.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.5.jpg|framed|center|Obr. 5.5 Upevnenie senzora na lištu]]&lt;br /&gt;
&lt;br /&gt;
Pripojenie k zbernici 1-Wire bolo vykonané spájkovaním. Spájkované spoje boli potreté silikónovou pastou a zabezpečené tepelne sťahujúcou sa bužírkou. Následne boli oba izolované spoje vložené do tepelne sťahujúcej sa bužírky s väčším priemerom a silikónovou výplňou. Takáto dvojitá izolácia bola opäť testovaná ponorením do vody na 24 hodín.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.6.jpg|framed|center|Obr. 5.6 Vyznačenie polohy senzora]]&lt;br /&gt;
&lt;br /&gt;
Záverečné pripojenie k mikroprocesoru bolo vykonané v hornej časti lišty, ktorá je uzatvorená zo všetkých strán a vyplnená silikónom. Vzdialenosť od sondy k mikroprocesoru je 12,5 metra a spojenie je vykonané na bifilárne vinutej dvojlinke.&lt;br /&gt;
&lt;br /&gt;
==Inštalácia sondy==&lt;br /&gt;
Pre sondu bolo potrebné vyhĺbiť jamu s hĺbkou 1,5 metra od povrchu. Na Obr. 5.7 je možné vidieť, že do hĺbky 1 meter bolo hĺbenie možné rýľom. Od 1 metra bola na hĺbenie použitá oceľová trubka. Od 0,8 metra bolo v pôde viac kamenia a približne v hĺbke 1,25 metra sme narazili na štrko-pieskovú vrstvu. Vyhĺbenie zvyšných 0,25 metra zabralo 2-krát viac času, ako vyhĺbenie do hĺbky 1,25 metra.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.7.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 5.8 je vidieť, že sonda bola vo svojom označení nulovej hodnoty zarovnaná s povrchom pôdy&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.8.jpg|thumb|center|Obr. 5.7 Hĺbenie jamy a osadenie sondy]]&lt;br /&gt;
&lt;br /&gt;
Povrch v okolí sondy bol utlačený a po týždni, keď pôda klesla, bol znova utlačený a doplnený, aby bol zarovnaný s  nulovou značkou na sonde podľa Obr. 5.9.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bpgg5.9.jpg|thumb|center|Obr. 5.9 Konečná podoba umiestnenia sondy]]&lt;br /&gt;
&lt;br /&gt;
Pre zamedzenie vplyvu ohrievania teplomeru priamym slnečným žiarením boli na obidva vonkajšie senzory upevnené clony z reflexného materiálu.&lt;br /&gt;
&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
Cieľom práce bolo navrhnúť a implementovať systém pre zber teplotných dát z pôdneho profilu. V prvej časti práce boli predstavené technológie použité v systéme a v druhej časti bola opísaná realizácia hardvéru.&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o type puzdra a jeho hydroizolácii. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
V súčasnosti je dokončovaná práca na firmvéri, ktorého meracia časť je už kompletná a prebieha kontinuálne meranie na všetkých teplomeroch. Grafické zobrazenie výsledkov meraní počas jedného dňa zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom a pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
Záujem o modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o iných fyzikálnych veličinách.&lt;br /&gt;
Budúci vývoj zahŕňa dokončenie firmvéru, v ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o použitej pamäti a RTC. Pomocou tohto čísla bude systém spolupracovať s aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a tvorbu  grafov z nameraných dát.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
# ASHBY, Robert. Designer's Guide to the Cypress PSoC. London : Elsevier, 2005. 273 s. ISBN 9780750677806.&lt;br /&gt;
# CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C.  Dostupný z WWW: http://www.cypress.com.&lt;br /&gt;
# MAXIM, Integrated Products. Guidelines for Reliable Long Line 1-Wire Networks : AN-148. Sunnyvale, CA, USA : Maxim Integrated Products, 2008. 16 s.  Dostupný z WWW: http://www.maxim-ic.com.&lt;br /&gt;
# MAXIM, Integrated Products.DS18S20 High-Precision 1-Wire Digital Thermometer. Sunnyvale, CA, USA : Maxim Integrated Products, 2008. 23 s. Dostupný z WWW: http://www.maxim-ic.com.&lt;br /&gt;
# NXP, B.V. The I2C bus specification : Version 2.1. Southampton, United Kingdom : NXP B.V., 2000. 46 s. Dostupný z WWW: http://www.nxp.com. &lt;br /&gt;
# RAMTRON, International Corporation. FM24V10 : 1Mb Serial 3V F-RAM Memory. Colorado Springs, CO, USA : Ramtron International Corporation, 2009. 15 s. Dostupný z WWW: http://www.ramtron.com.&lt;br /&gt;
# NXP, B.V. PCF8563 : Real-Time clock/calendar. Southampton, United Kingdom : NXP B.V., 2008. 32 s. Dostupný z WWW: http://www.nxp.com.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_obvodov%C3%A9ho_zapojenia_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5414</id>
		<title>Návrh a realizácia obvodového zapojenia systému zberu teplotných dát</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_realiz%C3%A1cia_obvodov%C3%A9ho_zapojenia_syst%C3%A9mu_zberu_teplotn%C3%BDch_d%C3%A1t&amp;diff=5414"/>
		<updated>2010-06-22T15:23:16Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|4|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Návrh a realizácia obvodového zapojenia systému=&lt;br /&gt;
V obvodovom zapojení musíme zohľadniť zapojenie jednotlivých častí návrhu. Celková schéma zapojenia je na Obr. 4.3.&lt;br /&gt;
V nasledujúcich podkapitolách rozoberieme jednotlivé časti zapojenia a popíšeme ich vlastnosti a činnosť. Zapojenie samotného mikroprocesora je vzhľadom na konfigurovateľnosť veľmi flexibilné, pretože skoro každý vstup alebo výstup môže byť zapojený na ľubovoľný pin. Bolo zvolené zapojenie podľa Obr. 4.1. Na ochranu procesora pred rázmi je paralelne s jeho napájacími pinmi zapojený kondenzátor C10.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.1.png|framed|center|Obr. 4.1 Zapojenie PSoC]]&lt;br /&gt;
&lt;br /&gt;
==Ochrana 1-Wire portu==&lt;br /&gt;
Na Obr. 4.2 je zobrazená  prepäťová ochrana 1-Wire zbernice použitím jednoduchého zapojenia rezistora R1 a transilovej diódy D2. V prípade, že napätie na medzi 1-Wire dátovým vodičom a zemou prekročí prierazné napätie transilu, ten sa otvorí a ochráni obvod zvedením napätia na zem. &lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.2.png|framed|center|Obr. 4.2 Prepäťová ochrana 1-Wire zbernice]]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.3.png|thumb|center|Obr. 4.3 Zapojenie systému]]&lt;br /&gt;
&lt;br /&gt;
==Zdroj stabilizovaného napätia 5 V a 3,3 V==&lt;br /&gt;
Na Obr. 4.4 je schéma stabilizovaného zdroja napätia 5 V. Zdroj napätia 3,3 V je napájaný priamo zo zdroja 5 V. Na vstupné svorky A1, B2 pripájame vstupné napätie od 7,5 V do 35 V. Obvod je chránený proti prepólovaniu diódou a proti preťaženiu tepelnou poistkou. Kondenzátory C1 a C5 slúžia na vyhladenie vstupného a výstupného napätia. Aby sme zamedzili vzniku šumu na stabilizátore, do schémy sme zaradili kondenzátory C2 a C3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.4.png|framed|center|Obr. 4.4 Zdroj stabilizovaného napätia]]&lt;br /&gt;
&lt;br /&gt;
Napätie 3,3 V potrebujeme pre napájanie pamäte F-RAM. Obvod je tvorený modifikovaným sériovým stabilizátorom. Tranzistor T1 sa otvára, až pokiaľ na odporovom deliči medzi R4 a zemou nie je 2,5 V. Ak sa bude napätie na emitore ďalej zvyšovať, zdroj referenčného napätia IC2 začne otvárať polovodičový prechod, čo spôsobí pokles bázového prúdu a následne sa zníži napätie na emitore. Výstupné napätie 3,3 V je dané pomerom rezistorov R3 a R4. Na výstup je pripojený kondenzátor C8, ktorý má vyhladiť prípadný superponovaný šum v obvode. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;R_{3}=\frac{3,3}{2,5}.R_{4}-R_{4}=1320-1000=320\Omega &amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(4.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ak k vypočítanému rezistoru R3 zvolíme najbližšiu vyrábanú hodnotu 330 Ω, výstupné napätie bude 3,325 V.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;U=2,5.\left( \frac{R_{3}+R_{4}}{R_{4}} \right)=2,5*1.333=3,325V&amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(4.2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prevodník úrovní z EIA-232 na TTL==&lt;br /&gt;
Prevodník úrovní z EIA-232 na TTL je riešený jednoducho použitím prevodníka MAX232. Napájacie napätie tohto obvodu je 5 V a potrebné napätie pre úrovne EIA-232 je vyrábané pomocou kapacitného generátora napätia – „kapacitnej pumpy“ na Obr. 4.5. Paralelne k napájacím pinom je pripojený kondenzátor C11.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.5.png|framed|center|Obr. 4.5 Zapojenie kapacitného generátora napätia na MAX232]]&lt;br /&gt;
&lt;br /&gt;
==Zapojenie I2C komponentov==&lt;br /&gt;
Na Obr. 4.6 je zapojenie RTC PCF8563 a F-RAM pamäti FM24V10. Zapojenie SDA a SCL vodičov je rovnaké pre oba integrované obvody. Pri RTC je potrebné medzi piny 1 a 2 zapojiť 32,768 kHz kryštál a pri návrhu dosky plošných spojov rozšíriť plôšky podľa odporúčania výrobcu. Na vizuálnu kontrolu funkčnosti RTC je na pin 7 pripojená LED1 s rezistorom R5 napájaná napätím 5 V. Pin 3 je pinom prerušenia, ktoré je vyvolané alarmom alebo ukončením odpočítavania a je pripojený k pinu kontroly prerušenia na mikroprocesore.&lt;br /&gt;
Pri zapojení RTC je odporúčané do zapojenia zahrnúť aj záložnú batériu alebo veľkokapacitný kondenzátor, aby pri náhodnej poruche nedošlo k strate časových údajov v RTC. Aj keď sa v našom zapojení počíta s napájaním zo zálohovaného napájacieho zdroja, na zálohovanie RTC je použitý veľkokapacitný kondenzátor C13.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.6.png|framed|center|Obr. 4.6 Zapojenie I2C komponentov]]&lt;br /&gt;
&lt;br /&gt;
Pamäť F-RAM nevyžaduje žiadne prídavné súčiastky a tak je paralelne k jej napájacím pinom pripojený iba kondenzátor C12, ktorý slúži na vyhladenie napájacieho napätia.&lt;br /&gt;
&lt;br /&gt;
==Realizácia zapojenia==&lt;br /&gt;
Zapojenie bolo realizované na univerzálnej doske plošných spojov. Jednotlivé časti zapojenia sú riešené formou zásuvných modulov. Príklad zásuvného modulu pre komunikáciu EIA-232 je na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg4.7.jpg|thumb|right|Obr. 4.7 Modul EIA-232]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=5413</id>
		<title>Rozhranie I2C</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Rozhranie_I2C&amp;diff=5413"/>
		<updated>2010-06-22T15:21:45Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|3|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
Rozhranie I2C bolo vyvinuté firmou Philips pre komunikáciu zariadení na krátke vzdialenosti, typicky na doske plošných spojov. Všetky I2C kompatibilné zariadenia majú zabudované rozhranie, ktoré im umožňuje priamu vzájomnú komunikáciu pomocou zbernice I2C. Vďaka tomuto konceptu je jednoduché vyriešiť množstvo problémov pri navrhovaní obvodov digitálnej elektroniky&lt;br /&gt;
[[Súbor:bcgg3.1.png|framed|center|Obr. 3.1 Zapojenie zariadení na zbernicu I2C]]&lt;br /&gt;
&lt;br /&gt;
==Vlastnosti rozhrania I2C==&lt;br /&gt;
Na pripojenie zariadenia k zbernici I2C sú potrebné iba dva vodiče. SDA – sériová dátová linka a SCL - sériová hodinová linka. &lt;br /&gt;
Každé zariadenie pripojené ku zbernici je softvérovo adresovateľné jedinečnou adresou a jednoduchým vzťahom master/slave. Master zariadenia môžu komunikovať v režime master-vysielač a master-prijímač.&lt;br /&gt;
V I2C protokole je zavedená detekcia kolízií, aby sa zamedzilo poškodeniu dát pri prenose. Na Obr. 3.1 je zobrazený systém, v ktorom by mohlo dôjsť ku kolízii, ak by obidve master zariadenia začali komunikovať súčasne.&lt;br /&gt;
Pripojenie je sériové, 8 bitové, obojsmerné. Dátové prenosy môžu byť vykonávané rýchlosťami až do 100 kHz v štandardnom režime, 400 kHz rýchlom režime a 3,4 MHz vo vysokorýchlostnom režime.&lt;br /&gt;
&lt;br /&gt;
==Ramtron FM24V10==&lt;br /&gt;
FM24V10 je 1 Mb fero-elektrická napäťovo nezávislá RAM pamäť označovaná F-RAM. Firma RAMTRON navrhla túto pamäť pre protokol I2C a garantuje konzistentnosť dát po dobu do 10 rokov. Pre zápis používa technológiu NoDelay Writes, a teda parametre čítania a zápisu ma podobné ako pamäť typu RAM. Programovanie pamätí typu F-RAM je oproti pamätiam typu EPROM a starším EEPROM podstatne menej komplikované.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
Pamäť je organizovaná do 131072 blokov po 8 bitov a podporuje vysokorýchlostný režim I2C, ako aj režimy 100 kHz a 400 kHz. Je dimenzovaná na 1014 cyklov zápis/čítanie a je schopná uchovať dáta intaktné po dobu 10 rokov. V aktívnom stave odoberá typicky menej ako 150 µA pri 100 kHz a napájaní od 2,0 V do 3,6 V. Dodáva sa v puzdre SOIC-8.&lt;br /&gt;
&lt;br /&gt;
FM24V10 vykonáva zápis rýchlosťou zbernice. Ďalší cyklus sa môže vykonať okamžite po zápise, bez nutnosti kontroly či sú dáta už zapísané. Pri zápise má nižšie nároky na napájanie, ako pamäte typu EEPROM.&lt;br /&gt;
&lt;br /&gt;
Každá takáto pamäť má unikátne sériové číslo, ktoré môže byť využité na identifikáciu zariadenia. Takisto obsahuje aj identifikačné číslo výrobcu, ktoré obsahuje meno výrobcu, hustotu prvkov a revíziu produktu.&lt;br /&gt;
&lt;br /&gt;
===Blokový diagram===&lt;br /&gt;
Na Obr. 3.2 je zobrazená vnútorná štruktúra FM24V10. Popíšeme si jednotlivé piny puzdra SO-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.2.png|framed|center|Obr. 3.2 Vnútorná štruktúra FM24V10]]&lt;br /&gt;
&lt;br /&gt;
Vstupy A1, A2 slúžia na nastavenie adresy pamäti. Na jednu zbernicu je pomocou tohto dvoj-bitového adresovania možné pripojiť štyri takéto zariadenia. Kontakty sú vnútorne uzemnené. SDA je pin pre obojsmernú komunikáciu v zapojení s otvoreným kolektorom. Vstupný buffer zahŕňa Schmittov preklápací obvod pre odolnosť voči superponovanému šumu na vstupe a výstup obsahuje ovládanie sklonu zostupnej hrany. Pre správnu funkciu je nutný pull-up rezistor. SCL je pin pre hodinový signál, podľa ktorého prebieha generácia a synchronizácia dát. WP je pin pre ochranu pamäti pred neželaným prepisom. Je vnútorne uzemnený, čo znamená, že pamäť je štandardne prepisovateľná. Ochrana sa aktivuje pripojením pinu WP k pinu VDD. VDD je pin, na ktorý sa pripája napájacie napätie a VSS je pin, na ktorý sa pripája uzemnenie.&lt;br /&gt;
&lt;br /&gt;
==PCF8563 Real-Time clock/calendar==&lt;br /&gt;
PCF8563 Real-Time clock/calendar ďalej RTC, je nízkoenergetický obvod firmy NXP Semiconductors, poskytujúci dáta času a dátumu v binárne kódovanom decimálnom čísle (BCD – binary-coded decimal) pre protokol I2C. Obvod poskytuje údaje o sekundách, minútach, dňoch, dátume, mesiaci a roku. Mesiace, ktoré majú menej, ako 31 dní sú automaticky  ošetrené. Takisto sú priamo v obvode softvérovo vyriešené aj prestupné roky. Čas je poskytovaný v 24-hodinovom a 12-hodinovom formáte. Obvod má detekciu zlyhania napájania.&lt;br /&gt;
&lt;br /&gt;
===Popis a vlastnosti===&lt;br /&gt;
RTC počíta sekundy, minúty, deň, dátum, mesiac a rok podľa pripojeného 32,768 kHz kryštálu. Výstupný hodinový signál je nastaviteľný a zariadenie spotrebúva menej, ako 500 nA. Má funkcie alarmu a časovača, a pin prerušenia, ktorý je v zapojení s otvoreným kolektorom. Dodáva sa v puzdrách SO-8 a DIP-8.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg3.3.png|framed|center|Obr. 3.3 Bloková schéma PCF8563]]&lt;br /&gt;
&lt;br /&gt;
Má šestnásť 8-bitových registrov podľa Obr. 3.3, integrovaný 32,768 kHz kryštál s kondenzátorom, frekvenčný delič slúžiaci, ako zdroj hodinovej frekvencie pre RTC, programovateľný výstup hodinovej frekvencie, časovač, alarm a detekciu nízkeho napätia.&lt;br /&gt;
&lt;br /&gt;
===Časovač===&lt;br /&gt;
8-bitový časovač na adrese 0x0F je riadený registrom timer control na adrese 0x0E, ktorý pre operácie vyžaduje jeden zo 4 voliteľných hodinových frekvencií. Časovač odpočítava zo zadanej 8-bitovej binárnej hodnoty a na konci odpočítavania nastaví príznak Timer Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované, ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;br /&gt;
&lt;br /&gt;
===Alarm===&lt;br /&gt;
V registroch alarmu od adresy 0x09 po adresu 0x0C sú uložené nastavenia alarmu  pre minúty, hodiny, dni alebo dni v týždni. Zodpovedajúci bit AE je rovný logickej nule. Uložené nastavenia sa porovnávajú s aktuálnym časom. Keď sa všetky nastavené hodnoty rovnajú aktuálnym hodnotám, nastaví sa príznak Alarm Flag, ktorá môže byť použitá na generovanie prerušenia na pine INT. Prerušenie môže byť generované rovnako, ako v prípade časovača -ako pulzujúci signál alebo permanentne aktívny signál. Príznak je nutné zmeniť softvérovo.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Protokol_1-Wire&amp;diff=5412</id>
		<title>Protokol 1-Wire</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Protokol_1-Wire&amp;diff=5412"/>
		<updated>2010-06-22T15:21:28Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|2|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|http://ggaspar.selfip.com/~meranie web projektu||||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Protokol 1-Wire=&lt;br /&gt;
Protokol 1-Wire &amp;lt;ref&amp;gt;http://www.maxim-ic.com/app-notes/index.mvp/id/1796&amp;lt;/ref&amp;gt; vznikol v laboratóriách firmy Dallas Semiconductor pôvodne na komunikačné prepojenie zariadení na krátke vzdialenosti, typicky na vzdialenosti na plošnom spoji a na komunikáciu používa iba jeden vodič. Rozšírením používania tohto protokolu sa tento rozvinul a umožňuje prepojenie zariadení na oveľa väčšie vzdialenosti. 1-Wire sieť (ďalej sieť) predstavuje komplexné usporiadanie 1-Wire zariadení, komunikačných liniek a prepojení, pričom každá takáto sieť je navrhnutá podľa požiadaviek na topológiu a hardvér. 1-Wire master zariadenie (ďalej master)  je kľúčový prvok siete. Ako jediné zariadenie môže inicializovať komunikáciu s 1-Wire slave zariadeniami (ďalej slave).&lt;br /&gt;
&lt;br /&gt;
==Popis 1-Wire siete==&lt;br /&gt;
Kritické hodnoty, ktoré popisujú siete sú rádius a záťaž. Rádius predstavuje najväčšiu  vzdialenosť medzi masterom a slaveom a je meraný v metroch. Záťaž reprezentuje celkovú dĺžku vodiča zapojeného v sieti a rovnako je meraná v metroch. Na príklad v sieti zapojenej do hviezdy s tromi vetvami s dĺžkami 10, 20 a 30 metrov máme rádius 30 metrov a záťaž 60 metrov Všeobecne, záťaž siete obmedzuje dobu nábehu na vodiči a rádius stanovuje načasovanie najpomalšieho odrazu signálu.&lt;br /&gt;
Záťaž, ktorú sieť podporuje je obmedzená a okrem dĺžky samotného vodiča je určená aj počtom prepojení a slave zariadení a je stanovená na maximálne 500 metrov. Každý slave pridá záťaž podobnú záťaži kusa vodiča, takže pri návrhu siete treba pripočítať pre každé slave zariadenie záťaž 0,5 metra a pri zariadeniach typu iButton 1 meter. Aj keď je záťaž  ovplyvnená viacerými faktormi, najväčším prispievateľom je kapacita. Podľa [3], každé prepojenie, ktorého parazitná kapacita prekračuje 24 pF pridáva záťaž 0,5 metra.&lt;br /&gt;
&lt;br /&gt;
==Topológie 1-Wire siete==&lt;br /&gt;
1-Wire siete sa vyznačujú možnosťou vybudovať sieť prakticky v akomkoľvek tvare&amp;lt;ref&amp;gt;http://www.maxim-ic.com/app-notes/index.mvp/id/148&amp;lt;/ref&amp;gt;. Zvyčajne ich je však možné zaradiť do troch kategórií.&lt;br /&gt;
Lineárna topológia – 1-Wire zbernica je pár vodičov s počiatkom v master, rozširujúci sa až do najvzdialenejšieho slave. Prípadné ďalšie slave zariadenia sú k zbernici pripojené podľa Obr. 2.1 odbočkami s dĺžkou menej, ako tri metre.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.1.png|thumb|center|Obr. 2.1 Lineárna topológia]]&lt;br /&gt;
&lt;br /&gt;
Vetvená topológia – 1-Wire zbernica má počiatok v master a predlžuje sa až do posledného slave. Ďalšie slave zariadenia sú pripojené k zbernici podľa Obr. 2.2 odbočkami s dĺžkou viac, ako 3 metre.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.2.png|thumb|center|Obr. 2.2 Vetvená topológia]]&lt;br /&gt;
&lt;br /&gt;
Topológia „do hviezdy“ – 1-Wire zbernica je rozdelená pri alebo blízko master zariadenia a rozširuje sa vo viacerých vetvách s rôznymi dĺžkami. Slave zariadenia sú umiestnené na každej vetve podľa Obr. 2.3.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.3.png|thumb|center|Obr. 2.3 Topológia „do hviezdy“]]&lt;br /&gt;
&lt;br /&gt;
Uvedené topológie predstavujú kategóriu nespínaných sietí. Nespínané siete zapojené do hviezdy ale vykazujú najvyššiu poruchovosť. Prepojenie viacerých vetiev predstavuje spojenie rôznych impedancií a odrazy z koncov dlhých vetiev môžu spôsobiť chyby v dátach. Kvôli týmto dôvodom je vhodnejšie zvoliť spínanú sieť podľa Obr. 2.4.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.4.png|thumb|center|Obr. 2.4 Spínaná sieť]]&lt;br /&gt;
&lt;br /&gt;
Spínaná sieť umožňuje obísť limitácie 1-Wire protokolu a vybudovať sieť rozdelenú do sekcií, ktoré sú podľa požiadavky elektronicky pripájané k master zariadeniu. Sieť na Obr. 2.4  zapojená do hviezdy, takto vlastne predstavuje tri nezávislé siete s lineárnou topológiou, z ktorých je súčasne pripojená len jedna.&lt;br /&gt;
&lt;br /&gt;
==OneWire SW v1.3==&lt;br /&gt;
OneWireSW modul pre PSoC bol vyvinutý nezávislým vývojárom Wesom Randallom v roku 2006. Jeho výhodou je, že pre svoju činnosť nepotrebuje bloky PSoC a používa iba 1 pin. Nevýhodou je, že hodinová frekvencia mikroprocesora musí byť minimálne 12 MHz.&lt;br /&gt;
Modul (knižnica) je množina rutín, ktoré zapisujú a čítajú dáta a umožňujú mikroprocesoru  plniť funkciu master zariadenia podľa protokolu 1-Wire. Modul OneWireSW bol doplnený do knižníc aplikácie PSoC Designer, a je oficiálne podporovanou knižnicou firmy Cypress.&lt;br /&gt;
==DS18S20==&lt;br /&gt;
===Popis a vlastností===&lt;br /&gt;
DS18S20&amp;lt;ref&amp;gt;http://datasheets.maxim-ic.com/en/ds/DS18S20.pdf&amp;lt;/ref&amp;gt; je digitálny teplomer s rozlíšením 9 bitov merajúci teplotu v stupňoch Celzia dodávaný v puzdrách TO-92 a SO-8 na Obr. 2.5. Má funkciu alarmu s užívateľsky nastaviteľnou vysokou a nízkou hodnotu teploty, ktorá je uložená v nezávislej EEPROM pamäti. Teplomer komunikuje po 1-Wire zbernici a podľa špecifikácie 1-Wire vyžaduje iba jeden vodič na komunikáciu s mikroprocesorom. Operačná teplota je v rozsahu od –55 °C do +125 °C a má presnosť ±0.5 °C na meracom rozsahu od –10 °C do +85 °C. DS18S20 môže byť napájaný parazitným napájaním priamo z dátovej linky, čím nám ubudnú náklady na externý napájací zdroj.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.5.png|thumb|center|Obr. 2.5 Puzdrá DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Každý DS18S20 má unikátne 64-bitové sériové číslo so štruktúrou zobrazenou na Obr. 2.6, čím je možné identifikovať&amp;lt;ref&amp;gt;http://pdfserv.maxim-ic.com/en/an/AN187.pdf&amp;lt;/ref&amp;gt; a používať viacero týchto teplomerov na jednej komunikačnej linke. Je teda jednoduché použiť jeden mikroprocesor na riadenie väčšieho počtu teplomerov distribuovaných na veľkej ploche, čo je výhodné pre aplikácie ako vykurovanie, ventilácia a klimatizácia budov,  kontrola prostredia, teplotné monitorovacie systémy budov, ale aj strojov a vybavenia.&lt;br /&gt;
[[Súbor:bcgg2.6.png|framed|center|Obr. 2.6 Štruktúra 64 bitového sériového čísla]]&lt;br /&gt;
&lt;br /&gt;
===Bloková schéma DS18S20===&lt;br /&gt;
[[Súbor:bcgg2.7.png|framed|center|Obr. 2.7 Bloková schéma DS18S20]]&lt;br /&gt;
&lt;br /&gt;
Na Obr. 2.7 je bloková schéma DS18S20, ktorá sa dá rozdeliť na dve časti. &lt;br /&gt;
Napájacia časť je napájaná buď externým zdrojom alebo pomocou parazitného napájania. Pri parazitnom napájaní je prúd privádzaný cez pull-up rezistor na pin DQ, aby bolo napätie zbernice vo vysokom stave signálu. V tomto stave sa súčasne nabíja vnútorný kondenzátor CPP, ktorý napája zariadenie, keď je zbernica v nízkom stave signálu. Pri parazitnom napájaní musí byť pin VDD prepojený s pinom GND.&lt;br /&gt;
Pamäťová časť DS18S20 je rozdelená na dve oblasti. Nezávislá pamäť EEPROM, v ktorej môžu byť uložené nízka a vysoká hodnota teploty pre funkciu alarmu. Pokiaľ sa táto pamäť nevyužíva pre funkciu alarmu, môže byť využitá aj na uloženie iných údajov. Pamäť SRAM označovaná, ako scratchpad obsahuje údaje o nameranej teplote a vypočítané CRC.&lt;br /&gt;
Bajty scratchpadu sú rozdelené podľa Tab. 2.1. Bajty  0 a 1 obsahujú LSB a MSB registra teploty a sú označené iba pre čítanie. Bajty 2 a 3 poskytujú prístup k registrom TH a TL a sú určené pre nastavovanie vysokej a nízkej hodnoty teploty pre funkciu alarmu. O znamienku uloženej hodnoty rozhoduje  príznak S uložený na  bite 7 na Obr. 2.8. Ak je S rovné 0, hodnota je pozitívna, ak je rovné 1 hodnota je negatívna.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.8.png|framed|center|Obr. 2.8 Štruktúra registrov TH a TL]]&lt;br /&gt;
&lt;br /&gt;
Bajty 4 a 5 sú rezervované výrobcom a majú hodnotu 0xFF. Bajty 6 a 7 obsahujú registre COUNT_REMAIN a COUNT PER_C, v ktorých sú uložené dáta pre výpočet rozšíreného rozlíšenia merania teploty. Posledný 8. bajt obsahuje kontrolný súčet CRC vypočítaný teplomerom.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.9.png|framed|center|Tab. 2.1 Štruktúra scratchpadu]]&lt;br /&gt;
&lt;br /&gt;
CRC je počítaný z dát uložených v scratchpade a mení sa vždy, keď nastane zmena scratchpadu. CRC predstavuje metódu kontroly&amp;lt;ref&amp;gt;http://pdfserv.maxim-ic.com/en/an/AN4600.pdf&amp;lt;/ref&amp;gt; validity dát načítaných z DS18S20. Aby sme overili, že dáta boli načítané korektne, je nutné vykonať prepočet CRC v master zariadení a výsledok porovnať s CRC zo scratchpadu. Pokiaľ je načítané aj vypočítané CRC zhodné, dáta boli načítané bez chyby. Ekvivalentná polynómiálna funkcia pre výpočet CRC je&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;CRC=X^{8}+X^{5}+X^{4}+1&amp;lt;/math&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(2.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Meranie teploty===&lt;br /&gt;
DS18S20 má rozlíšenie 9 bitov, a k tomu zodpovedajúci krok 0,5 °C. Po prijatí príkazu na vyhodnotenie teploty, teplomer vykoná meranie a analógovo-digitálnu konverziu. Po konverzii sú namerané hodnoty uložené v dvoj-bajtovom registri v scratchpade podľa Obr. 2.9 a sú kalibrované v stupňoch Celzia.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:bcgg2.9a.png|framed|center|Obr. 2.9 Štruktúra MSB a LSB]]&lt;br /&gt;
&lt;br /&gt;
MSB slúži na rozlíšenie znamienka uloženej hodnoty. Ak je S rovné 0, hodnota je pozitívna, ak je rovné 1, hodnota je negatívna.&lt;br /&gt;
Použitím dát z registrov COUNT_REMAIN a COUNT PER_C je možné dosiahnuť rozlíšenie vyššie, ako 9 bitov. COUNT_PER_C je fixne nastavený na hodnotu 0x10. Po načítaní zo scratchpadu je hodnota TEMP_READ získaná odstránením nultého bitu z teplotných dát podľa Obr. 3.9. Rozšírené rozlíšenie je potom vypočítané pomocou vzorca&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;math&amp;gt;Teplota=TEMP\_READ-0,25+\frac{COUNT\_PER\_C-COUNT\_REMAIN}{COUNT\_PER\_C}&amp;lt;/math&amp;gt;  &lt;br /&gt;
|style=&amp;quot;text-align:right&amp;quot;|(2.2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Príklady číselných hodnôt teplôt sú v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;500&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+Tab. 2.2 Príklady prepočtu teplôt&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Teplota &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;°C&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Digitálny zápis &amp;lt;br/&amp;gt; (binárny)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|Digitálny zápis&amp;lt;br&amp;gt;(hexadecimálny)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;85,0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1010 1010&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0x00AA&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;25,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;| 0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0011 0010&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0032&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;0,5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0000 0001&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0001&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0000 0000 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0000 0000&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0x0000&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;0,5&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1111 1111&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFFFF&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;25,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1100 1110&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFFCE&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;55,0&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|1111 1111 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1001 0010&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|0xFF92&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Odkazy a referencie ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5411</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5411"/>
		<updated>2010-06-22T15:19:31Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Záver'''&lt;br /&gt;
&lt;br /&gt;
Cieľom práce bolo navrhnúť a&amp;amp;nbsp;implementovať systém pre zber teplotných dát z&amp;amp;nbsp;pôdneho profilu. V&amp;amp;nbsp;prvej časti práce boli predstavené technológie a&amp;amp;nbsp;realizácia hardvérovej časti a&amp;amp;nbsp;v&amp;amp;nbsp;druhej časti bola popísaná architektúra distribuovaného systému a &amp;amp;nbsp;jej softvérové vybavenie. Výsledkom práce je funkčný technologický prototyp, na ktorom prebiehajú v&amp;amp;nbsp;súčasnosti merania.&lt;br /&gt;
&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o&amp;amp;nbsp;type puzdra a&amp;amp;nbsp;jeho hydroizolácií. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k&amp;amp;nbsp;žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
&lt;br /&gt;
Architektúra distribuovaného systému bola zložená z&amp;amp;nbsp;troch vrstiev. Firmvérová vrstva má na starosti komunikáciu s&amp;amp;nbsp;nadradeným počítačom a so sieťou 1-Wire. Prijíma dáta od jednotlivých teplomerov, počíta ich CRC a&amp;amp;nbsp;odosiela ich do sériového rozhrania. Záznamová vrstva vysiela príkazy na meranie teploty a&amp;amp;nbsp;výsledné dáta ukladá do databázy. Prezentačná vrstva slúži na priamu interakciu s&amp;amp;nbsp;používateľom. Používateľ vyberá parametre vyhodnocovania zozbieraných teplotných dát, ktoré sú následne na webovom serveri spracované a&amp;amp;nbsp;ako odpoveď sa zobrazí vytvorený graf.&lt;br /&gt;
&lt;br /&gt;
Grafické zobrazenie výsledkov meraní zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom aj &amp;amp;nbsp;pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
&lt;br /&gt;
Záujem o&amp;amp;nbsp;modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v&amp;amp;nbsp;budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na&amp;amp;nbsp;rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o&amp;amp;nbsp;iných fyzikálnych veličinách.&lt;br /&gt;
&lt;br /&gt;
Budúci vývoj zahŕňa rozšírenie firmvéru, v&amp;amp;nbsp;ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o&amp;amp;nbsp;použitej pamäti a&amp;amp;nbsp;RTC. Pomocou tohto čísla bude systém spolupracovať s&amp;amp;nbsp;aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému, ktorá môže pozostávať z&amp;amp;nbsp;viacerých meracích uzlov, viacerých databáz a&amp;amp;nbsp;meranie nebude obmedzené iba na päť teplomerov. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a&amp;amp;nbsp;tvorbu grafov z&amp;amp;nbsp;rôznych zdrojov nameraných dát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použitá literatúra'''&lt;br /&gt;
&lt;br /&gt;
ASHBY, Robert. ''Designer's Guide to the Cypress PSoC''. London&amp;amp;nbsp;: Elsevier, 2005. 273 s. ISBN&amp;amp;nbsp;9780750677806.&lt;br /&gt;
&lt;br /&gt;
CYPRESS, Semiconductor Corporation. ''PSoC Programmable System-on-Chip : Technical Reference Manual (TRM)''. San Jose, USA&amp;amp;nbsp;, c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.cypress.com&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
MAXIM, Integrated Products. ''Guidelines for Reliable Long Line 1-Wire Networks : AN-148''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 16 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
MAXIM, Integrated Products.''DS18S20 High-Precision 1-Wire Digital Thermometer''. Sunnyvale, CA, USA&amp;amp;nbsp;: Maxim Integrated Products, 2008. 23 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.maxim-ic.com&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
NXP, B.V. ''The I2C bus specification : Version 2.1''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2000. 46 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
RAMTRON, International Corporation. ''FM24V10 : 1Mb Serial 3V F-RAM Memory''. Colorado Springs, CO, USA&amp;amp;nbsp;: Ramtron International Corporation, 2009. 15 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.ramtron.com&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
NXP, B.V. ''PCF8563 : Real-Time clock/calendar''. Southampton, United Kingdom&amp;amp;nbsp;: NXP B.V., 2008. 32 s. Dostupný z WWW:&amp;amp;nbsp;&amp;lt;www.nxp.com&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Python Programming Language [online]. 2.6.4. 2009 [cit. 2010-04-02]. Www.python.org. Dostupné z WWW: &amp;lt;[http://python.org/about/ http://python.org/about/]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
MySQL::The world‘s most popular open source database [online]. 5.1.45. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.mysql.com/why-mysql/ http://www.mysql.com/why-mysql/]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The Apache Software Foundation [online]. 2.2.15. 2010 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://httpd.apache.org/ABOUT_APACHE.html http://httpd.apache.org/ABOUT_APACHE.html]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Apache/Python Integration [online]. 3.3.1. 2009 [cit. 2010-04-02]. Dostupné z WWW: &amp;lt;[http://www.modpython.org/live/current/modpython.pdf http://www.modpython.org/live/current/modpython.pdf]&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
HARMS, Daryl; MCDONALD, Kenneth. ''Začínáme programovat v jazyce Python.'' Brno : Computer Press, 2003. 456 s. ISBN 80-7226-799-X.&lt;br /&gt;
&lt;br /&gt;
FABO, P., GAŠPAR, G., PAVLÍKOVÁ, S., ŠIROKÝ, P.: ''Methods of statistical evaluation of data from long-term measurement of soil temperature profile using open-source tools.'' Trenčianske Teplice: ISC Mechatronika 2010&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5409</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5409"/>
		<updated>2010-06-22T15:16:53Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;br /&gt;
&lt;br /&gt;
'''Záver'''&lt;br /&gt;
&lt;br /&gt;
Cieľom práce bolo navrhnúť a&amp;amp;nbsp;implementovať systém pre zber teplotných dát z&amp;amp;nbsp;pôdneho profilu. V&amp;amp;nbsp;prvej časti práce boli predstavené technológie a&amp;amp;nbsp;realizácia hardvérovej časti a&amp;amp;nbsp;v&amp;amp;nbsp;druhej časti bola popísaná architektúra distribuovaného systému a &amp;amp;nbsp;jej softvérové vybavenie. Výsledkom práce je funkčný technologický prototyp, na ktorom prebiehajú v&amp;amp;nbsp;súčasnosti merania.&lt;br /&gt;
&lt;br /&gt;
Pravdepodobne najdôležitejším momentom pri realizácii senzorovej časti, bolo po výbere súčiastok rozhodnutie o&amp;amp;nbsp;type puzdra a&amp;amp;nbsp;jeho hydroizolácií. Vďaka zvolenému plastovému puzdru, ktoré bolo vyrobené na zákazku, majú jednotlivé senzory pevnú schránku, takže nie sú mechanicky namáhané. Ako izolačný materiál sa osvedčila silikónová pasta. Na konci novembra 2009, ani po približne mesiaci používania nedošlo k&amp;amp;nbsp;žiadnemu problému pri spracovaní signálu.&lt;br /&gt;
&lt;br /&gt;
Architektúra distribuovaného systému bola zložená z&amp;amp;nbsp;troch vrstiev. Firmvérová vrstva má na starosti komunikáciu s&amp;amp;nbsp;nadradeným počítačom a so sieťou 1-Wire. Prijíma dáta od jednotlivých teplomerov, počíta ich CRC a&amp;amp;nbsp;odosiela ich do sériového rozhrania. Záznamová vrstva vysiela príkazy na meranie teploty a&amp;amp;nbsp;výsledné dáta ukladá do databázy. Prezentačná vrstva slúži na priamu interakciu s&amp;amp;nbsp;používateľom. Používateľ vyberá parametre vyhodnocovania zozbieraných teplotných dát, ktoré sú následne na webovom serveri spracované a&amp;amp;nbsp;ako odpoveď sa zobrazí vytvorený graf.&lt;br /&gt;
&lt;br /&gt;
Grafické zobrazenie výsledkov meraní zobrazuje teploty namerané jednotlivými senzormi umiestnenými nad povrchom aj &amp;amp;nbsp;pod povrchom pôdy. Najviac tepelne závislé sú senzory umiestnené nad povrchom. Priebeh meraní senzora umiestneného 10 centimetrov pod povrchom vykazuje zreteľný fázový posun oproti nadzemným senzorom. Senzor umiestnený najhlbšie má najmenšie odchýlky od stabilnej teploty. &lt;br /&gt;
&lt;br /&gt;
Záujem o&amp;amp;nbsp;modifikáciu finálnej verzie systému na systém pre meranie teplotných strát v&amp;amp;nbsp;budovách bol prejavený správcom budov lokálnej firmy. Ďalšie využitie je možné pre meranie teplôt na&amp;amp;nbsp;rôznych konštrukciách napr. na mostoch. Výmenou senzorov za iný typ je možné zbierať údaje aj o&amp;amp;nbsp;iných fyzikálnych veličinách.&lt;br /&gt;
&lt;br /&gt;
Budúci vývoj zahŕňa rozšírenie firmvéru, v&amp;amp;nbsp;ktorom bude zahrnuté aj číslo výrobku, obsahujúce údaje o&amp;amp;nbsp;použitej pamäti a&amp;amp;nbsp;RTC. Pomocou tohto čísla bude systém spolupracovať s&amp;amp;nbsp;aplikačným softvérom. Tento umožní používateľovi vytvoriť vlastnú konfiguráciu systému, ktorá môže pozostávať z&amp;amp;nbsp;viacerých meracích uzlov, viacerých databáz a&amp;amp;nbsp;meranie nebude obmedzené iba na päť teplomerov. Aplikácia bude obsahovať nastavenia periódy meraní jednotlivých teplomerov, spracovanie údajov do databázy a&amp;amp;nbsp;tvorbu grafov z&amp;amp;nbsp;rôznych zdrojov nameraných dát.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Oddo.png&amp;diff=5407</id>
		<title>Súbor:Oddo.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Oddo.png&amp;diff=5407"/>
		<updated>2010-06-22T15:13:33Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zames.png&amp;diff=5406</id>
		<title>Súbor:Zames.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zames.png&amp;diff=5406"/>
		<updated>2010-06-22T15:13:14Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zatyz.png&amp;diff=5405</id>
		<title>Súbor:Zatyz.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zatyz.png&amp;diff=5405"/>
		<updated>2010-06-22T15:12:53Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zadnes.png&amp;diff=5404</id>
		<title>Súbor:Zadnes.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Zadnes.png&amp;diff=5404"/>
		<updated>2010-06-22T15:12:37Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Poslz.png&amp;diff=5403</id>
		<title>Súbor:Poslz.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Poslz.png&amp;diff=5403"/>
		<updated>2010-06-22T15:12:15Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5402</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5402"/>
		<updated>2010-06-22T15:11:58Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Webová stránka ===&lt;br /&gt;
Na Obr. 4.8 je zobrazené GUI, pomocou ktorého sa nastavujú parametre odosielané na spracovanie. V&amp;amp;nbsp;pravej tabuľke s zaškrtávacími políčkami si používateľ vyberá, ktoré teplomery budú spracované. Ako pomôcka pri výbere slúži grafická legenda napravo od tabuľky, kde je vyznačená poloha jednotlivých teplomerov vzhľadom na povrch zeme a&amp;amp;nbsp;aj ich farebné označenie v&amp;amp;nbsp;grafe.&lt;br /&gt;
&lt;br /&gt;
[[Image:webs.png|thumb|center|250px|Obr. 4.8 Webová stránka]]&lt;br /&gt;
&lt;br /&gt;
Po stlačení tlačidla „Lokalita“ sa zobrazí lokalita miesta merania pomocou Google Maps, a&amp;amp;nbsp;po stlačení tlačidla „Uložiť graf“ máme možnosť uložiť vytvorený graf vo formáte PNG.&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;ľavej tabuľke sa nastavuje časové obdobie, za ktoré sa majú dáta spracovať. Po stlačení tlačidla „Zobraz“ sa zvolené parametre prenesú metódou POST na web server, kde sa ďalej spracujú modulom mod_python. Ako odpoveď je odoslaný HTML reťazec s&amp;amp;nbsp;lokalitou vygenerovaného obrázka. „Zobrazenie posledného záznamu“ zobrazí graf na Obr. 4.9 s&amp;amp;nbsp;bodmi umiestnenými podľa posledného záznamu v&amp;amp;nbsp;databáze.&lt;br /&gt;
&lt;br /&gt;
[[Image:poslz.png|thumb|center|250px|Obr. 4.9 Zobrazenie posledného záznamu]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za dnes“ zobrazí graf na Obr. 4.10 vytvorený v&amp;amp;nbsp;čase od 00:00 hod do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zadnes.png|thumb|center|250px|Obr. 4.10 Zobrazenie za dnes]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za týždeň“ na zobrazí graf Obr. 4.11 za posledných sedem dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
[[Image:zatyz.png|thumb|center|250px|Obr. 4.11 Zobrazenie za týždeň]]&lt;br /&gt;
&lt;br /&gt;
„Zobrazenie za mesiac“ zobrazí graf na Obr. 4.12 za posledných tridsať dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:zames.png|thumb|center|250px|Obr. 4.12 Zobrazenie za mesiac]]&lt;br /&gt;
&lt;br /&gt;
Takto definované časové úseky sú pevne definované. Používateľ si však môže zvoliť časové obdobie pomocou dvoch okien na vkladanie dátumov. &lt;br /&gt;
&lt;br /&gt;
Okná „Dátum od:“ a „Dátum do:“ slúžia na flexibilné nastavenie želaného časového obdobia na vyhodnotenie dát. Zobrazí sa graf na Obr. 4.13 za zvolený počet dní, vytvorený v&amp;amp;nbsp;čase od 00:00 hod prvého dňa do aktuálneho času aktuálneho dňa. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:oddo.png|thumb|center|250px|Obr. 4.13 Zobrazenie „Od: Do:]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Webs.png&amp;diff=5399</id>
		<title>Súbor:Webs.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Webs.png&amp;diff=5399"/>
		<updated>2010-06-22T15:11:16Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5396</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5396"/>
		<updated>2010-06-22T15:03:48Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: /* Komunikácia s databázou MySQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|250px|Obr. 4.7 Záznam v databáze SQL]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dbsql.png&amp;diff=5395</id>
		<title>Súbor:Dbsql.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dbsql.png&amp;diff=5395"/>
		<updated>2010-06-22T15:03:15Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5394</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5394"/>
		<updated>2010-06-22T15:03:02Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;br /&gt;
&lt;br /&gt;
== Záznamová vrstva ==&lt;br /&gt;
Jadrom záznamovej vrstvy je skript ''meranie.py'' napísaný v&amp;amp;nbsp;jazyku Python. Jeho úlohou je v&amp;amp;nbsp;zadaných časových intervaloch vysielať na sériové rozhranie požiadavky na meranie na jednotlivých teplomeroch, takto získané dáta spracovať a&amp;amp;nbsp;vo vhodnom formáte uložiť do databázy.&lt;br /&gt;
&lt;br /&gt;
Po spustení skriptu najprv nastavíme komunikáciu so sériovým rozhraním a&amp;amp;nbsp;údaje na pripojenie sa k&amp;amp;nbsp;databáze. Do sériového rozhrania pošleme požiadavku na meranie s&amp;amp;nbsp;parametrom, ktorým je adresa teplomera. Zo sériového rozhrania načítame ako odpoveď 9-bajtový reťazec v&amp;amp;nbsp;hexadecimálnom tvare, z&amp;amp;nbsp;ktorého načítame bajty MSB, LSB a&amp;amp;nbsp;CRM. Z&amp;amp;nbsp;týchto dostávame výslednú teplotu v&amp;amp;nbsp;decimálnom tvare použitím nasledujúceho fragmentu kódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
lsb=int(str[17:19],16)&amp;gt;&amp;gt;1 #výber lsb z reťazca, prevod na int a 1-bitovy posun vpravo&lt;br /&gt;
msb=int(str[19:21],16)    #vyber msb z reťazca a prevod na číslo&lt;br /&gt;
crm=int(str[29:31],16)    #vyber crm z reťazca a prevod na číslo&lt;br /&gt;
if msb==0:                #kontrola či je MSB kladné alebo záporné&lt;br /&gt;
teplo=(lsb-0.25+(float(16-crm)/16))&lt;br /&gt;
elif msb==255:&lt;br /&gt;
teplo=(-128+(lsb-0.25+(float(16-crm)/16)))&lt;br /&gt;
teplota=&amp;quot;%4.2f&amp;quot; %teplo    #prevod čísla na reťazec 4 číslic, z toho 2 desatinných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia po sériovom rozhraní ===&lt;br /&gt;
Komunikácia je zabezpečená použitím modulu ''serial''. V&amp;amp;nbsp;nasledujúcom vzorovom kóde sú popísané základné funkcie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import serial         #zahrnutie modulu ''serial'' do skriptu&lt;br /&gt;
ser = serial.Serial('/dev/ttyUSB0', 19200, timeout=1) #nastavenie parametrov sériovej komunikácie&lt;br /&gt;
ser.flushInput()      #vymazanie vstupného buffera &lt;br /&gt;
ser.flushOutput()     #vymazanie výstupného buffera&lt;br /&gt;
ser.write('@TBM\r\n') #zápis príkazu na zber teploty do sériového rozhrania&lt;br /&gt;
str=ser.readline()    #načítam riadok s&amp;amp;nbsp;odpoveďou zo sériového rozhrania&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komunikácia s databázou MySQL ===&lt;br /&gt;
Zápis dát je vykonávaný prostredníctvom modulu ''MySQLdb''. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import MySQLdb        #zahrnutie modulu ''MySQLdb'' do skriptu&lt;br /&gt;
conn=MySQLdb.connect(user=&amp;quot;root&amp;quot;, passwd=&amp;quot;heslo&amp;quot;, db=&amp;quot;database&amp;quot;) #nastavenie parametrov na pripojenie k databáze&lt;br /&gt;
cursor=conn.cursor () #vytvorenie kurzora pre konzolu MySQL&lt;br /&gt;
cursor.execute(&amp;quot;INSERT INTO meranie (teplomer, datum, teplota) VALUES (%s,%s,%s)&amp;quot;, (tep,cas,teplota)) #SQL príkaz pre vloženie riadku do tabuľky s&amp;amp;nbsp;použitím premenných&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tabuľke do stĺpca teplomer zapisujeme adresu zariadenia, do stĺpca dátum zapisujeme dátum a&amp;amp;nbsp;čas merania a&amp;amp;nbsp;do tabuľky teplota zapisujeme teplotu v&amp;amp;nbsp;decimálnom tvare na Obr. 4.7.&lt;br /&gt;
&lt;br /&gt;
[[Image:dbsql.png|thumb|center|125px|Obr. 4.7 Záznam v databáze SQL]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5391</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5391"/>
		<updated>2010-06-22T14:55:41Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: /* Podprogram ADR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|125px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5390</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5390"/>
		<updated>2010-06-22T14:55:23Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: /* Podprogram DNR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|125px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|150px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5389</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5389"/>
		<updated>2010-06-22T14:55:03Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: /* Podprogram DNR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|100px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|150px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Tmp.png&amp;diff=5388</id>
		<title>Súbor:Tmp.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Tmp.png&amp;diff=5388"/>
		<updated>2010-06-22T14:54:23Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Adr.png&amp;diff=5387</id>
		<title>Súbor:Adr.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Adr.png&amp;diff=5387"/>
		<updated>2010-06-22T14:53:39Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dnr.png&amp;diff=5386</id>
		<title>Súbor:Dnr.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dnr.png&amp;diff=5386"/>
		<updated>2010-06-22T14:53:06Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5385</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5385"/>
		<updated>2010-06-22T14:51:53Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params):   #názov funkcie ktorú volá metóda POST&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
req.send_http_header()       #požiadavka na odoslanie hlavičky&lt;br /&gt;
for name in params.keys():   #načítanie parametrov&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
t1=True&lt;br /&gt;
...........&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
req.write(s)                 #zápis odpovede&lt;br /&gt;
return apache.OK             #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[Image:fw.png|thumb|200px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|150px|center|Obr. 4.3 Podprogram SYS]]&lt;br /&gt;
Fragment kódu ukazuje použitie funkcie modulu UART na zapísanie reťazca do sériového rozhrania a&amp;amp;nbsp;prechod na nový riadok:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
UART_CPutString(&amp;quot;System alive ...\r\n&amp;quot;); //zápis reťazca do sériového rozhrania&lt;br /&gt;
UART_PutCRLF();                          //prechod na nový riadok CR,LF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram DNR ===&lt;br /&gt;
Je podprogram podľa Obr. 4.4, ktorý osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Zariadenia, ktoré sa prezentovali sú spočítané a&amp;amp;nbsp;do sériového rozhrania je zapísaná informácia „DNR: xx“, kde xx reprezentuje súčet zariadení, ktoré odpovedali na požiadavku.&lt;br /&gt;
&lt;br /&gt;
[[Image:dnr.png|thumb|150px|center|Obr. 4.4 Podprogram DNR]]&lt;br /&gt;
&lt;br /&gt;
Tento podprogram využíva funkciu Get1WConfig, ktorá bola vytvorená pre použitie v&amp;amp;nbsp;podprogramoch DNR a&amp;amp;nbsp;ADR. Vo fragmente kódu je zobrazený prechod medzi jednotlivými zariadeniami:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();               //začiatok komunikácie &lt;br /&gt;
if(OneWireSW_First()==0) return; //prejdeme na prvé zariadenie&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
.............&lt;br /&gt;
OneWireSW_Next();                //prejdeme na nasledujúci&lt;br /&gt;
OneWireSW_GetROM(scpArray);      //načítame adresu do poľa&lt;br /&gt;
devNum++;                        //inkrementujeme počet zariadení&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Podprogram ADR ===&lt;br /&gt;
Tento podprogram slúži na zobrazenie adries pripojených zariadení. Postup je podobný, ako pri podprograme DNR. Podľa Obr. 4.5, osloví 1-Wire sieť s&amp;amp;nbsp;požiadavkou, aby sa pripojené zariadenia prezentovali prezenčným impulzom. Adresy zariadení, ktoré sa prezentovali sú postupne zapisované do sériového rozhrania v tvare „ADR: xxxxxx“, kde xxxxxx reprezentuje adresu zariadenia s&amp;amp;nbsp;dĺžkou 64 bitov.&lt;br /&gt;
&lt;br /&gt;
[[Image:adr.png|thumb|150px|center|Obr. 4.5 Podprogram ADR]]&lt;br /&gt;
&lt;br /&gt;
=== Podprogram pre meranie teploty TMP ===&lt;br /&gt;
Úlohou tohto podprogramu je merať teplotu na základe používateľsky definovaného parametra. Parameter je 64 bitová adresa 1-Wire zariadenia. Tento parameter je zapísaný do 1-Wire siete a&amp;amp;nbsp;príslušné 1-Wire zariadenie vykoná meranie a&amp;amp;nbsp;jeho konverziu na 9-bajtový reťazec. Dáta sú následne načítané do pamäti mikroprocesora, ktorý z&amp;amp;nbsp;nich vypočíta CRC a&amp;amp;nbsp;porovná ho s&amp;amp;nbsp;CRC v&amp;amp;nbsp;reťazci na Obr. 4.6. Ak sú vypočítané aj načítané CRC rovnaké, do sériového rozhrania je zapísaný reťazec v&amp;amp;nbsp;tvare „adresa;teplota“, kde adresa predstavuje adresu teplomera a&amp;amp;nbsp;teplota zasa nameranú teplotu.&lt;br /&gt;
&lt;br /&gt;
[[Image:tmp.png|thumb|150px|center|Obr. 4.6 Podprogram TMP]]&lt;br /&gt;
&lt;br /&gt;
Fragment kódu zobrazuje postupnosť príkazov pri meraní teploty:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_Reset();           //začiatok komunikácie  &lt;br /&gt;
OneWireSW_WriteByte(0x55);   //príkaz MatchROM&lt;br /&gt;
for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapíšeme adresu po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0x44);   //príkaz Convert Temperature&lt;br /&gt;
OneWireSW_SetStrong();       //nastavíme strongpullup&lt;br /&gt;
OneWireSW_Delay10mTimes(75); //750 ms na meranie&lt;br /&gt;
OneWireSW_SetResistive();    //nastavíme resistive&lt;br /&gt;
OneWireSW_Reset();           //koniec komunikácie&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meranie teploty začína vyslaním reset impulzu. Zápisom na adresu 0x55 zadávame sieti príkaz MatchROM, takže budeme zaručene komunikovať iba so zariadením, ktorého adresa sa vo všetkých 64 bitoch zhoduje s&amp;amp;nbsp;adresou, ktorú odošleme v&amp;amp;nbsp;nasledujúcom kroku. Adresa teplomera sa do siete posiela po jednotlivých bajtoch. Po odoslaní posledného bajtu adresy teplomera môžeme zapísať na adresu 0x44 príkaz Convert Temperature. V&amp;amp;nbsp;nasledujúcom kroku nastavíme pin mikroprocesora na StrongPullup, počkáme 750 ms na spracovanie merania a&amp;amp;nbsp;pin mikroprocesora nastavíme opäť na Resistive. Komunikácia končí odoslaním reset impulzu.&lt;br /&gt;
&lt;br /&gt;
Časť kódu zobrazujúca implementáciu CRC funkcie: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
OneWireSW_WriteByte(0x55);       //príkaz MatchROM&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for(i=0; i&amp;lt;8; i++) OneWireSW_WriteByte(scpArray[i]); //zapisujeme po jednom bajte&lt;br /&gt;
OneWireSW_WriteByte(0xBE);       //príkaz Read Scratchpad&lt;br /&gt;
for(i=0; i&amp;lt;9; i++)               //v scratchpade je 9 bytov teploty&lt;br /&gt;
{&lt;br /&gt;
char znak=OneWireSW_ReadByte(); //do premennej vložíme načítaný bajt&lt;br /&gt;
char crc=OneWireSW_CRC8(znak);  //do premennej vložíme vypočítané CRC&lt;br /&gt;
if (i==8){                      //skontrolujeme, či sa CRC rovná&lt;br /&gt;
 if(crc==0) crctest=0;&lt;br /&gt;
 else crctest=1;&lt;br /&gt;
 }&lt;br /&gt;
UART_PutSHexByte(znak);         // znak vložíme do sériového rozhrania&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri načítavaní nameranej hodnoty postupujeme pri adresovaní zariadenia podobne, ako v&amp;amp;nbsp;predchádzajúcom príklade. Ďalej načítavame do poľa namerané dáta po jednom bajte vyslaním príkazu Read Scratchpad na adresu 0xBE. V&amp;amp;nbsp;tomto kroku prebieha aj výpočet CRC, ktoré v&amp;amp;nbsp;poslednom prechode cyklu má byť rovné 0. Ak je CRC rovné 0, dáta sa odošlú do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Fw.png&amp;diff=5383</id>
		<title>Súbor:Fw.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Fw.png&amp;diff=5383"/>
		<updated>2010-06-22T14:37:46Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5382</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5382"/>
		<updated>2010-06-22T14:37:31Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[File:MediaWiki:Image sample|thumb|100px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:sys.png|thumb|center|Obr. 4.3 Podprogram SYS]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5381</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5381"/>
		<updated>2010-06-22T14:34:52Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[File:MediaWiki:Image sample|thumb|100px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;br /&gt;
[[Image:image sample|center|Obr. 4.3 Podprogram SYS]]&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Sys.png&amp;diff=5380</id>
		<title>Súbor:Sys.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Sys.png&amp;diff=5380"/>
		<updated>2010-06-22T14:34:01Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5376</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5376"/>
		<updated>2010-06-22T14:29:02Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[File:MediaWiki:Image sample|thumb|100px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5375</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5375"/>
		<updated>2010-06-22T14:25:24Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Obr. 4.1 Architektúra systému distribuovaného merania|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;br /&gt;
== Firmvérová vrstva ==&lt;br /&gt;
Firmvér pre mikroprocesor CY8C29466PXI bol napísaný v implementácii programovacieho jazyka C firmy Imagecraft. Predstavuje udalosťami riadený pseudo operačný systém vyobrazený na Obr 4.2.&lt;br /&gt;
&lt;br /&gt;
[[File:MediaWiki:Image sample|thumb|100px|Obr. 4.2 Firmvérová vrstva]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Obr. 4.2 Firmvérová vrstva&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V&amp;amp;nbsp;nekonečnej slučke sú vyhodnocované pseudo príkazy prijaté z&amp;amp;nbsp;rozhrania RS-232 a&amp;amp;nbsp;sú vykonávané definované postupnosti príkazov – diagnostické podprogramy SYS, DNR a&amp;amp;nbsp;ADR, a&amp;amp;nbsp;podprogram pre meranie teploty&amp;amp;nbsp;TMP.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostické podprogramy ===&lt;br /&gt;
Diagnostické podprogramy predstavujú účinný nástroj v&amp;amp;nbsp;kontrole pracovných stavov systému. Využiteľné sú najmä pri nastavovaní parametrov sériového rozhrania,&amp;amp;nbsp;pri riešení problémov 1-Wire siete a&amp;amp;nbsp;pridávaní ďalších 1-Wire zariadení.&lt;br /&gt;
&lt;br /&gt;
=== Podprogram SYS ===&lt;br /&gt;
Je jednoduchý podprogram na Obr 4.3, ktorého úlohou je odoslať správu „System alive!“ na sériové rozhranie. Toto je základná diagnostická funkcia, ktorá používateľa informuje, že systém je funkčný, beží v slučke a&amp;amp;nbsp;dokáže zapísať do sériového rozhrania.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5361</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5361"/>
		<updated>2010-06-22T14:03:31Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
[[Image:pokus.png|Architektúra systému|thumb|200px]]&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5358</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5358"/>
		<updated>2010-06-22T14:00:28Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
[[Image:pokus.png|Architektúra systému|center|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Obr. 4.1 Architektúra systému distribuovaného merania&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5356</id>
		<title>Softvérové vybavenie systému</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Softv%C3%A9rov%C3%A9_vybavenie_syst%C3%A9mu&amp;diff=5356"/>
		<updated>2010-06-22T13:58:56Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Bakalárske práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
[[Kategória:Mechatronika]]&lt;br /&gt;
{{Praca_uvod|6|Autonómny systém pre zber teplotných dát z pôdneho profilu|Mikroprocesory PSoC|Protokol 1-Wire|Rozhranie I2C|Návrh a realizácia obvodového zapojenia systému zberu teplotných dát|Návrh a realizácia zapojenia senzorov systému zberu teplotných dát|Softvérové vybavenie systému|||||}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Softvérové vybavenie systému=&lt;br /&gt;
==Softvérové prostriedky==&lt;br /&gt;
V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.&lt;br /&gt;
===Programovací jazyk Python===&lt;br /&gt;
Python &amp;lt;nowiki&amp;gt;je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v&amp;amp;nbsp;tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a&amp;amp;nbsp;aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v&amp;amp;nbsp;C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v&amp;amp;nbsp;C alebo C++.&lt;br /&gt;
# rýchlosť tvorby kódu – označuje vyjadrovacie a&amp;amp;nbsp;konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.&lt;br /&gt;
# objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.&lt;br /&gt;
# GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V&amp;amp;nbsp;Pythone je zabezpečená pomocou modulu TK.&lt;br /&gt;
# vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.&lt;br /&gt;
# vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.&lt;br /&gt;
# dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v&amp;amp;nbsp;Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s&amp;amp;nbsp;vedeckými výpočtami, grafikou, databázami, atď.&lt;br /&gt;
&lt;br /&gt;
Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:&lt;br /&gt;
&lt;br /&gt;
''serial'' – pre komunikáciu so sériovým rozhraním&lt;br /&gt;
&lt;br /&gt;
''MySQLdb'' – pre komunikáciu s&amp;amp;nbsp;databázou&lt;br /&gt;
&lt;br /&gt;
''time'' – pre prácu s&amp;amp;nbsp;časom&lt;br /&gt;
&lt;br /&gt;
''datetime'' – pre prácu s dátumom&lt;br /&gt;
&lt;br /&gt;
''matplotlib'' – pre tvorbu grafov&lt;br /&gt;
&lt;br /&gt;
''image'' – na úpravu obrázkov&lt;br /&gt;
&lt;br /&gt;
''numpy'' – na matematické výpočty&lt;br /&gt;
=== Databázový systém MySQL ===&lt;br /&gt;
MySQL reprezentuje slobodný a&amp;amp;nbsp;otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a&amp;amp;nbsp;jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).&lt;br /&gt;
&lt;br /&gt;
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.&lt;br /&gt;
&lt;br /&gt;
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a&amp;amp;nbsp;je dostupný aj v&amp;amp;nbsp;komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka &amp;quot;MySQL&amp;quot; je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.&lt;br /&gt;
&lt;br /&gt;
=== Webový server Apache ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&amp;amp;nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&amp;amp;nbsp;v&amp;amp;nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&amp;amp;nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&amp;amp;nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modul mod_python ===&lt;br /&gt;
Mod_python predstavuje:&lt;br /&gt;
&lt;br /&gt;
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&amp;amp;nbsp;tak serveru umožní vykonávať jeho skripty &lt;br /&gt;
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&amp;amp;nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&amp;amp;nbsp;handleri pripojení.&lt;br /&gt;
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&amp;amp;nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.&lt;br /&gt;
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&amp;amp;nbsp;CGI, z&amp;amp;nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb. &lt;br /&gt;
&lt;br /&gt;
Fragment kódu použitej funkcie pre načítanie parametrov z&amp;amp;nbsp;web stránky a&amp;amp;nbsp;odoslanie odpovede serveru Apache: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def handler(req,**params): #názov funkcie ktorú volá metóda POST&lt;br /&gt;
&lt;br /&gt;
req.content_type='text/html' #obsah je typu text/html&lt;br /&gt;
&lt;br /&gt;
req.send_http_header() #požiadavka na odoslanie hlavičky&lt;br /&gt;
&lt;br /&gt;
for name in params.keys(): #načítanie parametrov&lt;br /&gt;
&lt;br /&gt;
if name==‘t1‘:&lt;br /&gt;
&lt;br /&gt;
t1=True&lt;br /&gt;
&lt;br /&gt;
...........&lt;br /&gt;
&lt;br /&gt;
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď&lt;br /&gt;
&lt;br /&gt;
req.write(s) #zápis odpovede&lt;br /&gt;
&lt;br /&gt;
return apache.OK #ukončenie komunikácie so serverom&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Architektúra systému ==&lt;br /&gt;
V systéme spolupracujú tri vrstvy podľa Obr. 4.1:&lt;br /&gt;
&lt;br /&gt;
'''firmvérová vrstva''' – sprostredkováva komunikáciu s 1-Wire zariadeniami a nadradeným počítačom pomocou sériového rozhrania&lt;br /&gt;
&lt;br /&gt;
'''záznamová vrstva''' – v stanovených časových intervaloch oslovuje firmvérovú vrstvu s požiadavkou na meranie, takto získané dáta ukladá do databázy&lt;br /&gt;
&lt;br /&gt;
'''prezentačná vrstva''' – pomocou GUI pristupuje s používateľskou požiadavkou k databáze, spracováva dáta a vytvára výsledný graf&lt;br /&gt;
&lt;br /&gt;
[[Image:pokus.png|Architektúra systému|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Obr. 4.1 Architektúra systému distribuovaného merania&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Takáto architektúra systému umožní prípadné rozšírenie na systém typu „enterprise“. Prezentačná vrstva je úplne oddelená a&amp;amp;nbsp;môže byť používaná z&amp;amp;nbsp;ktoréhokoľvek geografického umiestnenia, pričom sa môže pripájať k neobmedzenému počtu databázových serverov. Záznamová vrstva môže zasa komunikovať s&amp;amp;nbsp;neobmedzeným počtom meracích zariadení s&amp;amp;nbsp;rôznou geografickou polohou a&amp;amp;nbsp;zapisovať získané dáta do databázy.&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pokus.png&amp;diff=5354</id>
		<title>Súbor:Pokus.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Pokus.png&amp;diff=5354"/>
		<updated>2010-06-22T13:58:02Z</updated>

		<summary type="html">&lt;p&gt;Ggaspar: Architektúra systému distribuovaného merania teploty&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Architektúra systému distribuovaného merania teploty&lt;/div&gt;</summary>
		<author><name>Ggaspar</name></author>
		
	</entry>
</feed>