Lekce 16 - Arduino jako Web Client - I. část

23.04.2013 21:42

Translate to English

Takže Vás opět zdrávím po nějaké době. Dneska si budeme hrát s Arduinem se zapojeným Ethernet Shieldem jako Web Client. Kromě Arduina a shieldu nebudeme zatím potřebovat nic. K zobrazení výsledků použijeme zatím Serial Monitor.

     Tak nebudeme nic dále zdržovat. Do Arduina si nahrajeme tento program:

 

Jak vidíte nění na tom nic složitého, já jsem pro tento účel vytvořil stránku test.htm bez samotného html pouze s textem "Ahoj lidi...". Dotaz serveru zasíláme pomocí metody GET. Více o ní najdeme na internetu. V programu 1 vteřinu také čekáme na odezvu serveru, protože bez prodlevy bychom server nestačil odpovědět. Po zapnutí serial monitoru program vypisuje jak připojení probíhá a následně vypíše též hlavičku. A nakonec data z naší stránky. Objeví se tedy nakonec i naše vytoužené "Ahoj lidi..."

Samozřejmně, že v případě html stránky se ze serveru odešlou i html tagy, tuto "nesprávně napsanou" html stránku jsem vytvořil pro zjednodušení prvního příkladu. Ted si načteme platnou html stránku test2.htm a do programu ještě zapíšeme kousek kódu, který bude čekat na odezvu serveru nami určenou dobu a v limitu, který si nastavíme. V předešlém případě program čekal vteřinu i když byl server rychlejší. Svižný server nám odešle data do 20 ms, ale v případě zatížení se tyto hodnoty můžou vyšplhat až na 10 vteřin. My si nastavíme 3000 ms, což by mělo být dostačující. Rychlost odezvy si pro zajímavost odešlene taktéž na Serial Monitor. Tady je program:

V kódu můžete najít i smyčku while, která odpočítává čas limitu. Přeruší se tehdy, kdy je client.avilable() nebo když dojde čas. Jak můžete vidět na obrázku níže, na třetím řádku máme spočítanou odezvu. A po zobrazení hlavičky stránky se ukáže již v platném html kódu nápis "Ahoj...".

 

Tak je hezké co jsme si ukázali, ale pozdravy ze stránky nám stačit nebudou. V dalším příkladu si ukážeme jak "vypársovat" s dat ze serveru nějaké hodnoty a ty poté v programu využít.  Pro tento účel jsem si vytvořil stránku text.aspx, používám server s Asp.net tak proto ta přípona. Opět bude bez html a bude pouze číslo v uvozovkách. my se budeme nyní snažit tyto data dostat do proměné aby mohlo být dále využito v programu Arduina. Nahrajme si tedy tento program:

Snažil jsem se nové části okomentovat aby to pochopil každý. Cílem bylo najít řídící znak pro data což bylo "<". V případě nálezu se proměná bool s názvem "nalez" zmení na true. V tomto případě bude program znaky ukládat do proměné data, ale jen když je hodnota nalez true, což se změní při nálezu koncového řídícího znaku ">". Data jsou ve formátu String. Já jsem ještě do programu vložil kód, který převádí String na Integer. V jazyce C, který používá Arduinu to jednoduše moc nejde, používáme nějprve konverzi do char[] a poté můžeme teprve do Integer pomocí atoi();.

V další částu 16. lekce si vytvoříme program, který by se dal již nějakým způsobem prakticky využít. K tomu bude potřeba i znalosti programování dynamických stránek, ale o tom v dalším díle.  

 

 

Zpět

Diskusní téma: Lekce 16 - Arduino jako Web Client - I. část

Datum
Vložil
Titulek

Chyba v lekci 16

Myslel jsem třetí odstavec od konce :-)

Datum
Vložil
Titulek

Chyba v lekci 16

Třetí odstavec končí slovy " Nahrajme si tedy tento program: " , ale žádnej program se tam nenachází. Zrovna tvořím takovej projekt a toto je nejbližší co jsem našel.
S pozdravem
Petr

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.