Masarykova univerzita Fakulta}w¡¢£¤¥¦§¨  informatiky !"#$%&'()+,-./012345

Telemetrické sledování včelích úlů

Bakalářská práce

Jan Vojtěch

Brno, jaro 2011 Prohlášení

Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.

V Brně dne 23. května 2011

Jan Vojtěch

Vedoucí práce: Ing. Pavel Čeleda, Ph.. ii Poděkování

Děkuji Ing. Pavlu Čeledovi, Ph.D. za cenné rady, náměty a zkušenosti, které mi při psaní práce poskytl.

iii Shrnutí

Bakalářská práce se zabývá návrhem a konstrukcí systému, který umožňuje pravidelně vážit včelí úly a změřená data přenášet na internetový server, který je dále zpracovává. Práce se věnuje technickému řešení problému i návrhu odpovídajícího programového vybavení a tvorbě webového rozhraní sloužícího k vyhodnocování naměřených dat. Součástí je také shrnutí na- bídky podobných zařízení a jejich porovnání s navrženým systémem.

Klíčová slova

Úlová váha, telemetrie, jednočipový mikropočítač, ATMega128, AD převod- ník AD7795, AT příkazy, Nut/OS, webové rozhraní, Nette, Google Chart API

iv Obsah

1 Úvod ...... 1 2 Současný stav ...... 2 2.1 Použití úlové váhy v praxi ...... 2 2.2 Registrační váhy dostupné na našem i zahraničním trhu ...5 2.2.1 Vážící systém EMMA...... 5 2.2.2 Bee WISE...... 6 2.2.3 Úlová váha CAPAZ...... 6 2.2.4 Telemetrická úlová váha...... 7 3 Návrh architektury systému ...... 8 4 Měření hmotnosti a její číslicové zpracování ...... 11 4.1 Tenzometrické snímače hmotnosti ...... 11 4.2 Můstkové zapojení tenzometrů ...... 12 4.3 Zásady návrhu vážícího systému ...... 14 4.4 Korekce měřených hodnot ...... 15 4.5 Převodník AD7795 a jeho obsluha ...... 16 5 Připojení k síti Internet pomocí GSM ...... 20 5.1 Dostupné GSM moduly a jejich vlastnosti ...... 20 5.2 GSM modul SIMCom SIM300 ...... 22 5.3 Použití mobilního telefonu jako GSM modulu ...... 23 5.4 Mobilní telefon Siemens C60 ...... 23 5.5 Použití AT příkazů k obsluze GSM zařízení ...... 25 6 Návrh programového vybavení ...... 27 6.1 Operační systém Nut/OS ...... 27 6.2 Základní část programu ...... 28 6.3 Získání aktuální hmotnosti ...... 29 6.4 Měření teploty ...... 29 6.5 Obsluha mobilního telefonu ...... 30 7 Webové rozhraní ...... 32 7.1 Framework Nette ...... 32 7.2 Architektura webové aplikace ...... 35 7.3 Autentizace a autorizace uživatelů ...... 36 7.4 Aplikační rozhraní Google Chart API ...... 37

v 7.5 Příjem dat z váhy ...... 39 7.6 Provozní náklady systému ...... 40 7.7 Pravidla vážení a jejich zpracování ...... 41 7.8 Moduly pro obsluhu senzorů ...... 42 8 Realizace systému ...... 44 8.1 Prototypy základní desky ...... 44 8.2 Spotřeba energie a napájení zařízení ...... 45 8.3 Mechanické části zařízení ...... 46 8.4 Cenové náklady ...... 47 8.5 Porovnání s dostupnými produkty ...... 48 9 Závěr ...... 49 A Obsah přiloženého CD ...... 52 B Úspornost přenosových protokolů ...... 53 B.1 SOAP ...... 53 B.2 JSON ...... 53 B.3 Upravený formát CSV ...... 53 C Webové rozhraní ...... 54 D Ladící výpis aplikace v mikropočítači ...... 56 E Realizace prototypu ...... 58

vi Kapitola 1 Úvod

Cílem bakalářské práce je navrhnout a realizovat systém, umožňující tele- metrické vážení včelích úlů a okamžitou prezentaci výsledků na Internetu. Součástí práce je průzkum aktuální nabídky podobných zařízení, na jehož základě je vytvořen seznam požadavků. Práce se zabývá jak konstrukcí sa- motného zařízení, tak i návrhem jeho programového vybavení a tvorbou webového rozhraní sloužícího k vyhodnocování naměřených dat. Pro chovatele včel je důležité, aby měl dostatek informací alespoň o části úlů, na základě kterých určí, kdy provést předepsaná ošetření nebo sběr medu. Za tímto účelem provádí většina včelařů pravidelné kontroly, které jsou však časově náročné, a proto jejich frekvence nebývá vysoká. Během posledních desetiletí se v moderním včelařství začaly uplatňovat mechanické váhy, které umožňují na základě hmotnosti úlu velmi přesně odhadnout množství v něm obsaženého medu. Díky tomu je možné snadno určit op- timální čas medobraní nebo přikrmení včelstva. Navíc při kontrolách není nutné manipulovat s úlem, což přispívá k většímu klidu chovu. Mechanická váha ovšem stále vyžaduje, aby majitel pravidelně docházel na stanoviště, což je problém zejména u kočovných včelařů. Cílem navrženého zařízení je automatizovat odečty hmotnosti a zajistit okamžitý přenos přesných informací k včelaři. Základem váhy je mechanická konstrukce, která přenáší tlak úlu na čtveřici snímačů hmotnosti. Výstupní data zpracovává jednočipový mikropočítač umístěný ve vodotěsné schránce. Pro připojení k Internetu se používá běžný mobilní telefon, který posílá naměřená data na webový server. Výsledky je možné zobrazit na libovolném počítači prostřednictvím internetového prohlížeče. Přístroj je navržen tak, aby byl vhodný do venkovního prostředí, pro případ nedostupnosti elektrické přípojky je možné použít pro jeho napájení akumulátor. Při návrhu výše popsaného systému byl kladen důraz na kvalitu a pou- žití běžně dostupných dílů, a tak v budoucnu nebude problém vyrobit další podobné kusy pro případné zájemce z řad včelařů.

1 Kapitola 2 Současný stav

Používání úlové váhy sebou přináší řadu výhod. Pokud včelař provádí pra- videlné odečty hmotnosti a hodnoty zakresluje do grafu, může z něho vyčíst řadu užitečných informací, které mu pomohou rychleji zareagovat na potřeby včel. Nejdůležitějšími informacemi jsou následující:

• začátek jarní snůšky,

• průběh snůšky, optimální čas medobraní,

• hmotnost zásob daného včelstva a přibližné množství volného místa v úlu,

• čas, který zbývá do zaplnění úlu, resp. nejpozdější termín přidání dalšího nástavku,

• hmotnost zásob vzniklých pozdní snůškou po nakrmení,

• množství zásob, které potřebují včely na přezimování.

Mnoho z výše uvedených informací je možné vztáhnout i na ostatní úly ve stanovišti, nicméně pro větší vypovídací hodnotu je vhodné použít alespoň dvě váhy. Díky nim je možné porovnat strmosti nárůstu i celkový objem zásob více úlů, což může být užitečné například při výběru matek. Většina včelařů si výhody vážení úlů dobře uvědomuje, nicméně v pří- padě použití mechanické váhy je nezbytné dělat pravidelné odečty alespoň jednou denně, což je časově náročné. Současný trh sice nabízí i váhy elek- tronické, které umožňují proces automatizovat, nicméně jejich nabídka není příliš široká a většinu tuzemských chovatelů odradí vysoká cena.

2.1 Použití úlové váhy v praxi

Následující text vznikl na základě článku Vážení včelstev elektronickou re- gistrační váhou [3] v časopise Včelařství. Jeho úkolem je hlouběji seznámit čtenáře práce s problematikou a ukázat hlavní výhody použití úlové váhy.

2 2. Současný stav

Grafy na obrázcích 2.1a 2.2 byly získány dlouhodobým měřením tzv. čisté hmotnosti, do které se počítá vlastní včelstvo s plodem, zásoby pylu a glycidové zásoby, jejichž podíl je nejvyšší (50 – 90 %). Při vážení se naopak neberou v úvahu neměnné složky, jako je hmotnost samotného úlu a jeho nástavků. Čistou hmotnost lze nejsnáze určit na začátku včelařského roku, tj. mezi posledním vytočením medu a prvním krmením, kdy mají včely minimum zásob.

Obrázek 2.1: Změny hmotnosti včelstva po dobu dvou let [3].

Křivky na obrázku 2.1 ukazují změny hmotnosti úlu jednoho včelstva ve dvou po sobě jdoucích letech. Na ose x je zanesen průběh času, křivka s počátkem v bodě 1 odpovídá změnám hmotnosti v roce 2008, bod 9 uvo- zuje počátek roku následujícího. Grafy ve spodní části obrázku odpovídají změnám teplot ve dvou uvedených letech. Měření začalo v březnu 2008, čistá hmotnost byla stanovena na základě odhadnutého množství zásob při jarní prohlídce. V bodě 2 začíná prudký nárůst váhy, který značí začátek snůšky. Ta vrcholí vytočením medu v bodě 3. Množství získaného medu odpovídá rozdílu bodů 3 a 4. Z grafu je patrný nejen celkový výnos, ale také rozdílná dynamika rozvoje identického včelstva ve dvou následujících letech (druhý rok bylo poznání slabší).

3 2. Současný stav

Obrázek 2.2: Porovnání dvou včelstev na stejném stanovišti [3].

Nevýhodou uvedených měření je fakt, že zvolené včelstvo nemuselo být reprezentativním vzorkem. Proto je lepší vážit více úlů a výsledky porovná- vat. Tím získá včelař povědomí o situaci na celém stanovišti. Obrázek 2.2 ukazuje porovnání dvou včelstev na stejném místě během jedné sezóny (od poloviny dubna do konce července). Graf zobrazuje výrazně kratší časový úsek ve větším detailu. Díky tomu je možné dobře pozorovat denní přínos sladiny i noční odpar vlhkosti. Ve spodní části obrázku je vi- dět křivka, která odpovídá změnám teploty na stanovišti. Graf znázorňuje opět čistou hmotnost, a proto z něj byly odstraněny výchylky způsobené přidáváním a odebíráním nástavků. Manipulace s nimi je znázorněna za- kroužkovanými číslicemi, které odpovídají pořadí nástavku, jenž byl přidán nebo odebrán (v případě odebrání je číslo v kroužku záporné). Křivka s počátkem v bodě 20 odpovídá silnému produkčnímu včelstvu. Začátek sezóny odstartoval nárůst okolní teploty, který probudil včely k ži- votu. Spotřeba zásob se zvýšila a následně začala první jarní snůška tlumená poklesy teploty. Od bodu 21 přestaly teplotní propady a snůška se rozjela naplno. Postupně byl přidán pátý a šestý nástavek. Po několikadenním ochla- zení byl zaznamenán prudký nárůst hmotnosti, který vyvrcholil vytočením

4 2. Současný stav

22,5 kg medu v bodě 24. Snůška pokračovala s mírnou přestávkou vlivem po- klesu teplot rychlostí asi 5 kg za den. Byl přidán sedmý nástavek. V bodě 28 proběhlo druhé vytočení medu, tentokrát se ziskem přibližně 40 kg. V okolí bodu 31 se nárůst hmotnosti zastavil a včely začaly slídit. Proběhlo třetí vytočení (opět 40 kg medu) a odejmutí 3 nástavků. Sezóna skončila poslední dotáčkou cca 5 kg medu. Celkem včelstvo poskytlo 107 kg medu. Počínaje bodem 40 můžeme sledovat vývoj oddělku v produkční včelstvo. Mezi body 40 a 41 pozorujeme dlouhé období stagnace. Z důvodu malého množství zásob byly přidány průsakové zásoby o hmotnosti cca 14 kg, avšak ve stejné době již začala snůška, a tak včely láhve s cukrem ignorovaly. Proto byly v bodě 42 zase odebrány. Od té doby oddělek sílí jen s malými přestáv- kami z důvodu nízkých teplot. Postupně byl přidán třetí až šestý nástavek. V bodě 50 snůška u obou sledovaných včelstev končí. Bylo vytočeno 24 kg medu a sejmuty dva nástavky. Včelám bylo ponecháno 5 kg medu jako zásoby do dalšího roku, který začíná krmením. Při porovnání obou křivek je patrné, že hmotnost zásob silného včel- stva s dostatkem prostoru roste téměř lineárně a omezuje ji pouze vydatnost přírodní nabídky a venkovní teplota. Vývoj oddělku je mnohem mírnější a naměřené hodnoty jsou navíc silně ovlivněny zvětšováním samotného cho- máče včel. Z obou grafů je vidět, že nárůst hmotnosti se před zaplněním nástavku zpomalí. Je tedy žádoucí, aby včelař včas přidal prázdný nástavek, jinak se připravuje o významnou část produkce medu. Na konci sezóny mají grafy obou včelstev velmi podobný průběh, který se projevuje stagnací až poklesem hmotnosti.

2.2 Registrační váhy dostupné na našem i zahraničním trhu

2.2.1 Vážící systém EMMA

Jedná se o stavebnicový systém české výroby, který je zatím stále ve stá- diu vývoje. Autory systému jsou pánové Josef a Pavel Karáskovi, dlouholetí včelaři. Oficiální webová stránka [7] obsahuje zajímavý článek o výhodách použití úlové váhy [3] a přináší popis jednotlivých komponent stavebnice včetně jejich ceny. Do stávající podoby byl web rozšířen teprve v březnu 2011 a dá se očekávat, že na něm budou prováděny další úpravy. Všechny části systému se připojují ke společné sběrnici prostřednictvím stíněné dvoulinky zakončené konektory typu JACK, takže je možné si kabel svépomocí snadno upravit. Do systému lze zapojit až 31 vah a další příslušen- ství. Pro pravidelné vážení se používá tzv. záznamník, který je konstruován pro celoroční venkovní provoz, a umožňuje automaticky ukládat hmotnost

5 2. Současný stav a teplotu ze všech vah na sběrnici (zatím je však k dispozici teprve proto- typ). Přenos dat zajišťuje ovladač se záznamníkem, což je zařízení, které se dočasně připojí na sběrnici a zkopíruje data ze záznamníku, případně může měnit nastavení prvků v síti. Poté včelař přenese ovladač k počítači, kde data zpracuje. Pokud jsou úly v blízkosti obydlí majitele, může se sběrnice propojit pomocí dlouhého kabelu přímo s počítačem. Aktuální nabídka za- tím pouze slibuje komunikátor, který umožní přenášet data pomocí blíže neurčené bezdrátové technologie nebo GSM sítě formou SMS. Cena jedné váhy s ovladačem a redukcí na USB kabel činí přibližně 10 000 Kč, což dělá z této stavebnice nejdostupnější registrační váhu na trhu. Velkou výhodou je minimální spotřeba energie a také možnost odečítání čisté hmotnosti. Nevýhodou je pak skutečnost, že zatím nepodporuje bezdrátový přenos. Dá se však předpokládat, že tato funkcionalita bude v budoucnu doplněna.

2.2.2 Bee WISE

Bee WISE [8] je sériově vyráběný produkt francouzského původu, jeho po- řizovací cena se pohybuje okolo 25 000 Kč. Pro měření hmotnosti používá 4 tenzometrické snímače, data přenáší formou SMS. Výhodou je, že k jedné řídicí jednotce může včelař připojit až 4 další váhy a tím sledovat více úlů najednou. Po každém měření je odeslána informační SMS na stanovené tele- fonní číslo. Podle oficiálních stránek činí provozní náklady přibližně 250 Kč měsíčně. Pokud nechce včelař kreslit graf hmotnosti ručně, může si zakoupit GSM modem, který připojí k počítači. To umožňuje s váhou interaktivně komunikovat, například si nechat vykreslit aktuální graf (váha si pamatuje posledních 64 měření). Nevýhodou je, že se při takové komunikaci platí jak za data odeslaná váhou, tak GSM modemem, čímž náklady na provoz ještě více vzrostou. Data se ukládají s rozlišením 100 g, nicméně výrobce uvádí přesnost 100 – 500 g. Zda jsou tato čísla dostatečná, záleží na zvážení cho- vatele.

2.2.3 Úlová váha CAPAZ

Nejpropracovanějším nalezeným produktem je úlová váha firmy CAPAZ [4]. Má nízkou spotřebu, díky které vydrží pracovat bez nabití až 200 dní. K pří- stroji je možné připojit také dodatečné příslušenství, například srážkoměr nebo teplotní čidlo do úlu. Zařízení se konfiguruje prostřednictvím sériového portu, který je možné použít i na prohlížení výsledků uložených v interní pa- měti. Pokud nemá včelař notebook, lze k váze připojit jednoduchý terminál

6 2. Současný stav

(jen o málo větší než mobilní telefon), pomocí kterého je možné změnit nasta- vení nebo jednorázově stáhnout všechna data do počítače. Výrobce dodává k zařízení program, který umožňuje prohlížet výsledky nebo je exportovat do jiných formátů.

Obrázek 2.3: Úlová váha CAPAZ

Mnohem praktičtější je však odesílání dat formou SMS nebo elektronic- kou poštou. Tuto funkcionalitu zajišťuje mobilní telefon, který se připojuje k váze speciálním až 50 metrů dlouhým kabelem. Zákazník také může ne- chat zasílat informace o hmotnosti přímo do sídla firmy, která je za úplatu (cca 550 Kč ročně) zveřejňuje na Internetu. Tímto způsobem byla vyřešena absence podpory přímého připojení k celosvětové síti. Největší nevýhodou uvedeného zařízení jsou vysoké pořizovací náklady, které činí v základní verzi přibližně 32 000 Kč (varianta bez mobilního telefonu).

2.2.4 Telemetrická úlová váha Telemetrická úlová váha [1] je název diplomové práce Petra Bárty, který provedl návrh a implementaci zařízení pro automatické vážení včelích úlů a odesílání výsledků formou SMS. Autor se vývoji přístroje dále nevěnuje ani jej nikde nenabízí ke koupi. Práce je výborným zdrojem zkušeností pro konstruktéry podobných zařízení.

7 Kapitola 3 Návrh architektury systému

Cílem bakalářské práce bylo navrhnout takovou váhu, která by spojila vý- hody již existujících produktů a zároveň odstranila většinu jejich omezení. V dnešní době je již zasílání výsledků formou SMS neatraktivní a zastaralá technologie. V předchozí části práce je vidět, že si výrobci tento fakt velmi dobře uvědomují a snaží se nedostatek obcházet poskytováním dodatečných zpoplatněných služeb místo toho, aby vyrobili nové zařízení. Váha navržená v této práci si klade za cíl dosáhnout následujících vlastností:

• přímé ukládání výsledků měření na Internet,

• vážení s nastavitelnou periodou během dne i roku,

• provoz na baterii i síťový adaptér,

• rozšiřující sběrnice pro připojení periferních zařízení,

• nastavení čisté hmotnosti a její snadná změna,

• měření teploty,

• přesnost přibližně 50 – 100 g.

Navržený systém se skládá ze tří částí: První z nich je úlová váha, která se prostřednictvím bezdrátové sítě připojuje k Internetu. Druhou částí je webový server ukládající naměřená data a třetí subjekt představuje počí- tač včelaře, který se k serveru připojuje a umožňuje prezentovat výsledky v internetovém prohlížeči. Základ váhy tvoří jednočipový mikropočítač, který řídí její činnost. Po připojení zdroje napájení proběhne kontrola připojených periferií a provede se testovací měření teploty a hmotnosti. Následně procesor zapne zařízení umožňující bezdrátový přenos dat a pokusí se navázat spojení. Případné chyby během inicializace jsou očíslovány a jejich kódy signalizuje blikání kontrolní LED diody.

8 3. Návrh architektury systému

Server Včelí úl

Řídicí GPRS Internet jednotka Váha GSM zařízení

Počítač včelaře Obrázek 3.1: Schéma přenosu dat

Po navázání připojení k Internetu zařízení zjistí pomocí DNS dotazu IP adresu serveru pro ukládání výsledků a pošle mu změřené hodnoty. Na jejich přenos se používá běžný protokol HTTP. K datům je rovněž připojeno výrobní číslo přístroje, které umožňuje jednoznačnou identifikaci. Podle něj najde server v databázi správné zařízení a uloží přijatá data. Poté vyhodnotí pravidla vážení a jako odpověď pošle zpátky počet sekund, které zbývají do dalšího měření. Zařízení si čas uloží do paměti a přejde do úsporného režimu, aby šetřilo energii. Sekundy se postupně odečítají pomocí časovače, a když dojdou na nulu, proběhne další měření a proces se opakuje. Pokud chce včelař prostudovat získaná data, stačí mu otevřít internetový prohlížeč a zadat adresu webového portálu s výsledky. Po zadání uživatelského jména a hesla může provádět jak čtení dat, tak i konfiguraci váhy.

USART I2C SPI AD převodník Napěťové přizpůsobení Mikropočítač ATMega128

PORTD PORTA ADC PORTE Zdroj spínán procesorem Tenzometrické můstky Teplotní čidlo Indikační LED, Napájecí zdroj Měření napětí baterie tlačítko

Obrázek 3.2: Blokové schéma zařízení

Jak je vidět na obrázku 3.2, všechny dílčí části váhy jsou připojeny k jed- nočipovému mikropočítači. O napájení celého přístroje se stará stabilizovaný zdroj napětí. Pro bezdrátový přenos dat může být využit GSM terminál nebo

9 3. Návrh architektury systému běžný mobilní telefon s podporou sériové komunikace. Přívod proudu do tele- fonu a snímačů hmotnosti je spínán tranzistory a procesor jej aktivuje pouze v době měření, aby ušetřil co nejvíce energie. Nestabilizované napájecí na- pětí je prostřednictvím děliče připojeno na vstup AD převodníku procesoru, což umožňuje monitorovat stav baterie. Měření výstupního napětí z tenzometrických snímačů hmotnosti nelze provádět pomocí integrovaného AD převodníku jednočipového mikropočí- tače, protože nemá dostatečnou přesnost. Proto návrh počítá s použitím do- datečného obvodu, který se k mikropočítači připojí prostřednictvím sběrnice SPI. Vstupně výstupní brány procesoru jsou použity pro obsluhu různých pe- riferií. Je zde připojeno teplotní čidlo, ovládací tlačítko a dvě signalizační LED diody. V návrhu systému je počítáno také s možností připojení exter- ních senzorů prostřednictvím sběrnice I2C, která bude vyvedena na čelní panel zařízení. Webové rozhraní umožňuje měnit nastavení váhy a zobrazovat naměřené hodnoty formou grafu nebo tabulky s možností exportu do formátu CSV (lze otevřít například v programu Microsoft Excel). Stránka podporuje víceuži- vatelský přístup, k jednomu účtu lze přidat libovolné množství vah.

10 Kapitola 4 Měření hmotnosti a její číslicové zpracování

Velmi častým požadavkem při konstrukci vestavěných systémů je měření ne- elektrických veličin a jejich další zpracování. To vyžaduje přítomnost čidla, které zadanou hodnotu snímá a převádí ji na elektrický signál. Ten může být v závislosti na typu měřidla buď analogový, nebo digitální. Procesor však dokáže pracovat pouze s numerickými hodnotami, a tak je nutné ana- logové vyjádření převést na čísla pomocí AD (analogově-digitálního) pře- vodníku, který bývá velmi často integrovaný přímo v pouzdře jednočipového mikropočítače. Nicméně konverze signálu má za následek snížení maximál- ního rozsahu hodnot i přesnosti, což musí brát návrhář systému v úvahu a v závislosti na typu aplikace zvolit přiměřené technické vybavení i měřicí algoritmy. Tato kapitola se zabývá základy měření hmotnosti pomocí tenzometric- kých snímačů a jejím převodem do digitální podoby. Podrobnější informace o tenzometrech a konstrukci snímačů hmotnosti lze najít v [1].

4.1 Tenzometrické snímače hmotnosti

Tenzometr je elektrotechnická součástka, která se používá pro měření mecha- nického napětí (tenze) prostřednictvím deformace, jež způsobí změnu odporu v něm obsaženého vodiče. Základní principy měření zformuloval anglický fy- zik Robert Hooke již v roce 1676, avšak první elektrické tenzometry byly poprvé použity až před druhou světovou válkou při studiu deformací loko- motivních součástek. Tenzometry můžeme rozdělit na kovové a polovodičové. Senzory z první skupiny obsahují vodič ve tvaru mřížky, zatímco druhá skupina používá pásky vyříznuté z krystalů křemíku nebo germania. Polovodičové tenzometry mají mnohem větší citlivost a zároveň menší rozměry než metalické. Jejich nevýhodou je fakt, že změna odporu je parabolicky závislá na tlaku, kdežto kovové snímače mění svou rezistivitu lineárně. Tenzometr je snímač mechanického napětí a nelze jej použít přímo pro měření síly (hmotnosti, tlaku). V praxi jsou tenzometry připevňovány epo-

11 4. Měření hmotnosti a její číslicové zpracování xidovým lepidlem přímo k povrchu zatěžovaných prvků nebo se integrují do jednoúčelových snímačů. Klíčovou součástí senzorů síly je pružný deformační člen, což je většinou jednoduchá kovová konstrukce, na níž působí měřená síla. Ta způsobuje pnutí v materiálu, které měří několik vhodně umístěných tenzometrů. Velkou pozornost je třeba věnovat použitému materiálu. Ten musí mít minimální teplotní roztažnost, dobrou tepelnou vodivost, malou hysterezi1 a odolnost vůči korozi. Často se používá pružinová antikorozní ocel. Typickým příkladem pružného členu je vetknutý nosník na obrázku 4.1a.

F R1

R2

(a) Vetknutý nosník (b) Snímač hmotnosti

Obrázek 4.1: Vetknutý nosník – nákres a fotografie senzoru

Síla F působí na místo označené šipkou a způsobuje ohyb nosníku. V ma- teriálu vzniká pnutí, které měří dvojice tenzometrů. Tento typ senzoru je vhodný pouze pro měření nejmenších sil, řádově do desítek kN. Pro účely bakalářské práce byly z běžné osobní váhy demontovány čtyři senzory hmot- nosti (obrázek 4.1b), jejichž pružné členy jsou tvořeny právě vetknutým nos- níkem. Na snímačích není žádné typové označení a vedou z nich tři vodiče. Měřením bylo zjištěno, že každý obsahuje dva kovové tenzometry o hodnotě 1 kΩ.

4.2 Můstkové zapojení tenzometrů

Deformace tenzometru způsobí změnu jeho odporu. Rezistivita se však mění jen na řádu µΩ, takže jsou na měrný obvod kladeny velké požadavky. Ve většině případů je potřeba signál několikanásobně zesílit, a proto je nutné eliminovat jakékoliv rušivé vlivy a zajistit kvalitní propojení všech součástí obvodu, aby zbytečně nedocházelo k zesilování chyb. V praxi se při měření téměř vždy používá tzv. Wheatstoneův můstek (ob- rázek 4.2), který místo konkrétních hodnot rezistorů měří jen jejich vzájemný

1. Hystereze je označení skutečnosti, že stav systému závisí na jeho předchozích stavech.

12 4. Měření hmotnosti a její číslicové zpracování

+5 V

R1 R2

0 – 6 mV

R3 R4

GND

Obrázek 4.2: Wheatstoneův můstek poměr a převádí jej na elektrický proud. Zapojení se skládá ze dvou větví, které lze chápat také jako nezávislé napěťové děliče. Každá větev obsahuje dva rezistory, místo kteréhokoliv je možné připojit tenzometr. Všechny re- zistory a tenzometry musí mít v nezatíženém stavu stejný odpor, takže je rezistivita obou větví stejná. Protékající elektrický proud se mezi ně dělí přesně na polovinu, a proto je napětí na výstupu obvodu rovno nule. Takový můstek se nazývá vyvážený. Při zatížení snímače dojde ke změně odporu ale- spoň jedné větve a tím i poměru, ve kterém se dělí elektrický proud. Můstek se rozváží a na výstupu obvodu se objeví napětí UG odpovídající velikosti příslušné změny. Pro jeho velikost platí následující vztah (UB je napájecí napětí můstku):

R1 R2 UG = UB − (4.1) R1 + R4 R2 + R3 Na základě změřeného výstupního napětí je možné spočítat hodnotu li- bovolného odporu (za předpokladu, že známe hodnoty těch zbylých). Rov- nováha na můstku nastává, pokud je splněna následující podmínka:

R R 1 = 2 (4.2) R4 R3 Senzory obvykle obsahují dva nebo čtyři tenzometry, a proto je výhod- nější sledovat rozvážení můstku jako celek než se zabývat hodnotami jed- notlivých rezistorů. Výhodou můstkového zapojení je navíc fakt, že pokud dojde ke stejné změně v obou větvích, výstupní napětí zůstane stejné. Za- pojení tím vlastně „samo“ provádí korekci chyb, které vznikají v důsledku působení okolní teploty. Při návrhu obvodu je nutné brát ohled také na polohu jednotlivých ten- zometrů v rámci snímače. Velmi často jsou totiž nalepovány po párech na místa, kde působí opačné síly stejné velikosti (např. R1 a R2 na obrázku 4.1a), což při deformaci výrazně zvýší rozdíl jejich odporů a můstek se tak

13 4. Měření hmotnosti a její číslicové zpracování více rozváží. V takovém případě je ovšem nutné zapojit oba tenzometry do opačných větví obvodu, aby změny odporu působily opravdu protichůdně. Stejný ohled je třeba brát i na referenční tenzometry, na které nepůsobí žádná síla a slouží jen jako korektory chyby způsobené teplotou. Pokud se provádí měření na více místech, každý senzor musí mít svůj vlastní můstek.

4.3 Zásady návrhu vážícího systému

Napětí, které vychází z tenzometrického můstku, je obvykle velmi slabé. Aby jej bylo možné digitálně zpracovat, musí se nejprve zesílit. Následně je přivedeno na vstup AD převodníku za použití RC filtru, který ořeže jeho nežádoucí vysokofrekvenční složky. Obrázek 4.3 ukazuje typické zapojení vá- žícího obvodu. Na něm si lze mimo jiné všimnout toho, že vstup referenčního napětí AD převodníku byl připojen ke stejnému zdroji jako samotný můstek, díky čemuž kolísání vstupního napětí neovlivňuje naměřené hodnoty. Důvo- dem je fakt, že převodník i samotný senzor měří jen poměry mezi napětím, nikoliv jeho absolutní velikost.

+5 V

+ REF 128 x RC filtr ADC MCU -

Obrázek 4.3: Typické zapojení vážícího systému

Při konstrukci digitální váhy je nejvhodnější použít sigma-delta AD pře- vodník, neboť tato architektura vytváří velmi málo šumu a má dobrou li- nearitu měření (alespoň při nízkých obnovovacích frekvencích). Na trhu jsou navíc k dostání i modely s integrovaným předzesilovačem, který umožňuje vynechat externí předzesilovač a připojit senzor přímo k čipu. Tím se zvýší přesnost, protože specializované integrované zesilovače jsou zpravidla méně náchylné na teplotní výkyvy, které způsobují nežádoucí posun měřených hodnot. Další výhodou je i zjednodušení celého obvodu (každý senzor by vyžadoval svůj vlastní předzesilovač). Velmi důležitá je také volba rozlišení převodníku a počet vstupních ka- nálů, který musí být vždy alespoň stejně velký jako počet senzorů. Důvodem je fakt, že měřená napětí jsou velmi malá, a proto je mezi nimi obecně pro- blém udělat multiplex. Použití většiny běžných součástek totiž způsobuje nepatrné změny vzorku, které znemožňují provést přesné vážení. Z cenových

14 4. Měření hmotnosti a její číslicové zpracování důvodů zpravidla nemá smysl uvažovat o použití kvalitního multiplexeru a je lepší dát přednost dražšímu AD převodníku. Počet použitých senzorů má často vliv na maximální rozlišení převod- níku. Například při konstrukci váhy do 180 kg s přesností na 10 g (1:18 000) s jedním snímačem hmotnosti by bylo nutné použít převodník, jenž obsáhne alespoň 18 000 napěťových úrovní. Podle [5] má být interní přesnost systému alespoň o řád vyšší, což odpovídá rozlišení 18 bitů (218stavů > 180 000). Je- likož jsou nejnižší bity zpravidla nepoužitelné díky šumu a část rozlišení většinou spadá mimo rozsah senzoru, vyžadovala by tato váha pravděpo- dobně 24bitový převodník. V řadě aplikací je však možné předpokládat, že zátěž bude rozložena přibližně rovnoměrně. To umožňuje použít více senzorů hmotnosti a naměřené hodnoty sečíst. Při použití čtyř snímačů by na každý z nich ve výše uvedené váze působil tlak maximálně 45 kg, což odpovídá po- měru 1:4 500. Na takovou váhu by postačoval převodník s nižším rozlišením (a tím i šumem), v optimálním případě 16 bitů.

4.4 Korekce měřených hodnot

Výstupní hodnoty AD převodníku jsou obvykle zkresleny šumem, tj. při soustavném měření konstantní zátěže se data na několika spodních bitech nepatrně mění. Jev není z pohledu návrháře digitální váhy žádoucí a provádí se jeho korekce. Je vhodné zvolit minimální použitelnou frekvenci vzorkování, neboť platí, že množství šumu roste společně s rychlostí měření. Frekvence je však nastavitelná jen u dražších převodníků. Další vylepšení se musí provádět na úrovni ovládacího programu. Nejjednodušší cestou je ignorovat několik spodních bitů, nicméně lepších výsledků se dosáhne zprůměrováním více po sobě jdoucích měření. Nevýhodou druhého přístupu je fakt, že tím výrazně vzroste doba vážení a uživateli chybí okamžitá odezva, což může v řadě situací vadit. V praxi se proto používá jednoduchý průměrovací algoritmus s plovoucím oknem – změřené vzorky se řadí do nekonečné fronty, po které se posouvá plovoucí okno délky M. Z hodnot uvnitř okna se vyřadí nejvyšší a nejnižší číslo a ze zbytku se vypočítá průměr. Výhodou je skutečnost, že celkový výsledek lze aktualizovat stejnou rychlostí, jako probíhá vzorkování. Pro vý- počet měřené hmotnosti y v kterémkoliv časovém okamžiku i platí vztah uvedený v [5]. M odpovídá velikosti okna, x je pole s uloženými daty:

1 M−3 y[i] = X x[i + j] (4.3) M − 2 j=0

15 4. Měření hmotnosti a její číslicové zpracování

Pro implementaci „nekonečné“ fronty se většinou používá kruhová vyrov- návací paměť. Nevýhodou zmíněného algoritmu je pomalá reakce na náhlé změny hmotnosti (je nutné počkat, až se celé okno naplní novými daty). Pro snížení reakční doby se často definuje tzv. prahová hodnota, která určuje maximální rozdíl nově příchozího vzorku od průměru. Pokud dojde k jejímu překročení, pokládá se to za náhlou změnu hmotnosti a okno se ihned celé přepíše čerstvými daty, například průměrem dvou nebo tří právě odebraných vzorků.

4.5 Převodník AD7795 a jeho obsluha

S ohledem na výše uvedená pravidla a relativně dobrou dostupnost byl pro účel bakalářské práce zvolen převodník AD7795 [6], jejž vyrábí firma Analog Devices. Součástka má vestavěný předzesilovač a poskytuje 6 diferenciálních vstupů s rozlišením 16 bitů. To umožňuje bez dalších úprav číst hodnoty přímo z tenzometrických můstků, čímž se zjednodušuje zapojení. Kromě čtyř snímačů hmotnosti bylo nutné připojit už jen zdroj napájení a referenční napětí. Připojení k jednočipovému mikropočítači realizuje sběrnice SPI.

+5 V

AIN1+ REF1+ CLK SCK

AD7795 DIN MOSI ATMega128

AIN1- DOUT MISO SPI

Obrázek 4.4: Zapojení převodníku AD7795 a jednoho senzoru

V zájmu dosažení co největší přesnosti bylo nezbytné zvolit referenční napětí jen o málo vyšší než největší možná měřená hodnota. V návrhu se počítá s tím, že výstupní napětí můstku je nejvýše 9 mV a uvnitř převodníku se 128krát zesílí, což činí 1,152 V. Reference byla získána konstrukcí napě- ťového děliče z rezistorů 24 kΩ a 8 kΩ, který dává při vstupním napětí 5 V výstup 1,25 V. Dělič je napájen stejným zdrojem jako tenzometrické můstky, takže při kolísání vstupního napětí dojde automaticky ke kompenzaci rozdílu a přesnost měření není ovlivněna. AD převodník komunikuje s obslužným mikropočítačem prostřednictvím sběrnice SPI (Serial Peripheral Interface), která se skládá ze vstupního, vý- stupního a hodinového vodiče. Přenos dat řídí procesor, který vysílá data

16 4. Měření hmotnosti a její číslicové zpracování na vstupní vodič převodníku. Za každý vyslaný bit odpovídá převodník tak- též jedním bitem na svém výstupu, takže celá komunikace probíhá jakoby v kruhu, do kterého je možné připojit jedno nebo více2 zařízení podporujících sběrnici SPI. Komunikaci zahajuje vždy procesor, její rychlost řídí generová- ním hodinového signálu. Dokonce i při operaci čtení je nutné, aby procesor odeslal stejné množství dat (nulových biů), jako chce přečíst.

Nastav zápis CONFIG (0x10)

Zapiš CONFIG (0x07, 0x10)

Nastav čtení STATUS (0x40)

Přečti STATUS (0x00)

Data připravena NE (STATUS & 0x80 = 0)

ANO

Nastav čtení DATA (0x58)

Přečti data DATA (0x00, 0x00)

Obrázek 4.5: Měření napětí na prvním vstupu převodníku

Převodník obsahuje celkem 9 registrů, které umožňují číst data nebo mě- nit jeho konfiguraci. Každá operace začíná zápisem do registru COMMUNI- CATION, kde se mimo jiné specifikuje 3bitová3 adresa registru a požadavek na čtení nebo zápis. Před prvním měřením je nutné provést nastavení pře- vodníku zápisem do registrů MODE (nastavení pracovního režimu a rychlosti vzorkování) a CONFIGURATION (řízení předzesilovače, výběr vstupu pro referenční napětí a měřeného kanálu). Získaný výsledek se ukládá v registru DATA, případné chyby se zapisují do registru STATUS. Podrobné informace o převodníku lze nalézt v [6], příklad měření hodnoty vstupního napětí na prvním vstupu obvodu ukazuje obrázek 4.5.

2. Při zapojení více zařízení se aktivní čip zvolí uzemněním vývodu CS (chip select), ostatní obvody přeposílají data bez jakékoliv změny. 3. Komunikační registr nelze číst. Pokud takový požadavek čip obdrží, pošle místo něho obsah registru STATUS. Tímto způsobem je možné se pomocí 3bitové adresy odkázat i na devátý registr.

17 4. Měření hmotnosti a její číslicové zpracování

Při návrhu úlové váhy byl zmíněný převodník zasazen do nepájivého pole a otestován, aby se ověřila jeho přesnost. Měření probíhalo za pokojové tep- loty a pro jednoduchost byl připojen pouze jeden snímač hmotnosti. Kvůli potlačení šumu se každé měření opakovalo 64krát a vrácen byl až průměr získaných hodnot. Po sestavení obvodu začal převodník dávat hodnoty okolo čísla 21 200, což je asi 30 % jeho rozsahu (maximální hodnota je 65 535). Při použití reference 1,21 V a zesílení 128 to odpovídá napětí přibližně 3 mV, což znamená, že můstek byl již v nezatíženém stavu rozvážený. To sice snižuje rozsah vážení, ale jeho přesnost tím není ovlivněna. I přes použití průměrovacího algoritmu byly výsledky částečně zkresleny šumem, což připisuji mimo jiné použití nepájivého pole. Na obrázku 4.6 je vidět rozptyl hodnot při měření identické zátěže o hmotnosti 4 kg. Je patrné, že přibližně čtyři nejnižší bity jsou i po zprůměrování znehodnoceny šumem. Proto byl při dalších měřeních zvýšen počet konverzí na 640.

3,7360

3,7355

3,7350

3,7345 ]

V 3,7340 m [

U 3,7335

3,7330

3,7325

3,7320 0 1 2 3 4 5 6 7 8 9 10

t [s]

Obrázek 4.6: Rozptyl hodnot při měření hmotnosti 4 kg

Dalším kritickým faktorem je linearita měření. Na tenzometrický snímač byla umístěna nádoba, do které se přilévala voda pomocí odměrky přibližně po 50 mililitrech. Při nízkých hmotnostech (řádově do 150 g) nebyl přírůstek zcela lineární, což však není při vážení včelích úlů podstatné. Graf na obrázku 4.7 ukazuje linearitu dat při měření zátěže o hmotnosti 4 – 4,5 kg. Z grafu vyplývá, že 1 dílek na AD převodníku odpovídá hmotnosti 1,2376 g. Velmi podobná závislost vycházela i při vážení menších břemen řádově do 1 kg. Největším problémem je posun hodnot, ke kterému dochází vlivem změn okolní teploty. Díky přítomnosti dvou tenzometrů v jednom snímači dochází ke kompenzaci teplotních výkyvů, takže při zahřívání sa- motného senzoru se měřené hodnoty prakticky neměnily. Mnohem větším

18 4. Měření hmotnosti a její číslicové zpracování

3,8000 3,7900 3,7800 3,7700 3,7600 ]

V 3,7500 m [

U 3,7400 3,7300 3,7200 3,7100 3,7000 3,9 4 4,1 4,2 4,3 4,4 4,5 4,6

m [kg]

Obrázek 4.7: Linearita měření zdrojem chyb je předzesilovač integrovaný v AD převodníku. Při zahřátí pouzdra obvodu na přibližně 55 ◦C došlo k posunu hodnot téměř o 1 kg. Po spuštění kalibračního režimu se chyba výrazně zmenšila (řádově na desítky gramů), avšak nezmizela úplně. Díky 128násobnému zesílení je elektrický signál citlivý na veškeré rušivé vlivy, a proto je přesnost celého systému silně závislá na jeho technickém zpracování a kvalitním propojení tenzometrických můstků s AD převodní- kem. Z tohoto důvodu není možné použít získaná data pro kalibraci proto- typu váhy, ale bude nutné provést nová měření až na výsledném technickém vybavení. Z uvedených dat plyne, že přesnost vážení je asi 50 gramů, což potvrzují i srovnávací testy s digitální kuchyňskou váhou. Tyto parametry jsou pro vážení včelích úlů postačující, a proto byl převodník AD7795 dobrou volbou.

19 Kapitola 5 Připojení k síti Internet pomocí GSM

Připojení k Internetu je dnes již neodmyslitelnou součástí téměř každého počítače. Uživatelé si na něj velice rychle zvykli, a tak není divu, že podobnou funkcionalitu očekávají i od různých vestavěných zařízení, která by mohla prostřednictvím celosvětové sítě komunikovat mezi sebou nebo zasílat data svému majiteli. Dnešní trh s mikropočítači nabízí poměrně velkou škálu produktů, které mají dostatečnou výpočetní i paměťovou kapacitu na to, aby dokázaly zajis- tit příjem nebo odeslání dat do celosvětové sítě. Problém je v tom, že zatím žádný výrobek v sobě neobsahuje hardware, který by dokázal přímo navá- zat bezdrátové spojení. K tomuto účelu je nezbytné použít další zařízení, tzv. GSM modul, který se k mikropočítači připojuje nejčastěji pomocí sério- vého rozhraní. Ten je sice schopen navázat konektivitu do sítě GSM, ale často neimplementuje žádné vyšší komunikační protokoly, takže je na tvůrci za- řízení, aby naprogramoval sadu protokolů TCP/IP, případně další součásti nutné pro přenos dat. Naštěstí je v dnešní době k dispozici hned několik volně šiřitelných knihoven, které se připojením k Internetu zabývají, a tak můžeme upřednostnit hotové řešení před psaním nové aplikace. Mezi nej- známější knihovny patří Micro-IP [9] a lwIP [10]. Další možností je nasazení specializovaného operačního systému, který má přímo v sobě zabudovanou podporu síťování. Takovým je například Nut/OS [11].

5.1 Dostupné GSM moduly a jejich vlastnosti

Použití GSM modulu je přímočarý způsob rozšíření vestavěného systému o možnost bezdrátového připojení k síti. Výhodou je snadné začlenění zařízení do systému. Kromě GSM modulu, který tvoří pouze malá destička plošného spoje, je možné použít také GSM terminál, což je samostatné zařízení určené pro přenos dat, které se připojuje zpravidla pomocí sériové linky. V dnešní době se od použití terminálů ustupuje a nahrazují je menší a rychlejší mo- duly. I zde je však nabídka poměrně pestrá a při výběru vhodného zařízení je dobré brát v úvahu i následující parametry:

20 5. Připojení k síti Internet pomocí GSM

• Napájecí napětí a proud – speciálně u systémů s bateriovým provozem může být tato veličina velmi kritická. Důležitá není jen jeho absolutní velikost, ale také rozsah napětí, se kterým je modul schopen pracovat.

• Komunikační rozhraní – většina modulů je schopna komunikovat přes rozhraní USART (sériová linka), ale některé výrobky umožňují využít například i sběrnici I2C nebo SPI. Často můžeme narazit také na pou- žití dvou přenosových linek současně, kdy jedna slouží pro samotný přenos dat, zatímco druhá pro ladící informace.

• Podporované typy datových přenosů – služba GPRS je standardem, dražší výrobky nabízejí i podporu EDGE nebo 3G

• Podpora vyšších protokolů – Většina GSM modulů podporuje pouze rozšířenou sadu AT příkazů a o implementaci protokolů TCP/IP se musí postarat programátor. K dostání jsou však i produkty, které mají internetové protokoly již integrovány.

• Podpora přenosu zvuku – některé GSM moduly mají zvukové výstupy pro reproduktor i mikrofon, takže dokáží nahradit klasický telefon.

• Držák na SIM kartu – v závislosti na typu aplikace je vhodné zvážit, kde má být SIM karta umístěna, a případně vybrat model, který již obsahuje vhodný adaptér.

• Doplňkové funkce – vybrané výrobky umožňují připojení klávesnice či dokonce displeje. Velmi častým rozšířením je AD převodník, který se používá pro měření stavu baterie. Některé modely dokonce obsahují obvody pro nabíjení lithium iontového akumulátoru, měření teploty nebo hodiny reálného času schopné v nastavený okamžik zaslat pře- rušení procesoru.

Výbava GSM modulů se pochopitelně velmi výrazně promítá do jejich ceny. Ty nejlevnější je možné koupit přibližně za 400 Kč, většinou si však konstruktér připlatí za více funkcí a cena pak může snadno překročit několik tisíc korun. Výhodou dražších produktů je fakt, že mohou zastat některé funkce, jež by jinak musel vykonávat procesor (např. podpora TCP/IP). Vyšší pořizovací náklady GSM modulu pak může vykompenzovat použití levnějšího ovládacího procesoru. Při koupi je třeba mít na paměti také sku- tečnost, že pořizovací náklady ještě vzrostou o cenu příslušenství, kam patří zejména anténa, držák na SIM kartu a v závislosti na typu modulu také propojovací konektory.

21 5. Připojení k síti Internet pomocí GSM

I přesto, že nabídka je poměrně velká, při pořízení konkrétního kusu je možné narazit na problém, protože GSM moduly nejsou příliš často prodá- vaným zbožím a maloobchodní prodejny je většinou ani nenakupují. V době psaní této práce měla nejširší nabídku firma SOS electronic s.r.o. [12]. Při výběru vhodného GSM modulu je také třeba brát ohled na českou legislativu. Protože se jedná o zařízení, které vysílá rádiový signál, musí být jeho použití schváleno Českým telekomunikačním úřadem [13], který postupuje podle evropské směrnice č. 1999/5/ES o rádiových zařízeních a telekomunikačních koncových zařízeních a vzájemném uznávání jejich shody (někdy též R&TTE). Bohužel většina výrobců v katalogových listech neu- vádí, kterým normám odpovídá jejich modul. Velmi často narazíme napří- klad na zařízení schválená pouze ve Spojených státech nebo Kanadě, která by v našich podmínkách neměla být použita. Nejlepším vodítkem při výběru vhodného GSM modulu je značka shody CE, která je v České republice od 1.5.2004 všeobecně uznávána.

5.2 GSM modul SIMCom SIM300

Firma SIMCom je předním výrobcem GSM modulů, mezi její nejpopulár- nější produkty patří právě model SIM300, který je k dostání i v některých maloobchodních prodejnách. Jeho cena se v době psaní práce pohybovala okolo 720 Kč za „pájecí“ verzi, zatímco verze s konektorem byla k dostání za 930 Kč s DPH. Mezi jeho klíčové vlastnosti patří:

• podpora 3 GSM pásem (900, 1800, 1900 MHz),

• GPRS třídy 10/8 (max. 85,6 kb/s při stahování),

• ovládání pomocí AT příkazů,

• přístup k SIM Toolkit,

• napájecí napětí 3,4 – 4,5 V,

• vestavěná podpora PPP a TCP/IP,

• odesílání a příjem SMS,

• podpora klasických telefonních hovorů,

• rozhraní pro připojení klávesnice a LCD displeje,

• dvě sériové linky – přenos dat a ladících informací.

22 5. Připojení k síti Internet pomocí GSM

Předností tohoto modulu je především relativně nízká cena a vestavěná podpora TCP/IP. Své uplatnění by našel v systémech pro vzdálené sledování strojů nebo fyzikálních veličin, ale také v zabezpečovací technice.

5.3 Použití mobilního telefonu jako GSM modulu

Hlavními argumenty, které hovoří proti využití GSM modulu při konstrukci vestavěného zařízení, jsou jeho relativně vysoká cena a špatná dostupnost v maloobchodních prodejnách. Některé levnější typy navíc nemusí být schvá- leny pro použití v České republice a pokud nemají označení CE, je dohledá- vání způsobilosti k použití poměrně obtížné. Zmíněné nevýhody řeší použití mobilního telefonu. Na běžný přenos dat přitom postačuje většina dnes pou- žívaných přístrojů a komunikace je téměř stejná jako s GSM modulem. Avšak použití mobilního telefonu s sebou nese i řadu specifik a problémů:

• Většinu telefonů není možné zapnout jinak než pomocí klávesnice.

• Telefon zpravidla nelze zapnout bez baterie, která je ve většině pří- padů nežádoucí.

• Ne každý výrobce používá standardní RS232 komunikaci.

Výše zmíněné nedostatky je zpravidla nutné řešit individuálně v závis- losti na typu použitého přistroje. Mobilní telefon není vhodný k integraci do sériově vyráběných zařízení, ale velmi dobře se hodí na účely testování a výrobu prototypů vestavěných systémů.

5.4 Mobilní telefon Siemens C60

Pro účely bakalářské práce byl zvolen mobilní telefon Siemens C60. Jeho hlavní výhodou je přímá komunikace prostřednictvím AT1 příkazů, podpora GPRS a nízká cena. Díky jednoduché konstrukci lze přístroj jednoduše za- budovat do prototypu navrženého zařízení. Jak je vidět v tabulce 5.1, sériová sběrnice je vyvedena přímo na systé- mový konektor přístroje. Po zapojení vývodů GND, TX a RX může začít komunikace s jiným zařízením, například počítačem. Telefon používá napě- ťové úrovně 0 V pro logickou 0 a 2,3 V pro logickou 1. Použitý procesor ATMega128 však reprezentuje vysokou úroveň hodnotou 5 V, a proto je nutné provést napěťové přizpůsobení linky podle [1].

1. Standardizovaná sada textových příkazů pro obsluhu modemu.

23 5. Připojení k síti Internet pomocí GSM

Vývod Název Popis 1 Vin Napájecí vstup 2 GND Zem 3 TX Sériová linka - výstup 4 RX Sériová linka - vstup 5 CTS Sériová linka – řídicí, přenos dat příslušenství 6 RTS Sériová linka – řídicí, přenos dat příslušenství 7 DCD Sériová linka – řídicí, hodinový signál příslušenství 8 Audio L Sluchátka – levé 9 Audio - Sluchátka – zem 10 Audio R Sluchátka – pravé 11 GND Mic Externí mikrofon – zem 12 EPP Externí mikrofon

Tabulka 5.1: Vývody konektoru telefonu Siemens C60 [18]

Nízké úrovně signálu si odpovídají, takže je potřebná pouze konverze vysokých úrovní. Ta se ve směru telefon – procesor provádí pomocí Schmit- tova klopného obvodu, ve směru opačném postačuje Zenerova dioda. Schéma zapojení celého obvodu je uvedené na obrázku 5.1.

+5 V 330 Ω 330 Ω

3,3 kΩ 330 Ω

RxD TX Procesor Telefon 500 Ω GND 3V0 TxD RX

Obrázek 5.1: Napěťové přizpůsobení sériové linky telefonu

Telefon používá standardní sériovou komunikaci v režimu 8N1 (8 dato- vých bitů, žádná parita, jeden stop bit) a nabízí široké spektrum přenoso- vých rychlostí. Každý příkaz začíná znaky AT (attention terminal), pomocí kterých přístroj změří aktuální přenosovou rychlost a použije ji pro přečtení zbytku zprávy i zaslání odpovědi. Při posílání většího množství dat je vhodné využít hardwarové řízení toku, které je zajištěno pomocí řídicích signálů RTS a CTS. Nevýhodou zmíněného řešení je fakt, že i tyto dvě dodatečné linky je nutné napěťově přizpůsobit, což zvyšuje složitost zapojení.

24 5. Připojení k síti Internet pomocí GSM

Telefon je standardně napájen lithium iontovou baterií, ale v případě potřeby ji lze snadno nahradit zdrojem stabilizovaného napětí, s čímž také návrh úlové váhy počítá. Přístroj není možné zapnout jinak než pomocí klá- vesnice, nicméně stisk příslušného tlačítka lze dobře simulovat pomocí tran- zistoru. To sice vyžaduje přímý zásah do technického vybavení telefonu, ale jedná se pravděpodobně o jediný spolehlivý způsob řešení tohoto problému.

5.5 Použití AT příkazů k obsluze GSM zařízení

AT příkazy jsou standardizovaná forma textové komunikace původně navr- žená pro obsluhu analogových modemů, ale dnes je možné pomocí nich ovlá- dat většinu zařízení podporujících telefonní komunikaci. Většina výrobců přidává do svých produktů příkazy nad rámec standardu, ale základní sada by měla být vždy stejná, a proto je možné navrhnout univerzální systém schopný pracovat s poměrně širokou škálou modemů a telefonů. Komunikaci vždy zahajuje počítač zasláním příkazu, který ukončuje zna- kem nového řádku (0xD – carridge return). Modem jej vykoná a vrátí výsle- dek. Nejčastější návratovou hodnotou je OK, která označuje úspěch. V pří- padě obecné chyby je vrácen řetězec ERROR, ale řada příkazů definuje své vlastní návratové hodnoty. Následující přehled ukazuje příklady AT příkazů používaných v navržené úlové váze. Jejich podrobný popis je uveden v [19].

• Zkouška spojení: • Zadání kódu PIN: AT AT+CPIN=1234 OK OK

• Stav baterie – první číslo • Zjištění režimu volby sítě a udává stav zapojení nabíječky, názvu aktuálního GSM operá- druhé procento nabití: tora: AT+CBC AT+COPS? +CBC: 0,50 +COPS: 0,0,"T-Mobile CZ"

OK OK

• Zjištění, zda byl zadán PIN. • Zjištění síly signálu a množ- Pokud zadání již proběhlo, ství chyb. První číslo označuje vrací READY: sílu (maximálně 32): AT+CPIN? AT+CSQ +CPIN: SIM PIN +CSQ: 21,99

OK OK

25 5. Připojení k síti Internet pomocí GSM

• Zjištění zbývajícího kreditu • Zjištění výrobního čísla mobil- pro operátora T-Mobile: ního telefonu: ATDT*101#; AT+GSN "Kredit: 163.90 Kc..." 351944000573364

OK OK

• Zavěšení telefonu: • Připojení k Internetu: ATH ATD*99# OK CONNECT

• Inicializace PDP kontextu (potřebný pro připojení GPRS): AT+CGDCONT=1,"IP","internet.t-mobile.cz" OK

Příkaz ATD*99# vrátí řetězec CONNECT a modem začne přenášet binární data, vůči kterým se chová naprosto transparentně. Jedná se o rámce pro- tokolu PPP (Point-to-Point Protocol), které musí umět zařízení připojené k modemu zpracovat. Prostřednictvím protokolu PPP dojde k přidělení IP adresy, DNS serverů a je ustanoven tunel, kterým se začnou přenášet data protokolu IP. Výše zmíněné protokoly je nutné zahrnout do programového vybavení mikropočítače, čemuž se věnuje následující kapitola práce. Po skončení komunikace je potřeba korektně ukončit spojení PPP a „zavěsit“ telefon. Poslední zmíněný krok bývá často problematický, neboť modem standardně interpretuje zasílané příkazy jako data, která se mají přenést po síti. Zavěšení telefonu se proto řeší buď pomocí řídicího vodiče (nastavuje se přes AT příkaz) nebo zadáním posloupnosti znaků +++, která přepne modem zpět do režimu příkazů. Před i po zadání sekvence je nutné alespoň jednu sekundu neposílat žádná data, jinak nebude sekvence inter- pretována správně.

26 Kapitola 6 Návrh programového vybavení

Jádrem navrženého zařízení je mikropočítač ATMega128, který disponuje pamětí typu flash o velikosti 128 kB a poskytuje 4 kB operační paměti. Pro zjednodušení práce a snížení množství chyb je navržená aplikace založena na operačním systému Nut/OS, který mimo jiné implementuje sadu protokolů TCP/IP, což je nejsložitější část celého programového vybavení. Aplikace byla průběžně testována na vývojovém kitu Charon 2, ukázkový výstup je uveden v přílozeD.

6.1 Operační systém Nut/OS

Nut/OS [11] je minimalistický operační systém navržený pro jednočipové mikropočítače architektur AVR a ARM. Jeho součástí je také sada knihoven Nut/Net, které implementují nejen protokoly z rodiny TCP/IP. Celý balík je distribuován pod licencí BSD a poskytuje následující funkcionality:

• Podpora vícevláknového zpracování programu.

• Synchronizace vláken prostřednictvím událostí a semaforů.

• Pohodlná obsluha časovačů.

• Dynamická správa paměti.

• Vstupně výstupní funkce podobné rozhraní POSIX.

• Rozhraní pro ovladače zařízení.

• Podpora souborových systémů.

• Protokoly ARP, PPP, IP, UDP, ICMP, TCP, UDP, DNS (Nut/Net).

K systému je dodáván speciální nástroj Nutconf, který umožňuje pro- střednictvím grafického rozhraní nastavit parametry jádra a pak jej zkompi- lovat. Výsledkem je sada knihoven, které programátor zahrne do vytvářené

27 6. Návrh programového vybavení aplikace a tím získá všechny funkce, které systém nabízí. Nut/OS kvůli pře- hlednosti používá poměrně rozsáhlou adresářovou strukturu, nejdůležitější složka má název app a obsahuje programy. Každou aplikaci je možné samo- statně přeložit a nahrát do mikropočítače. Například zdrojový kód programu na obsluhu úlové váhy se nachází na adrese ethernut-4.8.9/app/wscale.

6.2 Základní část programu

Navržená aplikace je pro větší přehlednost rozdělena do několika modulů, které spolu logicky souvisejí. Nejdůležitější jsou wscale.c, který obsahuje funkci main a řídí běh celého programu, a util.c, jenž obsahuje definice pomocných funkcí a je používán téměř ve všech modulech. Funkce pro práci se speciálními zařízeními jakými jsou mobilní telefon nebo teplotní čidlo byly kvůli přehlednosti vyčleněny do zvláštních modulů (phone.c a temp.c). Po startu aplikace dojde k inicializaci ovladačů zařízení pomocí funkce NutRegisterDevice. Použitý mikropočítač sice neobsahuje funkce pro ochranu paměti, a proto je možné přistupovat k technickému vybavení přímo, ale výhodnější je použití předpřipraveného kódu, protože tím aplikace zís- kává větší nezávislost na použitém hardwaru. Následuje kontrola připojených zařízení. Návrh počítá s použitím AD převodníku na měření hmotnosti a teplotního čidla. V plánu je využití sběr- nice I2C pro připojení externích senzorů. Program se pokusí z každého čidla přečíst aktuální hodnotu, kterou si uloží. Pokud dojde k chybě, označí si daný prvek jako nefunkční. Poslední částí inicializace je práce s mobilním telefonem, které se věnuje následující sekce této kapitoly. Po navázání spojení k Internetu dojde k alokaci paměti, do níž se uloží kostra požadavku pro webový server, a postupně se do ní přidají údaje ze všech funkčních senzorů. Odeslání dat se provede ve funkci dataExchange. Adresa serveru je zadána pomocí makra jako doménové jméno stroje, a proto je zapotřebí ji nejprve přeložit pomocí NutDnsGetHostByName. Poté dojde k otevření socketu, přes který se začnou odesílat informace. Příchozí data se ukládají po malých částech do vyrovnávací paměti a pro- gram je ihned zpracovává. Nejprve ověří, zda hlavička odpovědi obsahuje kód 200, který značí úspěch, a poté čeká na její konec, který signalizuje prázdný řádek. Teprve potom začne přijatá data ukládat. Po ukončení spojení najde v přijatých bytech návratovou hodnotu serveru a počet sekund, které zbývají do příštího vážení. Aplikace počká příslušný počet sekund a poté se vrátí do fáze kontroly připojených čidel, čímž zahájí další vážení.

28 6. Návrh programového vybavení 6.3 Získání aktuální hmotnosti

Zatížení úlové váhy měří čtveřice tenzometrických snímačů, které jsou při- pojeny k šestikanálovému převodníku AD7795. Ten komunikuje s mikropo- čítačem prostřednictvím sběrnice SPI. Kód zodpovědný za vážení se nachází v souboru scale.c. Po startu aplikace dojde k vyvolání funkce spi_init, která provede na- stavení sběrnice. Jak již bylo napsáno v úvodu kapitoly, Nut/OS obsahuje vrstvu umožňující abstrakci připojených zařízení, a proto zmíněná funkce nenastavuje registry procesoru přímo, ale volá službu ovladače spiBus0Avr. Výhodou tohoto řešení je odstínění aplikace od typu použitého procesoru. Komunikace přes sběrnici SPI probíhá formou kruhu, takže je nutné data zároveň odesílat i přijímat. O to se stará systémová funkce bus_transfer, která ve svých argumentech přebírá ukazatele jak na příchozí, tak i na od- chozí pole dat. Samotné vážení provádí funkce getWeight, která nejprve pošle převod- níku patřičnou konfiguraci (konkrétně 0x17, 0x1Y kde Y je číslo aktuálního vstupu) a poté zavolá pomocný kód funkce spi_adc_value. Tím je prove- deno celkem 64 měření napětí, ze kterých se vypočítá aritmetický průměr. Hmotnost se získá dosazením výsledku do vzorce ax − b, který definuje line- ární funkci. Konstanty a a b se volí pro každý senzor zvlášť a jejich hodnoty je nutné změřit až na hotovém zařízení. Stejný postup se opakuje pro všechny čtyři snímače a funkce getWeight vrací celkový součet hmotností. Podle zjištění v kapitole4 poskytuje AD převodník i snímače poměrně dobrou linearitu, avšak měřené hodnoty se mají tendenci v čase posuno- vat. Do budoucna se proto počítá s implementací funkce, která automaticky upraví hodnoty koeficientů b tak, aby váha dávala v nezatíženém stavu vý- sledek nula.

6.4 Měření teploty

Pro měření teploty se používá teplotní čidlo Dallas 18B20, které komuni- kuje prostřednictvím sběrnice 1-wire bus [20]. Ta umožňuje přenášet data pomocí jednoho vodiče. Na sběrnici se zapojuje jedno zařízení typu master, které zahajuje komunikaci, a jedno nebo více zařízení typu slave, která mu odpovídají. Datový vodič je připojen pomocí rezistoru ke zdroji napájení, takže výchozím stavem sběrnice je hodnota logická 1. Kterékoliv zařízení může sběrnici uzemnit, čímž odešle logickou nulu. Komunikaci zahajuje master tak, že uzemní linku na dobu minimálně 480 µs, čímž provede reset sběrnice. Pak vodič uvolní a čeká na puls od

29 6. Návrh programového vybavení připojených zařízení. Pokud jej dostane, přenos dat může začít. Uvedené operace provádí funkce temp_reset definovaná v modulu temp.c. Přenos dat je rozdělen do časových úseků dlouhých 60 µs. Každý úsek začíná nulovým pulsem o délce 1 – 15 µs, za kterým se odešle jeden bit. Lo- gická 0 se posílá uzemněním datového vodiče, zatímco při odesílání logické 1 stačí nechat sběrnici v klidu. Odesílání a příjem dat implementuje funkce temp_io, která zapíše jeden bit na sběrnici a poté vrátí její skutečnou hod- notu (zápisem logické 1 lze přečíst hodnotu sběrnice). Nad ní jsou postaveny vyšší funkce temp_send a temp_recieve sloužící pro přenos celých bytů. Přečtení dat z teplotního čidla probíhá v pěti krocích:

1. reset sběrnice,

2. zaslání adresy (pro oslovení všech zařízení lze použít adresu 0xCC),

3. zaslání příkazu 0x44 pro zahájení konverze teploty,

4. zaslání příkazu 0xBE pro přečtení výsledku,

5. příjem dvoubajtové odpovědi.

Vrácená hodnota je číslo ve dvojkovém doplňkovém kódu o délce až 12 bitů (lze nastavit). Nejnižší čtyři bity obsahují desetinná místa, zbytek je teplota ve stupních Celsia. Celé měření řídí funkce temp_measure, která vrací aktuální teplotu v setinách stupňů jako 16bitové celé číslo, protože tato podoba je pro mikropočítač nejlépe zpracovatelná. Převod teploty do obvyklého desetinného formátu probíhá až na straně webového serveru.

6.5 Obsluha mobilního telefonu

Mobilní telefon je připojen ke druhému sériovému rozhraní mikropočítače (USART1), obslužný kód byl vyčleněn do modulu phone.c. Nejprve se volá funkce phoneUsartInit, která zavádí ovladače zařízení AHDLC (sériová ko- munikace) a PPP (Point-to-Point Protocol). Před připojením k Internetu je zapotřebí provést několik testů telefonu, o které se stará funkce preparePhone. Nejprve je ověřeno spojení s přístro- jem pomocí příkazu ATE. Následně se provádí kontrola nabití baterie a za- dání kódu PIN, který musí být nastaven na hodnotu 1234. V dalším kroku proběhne zjištění jména operátora a podle něj se v předpřipraveném poli operators vyhledá definice přístupového bodu a kódu na zjištění kreditu. Nakonec se zkontroluje síla signálu, zbývající kredit a proběhne přečtení vý- robního čísla telefonu, které se používá na identifikaci váhy. Aplikace o všech

30 6. Návrh programového vybavení provedených krocích informuje v ladícím výpisu, který je uveden v přílozeD. Příkazy nutné k provedení těchto kroků jsou uvedeny v předchozí kapitole. Pokud vše proběhne v pořádku, aplikace provede nastavení PDP (Packet Data Protocol) kontextu a zahájí připojení odesláním příkazu ATD*99#. Tím telefon ukončí příkazový režim a začne přenášet binární data, o jejichž zpra- cování se stará operační systém. Nastavení IP adresy proběhne automaticky po zavolání funkce NutNetIfConfig. Tím je systém připojen k Internetu a přenos dat může začít. Pro ukončení spojení byla napsána funkce disconnectGprs, která nej- prve pošle ukončovací signál síťové vrstvě IPCP, čímž dojde k uzavření spo- jení PPP. Poté je telefonu zaslána sekvence znaků +++, která jej přepne zpět do režimu příkazů, a pomocí povelu ATH je připojení korektně ukončeno.

31 Kapitola 7 Webové rozhraní

Při vývoji úlové váhy byl kladen důraz na snadnou obsluhu a pohodlné pro- hlížení naměřených dat prostřednictvím webového rozhraní. Tento koncept umožňuje majiteli váhy prohlížet výsledky z libovolného místa na světě a na- víc k tomu není potřeba žádné speciální klientské zařízení. Webová aplikace má následující funkce:

• dlouhodobé úložiště naměřených dat,

• víceuživatelský přístup, dvě úrovně oprávnění,

• obsluha více zařízení z jednoho účtu,

• definice pravidel vážení,

• tabulkové zobrazení dat s možností volby rozsahu,

• kreslení grafů,

• export dat do formátu CSV.

Pro implementaci webové aplikace byl zvolen jazyk PHP 5.2, který pod- poruje většina webhostingových služeb. Práce se zjednodušila díky použití frameworku Nette 2.0 [15], databázové abstrakční vrstvě Dibi [16] a Google Chart API [14]. Pro testovací účely bylo webové rozhraní spuštěno na adrese http://ulovavaha.dyndns.org (uživatelské jméno test, heslo test).

7.1 Framework Nette

Při psaní webových aplikací narazí většina programátorů na podobné pro- blémy, kterými jsou například kontrola vstupů zadaných uživatelem nebo autentizace. Ve většině případů nemá smysl řešit tyto situace samostatně a je lepší dát přednost již hotovému kódu, který je k dispozici v podobě

32 7. Webové rozhraní frameworku – podpůrné programové struktuře, která ušetří vývojáři velké množství práce. Nevýhodou použití frameworku je jistý pokles výkonu, který způsobuje vykonávání jeho univerzálně psaného kódu, což v dnešní době ne- představuje významný problém. Pro účely bakalářské práce byl zvolen český framework Nette, jehož hlav- ním autorem je pan David Grudl. Jedná se o sadu malých knihoven dis- tribuovaných pod licencí BSD. Nette dává programátorovi poměrně velkou volnost a zároveň podporuje návrhové vzory, například architekturu MVC (Model View Controller). Usnadňuje vývoj aplikací zejména v následujících odvětvích:

• tvorba formulářů a validace vstupů od uživatele,

• oddělení kódu HTML a PHP,

• psaní aplikací založených na architektuře MVC,

• tvorba snadno zapamatovatelných URL,

• autentizace uživatelů a kontrola oprávnění,

• odesílání elektronické pošty.

Architektura MVC (Model View Controller) je dnes velmi populárním standardem při psaní nejen webových aplikací. Hlavní myšlenkou je rozdělení programu na tři části: aplikační logiku (model), zobrazovací vrstvu (view) a spojovací mezivrstvu (controller).

Model View

Presenter

DB uživatel

Obrázek 7.1: Typická aplikace v Nette

Aplikační logika se stará o zpracování dat, komunikaci s databází, kon- trolu oprávnění apod. Naopak neobsahuje žádné vazby na grafické uživatel- ské rozhraní, jejím úkolem je poskytnout metody pro předávání dat vyšším vrstvám. Nette ve své terminologii označuje aplikační logiku jako model a nepředepisuje mu žádnou speciální strukturu.

33 7. Webové rozhraní

Zobrazovací vrstvy se v Nette nazývají šablony (templates). Pro jejich definici používáme jazyk Latte, který umožňuje do běžného HTML kódu vkládat speciální značky. Ty umožňují například vypisovat proměnné nebo provádět jednoduché cykly. Pro šablonu není rozhodující, kde se data získají, ale jak budou zobrazena. Správně napsaný model by měl být schopen dodávat data „libovolné“ šabloně a naopak dobře vytvořená šablona musí umět zpracovat „libovolná“ data. O propojení obou vrstev se stará prezentační mezivrstva (presenter). Jejím úkolem je transformovat uživatelovy požadavky na volání příslušných metod modelu a vrácená data předávat do předem určené šablony. Prezen- tační vrstva má v Nette podobu objektu, který je přímým nebo nepřímým potomkem třídy Presenter, a definuje jednu nebo více akcí (např. přidání nového uživatele). Nette umožňuje provádět tzv. směrování, což znamená, že po zadání URL provede podle definovaných pravidel jeho překlad na jméno prezentační vrstvy a název akce. Tím dojde v určité třídě z prezentační vrstvy k vyvolání metody actionXXX (kde XXX je název akce), která dá příkaz modelu, aby zpracoval data. V závislosti na výsledku se vybere šablona, která je zobrazí (jméno šablony většinou odpovídá názvu akce). Následně je zavolána metoda renderXXX (kde XXX odpovídá názvu šablony), která umožňuje dodatečně upravit data před jejich zobrazením. Všechny tři vrstvy jsou uloženy ve zvláštních adresářích oddělených od veřejně přístupné části webového serveru, což zvyšuje jak přehlednost, tak i bezpečnost aplikace.

/ app models libs DatePicker presenters log dibi templates temp Nette bootstrap. tests VisualPaginator config.neon www web.config css img js Index.php

Obrázek 7.2: Adresářová struktura aplikace

34 7. Webové rozhraní 7.2 Architektura webové aplikace

Navržená webová aplikace důsledně dodržuje architekturu MVC a používá organizaci adresářů, kterou ve výchozím nastavení nabízí framework Nette. Jednotlivé vrstvy se nacházejí v odpovídajících adresářích podstromu app. Složka libs obsahuje soubory samotného frameworku a knihovny třetích stran. Adresář www je jediným veřejně přístupným místem, jež obsahuje ob- rázky, Javascript a soubor index.php, který je vstupním bodem aplikace.

Šablony

Default Default Default Default Default Create My Add Add Grids Edit Create Edit Edit Data Delete Delete Delete Delete Export Revert Edit Password Activate

Presentery Base ArticlesP AccountsP ScalesP RulesP DataP Presenter

Modely

ArticlesM AccountsM ScalesM RulesM DataM AccountAuth

Article Account Scale Rules Data

DB

Obrázek 7.3: Architektura webové aplikace

Soubor index.php však neobsahuje téměř žádný kód a ihned předává řízení skriptu bootstrap.php, který zavádí samotný framework a načítá nastavení ze souborů config.neon a web.config. Po dokončení inicializace se provede směrování URL a zavolá se patřičná obslužná metoda. Funkcionality uvedené v úvodu kapitoly jsou rozděleny do pěti tříd na manipulaci s články (ArticlesPresenter), správu uživatelských účtů

35 7. Webové rozhraní

(AccountsPresenter), nastavení úlových vah (ScalesPresenter), defi- nici pravidel vážení (RulesPresenter) a zpracování dat (DataPresenter). Všechny jsou potomky třídy BasePresenter, která obsahuje společný kód (například předávání informací o přihlášeném uživateli do šablony). Nejnižší vrstvu aplikace tvoří modely, které představují abstrakci da- tabázových tabulek. Každý z nich disponuje metodami pro načtení dat (findAll), vytvoření (create), úpravu (edit) a odstranění (delete) entity. Pro manipulaci s daty je použita abstrakční vrstva Dibi [16], která díky pou- žití speciální verze jazyka SQL skrývá rozdíly mezi různými typy databází. Z licenčních důvodů byla pro účely bakalářské práce vybrána databáze Post- greSQL, nicméně díky Dibi bude aplikace stejně dobře fungovat i s MySQL nebo Microsoft SQL Server. Datový model aplikace je uveden v přílozeC. Dibi také umožňuje snadno převádět řádky tabulky na objekty, které mohou nést kromě samotných dat i obslužné metody. Každá třída z prezentační vrstvy používá model s odpovídajícím jmé- nem, ale pokud to vyžaduje situace, může používat i další modely. Například AccountsPresenter je závislý také na třídě ScalesModel, neboť stránka „Můj účet“ obsahuje kromě informací o uživateli také seznam jeho úlových vah. Vstupním bodem do aplikace je třída ArticlesPresenter, která zobra- zuje informace o projektu. Rozdělení aplikace na dílčí komponenty je pro uživatele transparentní, plynule mezi nimi přechází pomocí hypertextových odkazů, které generuje Nette. V závislosti na přihlášeném uživateli se zob- razí odpovídající nabídky, například administrátor vidí tlačítka pro úpravu textů.

7.3 Autentizace a autorizace uživatelů

Nette má vestavěné mechanismy, které usnadňují implementaci přihlašo- vání uživatelů. Základním prvkem je třída user, která reprezentuje aktu- ální osobu. Samotná autentizace se provede zavoláním její statické metody login. Framework sám vygeneruje náhodný identifikátor sezení, který je spo- jený s určitou identitou, a uloží jej do uživatelova prohlížeče jako cookies1. Díky tomu je v instanci objektu user přístupná aktuální identita uživatele až do jeho odhlášení nebo uplynutí stanoveného časového limitu. Aby mohlo dojít k ověření totožnosti, je nutné dodat frameworku třídu implementující rozhraní IAuthenticator, která provede kontrolu uživa-

1. Cookie je proměnná, jejíž hodnotu si pro danou stránku pamatuje uživatelův interne- tový prohlížeč

36 7. Webové rozhraní telského jména a hesla. K tomuto účelu slouží jediná povinná metoda authenticate, která v případě úspěchu vrátí objekt třídy Identity. Ten obsahuje detaily uživatelského účtu a případně role, do kterých je zařazen. Pokud se přihlášení nezdaří například kvůli špatně zadanému heslu, musí být vyhozena výjimka AuthenticationException, kterou programátor ošetří ve funkci volající metodu login. Navržená aplikace používá velmi jednoduchou implementaci rozhraní IAuthenticator, která provádí dotaz na databázi a snaží se najít účet s od- povídajícím jménem a heslem. Pro zpracování hesel se používá hashovací funkce SHA1, která převede přihlašovací údaje na unikátní řetězec. V da- tabázi je tedy uložen pouze hash, nikoliv samotné heslo. Při kontrole se z uživatelem zadaného hesla vygeneruje rovněž jeho otisk a ten se porovná se zaznamenaným vzorkem. Jak již bylo řečeno, třída Identity obsahuje seznam rolí, kterých je uži- vatel členem. Jeho obsah se generuje ve třídě pro přihlašování uživatelů a používá se při kontrole oprávnění. Členství v určité roli lze snadno ověřit pomocí metody isInRole, kterou poskytuje třída user. V navrženém sys- tému existují pouze dvě role: „user“ a „admin“. O členství se rozhoduje na základně hodnoty sloupce admin.

7.4 Aplikační rozhraní Google Chart API

Grafový výstup je nejdůležitější součástí navržené aplikace, neboť umožňuje rychlé a pohodlné vyhodnocení naměřených dat. Pro implementaci bylo zvo- leno Chart API [14] od společnosti Google. Výrobce požaduje, aby byla apli- kace používající jejich služby veřejně a bezplatně dostupná, což by mohl být při komerčním použití problém, nicméně pro účely bakalářské práce to není limitující a uvedené podmínky jsou splněny. Chart API generuje široké spektrum grafů – od koláčových, přes spojnicové až po nejrůznější blokové di- agramy. Podporovány jsou také popisky dat a souřadných os. Uživatel může zadat i barvu pozadí, do níž se graf vykreslí, což velmi usnadňuje integraci vráceného obrázku do cílové stránky. Aplikační rozhraní je dostupné na adrese https://chart.googleapis.com, požadavky mu lze zasílat prostřednictvím protokolu HTTP přes požadavky POST a GET. Princip je naprosto stejný jako při například při vyplňování webových formulářů, rozdíl je pouze v tom, že namísto běžné webové stránky je jako odpověď vrácen obrázek s příslušným grafem. Díky použití populárního protokolu je možné používat rozhraní z širo- kého spektra programovacích jazyků včetně PHP a Javascriptu, které jsou v současnosti na webu nejčastější.

37 7. Webové rozhraní

Při odesílání požadavku má vývojář na výběr metody POST a GET. Druhá z nich přenáší data formou parametrů, které následují za URL stránky. Tato metoda je na implementaci velmi jednoduchá, nicméně délka adresy nesmí přesáhnout 2048 znaků, což nemusí v řadě situací stačit. Navr- žená aplikace proto odesílá metodou POST, která má na velikost dat pod- statně mírnější omezení. Tabulka 7.1 ukazuje vybrané parametry, které se posílají Chart API.

Volba Hodnota Význam chid Náhodná ID grafu. Volí se náhodně, aby se předešlo ukládání požadavků do mezipaměti. cht lxy Typ grafu. chs 680x440 Rozměry obrázku (šířka x výška). chxt x, r, y Zobrazené souřadné osy (r je osa y na pravé straně). chco 3072F3,FF0000 Kódy barev pro jednotlivé křivky. chds 0,0,100,10 Minimální a maximální hodnota pro každou křivku grafu. chd t:1,2,3|4,5,6 Seznam hodnot pro každou křivku (hodnoty se oddělují čárkou, křivky rourou). chdl Hm.|Teplota Názvy jednotlivých křivek oddělené rourou. chdlp b Umístění legendy (b znamená dole). chf bg,s,E8E6BF Výplň grafu (jednolitá barva E8E6BF).

Tabulka 7.1: Parametry posílané Chart API

Při používání Nette je přirozené, aby požadavek na vykreslení grafu ob- sloužil některý presenter a namísto šablony vrátil příslušný obrázek. Všechny presentery standardně posílají textovou odpověď, která se vygeneruje pomocí šablony. Proto bylo zapotřebí vytvořit nový typ odpovědi, konkrétně třídu GraphResponse implementující rozhraní IPresenterResponse, která na zá- kladě předaných argumentů zašle požadavek na servery společnosti Google a výsledek vrátí uživateli. Aby nedošlo k vrácení samotného obrázku, volá se presenter (v našem případě DataPresenter) dvakrát. Při prvním volání (s akcí default) vykreslí celou stránku pomocí šablony a do ní vloží obrázek odkazující se na jeho akci graph. Když uživatelův prohlížeč při zpracování stránky narazí na odkaz, zavolá presenter podruhé a dostane už jen samotný obrázek, který vloží na připravené místo.

38 7. Webové rozhraní 7.5 Příjem dat z váhy

Přenos dat mezi váhou a internetovým serverem je realizován pomocí stan- dardního protokolu HTTP. Výhodou tohoto řešení je fakt, že nevyžaduje žádné dodatečné programové vybavení, a proto je možné nasadit webovou aplikaci prakticky na libovolném hostingu. Vstupním bodem pro nová data je adresa http://SERVER/data/data, kterou obsluhuje akce data třídy DataPresenter. Očekávány jsou dva argu- menty, které lze předat metodou POST nebo GET. Prvním z nich je celočí- selná hodnota serialno a odpovídá výrobnímu číslu váhy. Druhý parametr data je typu pole objektů třídy JsonRequest. Jak již název napovídá, pro přenos dat je využíván JSON (JavaScript Ob- ject Notation) [17]. Jedná se o jednoduchý formát, snadno čitelný člověkem i počítačem, a má přímou podporu v jazyce PHP. Při návrhu bylo zváženo také použití protokolu SOAP (Simple Object Access Protocol), který se pou- žívá při tvorbě rozhraní webových služeb. Na rozdíl od JSONu je typovaný a kromě přenosu dat umožňuje i vzdálené volání procedur (RPC). Nicméně tyto funkcionality nejsou pro navržený systém stěžejní a navíc je SOAP díky použití XML syntaxe poměrně náročný na objem přenášených dat, což není při zpoplatněném spojení žádoucí.

POST /www/data/data HTTP/1.1 Host: milacek.local Content-Length: 112 Content-Type: application/x-www-form-urlencoded serialno=1123456789&data=["WS1",{"name":"WS","no":"1", "data":"101240"},{"name":"TEMP","no":"1","data":"2428"}] Obrázek 7.4: Příklad dat odesílaných váhou

Na obrázku 7.4 je vidět typická zpráva, kterou posílá váha na webový server. První čtyři řádky obsahují hlavičku, za kterou následují samotná data. Prvním prvkem pole data je řetězec „WS1“, který označuje verzi for- mátu výměny dat. Za ním následují ve složených závorkách definice objektů JsonRequest. Každý z nich obsahuje jméno čidla, jeho pořadové číslo a naměřenou hodnotu. Na takovouto zprávu může dostat zařízení následující odpověď: Vrácená data jsou typu JsonResponse. Pole status obsahuje hodnotu „OK“, což znamená úspěšné uložení výsledků, zatímco atribut data uvádí počet sekund, které zbývají do dalšího vážení. V případě chyby se její kód

39 7. Webové rozhraní HTTP/1.1 200 OK Date: Sun, 01 May 2011 19:51:52 GMT Server: Apache Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8

{"status":"OK","data":"1189"} Obrázek 7.5: Odpověď webového serveru uvádí v poli status a datová část obsahuje rozšiřující informace, například řetězec, který se nepodařilo rozpoznat.

7.6 Provozní náklady systému

Důležitým parametrem navrženého systému je výše jeho provozních nákladů v podobě poplatků za internetové připojení. Při výběru vhodného formátu přenášených dat bylo provedeno krátké porovnání úspornosti jednotlivých řešení a přepočet objemu dat na cenu. Kromě výše zmíněných JSON a SOAP bylo vzato v úvahu také použití upraveného formátu CSV. Pro všechny tři způsoby vznikly ukázkové zprávy se stejnou informační hodnotou, které jsou uvedeny v přílozeB. Výsledky jsou zaneseny v tabulce 7.2.

Protokol 1 zpráva Zpráv na 100 kb CSV 43 B 2325 JSON 101 B 990 SOAP 792 B 126

Tabulka 7.2: Porovnání úspornosti přenosových protokolů

Nejúspornějším formátem přenosu dat je CSV, jehož zprávy mají více než dvakrát menší velikost oproti použitému JSON. Výhodou JSONu je však přímá podpora v jazyce PHP a navíc se jedná o relativně často používaný standard, který by umožňoval snadné začlenění zařízení do jiného systému. Protokol SOAP byl pro navržený systém vyhodnocen jako zbytečně kom- plexní a neúsporný. Uvedená tabulka má ryze porovnávací charakter, pro- tože nepočítá s velikostí hlaviček protokolu HTTP a rovněž nebere v úvahu minimální účtovací jednotku za přenesená data. Celkový počet měření je v praxi mnohem nižší.

40 7. Webové rozhraní

Na výše uvedené srovnání navazuje průzkum ceníků českých mobilních operátorů. Úlová váha je zařízení, které se bude používat jen během včelařské sezóny, tj. asi 5 měsíců v roce. Proto nemá smysl platit celoroční paušální poplatky a je lepší zvolit některou předplacenou kartu, což značně omezuje nabídku. V dřívějších dobách nebyl mobilní internet tak obvyklý, a proto existoval jediný tarif s poplatkem za přenesená data.

Operátor Paušální Cena Účtovací Měření Tarif poplatek za 1 kB jednotka za 200 Kč T-Mobile 24,00 Kč - - 32∗ Twist (aktuální) denně T-Mobile - 0,06 Kč 5 kB 666 Twist (2010) Vodafone - 0,06 Kč 1 kB 3333 Divoká karta O2 40 Kč - - 140∗ NA!PIŠTE + IVM za týden ∗ Předpokládá 4 měření denně

Tabulka 7.3: Orientační ceník přenosu dat

Všichni operátoři nabízeli shodnou cenu 0,06 Kč včetně DPH, nicméně tyto pro telemetrii vhodné tarify již téměř vymizely. Trendem současné doby je tzv. „internet na den“, který za první připojení odečte jednorázový po- platek a následujících 24 hodin může uživatel přednášet data zdarma (sa- mozřejmě je stanoven maximální limit). Poslední sloupec tabulky 7.3 pře- počítává částku 200 Kč na počet proveditelných měření. Tato suma nebyla zvolena zcela náhodně – jedná se o minimální částku, kterou je nutné ale- spoň jednou ročně dobít, aby nedošlo k propadnutí kreditu (platí pro všechny operátory).

7.7 Pravidla vážení a jejich zpracování

Jako odpověď na příchozí data server posílá váze čas příštího měření. Ten se určuje na základě pravidel, která si definuje včelař prostřednictvím webo- vého rozhraní. Při návrhu systému byl kladen důraz na to, aby se technické vybavení co nejvíce zjednodušilo. Proto veškerá vyhodnocení probíhají na straně serveru a váha dostává jen počet sekund, které zbývají do příštího sběru dat. To s sebou přináší zásadní výhodu – zařízení nemusí obsahovat hodiny reálného času, které by bylo potřeba seřizovat.

41 7. Webové rozhraní

Včelař může definovat libovolné množství pravidel, ke každému zadává rozsah platnosti, časy vážení a dny v týdnu, ve kterých je položka aktivní. Systém předpokládá, že se pravidla nebudou během let měnit, a proto za- čátek a konec jejich platnosti ukládá jako počet dní od začátku roku. Časy měření se zadávají jako řetězec oddělený středníky, aby nebylo nutné defino- vat pro každou hodinu vážení zvláštní pravidlo. Omezení platnosti na určité dny v týdnu má smysl především v zimním období, kdy se hmotnost úlu nemění tak často. Při vyhodnocování pravidel systém pracuje tak, že postupně projde všechny řádky tabulky a vybere nejbližší termín, kdy se má provést mě- ření. Poté porovná výsledek s nastavením maximální doby neaktivity, která se zadává při vytváření váhy, a z obou údajů vybere ten nižší. Při definici pravidel vážení je potřeba mít na paměti, že se změny projeví až při nej- bližším připojení zařízení k Internetu. Nastavení maximální doby neaktivity chrání uživatele před úplnou ztrátou kontroly nad váhou v případě, že by špatně navolil pravidla.

7.8 Moduly pro obsluhu senzorů

Při návrhu systému byl kladen důraz na jeho snadnou rozšiřitelnost, a proto vzniklo rozhraní ISensor, které umožňuje obsloužit libovolný typ čidla. Každý datový vzorek zaslaný váhou obsahuje textový identifikátor senzoru (například hmotnost je označována písmeny WS, teplota TEMP). Dále byla stanovena jmenná konvence, která říká, že třídy pro obsluhu čidel musí mít název ve tvaru SensorXXX, kde XXX je právě identifikátor senzoru. Po při-

Metoda: Návratová hodnota: string getName() Textový popis senzoru. string getUnits() Jméno jednotek. string getColumnName() Jméno hlavního sloupce pro uložení dat v tabulce. array getScheme() Asociativní pole jmen sloupců a jejich datových typů. array handleData(mixed $data, Asociativní pole jmen a hodnot int $scaleId, int $number) sloupců, které se mají uložit.

Tabulka 7.4: Metody rozhraní ISensor jetí dat se webový server pokusí najít třídu s odpovídajícím názvem, která implementuje rozhraní ISensor. V případě úspěchu předá řízení její metodě

42 7. Webové rozhraní handleData, která provede zpracování dat v závislosti na typu čidla. Seznam metod poskytovaných rozhraním ISensor je uveden v tabulce 7.4. Na chování metody handleData nejsou kladena žádná zvláštní omezení, pouze by měla vracet asociativní pole změn, které je třeba provést v databázi. Jako argumenty dostává identifikátor váhy, pořadové číslo senzoru a blíže nespecifikovaná data, která musí umět zpracovat. Výsledky se ukládají do jedné společné tabulky, která kromě obecných informací o měření (čas, ID váhy) obsahuje také sloupce pro data z jednotlivých senzorů. Při ukládání se pomocí metod getColumnName ověří, zda existují všechny potřebné sloupce, a pokud ne, jsou vytvořeny na základě informací z metod getScheme. Pro integraci nového čidla do systému tedy postačuje vytvořit odpovída- jící implementaci rozhraní ISensor a dodržet zmíněnou jmennou konvenci.

43 Kapitola 8 Realizace systému

Cílem bakalářské práce není jen návrh systému, ale také jeho realizace. Násle- dující kapitola popisuje zkušenosti získané při stavbě prototypu úlové váhy.

8.1 Prototypy základní desky

Nejdůležitější komponentou váhy je základní deska. Dílčí části jejího zapo- jení byly průběžně testovány na nepájivém poli a postupně vznikla první a druhá verze prototypu (obrázek E.4). V přílozeE je uvedeno schéma zapojení třetího prototypu, který odstraňuje nedostatky předchozích dvou modelů. V současné době probíhá ověření jeho funkčnosti. První návrh zařízení počítal s využitím jednokanálového převodníku AD7715. Vedly k tomu především finanční důvody a také myšlenka, že vá- žení včelího úlu není časově kritická operace, a proto bude možné pomocí přepínání změřit napětí postupně na všech čtyřech senzorech. Tato úvaha však byla chybná, neboť napětí vycházející z tenzometrických můstků jsou velmi malá (řádově do 10 mV) a při jakémkoliv pokusu o přepínání došlo k je- jich zkreslení. Praxe ukázala, že taková napětí je třeba „co nejkratší cestou“ přivést na vstup AD převodníku, jinak dojde k znehodnocení měření. Proto byl v následujícím prototypu využit převodník AD7795, který poskytuje 6 diferenciálních vstupů, čímž odpadla nutnost řešení multiplexoru. Protože zařízení musí podporovat poměrně velký rozsah vstupních na- pětí (řádově 8 – 24 V), byl pro jeho napájení zvolen obvod PJ34063, který se používá při výrobě autonabíječek na mobilní telefony. Tento obvod pro- vádí regulaci napětí pomocí pulsně šířkové modulace, což je pro napájení procesoru dostačující. V průběhu testování se však ukázalo, že použitý AD převodník má poměrně vysoké nároky na čistotu vstupního napětí a použitý typ zdroje způsoboval nečekané restarty obvodu. Proto byl obvod PJ34063 ve třetí verzi prototypu nahrazen běžně používaným stabilizátorem 7805, který provádí regulaci napětí jiným způsobem. Navíc byly k napájecím vývo- dům převodníku a procesoru přidány tantalové kondenzátory, které vyhlazují vstupní napětí.

44 8. Realizace systému

První dva prototypy používaly jako GSM zařízení mobilní telefon Nokia 6310i, protože se jej podařilo získat s minimálním úsilím. Avšak telefony Nokia standardně používají proprietární komunikační protokol FBUS, který nelze použít k přístupu na Internet. Aby došlo k aktivaci textové komunikace v režimu AT příkazů, musí se k telefonu připojit datový kabel DLR-3, který obsahuje svůj vlastní procesor a podílí se na komunikaci. Datový kabel se sice podařilo úspěšně emulovat pomocí použitého mikropočítače, nicméně to zvýšilo složitost programového i technického vybavení. Během stavby druhého prototypu došlo omylem ke zničení telefonu No- kia. Při výběru náhradního kusu se ukázalo, že zmíněný emulační algoritmus funguje pouze na typu 6310i, jehož cena je vzhledem ke stáří až překvapivě vysoká. Použití telefonu Nokia nebyla dobrá volba, a proto ho ve třetí verzi prototypu nahradil Siemens C60 popsaný v kapitole5.

8.2 Spotřeba energie a napájení zařízení

Vzhledem k tomu, že se bude úlová váha používat v podmínkách, kde nemusí být dostupný přívod elektrické energie, bylo zařízení navrženo tak, aby se mohlo napájet z baterie. Akumulátor nebude přímou součástí váhy, jeho volba i způsob nabíjení jsou ponechány na majiteli zařízení. Vstupní zdroj je založený na stabilizátoru 7805, který má vysoký rozsah vstupních napětí (až 35 V), takže bude možné připojit například autobaterii nebo lithium iontové akumulátory používané v přenosných vrtačkách. Napájecí konektor obsahuje tři vývody. Dva pro samotné napájení a třetí pro detekci typu zdroje. Pokud je třetí vývod uzemněn, zařízení samo pozná, že je napájeno z baterie, a mezi měřené veličiny zařadí také její napětí.

Režim Zapnuté periferie Zdroje přerušení Spotřeba Normální Vše - 15,5 mA Idle SPI, USART, ADC, Časovač, USART, COMPARATOR, externí 12,9 mA TWI, časovače, WDT Power save TWI, WDT Externi, WDT, 11,3 mA Ex. standby∗ Timer0 (async) TWI, Timer0 Power down TWI, WDT Externí, WDT, 11,2 mA Standby∗ TWI * Zůstává zapnutý externí oscilátor

Tabulka 8.1: Úsporné režimy procesoru ATMega128

45 8. Realizace systému

Aby se ušetřila energie, po většinu času se napájí pouze procesor. Mo- bilní telefon a tenzometrické můstky jsou zapínány pomocí tranzistorů jen na dobu měření. Použitý mikropočítač ATMega128 podporuje několik druhů úsporných režimů, které umožňují vypnout jeho dílčí komponenty a tím o něco snížit spotřebu. V rámci úvah o výdrži baterie bylo provedeno jejich krátké porovnání v tabulce 8.1. Změřená spotřeba se nevztahuje jen k sa- motnému procesoru, nýbrž k celé základní desce druhého prototypu. Zajímavým zjištěním bylo, že po odpojení sériové linky vedoucí k počí- tači spotřeba zařízení poměrně dramaticky vzrostla (asi o 45 mA). Důvodem je patrně fakt, že linku drží v klidové úrovni napětí ze sériového portu počí- tače, nikoliv napájecí napětí základní desky. Dobrým úsporným opatřením by proto bylo do příští verze prototypu zahrnout zkratovací propojku umož- ňující odpojit obvod MAX232, který se používá pro konverzi napěťových úrovní sériové linky. Celková spotřeba zařízení v různých okamžicích provozu je vidět na ob- rázku 8.1. Měření bylo provedeno se zapojeným sériovým kabelem. Z grafu podle očekávání vyplývá, že největší spotřebu mám mobilní telefon v době vysílání dat (nezáleží na tom, jestli se dotazuje na stav kreditu nebo provádí přenos dat). Při použití baterie s kapacitou 6 Ah (akumulátor používaný na motocyklech) by zařízení vydrželo přibližně 15 – 20 dní.

250

200 Zapnutí Připojení telefonu GPRS ]

A 150 m [ Odpojení a b

e GPRS ř t 100 o p

S Zjištění kreditu 50 Zapnutí Vypnutí Úsporný můstků telefonu režim 0 0 10 20 30 40 50 60 70 80 90

t [s]

Obrázek 8.1: Spotřeba energie během provozu

8.3 Mechanické části zařízení

Úlová váha je zařízení určené na venkovní použití, a proto je třeba věnovat značnou pozornost také zpracování jeho neelektrických částí, které chrání samotné zapojení před povětrnostními vlivy. Minimální rozměry celého zařízení jsou dány velikostí včelího úlu, jehož půdorys má tvar čtverce o straně 50 cm. Mechanická konstrukce se skládá ze

46 8. Realizace systému dvou rámů vyrobených ze sloučeniny na bázi duralu, které mezi sebou svírají čtyři tenzometrické snímače hmotnosti. Rámy jsou spolu volně spojeny, takže se váha úlu roznáší rovnoměrně mezi senzory. Uprostřed je dostatek místa pro zabudování obslužné elektroniky. Ta bude umístěna ve vodotěsné schránce Gentle Box JE-200 [21], která byla původně navržena pro instalaci aktivních síťových prvků do nepříznivých podmínek. Spodní rám bude mít z jedné strany výřez, který umožní obsluhu zařízení a připojení kabeláže. Nákres celé konstrukce je uveden na obrázku 8.2.

500 mm

500 mm

35 mm 200 mm m m

0 0 40 mm m 5 m

0 0

200 mm 2

Bokorys Půdorys

Obrázek 8.2: Návrh mechanické konstrukce

8.4 Cenové náklady

Následující tabulka shrnuje přehled klíčových součástí navrženého zařízení a jejich přibližnou cenu:

Součást Cena Osobní váha Lidl 249 Kč Mikropočítač ATMega128 180 Kč AD převodník AD7795 340 Kč Mobilní telefon Siemens C60 150 Kč Plošný spoj s fotorezistem 100 Kč Pogumované spínače 40 Kč Odolné konektory 100 Kč Vodě odolná schránka Gentle Box JE-200 370 Kč Mechanická konstrukce (materiál + práce) 1000 Kč Další součástky a drobné výdaje 400 Kč Součet: 2929 Kč

Tabulka 8.2: Náklady na stavbu úlové váhy

47 8. Realizace systému 8.5 Porovnání s dostupnými produkty

Navržené zařízení se nachází zatím stále ve stádiu vývoje, a proto je srov- nání s hotovými produkty poměrně obtížné. Ovšem již nyní lze konstatovat, že bakalářská práce ukázala přednosti moderních technologií, které zatím konkurenční váhy nepoužívají. Česká váha EMMA vůbec nepodporuje bezdrátový přenos dat, systém BeeWISE umožňuje pouze odesílání výsledků formou SMS a produkt CA- PAZ sice disponuje webovým rozhraním, ale i do něj se data dostávají pro- střednictvím krátkých textových zpráv a za pravidelný poplatek. Navržené zařízení se umí připojit k celosvětové síti přímo, což přináší dvě hlavní vý- hody:

• webové rozhraní lze používat pro konfiguraci váhy, což je oproti kon- kurenčním řešením velmi pohodlné,

• provozní náklady jsou menší, neboť cena za přenesený kilobyte je při správné volbě tarifu řádově nižší než cena jedné SMS zprávy.

Všechny popisované úlové váhy podporují připojování periferních zaří- zení, a proto byla do návrhu začleněna sběrnice I2C, která umožní zapojit přídavné senzory, například teplotní čidla nebo další váhy. Bakalářská práce se však nezabývá výrobou těchto externích čidel, ani funkcemi programového vybavení na obsluhu sběrnice. Nevýhodou přístroje je poměrně vysoká spotřeba energie. Konkurenční výrobky mají mnohem větší životnost baterie, například CAPAZ udává až 200 dní. V tomto ohledu vidím velký prostor na zlepšení. Užitečnou vlastností je nastavení čisté hmotnosti, které podporuje za- tím jen váha EMMA. Návrh počítá dokonce se speciálním tlačítkem, které umožní čistou hmotnost automaticky upravovat při manipulaci s úlem. Za největší přednosti zařízení pokládám jednoduchou obsluhu, snadné prohlížení naměřených dat a nízké provozní náklady. Díky přesunutí apli- kační logiky na stranu serveru bude možné snadno přidávat nové funkce.

48 Kapitola 9 Závěr

V bakalářské práci jsem popsal problematiku vážení včelích úlů a jeho hlavní přínosy. Na základě průzkumu současné situace na trhu byl vytvořen návrh architektury nového zařízení a zběžně vysvětlen princip jeho činnosti. Dále jsem se podrobně věnoval měření hmotnosti pomocí tenzometrických sní- mačů a připojením k Internetu prostřednictvím sítě GSM. Získané znalosti byly uplatněny při výrobě prvotních prototypů úlové váhy. Velká část práce je věnována popisu programového vybavení jednočipo- vého mikropočítače a implementaci webového rozhraní, jež umožňuje vy- hodnocovat naměřená data. Kompletní zdrojové texty jsou k dispozici na přiloženém CD. Při vývoji technického vybavení se podařilo úspěšně měřit hmotnost s přesností větší než 100 g a odesílat data pomocí mobilního telefonu. Pro účely testování byl spuštěn webový portál http://ulovavaha.dyndns.org, kde přibližně jeden týden probíhal záznam aktuální teploty. Během psaní textu práce proběhla výroba dvou prototypů úlové váhy, které ověřily funkčnost celého systému, ale zatím nejsou vhodné pro prak- tické nasazení. V přílozeE je uvedeno schéma zapojení třetího prototypu, jehož testování právě probíhá. Bakalářská práce pro mě byla cenným zdrojem zkušeností jak z oblasti informatiky, tak i elektrotechniky. Uvádím zde podrobný popis navrženého zařízení i poznatky získané během výroby jeho prototypů. Díky tomu by se mohla práce stát užitečným zdrojem informací při konstrukci přístrojů z oblasti telemetrie a digitálních vah, což pokládám za její největší přínos. Navržený prototyp úlové váhy bude v blízké době sestaven a nasazen do ostrého provozu na stanovišti v Železných horách. Věřím, že jeho využití bude mít za následek úsporu času a zvýšení efektivity včelařství.

49 Literatura

[1] BÁRTA, Petr. Telemetrická úlová váha. Brno, 2007. 72 s. Diplomová práce. VUT Brno. Dostupné z WWW: .

[2] Atmel Corporation. ATMega128/L Datasheet [online]. San Jose (USA) : Atmel Corporation, 2010 [cit. 2010-11-01]. Dostupné z WWW: .

[3] KARÁSEK, Josef. Vážení včelstev elektronickou registrační váhou. Včelařství. 2010, 10, s. 346-348. Dostupný také z WWW: .

[4] CAPAZ [online]. 2010 [cit. 2011-02-10]. Monitoring bee hive scales to GSM. Dostupné z WWW: .

[5] SLATTERY, Colm; NIE, Mariah. A Reference Design for High-Performance, Low-Cost Weigh Scales. Analog Dialogue [online]. 2005, no. 39, [cit. 2011-02-19]. Dostupný z WWW: .

[6] AD7794/7795 Datasheet [online]. Boston : Analog Devices, 2007 [cit. 2011-03-03]. Dostupné z WWW: .

[7] Úlová váha EMMA [online]. 2010 [cit. 2011-04-06]. Dostupné z WWW: .

[8] BeeWISE [online]. 2010 [cit. 2011-04-06]. Dostupné z WWW: .

[9] Micro-IP [online]. 2000 [cit. 2011-02-14]. Micro-IP main page. Dostupné z WWW: .

50 9. Závěr

[10] lwIP [online]. 2000 [cit. 2011-02-14]. A lightweight TCP/IP stack. Do- stupné z WWW: . [11] Nut/OS [online]. 2004 [cit. 2011-02-15]. Ethernut . Dostupné z WWW: . [12] SOS electronic [online]. 1991 [cit. 2011-02-15]. Dis- tribuce elektronických součástek. Dostupné z WWW: . [13] Český telekomunikační úřad [online]. 2008 [cit. 2011-04-23]. Obecně o posuzování shody. Dostupné z WWW: . [14] Google code [online]. 2011 [cit. 2011-04-23]. Google Chart Tools . Dostupné z WWW: . [15] Nette Framework [online]. 2008 [cit. 2011-04-23]. Nette Framework. Dostupné z WWW: . [16] Dibi tiny ’n’ smart database layer [online]. 2008 [cit. 2011-04-23]. Dibi tiny ’n’ smart database layer. Dostupné z WWW: . [17] JSON [online]. 2009 [cit. 2011-05-01]. JSON. Dostupné z WWW: . [18] PINOUTS.RU [online]. 2010 [cit. 2011-05-10]. Siemens cell phones cable connector pinout. Dostupné z WWW: . [19] AT Command Set Siemens Cellular Engines [online]. [s.l.] : [s.n.], 31.08.2001 [cit. 2011-05-11]. Dostupné z WWW: . [20] MALÝ, Martin. HW.cz [online]. 2004-11-17 [cit. 2011-05-12]. Sběrnice 1-WireTM. Dostupné z WWW: . [21] Wifi.aspa [online]. 2011 [cit. 2011-05-18]. GentleBOX JE-200. Dostupné z WWW: .

51 Příloha A Obsah přiloženého CD

• Text práce v elektronické podobě doc/BP-vojtech.pdf

• Schéma zapojení prototypu váhy nakreslené v programu Eagle doc/schema

• Zdrojové texty webového rozhraní src/www

• Skript pro počáteční naplnění databáze src/vaha.sql

• Zdrojové texty programového vybavení váhy src/ethernut-4.8.9/app/wscale

52 Příloha B Úspornost přenosových protokolů

Ukázka přenosu hmotnosti 101,2 Kg a teploty 24,38 ◦C. Všechny příklady jsou uvedeny bez hlaviček protokolu HTTP.

B.1 SOAP

1 [792 B]

B.2 JSON serialno=1&data=["WS1",{"name":"WS","no":"1","data":"101240"}, {"name":"TEMP","no":"1","data":"2428"}] [101 B]

B.3 Upravený formát CSV serialno=1&data=WS1;WS:1:101240;TEMP:1:2428 [43 B]

53 Příloha C Webové rozhraní

Obrázek C.1: Webové rozhraní systému

54 C. Webové rozhraní

Accounts Rules id integer(10) id integer(10) name varchar(40) scale integer(10) email varchar(40) times varchar(255) Scales login varchar(20) repeat integer(10) id integer(10) password varchar(128) valid_from integer(10) owner integer(10) admin bit valid_to integer(10) serialno integer(10) active integer(10) phoneno integer(10) created timestamp name varchar(50) description varchar(512) Data clean numeric(6, 3) id integer(10) Articles inactivity integer(10) scale integer(10) id integer(10) next timestamp time timestamp name varchar(50) description varchar(512) weight integer(10) sens_ws_1 numeric(6, 3) content blob sens_temp_1 numeric(4, 2) backup blob

Obrázek C.2: Datový model

55 Příloha D Ladící výpis aplikace v mikropočítači

Telemetric Beehive Scale. Powered by Nut/OS 4.8.9.0. (c) 2011 Jan Vojtech, Faculty of Informatics, Masaryk University

Checking temperature sensonr Dallas DS18B20...1500 C (x0.01) OK. Preparing mobile phone for connection... :: Trying ATE...OK. :: Checking battery state...30% OK. :: Getting PIN state...already entered. :: Waiting for GSM network selection...T-Mobile CZ. :: Checking signal strength...23/32 should be enough. :: Checking credit amount...16330 units. :: Reading serial number...351944000573364. Initializing PDP context using APN internet.t-mobile.cz...OK. Configuring PPP...OK :: Local IP: 93.153.89.204 :: Remote IP: 192.168.254.254 :: Primary DNS: 93.153.117.1 :: Secondary DNS: 62.141.0.2 Successfully connected. Welcome online! Creating data to send:

POST /data/data HTTP/1.1 Host: ulovavaha.dyndns.org Content-Length: 116 Content-Type: application/x-www-form-urlencoded serialno=351944000573364&data=["WS1",{"name":"TEMP","no":"1","data":"1500"}, {"name":"CRED","no":"1","data":"16330"}]

Uploading data to remote server... :: Resolving ulovavaha.dyndns.org...OK.

56 D. Ladící výpis aplikace v mikropočítači

:: Connecting to 213.192.10.172:80...OK. :: Sending data...OK. :: Waiting for reply...successfully recieved. :: Processing result...OK, next scaling in 2469 seconds. Closing connection and hanging up...OK

Scaling has been completed successfully. See you later. Going standby.

57 Příloha E Realizace prototypu

CON_1 CON_4 CON_8 Rx 6 5 Tx 6 5 PD1 6 5 RESET 4 3 PWR SCL 4 3 SDA PD0 4 3 +5V 2 1 2 1 2 1 GND Vcc GND +5V SCK GND PHONE I2C USB_ASP

KONEKTOR PRO PRIPOJENI TELEFONU ROZSIRUJICI SBERNICE I2C SERIOVY PROGRAMATOR

CON_3 CON_9 CON_6 3 3 GND 10 9 TDI 8 7 2 +12V 2 +5V 1 1 6 5 TMS 4 3 +5V TDO POWER TEMP SENSOR GND 2 1 TCK GND IC6 JTAG 1 2 +VS VO PROGRAMATOR JTAG NAPAJECI KONEKTOR GND 3 DS18B20

PRIPOJENI TEPLOTNIHO CIDLA

LED1

LED2 5 7 9 1 3 3 3 4

CON_7 R R R R CON_2 10 9 8 7 6 5 6 5 4 3 4 3 2 1 2 1 6 8 0 LED_SW 5 3 3 4

TENZOMETRY R R R R S1

Ovladaci tlacitko TENZOMETRICKE SNIMACE HMOTNOSTI CELNI PANEL

Obrázek E.1: Zapojení konektorů na desce váhy

58 E. Realizace prototypu

TENZOMETERY

V 1 2 5

+ 3 4 5 6 7 8 AD7795RU 9 10 20 GND 19 PSW CON7 6

GND 6 AIN6-/P2 K 1

5 4

AIN6+/P1 R 2 18 AIN4-/REFIN2- 17 AIN4+/REFIN2+ 15 AIN5+/IOUT2 16 12 AIN5-/IOUT1 AIN3- 11 AIN3+ 23 10 DOUT/RDY AIN2- 24 9 DIN AIN2+ 8 AIN1- 3 7 CS AIN1+ 2 CLK 1 14 SCLK REFIN1- 13 REFIN1+ 4 NC

22 21 K K K K

DVDD AVDD 1 1 1 1 7 8 9 0 1 2 3 4 5 1 1 1 2 2 2 2 2 2 GND C15 IC1 K K K K K R 8 R R 1 R R 1 R R 1 R R 1

T3 BC546A +5V AD prevodnik a tenzometricke mustky R7 2,5K

GND 6 P N M O IC2 E C T

20 44 1 2 3 RESET (AD7)PA7 +5V 5 22pF 45 C (AD6)PA6 Q1 23 46 XTAL2 (AD5)PA5 4 47

C (AD4)PA4 24 48 R28 XTAL1 (AD3)PA3 GND Teplotni cidlo F 14,576MHz 49 p K (AD2)PA2 4K7 4 2 0 62 50 2

R 1 AREF (AD1)PA1 64 51 AVCC (AD0)PA0 63 GND 17 R30 1K (OC2/OC1C)PB7 52 16 VCC (OC1B)PB6 21 15 VCC (OC1A)PB5 +5V 22 14 CON8 GND (OC0)PB4 53 13 6 5 GND (MISO)PB3 +5V 12 4 3 (MOSI)PB2 18 11 2 1 1

K PG3(TOSC2) (SCK)PB1 3

0 10

R 1 (SS)PB0 19 PG4(TOSC1) I2C sbernice USB_ASP 42 (A15)PC7 43 41 C16 PG2(ALE) (A14)PC6 N 34 40 I2C E 1 PG1(RD) (A13)PC5 R27

J P 33 39 2 1 PG0(WR) (A12)PC4 1 2 1 38 4 3 PEN (A11)PC3 2K7 GND 37 6 5 (A10)PC2 36 R26 (A9)PC1 35 (A8)PC0 CON4 2K7 GND 32 (T2)PD7 31 (T1)PD6 30 (XCK1)PD5 29 (IC1)PD4 28 (TXD1/INT3)PD3 27 (RXD1/INT2)PD2 26 (SDA/INT1)PD1 25 CON3 (SCL/INT0)PD0 CON2 10K +5V 10 9 54 9 R12 6 5 PF7(ADC7/TDI) (IC3/INT7)PE7 8 7 55 8 4 3 PF6(ADC6/TDO) (T3/INT6)PE6 330 6 5 56 7 R11 2 1 PF5(ADC5/TMS) (OC3C/INT5)PE5 4 3 57 6 PF4(ADC4/TCK) (OC3B/INT4)PE4 2 1 58 5 LED_SW V +5V PF3(ADC3) (OC3A/AIN1)PE3 R10 330 5 59 4 + PF2(ADC2) (XCK0/AIN0)PE2 GND 60 3 JTAG PF1(ADC1) (TXD/PDO)PE1 61 2 GND PF0(ADC0) (RXD/PDI)PE0 0 0 1 3 V MEGA128-A 3 3 5 R 3 R 3 + 3,3K T2 6

100n 1 C R34 BC546A C V 330 2 IC5 C12 K T1

100nF C9 IC5P R 1 1 C13 C1+ D BC546A

N R33

2 G

V+ 5

3 1 C1- 100n DEBUG 6 100nF C10 V- 9 5 4 0 1

C2+ V D

8 4 C11 100n 3 7 3 5 R6 C2- GND GND 6 2 500 1 11 14 CON1 T1IN T1OUT 10 7 6 5 T2IN T2OUT 12 13 4 3 CON5 R1OUT R1IN 9 8 2 1 R2OUT R2IN Vystup pro PC GND MAX232 PHONE + 7 F 0

10K u C 0 0 1 IC3 0 1N4001 F R15 0 n 7805TV 5 1 D3

+5V 9 0 0 6 2 0 LM317T

1 3 4 0 C 1

VI VO R 0 4 0

5 Q3 2 3 N IN OUT

GND 4 D 1 C C

IRF510 4 0 N POWER 2 ADJ 4 3 D 1 3 K 2 1 F F 2 0 IC4 n n R 1 8 + + +

1 C1 0 0 C14

R32 R 3 0 10K 8 F CON9 3 1 u 47uF 2000uF C 0 1 4 1 K GND

R 1 R9 760

Napajeci cast Pripojeni telefonu a jeho napajeni GND

Obrázek E.2: Schéma zapojení navrženého prototypu

59 E. Realizace prototypu G U B

E C 2 I D

C

P P S A B S U

. M O Z N E T D E L G A T J

+ R E W O P

a h a v a v o l u a k c i r t e m e l e T E N

1 1 0 2 h c e t j o V n a J ) c ( O H

2 . 1 e z r e V P

Obrázek E.3: Deska plošného spoje

60 E. Realizace prototypu

Obrázek E.4: Prototyp základní desky (druhá verze)

61