Conrad Components 10215 Profi Lernpaket Internet of Things Course material 14 years and over Návod na používanie

Typ
Návod na používanie
Výuková sada Franzis 10215
Obj. č. 142 13 80
Vážený zákazníku,
děkujeme Vám za Vaši důvěru a za nákup výukové sady s programovatelným modulem.
Tento návod k obsluze je nedílnou součástí tohoto výrobku. Obsahuje důležité pokyny k uvedení
výrobku do provozu a k jeho obsluze. Jestliže výrobek předáte jiným osobám, dbejte na to, abyste
jim odevzdali i tento návod k obsluze.
Ponechejte si tento návod, abyste si jej mohli znovu kdykoliv přečíst.
Pro uvedení tohoto modulu IoT-WiFi-Board (dále jen modul / NanoESP) do provozu, bude zapotřebí
použití ovladačů pro USB-to-Serial-Converter. Potřebné ovladače si můžete stáhnout na webu
www.iot.fkainka.de/driver. Software Arduino umožňuje konfiguraci portu a stejně tak i modulu Arduino
Nano (procesor: Atmega328).
Budete-li pracovat s rozhraním sériového monitoru, musíte provést i určitá další nastavení.
V takovém případě se používá přenosová rychlost 19200. Pro odesílání příkazů musíte zvolit
Option CR a NL v menu výběru přenosové rychlosti Bitrate.
IoT-WiFi-Board (NanoESP)
Základním prvkem této sady je právě modul IoT-WiFi-Board (NanoESP), který se skládá ze dvou
hlavních částí. V levé části je Arduino kompatibilní mikro-kontrolér, který je téměř identický jako
Arduino Nano. V pravé části je WLAN modul s označením ESP8266. Obě tyto části spolu vzájemně
komunikují prostřednictvím softwarového, sériového rozhraní.
Modul zahrnuje velké množství komponentů, pinů a LED, které informují o určitém provozním stavu
nebo právě probíhajícím procesu.
Osazení pinů modulu NanoESP
WLAN modul je řízen tzv. AT příkazy. Část modulu s kontrolérem Arduino je spojena s WLAN
modulem na pinech 11 a 12. Deska zahrnuje obvod, který konvertuje úroveň 5 V do kompatibilní
úrovně 3,3 V. Piny 11 a 12 proto nemůžete využívat pro své vlastní projekty.
Základní technické údaje
Mikro-kontrolér ATmega328
Flash memory 32 kB (včetně 0,5 kB pro zavádění dat)
SRAM 2 kB
EEPROM 1 kB
Cycle rate 16 MHz
I/O piny 20 (včetně 2 pro komunikaci s WLAN modulem)
PWM: 6
Analogové vstupy: 6
USB-to-Serial chip CH340G
Provozní (napájecí) napě 5 V
Doporučované vstupní napě 7 – 12 V
Max. proud I/O-pin 40 mA
Flexibilita 3,3 V výstupu 50 mA
WLAN modul ESP8266
SPI-Flash 4 Mbit
Provozní napětí 3,3 V
WLAN standardy 802.11 b/g/n
WLAN režimy Wi-Fi Direct (P2P), Soft-AP
Firmware AT-Firmware Version 0.22
Další vlastnosti integrovaný TCP/IP-stack
+19,5 dBm output power v režimu 802.11b
Integrovaný Low-Power-32-bit-CPU
komunikace přes UART
Obsah výukové sady
1 IoT-WiFi-board (NanoESP)
1 nepájivé pole (deska spojů)
1 m vodiče
2 tlačítka
1 klip baterie
1 LED (červená)
1 RGB-LED (4 vývody)
1 rezistor 10 k (barvy proužků: hnědá, černá, oranžová)
1 rezistor 1 k (barvy proužků: hnědá, černá, červená)
1 fototranzistor (2 konektory)
1 NTC 10 k (termistor)
1 piezo reproduktor
1 potenciometr 10 k s červeným přepínacím kolečkem
V další části návodu se dozvíte o používání AT příkazů. Samotné experimentování pak přináší
nejlepší možnost jako se dokonale seznámit s těmito jednoduchými příkazy pro ovládání modulu.
Spusťte program P01_SoftwareSerial v Arduino-IDE. Jedná se o velmi jednoduchý program,
který přenáší všechna data přes sériové hardwarové rozhraní mikro-kontrolérů a vlastní softwarové
rozhraní do ESP-kontroléru. Celý přenos však funguje i opačně. Ze zdrojového kódu jsou patrné
oba připojovací piny softwarového rozhraní (piny 11 a 12). Tyto piny však ve svých projektech nikdy
nepoužívejte coby piny GPIO (General-Purpose Input/Output). Pro provoz modulu je nezbytné použití
SofwareSerial-Library, která je již u většiny verzí Arduino předinstalována. V opačm případě
použijte funkci Manager a knihovnu si stáhněte.
Po úspěšné instalaci programu můžete na sériovém monitoru spustit rozhraní Arduino.
Předtím však ještě musíte provést dvě důležitá nastavení sériového monitoru. V pravém dolním rohu
aplikace se musí zobrazit přenosová rychlost 19200 a dále v levém okně provést konfiguraci volby
CR a NL. V té chvíli již spatříte určité informace - AT a OK. Příkaz AT byl odeslán mikro-kontrolérem
do ESP-modulu a OK je odpověď modulu. Tímto procesem je dostatečně ověřeno, že WLAN modul
funguje zcela správně a je tak připraven k dalšímu použití.
Výstup v sériovém rozhraní / Serial Monitor
Základní příkazy
Nyní můžete začít zadávat základní příkazy modulu a vyzkoušet tak jeho funkci. Příkaz jednoduše
zadejte a odešlete jej pomocí klávesy „Enter“. Psaní velkých písmen v příkazech je velmi důležité.
Zadejte svůj první příkaz AT a odešlete jej. Program poté příkaz předloží ESP modulu, který odpoví
„OK“. Jako další můžete vyzkoušet příkaz AT+GMR. Tímto příkazem se zobrazí aktuální firmware
a číslo jeho verze. Příkazem AT+RST provedete reset modulu. Modul poté vyšle informaci ready,
což znamená, že je znovu připraven k dalšímu provozu a příjmu nových příkazů.
Vyzkoušejte i například následující příkazy:
ATE0 – deaktivace odezvy (tzv. „echo“) modulu, což představuje komunikaci na úrovni odeslání
příkazu, kde odpověď je znovu stejná jako je původní příkaz. Pokud například odešlete příkaz AT,
odezva nebude AT a poté OK, ale pouze OK. Na úvod však doporučujeme tuto funkci aktivovat
příkazem ATE1.
WLAN příkazy
Pomocí následujících WLAN příkazů můžete provést změny v nastavení modulu a jeho
WLAN části.
Některé příkazy umožňují nejen upřesnění podmínky, ale vyžadují i určitý aktuální stav.
Takové zadání se provádí pomocí otazníku například:
AT+CWMODE?
Následná hodnota bude zpravidla
+CWMODE=2
Následovat bude OK. Pakliže zadáte
AT+CWMODE=?
Modul odešle odpověď s možnými parametry příkazu, v tomto případě 1 – 3. CWMODE je příkaz,
který můžete použít pro specifikaci režimu WLAN. Na výběr jsou celkem 3 operační režimy:
AT+CWMODE=2 – modul coby Access Point (AP Mode)
Ve výchozím stavu je modul Access Point, což znamená, že k němu můžete přímo připojit WLAN
kompatibilní a bezdrátové zařízení, jako je například smartphone nebo PC. Spusťte vyhledávání
WLAN sítí a připojte se k modulu NanoESP. Modul v tomto stavu nemá přiřazené žádné heslo
a umožňuje tak automatické připojení. Připojení k modulu však neposkytuje přístup k internetu,
vzhledem k tomu, že modul není router s vyhrazeným připojením k telefonní síti. WLAN režim je
optimální volbou pro zřízení uzavřené a zabezpečené sítě. K tomu je zapotřebí použití síťového
hesla pomocí příkazu: AT+CWSAP.
Zadání příslušných parametrů proto musíte provést v následujícím pořadí a oddělit je vždy čárkou.
Název sítě v uvozovkách,
Heslo v uvozovkách,
ID kanálu (libovolná hodnota v rozmezí 1 – 13) a režim šifrování (hodnota 0 – 4).
Příklad: AT+CWSAP="MyNanoESP", "MyPassword", 5,3
Po chvilce se na výstupu zobrazí potvrzení OK. Zobrazí-li se chybová indikace ERROR, zkontrolujte
znovu zadání a zejména parametry uvedené v uvozovkách. Pokud se i přesto znovu zobrazí chybová
indikace, ověřte nastavení režimu CWMODE (parametr 2). V případě, že vše správně funguje, můžete
k modulu připojit kompatibilní bezdrátové zařízení. Všechna zařízení připojená k modulu zobrazí svou
IP a MAC adresu po zadání příkazu: AT+CWLIF.
Konfigurace modulu v režimu stanice. IP připojeného kompatibilní zařízení je zvýrazněna:
OK
OK
AT
OK
AT+CWMODE?
+CWMODE:1
OK
AT+CWMODE=2
OK
AT+CWSAP
ERROR
AT+CWSAP=“MyNanoESP“, „MyPassword“, 5, 3
OK
AT+CWLIF
192.168.4.2,48:5d:60:4e:b4:65
OK
AT+CWMODE=1 – modul v režimu stanice (Station mode)
Příkaz AT+CWMODE=1 uvede modul do režimu stanice. Tento režim umožňuje připojení k
bezdrátovému WLAN-routeru. Modul se zároveň připojí k internetu a umožňuje i další konfiguraci.
Příkaz AT+CWLAP poskytne seznam všech dostupných sítí. Pro připojení k routeru musíte zadat
příkaz AT+CWJAP. Tento příkaz je obdobný jako příkaz CWSAP, avšak má významné parametry
jako například název WLAN sítě (SSID) a heslo. Tyto parametry se vždy zadávají do uvozovek
a oddělují se čárkou. Připojení k dalšímu modulu, který je obdobně konfigurován může vypadat
následovně:
AT+CWJAP="MyNanoESP", "MyPassword"
Samotné připojení k modulu pak může trvat několik sekund. Systém následně vyšle status OK.
Pomocí následujícího příkazu můžete zobrazit IP adresu modulu, která mu je přiřazena routerem:
AT+CIFSR
Tento příkaz má význam pro pozdější připojení k TCP-serveru modulu.
AT+CWQAP
Zadáním tohoto příkazu dojde k rozvázání spojení s routerem.
Konfigurace pro připojení dalšího modulu NanoESP
AT+CWMODE=1
OK
AT+CWLAP
+CWLAP:(3,
+CWLAP:(4,
+CWLAP:(4,
+CWLAP:(4,
+CWLAP:(4,
+CWLAP:(3,“MyNanoESP“,-20,“1a:fe:34:a5:ac:78“,5)
+CWLAP:(3,
+CWLAP:(3,
+CWLAP:(3,
+CWLAP:(3,
+CWLAP:(4,
+CWLAP:(3,
+CWLAP:(3,
+CWLAP:(3,
OK
AT+CIFSR
+CIFSR:STAIP,“192.168.4.2“
+CIFSR:STAMAC,“18:fe:34:a4:67:87“
OK
AT+CWMODE=3 – Dual mode
Třetí možnost poskytuje možnost nastavení WLAN v duálním režimu. Jak již ze samotného názvu
plynu, operační režim modulu je v režimu stanice a AP-mode. Tato funkce přináší možnost navázání
přímého připojení k síti WLAN modulu nebo připojení k modulu prostřednictvím routeru, který slouží
jako spojovací článek. Jedná se o velmi praktický operač režim například při použití několika modulů
v interní síti. Modul tak funguje jako server, který poskytuje všechna data do sítě.
Všechny hlavní příkazy naleznete také v příloze tohoto návodu a nebo na webu: www.iot.fkainka.de.
Nenaleznete zde i například příkazy pro konfiguraci přenosové rychlosti. Nesprávné použití těchto
příkazů a následná konfigurace mohou způsobit nestabilitu a disfunkci modulu.
Automatická konfigurace
Následující základní příkazy můžete manuálně otestovat. Dozvíte se zároveň jakým způsobem mohou
být příkazy automaticky používány samotným kontrolérem. Naučíte se i jiné příkazy, které můžete
použít pro testování dosažitelnosti počítače nebo serveru v síti. V následujícím experimentu bude
odeslán diagnostický příkaz (ping) na internetový server Google. Použít proto můžete program
P02_GooglePing, který automatizuje celou řadu různých procesů, které jinak musíte zadávat ručně.
Kontrolér odešle příkaz do ESP modulu v takovém pořadí, v jakém dochází k připojení do WLAN.
Různé časové limity tak dávají modulu dostatek času na odeslání odpovědi. Proto, aby mohl program
správně pracovat, musíte zadat pro vaší WLAN data #define SSID a #define PASSWORD přímo
na začátek zdrojového kódu programu. Modul však vyžaduje přístup k internetu, aby mohl spustit
svůj poslední příkaz. Příkaz AT+PING se odešle na všechna zařízení v síti. Příkaz „ping“ odešle dotaz
ke zjištění, zda je počítač v síti dosažitelný. V tomto případě je server Google dotazován příkazem
AT+PING=“www.google.com“. Po obdržení odpovědi se zobrazí korespondující indikace na sériovém
monitoru a LED „D3“, která je připojena k pinu D13 se aktivuje. Tím došlo k prvnímu úspěšnému
navázání komunikace s internetem.
Program
V této části ověříme funkce programu krok po kroku. Jako první se budeme zabývat komunikací
s modulem.
1) Serial communication (sériový přenos)
Tato komunikace pracuje prostřednictvím sériového softwarového rozhraní a Software-Serial-Library.
Při samotné inicializaci je nezbytné provést indikaci pinů, v tomto případě pinů 11 a 12.
#include <SoftwareSerial.h>
SoftwareSerial esp8266(11, 12);
Stejně jako u běžného sériového rozhraní můžete přenést bajty nebo celé řádky pomocí příkazů
esp8266.print nebo esp8266.println. Příkazy esp8266.find a esp8266.findUntil, díky kterým dochází
k přenosu, mohou být rovněž využity. Zároveň je díky tomu možné velmi jednoduše zachytit odezvu
modulu. Pokud se však nezobrazí očekávaný řetězec znaků, může trvat nějakou dobu, než bude
program pokračovat v dalším procesu. Doba (time-out) je definována esp8266.setTimeout. Příkaz
findUntil() je možné použít pro určení druhého řetězce znaků, u kterých dojde k zastavení vyhledávání
a návratu hodnot false coby hodnoty pro návrat. Tohoto procesu použijeme díky funkci sendCom():
//-------Controll ESP--------
boolean sendCom(String command, char respond[])
{
esp8266.println(command);
if (esp8266.findUntil(respond, "ERROR"))
{
return true;
}
else
{
debug("ESP SEND ERROR: " + command);
return false;
}
}
Při použití této funkce je nezbytné potvrdit příkaz a očekávanou hodnotu pro návrat funkce, například
AT a očekávanou hodnotu návratu OK. Zadání println() vyšle příkaz a vyčkává přijetí očekávaného
hodnoty pro návrat nebo obdržení chybového stavu ERROR. Pakliže dojde k obdržení očekávané
hodnoty, funkce vrátí hodnotu true. V opačném případě bude modul používat funkci debug() pro
návrat ESP SEND ERROR a odešle příkaz. Tím je pak velmi snadné zjistit, který příkaz způsobil
chybový stav.
Ne však všechny AT příkazy mají unikátní nebo one-line hodnotu pro návrat. Jestliže například byl
odeslán dotaz na IP adresu, není většinou předem známa hodnota. Proto druhá funkce sendCom()
bude platná pouze při zadání parametru příkazu a vrácení celého přijatého řetězce.
Řetězec by však neměl být příliš dlouhý, aby nedocházelo k přetížení bufru SofwareSerial.
String sendCom(String command)
{
esp8266.println(command);
return esp8266.readString();
}
2) Řešení problémů
Během samotného programového vývoje dojde k mnoha potížím a různým konfliktům.
Pro maximální a efektivní odstraňování programových chyb jsou na výběr 2 možnosti, které můžete
aktivovat nebo deaktivovat prostřednictvím parametrů zadávaných na začátku programu.
#define DEBUG true
Tato první možnost neprovádí žádný proces. Poskytuje pouze zjednodušený textový výstup
prostřednictvím sériového rozhraní, které je definováno jako výchozí. V případě, že konstanta DEBUG
je true, obsah řetězce Msg bude odeslán.
void debug(String Msg)
{
if (DEBUG)
{
Seriál.println(Msg);
}
}
Druhou funkci je pak možné velmi jednoduše vysvětlit. Po volání (call) funkce serialDebug,
se program přepne do trvalé smyčky (permanent loop) a od té chvíle se bude chovat jako první
testovaný SoftwareSerial program. Všechna data odeslána do kontroléru přes sériový monitor
budou předány do modulu a stejně tak i obráceně. V případě chybového stavu můžete volat
funkci a manuálně odeslat příkazy pro zjištění chybové oblasti.
//---Debug Functions---
void serialDebug(){
while (true)
{
If (esp8266.available())
Serial.write(esp8266.read())
if (Serial.available())
esp8266.write(Serial.read());
}
}
3) Konfigurace
Pro maximální vylepšení a celkovou programovou přehlednost došlo k odstranění většiny nastavení u
jednotlivých funkcí. V první řadě tomu tak je u funkce espConfig, ve které jsou nejdůležitější parametry
příslušného programu již nastaveny.
//---Config ESP8266---
boolean espConfig()
{
boolean success=true;
esp8266.setTimeout(5000);
success&=sendCom(„AT+RST,“ready“);
esp8266.setTimeout(1000);
if (configStation(SSID,PASSWORD)) }
else
{
success&=false;
}
success&=sendCom(“AT+CIPMODE=0“,“OK“);
success&=sendCom(“AT+CIPMUX=0“,“OK“);
return success;
}
Na začátku funkce je proměnná success nastavena jako první na true, vzhledem k tomu,
že tato proměnná je přidělena i různým funkcím. To znamená, že i když pouze jedna funkce má
hodnotu pro návrat false, bude success okamžitě považován za výstup false a celá konfigurace
tím selže. První AT-příkaz, který má být posuzován z pohledu success je reset-command,
který se provádí prakticky na každém začátku programu a zajišťuje, aby modul nebyl využíván
předchozí testovací částí programu. To však může trvat až 5 sekund. Modul poté odešle informaci
o svém statusu (ready). Z tohoto důvodu se time-out pro esp8266.findUtil zvýší před samotným
provedením funkce thesendCom(). Po resetu se time-out vrátí do výchozí hodnoty 1 s.
Následuje volání automaticky definované funkce configStation(), která slouží pro připojení modulu
do místní (domácí) sítě. Parametry SSID a síťové heslo zadané na začátku programu se přitom
budou přenášet. V případě úspěšného navázání připojení se zobrazí korespondující informace a poté
se přenese IP adresa modulu do sériového výstupu. Na závěr funkce dojde k nastavení parametrů
(více v dalších částech v návodu). Nakonec proměnná success bude vrácena a tím bude udržována
hodnota true.
boolean configStation(String vSSID, String vPASSWORD)
{
boolean success=true;
success&=(sendCom(“AT+CWMODE=1“, “OK“));
esp8266.setTimeout(20000);
succes&=(sendCom(“AT+CWJAP=\““+String(vSSID)+ “\ “,\ “ “
+String(vPASSWORD)+ “\ “ “, “OK“));
Esp8266.setTimeout(1000);
return success;
}
Funkce configStation() byla volána funkcí espConfig(). Modul je konfigurován z WLAN režimu
do režimu stanice pomocí příkazu CWMODE a připojení do sítě probíhá pomocí příkazu CWJAP.
Navázání připojení pak může trvat o něco delší dobu. Time-out se přitom krátce navýší o 20 sekund.
Pakliže preferujete WLAN režim zadejte CWMODE a parametr 3.
boolean configAP()
{
boolean success=true;
success&=(sendCOm(“AT+CWMODE=2“,“OK“));
succes&=(sendCOm(“AT+CWSAP=\“NanoESP\“,\“,\“,5,0“,
“OK“));
return success;
}
Funkce configAP() není volána (call). Jedná se o přesný opak funkce configStation(), vzhledem
k tomu, že je použita pro konfiguraci modulu do režimu Access Point. Delší nastavení time-out v tomto
případě není zapotřebí, vzhledem k tomu, že modul provádí proces příkazu CWSAP mnohem rychleji.
V dalších experimentech bude použito espConfig() namísto configStation() pro volání funkce
configAP().
void setup()
{
//Open serial communications and watt for port to open;
Serial.begin(19200);
//set the data rate for the SoftwareSerial port
esp8266.begin(19200);
if (!espConfig())serialDebug();
else debug(“Config OK“);
if (Seneci(“AT+PING=“\www.google.com\““,“OK“))
{
Serial.printl(“Ping OK“);
digitalWrite(13,HIGH);
}
Else
{
Serial.println(“Ping Error“);
}
}
void loop()//run over and over
{
//Start serial Debug Mode – Type commands over serial
Monitor
serialDebug();
}
Většina nejdůležitějších funkcí, které jsou součástí téměř většiny programů, bude v dalších částech
návodu podrobněji popsána. Tyto funkce se používají v Arduino funkcích setup() a loop().
Jako první dojde k inicializaci dvou sériových rozhraní s přenosovou rychlostí 19200.
Teprve poté je možné volat funkci espConfig(). V případě chybového stavu se spustí funkce
serialDebug(). V opačném případě se zobrazí korespondující informace (success). V dalších
programech pak navíc dojde v případě úspěšného procesu a konfigurace k rozsvícení LED na pinu
13 coby korespondující indikace. Tímto způsobem zároveň obdržíte zpětnou vazbu, v případě,
že modul není připojen k PC prostřednictvím sériového monitoru. V tomto experimentu se bude
LED indikace používat pro zpětnou vazbu procesu ping. Dotaz se provádí přímo v dalším řádku
konfigurace. Příkaz AT+PING se odesílá s adresou Google coby parametrem. Dotaz na IP adresu
je možné odesílat z místní sítě namísto aktuální adresy. V případě úspěšného procesu se zobrazí
korespondující informace a zároveň přitom se aktivuje LED na pinu D3. Nakonec program přeskočí
do funkce loop a tím vyvolá funkci serialDebug().Tím máte možnost otestovat i jiné programové
příkazy a zároveň i jiné internetové adresy.
Rozpoznání sítě
V této části naleznete
popis jednoduché
hardwarové
konfigurace.
Hlavním úkolem
tohoto projektu bude
vytvoření indikačního
systému (alarmu),
který zaznamená
vstup a aktivaci
specifické sítě
do oblasti
bezdrátového
dosahu modulu.
K tomu bude zapotřebí
pouze 2 hlavních
komponentů
a několika málo vodičů. Přesné sestavení naleznete na následujícím obrázku. K sestavení tak
bude zapotřebí deska (nepájivé, kontaktní pole), modul NanoESP, vodiče a 1 piezo reproduktor.
Zdrojový text tohoto projektu se výrazně liší od předchozích experimentů v následujících funkcích:
void findSSID()
{
Esp8266.println(“AT+CWLAP“);
If (esp8266.findUntil(ToFindSSID, “OK“)) alarm();
}
void alarm()
{
debug(“alarm!“);
digitalWrite(LED_ALARM,HIGH);
for (int i; i <=30;++)
{
tone(PIEZO,400,500);
delay(500);
tone(PIEZO,800,500);
delay(500) ;
}
digitalWrite(LED_ALARM,LOW);
}
Funkce findSSID() je aktivována každých 30 sekund v nepřetržité smyčce (loop-routine) a bude
provádět skenování všech dostupných sítí ve vašem okolí. Po vyhledání sítě se aktivuje funkce
alarm a současně přitom zazní zvuková signalizace a vizuální indikace prostřednictvím LED na pinu
D3. V tomto příkladu budeme vyhledávat síť s SSID NanoESP, popřípadě jiného modulu NanoESP
v okolí. Pro vyhledávání navíc můžete definovat i jinou SSID a to pomocí příkazu #define ToFindSSID,
umístěného na začátek programu. Tímto programem můžete například zjišťovat konkrétní bezdrátový
dosah vaší WLAN sítě.
UDP a IP
V této části se budeme zabývat pojmy jako je IP adresa, porty a protokol UDP.
IP adresa
IP adresa funguje prakticky stejně jako e-mailová adresa. Prostřednictvím IP adresy dochází
k identifikaci a adresaci počítačů v síti. IP adresa společného IPv4 standardu může vypadat třeba
následovně:
IP 192.168.4.1
IP adresa má k dispozici celkem 4 čísla nebo přesněji 4 bajty. Hodnota jednotlivého čísla může být
nejvýše 255. Existují místní IP adresy, tedy adresy, které jsou přidělovány síťovým počítačům a
různým zařízením v domácí síti a globální IP. Místní IP adresy jsou obvykle přidělovány routerem a
zpravidla začínají čísly 192.168. Další čísla jsou pak specifická pro daný router. V případě, že bude
modul NanoESP konfigurován jako přístupový bod (Access Point) a připojíte k němu svůj počítač,
získá IP adresu 192.168.4. Zároveň se tím vytvoří i vlastní podsíť (subnet). Router Fritz!Box přiděluje
místní IP adresy podle schéma 192.168.178.X. IP adresu svého počítače můžete zjistit po zadání
příkazu ipconfig do příkazového řádku v nabídce Start – Příslušenství – Příkazový řádek.
Do aktivního řádku zadejte příkaz ipconfig a odešlete jej stiskem klávesy Enter. Operační systém
následně poskytne podrobný seznam, který obsahuje bod s IPv4 adresou a vaší místní IP adresou
v síti.
Globální IP adresy jsou obvykle přidělovány poskytovatelem internetového připojení - Internet Server
Provider (ISP). Tuto globální adresu zprostředkovává bezdrátový router a přijatá data dále předává
počítačům (clients). Jedním ze způsobů jak zjistit globální IP adresu je možnost přejít například na
web: http://www.meine-aktuelle-ip.de/, kde naleznete velmi přehledný souhrn všech identifikačních
údajů o vašem počítači a navíc i informace o používaném operačním systému, ISP, údaje o použitém
rozlišení monitoru a internetovém prohlížeči. Díky IP adrese v síti internetu tak nejsou veškeré aktivity
zdaleka anonymní.
Port
Obdobně jako je například jedinečná poštovní schránka u každého domu, slouží port něco jako
hlavní vchodové dveře do domu. Počítač s jedinečnou IP adresou může prostřednictvím různých
portů poskytovat různé služby. Přístup k určitému serveru můžete získat díky IP, ale v rámci určitého
portu je pak nezbytné vybrat konkrétní službu. Port 20 může například sloužit pro přenos FTP dat
a port 23 může zajišťovat připojení do telefonní sítě. Výběr portů je většinou velmi flexibilní, avšak
jejich standardizace přináší daleko jednodušší aplikaci. Seznam standardních portů můžete nalézt
například na portále: http://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports.
UDP
UDP je zkratka z anglického User Datagram Protocol. UDP je zjednodušený internetový a přenosový
protokol, který neposkytuje záruky na přenos dat mezi jednotlivými počítači. UDP protokol má však
následující speciální vlastnosti:
UDP je schopen vysílání.
Neposkytuje žádný přehled o přesnosti nebo opravu chyb.
Nedává žádné záruky na úspěšný přenos dat.
Neposkytuje záruku na nepoškození dat nebo toho, že nedošlo k předání dat třetím stranám.
K jeho provozu není zapotřebí připojení. Zajišťuje rychlou výměnu dat.
Zajišťuje jen velmi malé prodlevy během samotného přenosu.
Poskytuje korespondující formát, například VoIP (Voice over IP – například telefonické hovory).
Výměna dat mezi modulem a PC prostřednictvím UDP
V tomto projektu bude probíhat výměna dat mezi modulem a PC v síti WLAN.
Základním předpokladem proto je počítač vybavený WLAN adaptérem a vhodná aplikace
pro příjem informací. Pro tento experiment přitom nebude zapotřebí žádného zvláštního
hardwarového vybavení.
Program
Po načtení programu P04_UDPBasics.ino do kontroléru, který je konfigurován jako AP, se vytvoří
otevřená síť s názvem NanoESP. Před připojením do sítě si stáhněte tento program na internetu.
V tomto experimentu je použito programu Packet Sender (vývojářem je Dan Nagle) a stáhnout jej
můžete na portále: https://packetsender.com/.
Po stažení a úspěšné instalaci programu můžete svůj PC připojit do otevřené sítě s názvem
NanoESP. Ujistěte se však o tom, že ochranná funkce firewall zaznamená síť coby místní síť.
V opačném případě bude tato funkce data blokovat. Počítač by měl mít IP adresu 192.168.4.2.
Ověřit IP adresu můžete po zadání příkazu AT+CWLIF. Tento příkaz zobrazí všechny počítače
připojené k AP s jejich IP a MAC adresou. Spusťte program Packet Sender a nastavte UDP server
port na 90. Přejděte proto do nabídky nastavení a síťové konfigurace. Aktivujte možnost použití UDP
serveru (Enable UDP Server).
Program v počítači vytvoří UDP server, zatímco kontrolér je konfigurován jako klient.
Rozdíl mezi klientem a serverem se neprojeví v UDP protokolu, ale je tak poskytována
možnost odeslání dat z kontroléru do počítače.
RESET OK
AP ready
UDP ready
AT+CWLIF
192.168.4.2,48:5d:60:4e:b4:65
OK
AT+CIPSEND=?
OK
>Hello
SEND OK
Pro odeslání dat použijte příkaz: AT+CIPSEND=7. Parametr 7 představuje počet odeslaných
znaků. Symbol > je hodnota pro návrat a znamená to, že v té chvíli můžete odeslat svou zprávu.
Zadejte „Hello“ a potvrďte klávesou Enter. Modul podá informaci SEND OK, přestože jste zadali
pouze 5 znaků. Po zadání Carriage Return a New Line dojde k odeslání. V případě 2 znaků navíc
pak je do zadání zapotřebí zahrnout funkci výpočtu délky zprávy (message lenght calculation).
Poté, co přejdete zpět do aplikace Packet Sender a logu Traffic, získáte informaci o obdržení zprávy.
V zobrazení ASCII budou navíc k dispozici 2 přidružené znaky zastoupené \ r a \ n.
boolean configUDP()
{
boolean success = true;
success &= (sendCom("AT+CIPMODE=0", "OK"));
success &= (sendCom("AT+CIPMUX=0", "OK"));
success &=
sendCom("AT+CIPSTART=\"UDP\",\"192.168.4.2\",90", "OK");
//UDP-Server
return success;
}
V programu Arduino má funkce configUDP() zvláštní význam pro komunikaci a nastavují se zde proto
velmi důležité parametry. Jako první použijte CIPMODE k nastavení režimu data transparency mode
na 0. Na závěr pak použijte CIPMUX=0 pro zřízení pouze jednoho připojení. Hlavní příkaz je CIP-
START, kterým dojde k vytvoření komunikace s IP adresou 192.168.4.2 například vašeho počítače
a portu 90 použitého pro program Packet Sender s UDP serverem. Pro zajištění první komunikace
je nezbytné provést několik dalších kroků.
Odesílání a příjem dat s UDP
V předchozím projektu došlo k testování UDP komunikace v jednom směru (z modulu do PC).
V tomto programu je modul konfigurován pro komunikaci i v opačném směru, obdobně jako
je tomu u chatu.
Program
Tento program obsahuje jen několik málo změn, které však představují obrovskou změnu v
další komunikaci s použitím UDP protokolu. Při aplikaci programu dojde k vytvoření dalšího AP
pro připojení s PC. K tomu bude zapotřebí program Packet Sender nebo jiný, kompatibilní program.
Spusťte program a proveďte stejná nastavení jako v předchozím projektu (Enable UDP Server, Port
90). Jako další musíte zadat adresu modulu (IP 192.168.4.1), nastavte port na 91 a vyberte příslušnou
UDP položku. Po provedení těchto úprav a otevření sériového monitoru, můžete odeslat první zprávu
(například „Hi“) do modulu.
+IPD,2:Hi
OK
Zpráva byla modulem úspěšně obdržena. Pro odpověď použijte příkaz CIPSEND.
AT+CIPSEND=7
>Hello
Rozdíl od předchozího programu spočívá pouze v jednom řádku:
success &= sendCom("AT+CIPSTART=\"UDP\",\"192.168.4.2
\",90,91", "OK");
Patrný rozdíl je i v použití druhého portu. Tento port (91) je určený pro příjem příchozích dat.
Po přidání tohoto jednoduchého řádku pak můžete odesílat data do modulu. Stejný port pak můžete
používat i pro odesílání. Pro oba porty můžete zadat hodnotu 90. Teoreticky tato změna modulu
umožňuje i příjem svých vlastních dat.
Aktivace LED / UDP
Program P06_UDPLED.ino zajišťuje ovládání hardware prostřednictvím UDP. Pomocí jednoduchých
příkazů je tak možné LED aktivovat nebo deaktivovat. K tomu je zapotřebí provést zapojení podle
následujícího obrázku. Do obvodu proto musíte navíc zapojit 1 rezistor 1 k (barvy proužků hnědá,
černá, červená).
Program
Zatímco většina programů vyžaduje velké množství vstupních parametrů, tento program pracuje
naprosto samostatně. Na výstupu pak zaznamenáte informace, důležité pro odstraňování případných
potíží (debugging). Kontrolér vyčká na přijetí dat z WLAN modulu, která jsou ve zprávě udávána +IPD.
Další příkazy, které můžete odeslat prostřednictvím aplikace Packet Sender jsou led1 a led0.
Kontrolér příkazy interpretuje a odpovídajícím způsobem LED aktivuje nebo deaktivuje. Zpětná vazba
pro vyslání příkazů je jejich samotné vyslání. Při odeslání jiného příkazu se na sériovém rozhraní
zobrazí „Wrong UDP Command“ a stejná informace je také odeslána do sítě. Ve zdrojovém kódu se
zaměříme na řádek s funkcí configUDP():
success &= sendCom("AT+CIPSTART=\"UDP\",\"192.168.4,255
\",90,91", "OK");
Tím dojde ke změně IP. Tato IP adresa se může jevit velmi zvláštně, vzhledem k tomu,že se nejedná
o IP adresu počítače. Jedná se o zvláštní typ IP tzv. „Broadcast-IP“. Samotné slovo broadcast se
používá například v radiotechnice. Stejně tak jako radiové kanály, tyto vysílaná data mohou být přijata
každým zařízením připojeným do stejné podsítě (subnet). Adresa 255 na konci IP adresy představuje
broadcast adresu. Spusťte program Packet Sender na jiném počítači a můžete přijímat všechny
odeslané příkazy a stejně tak můžete z tohoto počítače sami příkazy odesílat. Další komunikace tak
již není omezena pouze na 2 účastníky.
void loop() {
if (esp8266.available())
{
if (esp8266.find("+IPD,"))
{
if (esp8266.find("led")) {
int setLed = esp8266.parseInt();
digitalWrite(LED, setLed);
debug("LED=" + String(setLed));
if (sendCom("AT+CIPSEND=7", ">"))
{
sendCom("LED=" + String(setLed), "OK");
}
}
else {
debug("Wrong UDP Command");
if (sendCom("AT+CIPSEND=19", ">"))
{
sendCom("Wrong UDP Command", "OK");
}
}
}
}
}
Příchozí příkazy jsou analyzovány v loop-routine. Poté, co jsou modulem data přijata
(esp8266.available()), jsou analyzována pro přítomnost znaků »+IPD«. Po zaznamenání příkazu led,
příkaz parselnt() automaticky ukládá další číslo v proměnné setLed. V rámci definice příkazů to může
být buď 1 nebo 0, což jsou hodnoty, které LED spínají (high) nebo deaktivují (low). Další funkce debug
a příkaz CIPSEND přenáší potvrzení do počítače. Pakliže příkaz led není součástí přijatých dat
modulem, dojde k chybovému stavu (ERROR) a indikaci chybného příkazu.
Network switch
U předchozího programu docházelo k vyhodnocování prvních příkazů kontrolérem a korespondujícímu
spínání LED. Tento program zajišťuje stejnou funkci avšak navíc i nezávisle odesílá příkazy do sítě.
K tomuto programu bude coby další hardwarová výbava použito 1 běžného tlačítka.
Tlačítko připojené k D8
Program
Tento program i nadále vyhodnocuje příchozí příkazy. Stiskem tlačítka navíc dochází k odesílání
textu: BUTTON=1 do sítě. Všechna zařízení připojená k modulu s UDP serverem na portu 90 pak
mohou tyto příkazy přijímat. Funkci můžete znovu ověřit použitím aplikace Packet Sender.
V případě 2 kontrolérů, můžete konfigurovat stejný obvod i pro druhý kontrolér a program načíst
do obou kontrolérů s nepatrnými obměnami. Po záměně příkazu Buton=1 za led=1, bude docházet
k řízení LED příslušným kontrolérem a tlačítkem. Programové modifikace jsou zpravidla v loop-routine.
Jednoduchý „if“-dotaz detekuje stisk tlačítka. Po stisknutí tlačítka kontrolér přenese zprávu Buton=1
do sítě. Navíc se může zobrazit i informace debug. Konfigurace zároveň brání zahlcení systému
příkazy po každém stisku tlačítka. Aby mohl program dále pokračovat, je nezbytné tlačítko po stisku
uvolnit.
if (!digitalRead(SWITCH))
{
debug("Button=1");
sendUDP("Button=1");
while (!digitalRead(SWITCH)) {}
}
Tento projekt najde využití v moderní, domácí automatizaci. Poté co server přijme status,
například z pohybového senzoru, odešle následně příkaz k aktivaci osvětlení do dalšího kontroléru.
Tímto způsobem pak může dojít k vytvoření sítě senzorů a speciální konfigurace pro spínání relé.
Analogický senzor
V posledním projektu tohoto druhu se tlačítko používá k ovládání nejjednoduššího typu senzoru.
Při aplikaci této konfigurace se navíc použije potenciometr coby analogový senzor pro nepřetržité
odesílání naměřených hodnot do sítě. Do obvodu proto navíc vložte dodávaný potenciometr 10 k.
Potenciometr připojený k pinu A6
Program
V závislosti na typu analogového senzoru, je zapotřebí provést i příslušné úpravy v programu. V této
konfiguraci modul není provozován coby AP, ale je připojen do místní sítě. Zadejte proto příslušná
data jednoduše na úplný začátek programu. Po načtení programu může samotné připojení do sítě
chvíli trvat. Po úspěšném připojení se rozsvítí LED na pinu D3. Tento stav navíc indikuje připravenost
modulu k dalšímu provozu. Modul s touto konfigurací však nebude možné použít pro další
experimenty. Sériové rozhraní navíc podá informaci o IP adrese, přidělené routerem. Tato IP adrese
je velmi důležitá, pokud budete později požadovat adresování modulu. Komunikace modulu probíhá
obdobně jako u předchozích experimentů. Pouze IP adresa modulu a PC se změní, protože obě
zařízení v tu chvíli mají IP přidělenou routerem. Aplikace Packet Sender v úvodu nepřijímá žádná
měření. Odešlete příkaz, například led=1 do modulu. Zadejte proto novou IP adresu modulu
do aplikace Packet Sender. Po obdržení příkazu bude docházet k provádění měření cca 1x
za sekundu. Další programovou změnu přináší příkaz CIPSTART. Došlo tím k rozšíření broadcast
adresy, protože předem není možné předjímat, kterou podsíť router zpřístupní. Další úprava se týká
druhého parametru. Nový parametr zajišťuje změnu cílové adresy příkazem CIPSEND.
Modul se spouští s IP 192.168 a po přijetí příkazu dojde ke změně IP adresy.
success &= sendCom("AT+CIPSTART=\"UDP\",\"
192.168.255.255\",90,91,2", "OK");
Pro tento parametr existují následující možnosti:
1 – mode 0: IP a port zůstanou beze změn. Jedná se o výchozí nastavení.
2 – mode 1: Nastavení se změní jednou a to tehdy, pokud se modul spustí s aktuálně použitou
broadcast adresou a poté obdrží informaci z PC, modul se přepne do nové adresy PC. Tato IP adresa
zůstane platná i poté, co modul obdrží data z jiného PC.
3 – mode 2: Nastavení se mění s každými přijatými daty dalšího, nového zařízení. IP adresa se může
změnit a použít v novém PC i přesto, že již předtím došlo k její změně.
Tento proces proto vyžaduje nejprve odeslání příkazu do modulu, aby bylo možné další data přijmout
(data z korespondujícího PC). Ke změně IP však nedochází po odeslání dat z PC do modulu.
boolean sendUDP(String Msg)
{
boolean success = true;
success &= sendCom("AT+CIPSEND=" + String(Msg.length() + 2),
if (success)
{
success &= sendCom(Msg, "OK");
}
return success;
}
Analogová hodnota je odeslána do loop-routine. Z tohoto důvodu se používá nová funkce dUDP(),
která zajistí daleko snadnější přístup ke známým funkcím. Velká prodleva mezi odesíláním příkazů
není v tomto případě žádoucí, vzhledem k tomu, že samotný přenos již zabírá určitou dobu.
TCP Client
V této části bude popsán UDP protokol s daty odeslanými a přijatými velmi jednoduchou cestou.
Pomocí protokolu je pak možné realizovat celou řadu aplikací. Hlavní pozornost však bude věnována
funkci TCP (Transmission Control Protocol). Modul bude konfigurován jako TCP klient, což je stejná
úloha jakou zaujímá vaše PC ve vztahu k webovému serveru. Rozdíl mezi TCP a UDP je následující:
Připojení se provádí pouze mezi 2 zařízeními.
Odeslané datové pakety jsou ověřovány a probíhá u nich opravy chyb.
TCP se používá především v síti internetu.
Tento protokol je o něco pomalejší, než UDP, zato je ale mnohem bezpečnější.
Protokol je používán vaším PC a webovým serverem, který hodláte navštívit a zároveň se tím vytváří
vzájemné propojení obou stran. Vlastní webové stránky a jejich obsah je pak přenesen
prostřednictvím http (Hypertext Transfer Protokol).
Browser / Prohlížeč
V tomto experimentu bude použita stávající hardwarová sestava, která poslouží k optimální
demonstraci struktury TCP komunikace se sériovým monitorem.
Program
Celý program je funkčně shodný s SofwareSerial-Programme. Poskytuje však mimo jiné automatické
připojení k bezdrátové síti. Před samotným experimentem si však pečlivě poznamenejte všechna data
o vaší domácí síti. Do sériového rozhraní poté zadejte následující příkaz:
AT+CIPSTART="TCP","www.example.com",80
Pomocí tohoto příkazu dojde k navázání spojení TCP serveru s webem www.example.com.
Port 80 je standardním portem pro HTTP. Po potvrzení připojení můžete zadávat i další příkazy,
například:
AT+CIPSEND=40
Nyní můžete odeslat zprávu pomocí nově vytvořeného připojení. V případě, že se zobrazí výzva
se symbolem > zadejte text a následně vyberte:
GET / HTTP/1.1
a potvrďte „Enter“. „Enter“ se v sériovém rozhraní nezobrazuje, přesto ale modul příkaz přijme.
Host:www.example.com
potvrďte dvojnásobným stiskem „Enter“. Zadání je však nezbytné velmi rychle odesílat.
Nejlepší je proto mít připravený textový soubor, ze kterého můžete rychle kopírovat ceřádky.
Jako odpověď pak bude přijat delší text. V první části je odpověď serveru a obsahuje některé
informace důležité pro prohlížeč. Textová část po <!doctype html> je website, kterou si prohlížíte
po vstupu na hlavní stranu www.example.com avšak ve formátu prostého textu.
Tento příklad ukazuje základ HTTP formátu. Klient se připojuje k webovému serveru. Funkce DNS
(Domain Name System) umožňuje zadání názvu domény v textové podobě namísto číselného formátu
IP adresy. Textová podoba IP adresy je navíc daleko snazší pro zapamatování. Poté, co proběhne
připojení klienta, prohlížeč odešle Get-Request query. Query musí v každém případě obsahovat
požadovanou stránku nebo zdroj (v tomto případě hlavní stranu), použitý protokol (http 1.1)
a requested host (www.example.com). Zadání host (hostitelský web) je velmi důležité, vzhledem
k tomu, že různé webové adresy mohou být umístěny na stejném serveru a s obdobnou IP.
Pakliže požadujete odeslat request na jinou stránku, než je home page (domovská stránka), zaměňte /
například /example.html. Tato další stránka (sub-page) představuje daleko větší množství informací
odesílaných prohlížečem, operačm systémem a jiných parametrů. Samotný obsah webové stránky
se poté zobrazí až jako poslední.
Internetový čas / Internet clock
V tomto projektu bude využito všech předchozích znalostí a modul NanoESP bude navíc schopen
samostatně shromažďovat informace z webu. Tento program načítá aktuální čas z internetové stránky
a použije jej coby interní čas pro vlastní kontrolér. Čas bude implementován do interní knihovny
a bude interpretován ve výstupu na sériovém rozhraní. K tomuto experimentu bude potřeba pouze
samotný modul.
Program
Zatímco předchozí program vyžadoval spoustu manuálních operací a zadání, tento program pracuje
převážně automaticky. Modul se připojí k website: http://chonic.herokuapp.com/.
URL může být použita v různých systémech a časových pásmech. Aktuální a platný čas například
pro Německo je získán prostřednictvím URL: http://chronic.herokuapp.com/utc/in-one-hour.
Příkaz getTime() aplikuje druhý parametr utec/in-one-hour. Na základě UTC (Universal Time
Coordinated) bude však zapotřebí provést určité úpravy pro zohlednění změny letního času
(utec/in-two-hours). Aktuální čas je od té chvíle v modulu používán prostřednictvím knihovny Time-
Library (od vývojáře M. Margolise, zdroj: http://www.pjrc.com/teensy/td_libs_Time.html). Pro praktické
využití je kopie této knihovny přiložena v příslušném adresáři. Překopírujte tuto knihovnu do vlastního
adresáře s knihovnami. Čas od té chvíle bude neustále běžet na pozadí a poskytovat přesný výstup
(včetně sekund). Díky internímu času pak můžete jednoduše programovat alarm clock pro různé,
časově nastavitelné aplikace. Pro spuštění aktuálního času je nezbytné použití nové funkce:
boolean getTime(String Host, String Subpage)
{
boolean success = true;
int xyear, xmonth, xday, xhour, xminute, xsecond; //local
variables
success &= sendCom("AT+CIPSTART=\"TCP\",\"" + Host
+
"\",80", "OK");
String getRequest = "GET " + Subpage + "
HTTP/1.1\r\nHost:" +
Host + "\r\n";
success &= sendCom("AT+CIPSEND=" +
String(getRequest.length() + 2), ">");
esp8266.println(getRequest);
if (esp8266.find("+IPD"))
{
if (esp8266.find("\r\n\r\n"))
{
xyear = esp8266.parseInt();
xmonth = esp8266.parseInt();
xday = esp8266.parseInt();
xhour = esp8266.parseInt();
xminute = esp8266.parseInt();
xsecond = esp8266.parseInt();
if (xday < 0) xday *= -1; //Because of date separator -
parseInt detects negative integer
if (xmonth < 0) xmonth *= -1; //Because of date separator -
parseInt detects negative integer
setTime(xhour, xminute, xsecond, xday, xmonth, xyear);
sendCom("AT+CIPCLOSE", "OK");
return true;
}
else return false;
}
else return false;
}
Parametry pro host address a subaddress jsou této funkci předloženy. Get-Request query
je vytvořen a potvrzen TCP serverem webu po navázání připojení. Následně je zapotřebí provést
analýzu odezvy serveru (response). Proto je část záhlaví požadavku vynecháno vyhledáváním znaků
\r\n\r\n, což představuje pokračování programu po Carriage Return a New Line.
Další číslice korespondují s požadovaným datem a časem, který se ukládá do proměnných s počtem
volání parselnt(). Datum má specifickou podobu, vzhledem k tomu, že jsou jeho jednotlivé hodnoty
od sebe odděleny pomlčkou. Funkce parselnt() tyto hodnoty interpretuje jako záporná čísla.
Z tohoto důvodu jsou tyto hodnoty jednoduše vynásobeny –1. Čas je nakonec nastaven funkcí
setTime() a poskytuje i výstup se zobrazením sekund. Tím došlo k úspěšné aplikaci aktuálního
času převzatého z internetu.
Zobrazení teploty / Temperature display
Tento projekt má za účel zobrazení aktuální teploty a informací o počasí. Výstupní hodnoty se budou
znovu zobrazovat v použitém sériovém rozhraní. Současně přitom bude výstup provázen RGB-LED
indikací. Získáte tak přesné informace o aktuálním počasí přímo z internetu. Pro tento experiment
bude znovu zapotřebí nepájivého pole, modul NanoESP, 1 RGB–LED, 3 rezistory 1 k a vodie.
Velmi dležité je v tomto pípad správné pipojení vývod RGB–LED. RGB je zkratka (Red, Green,
Blue) a tato LED je konstruována s použitím nkolika takových diod a se spolenou katodou.
Kombinace tchto barev za rzného jasu pak mže prezentovat celou barevnou paletu. LED by mla
být pipojena do PWM výstup pin D3, D5 a D6 modulu spolen s pedadnými rezistory.
Program
Jako první je zapotebí pejít na website, který poskytuje informace o poasí:
http://www.openweathermap.com/
Zadejte svou lokalitu (msto). V tomto pípadu je použito msto Essen:
www.temp.fkainka.de/?city=Essen
Program shromáždí informace o poasí z uvedeného webu a zobrazí tyto informace.
Výsledek se bude interpretovat prostednictvím RGB–LED a souasn i pomocí sériového
rozhraní. Rozsah pro zobrazení teploty je v tomto programu nastaven od -20 do +40 ºC.
Tento program funguje prakticky obdobn jako v pedchozím pípad. Pesto však nabízí
uritá specifika. Funkce getTemp() získává data a následn poskytuje jejich výstup.
void rgbTemp(int val)
{
int green, blue, red ;
if (val <= 10 & val >= -20)
blue = map(val, -20, 10, 255, 0);
else blue = 0;
if (val >= 10 & val <= 40)
green = map(val, 10, 40, 255, 0);
else if (val >= -20 & val < 10) green = map(val, -20, 10, 0,
255);
else green = 0;
if (val > 10 & val <= 40) red = map(val, 10, 40, 0, 255);
else red = 0;
analogWrite(RED, red);
analogWrite(GREEN, green);
analogWrite(BLUE, blue);
}
Ovládání jasu LED se provádí prostednictvím funkce rgbTemp(). Píkaz map pevádí hodnoty
do bajtových hodnot (0 – 255) a do LED. Nižší teploty jsou v rozsahu -20 do +10 ºC.
Zelená barva se promítá v celém teplotním rozsahu, pesto je nejvýraznjší pi teplot +10 ºC.
ervená se pidává pi teplotách nad +10 ºC a nejvýrazní je pak pi max. teplot +40 ºC.
Barevná škála je pak vysoce intuitivní a velmi jasn koresponduje s aktuální venkovní teplotou.
Datový výstup hodnot teploty se navíc zobrazuje i na sériovém rozhraní.
TCP Server
V pedchoásti došlo k použití modulu coby TCP klienta. V této ásti bude modul sloužit jako
TCP server. Pomocí velmi jednoduchých AT-píkaz pak bude možné provádt komplexní serverové
aplikace. Modul NanoESP se tak bude chovat jako internetový TCP server, který bude provádt
vlastní programovací procesy.
TCP-Webserver
Pro funkci webového TCP serveru nebude zapotebí provádt žádné hardwarové zmny.
Jako první však na sériovém rozhraní vyzkoušejte nkolik základních píkaz.
Program
Do modulu natte program a spuste sériové rozhraní. Tento proces však mže trvat i nkolik
sekund. Po zobrazení indikace o úspšném provedení operace, mžete do sériového rozhraní zadat
první píkaz:
AT+CIPMUX=1
Tento píkaz umožuje nkolikanásobné pipojení k modulu, což znamená, že k modulu se mže
pipojit nkolik poíta najednou. Dalším píkazem spustíte samotný webserver:
AT+CIPSERVER=1,80
Parametr 1 pedstavuje aktivaci serveru. Pomocí parametru 0 pak dojde k ukonení režimu serveru.
Hodnota 80 zastupuje íslo použitého portu, pod kterým je server dostupný. Další HTTP komunikace
pak obvykle probíhá prostednictvím portu 80. V té chvíli mžete otevít vlastní webový prohlíže
a do adresního ádku zadejte IP modulu a potvrte výbrem „Enter“.
Bhem pipojování k modulu se zobrazuje informace o prbhu naítání webového obsahu.
Sériové rozhraní však bhem toho zobrazuje request podobný tomu, který jste zadávali manuáln.
AT+CIPSERVER=1,80
OK
0, CONNECT
+IPD,0,363:GET / HTTP/1.1
Host: 192.168.178.58
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozzila/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Accept-Encoding: gzip, deflace, sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Prohlíže oekává odpov a zobrazuje se po celou dobu, dokud nedojde k vypršení asového
limitu (time-out). Mžete proto pomocí prohlížee odeslat variantu známého píkazu:
AT+CIPSEND=0,7
Parametr 0 udává klienta, jemuž má být zpráva odeslána. Tento parametr má význam z dvod
možnosti pipojení více poíta (klient). Druhý parametr 7 dává možnost odeslání znak.
Mžete proto zkusit zadat napíklad „Hallo“ a potvrte výbrem „Enter“. Ve vašem prohlížei
prozatím nebude patrná žádná zmna, dokud neukoníte samotné spojení.
Použijte proto píkaz:
AT+CIPCLOSE=0
V té chvíli mžete v prohlížei spatit pozdrav „Hallo“. Na tomto principu pak probíhá veškerá
webová komunikace. Tento experiment tak poskytuje podrobnjší náhled do proces a penosu
dat na internetu.
Autonomní webový server
Poznatky z pedchozího experimentu budou využity i v následující aplikaci autonomního programu.
Nový program neodesílá jen jednoduchý website do prohlížee, ale souasn pitom paraleln ovládá
LED. K modulu bude navíc nezbytné pipojení externího napájecího zdroje. Jako zdroj mžete použít
napíklad power bank (externí akumulátor, který slouží pro nabíjení smarthopne). K pipojení zdroje
k modulu slouží mikro-USB konektor. Vyjma nepájivého pole a modulu bude zapotebí zdroj napájení
(power bank nebo baterie 9 V) a rezistor 1 o hodnot k.
Program
Tento program odesílá o nco složitjší webpage, než která byla použita v pedchozím projektu.
Pipojit mžete zárove LED do pinu D9 modulu. LED pak bude indikovat aktuální zmny stavu.
Zadejte WLAN data a natte program do modulu. IP modulu se zobrazuje v sériovém rozhraní.
Otevete prohlíže a zadejte IP modulu. V textu zobrazeném v záhlaví bude popsáno jakým
zpsobem bude ízena LED indikace. Tento program pak aplikuje pln automatizovaný webový
server.
void loop() {
if (esp8266.available()) // check if the esp is sending a message
{
if (esp8266.find("+IPD,"))
{
debug("Incoming Request");
int connectionId = esp8266.parseInt();
if (esp8266.findUntil("LED","\n")) digitalWrite(LED, !digitalRead(LED));
String webpage = "<h1>Hello World!</h1>Open [IP]/LED to Toggle LED on D9";
if (sendCom("AT+CIPSEND=" + String(connectionId) + "," + String(webpage.length()),
">"))
{
sendCom(webpage,"SEND OK");
sendCom("AT+CIPCLOSE=" + String(connectionId),"OK");
debug("Send and Close");
}
}
}
}
Ke spuštní funkce serveru znovu použijte velmi jednoduchý píkaz configTCPServer(), který jste
již manuáln zadali. Loop-routine pak oekává další píchozí data. Pakliže tato data obsahují „LED“,
dojde k pepnutí na LED indikaci, bez ohledu na to v jaké ásti programu je text „LED“ umístn.
V tomto experimentu proto program obsahuje text:
<h1>Hello World!</h1>
002 Open [IP]/LED to Toggle LED on D9
<h1> je instrukce pro prohlíže k zobrazení textu </h1> coby záhlaví zápisu 1. V tomto pípad
se však doposud nejedná o správný HTML kód, ale pouze o jednoduchou formu textového
formátování. Délka website se provádí pomocí funkce webpage.lenght() (string class function)
a píkazu CIPSEND, kterým dojde ke penosu webpage.
Website s tlačítky
V tomto experimentu je samotný website daleko sofistikovanjší. Na webu bude použito ovládacích
prvk, které zajišují mnohem pohodlnjší ovládání LED. Pesto se hlavní konfigurace píliš neliší
od pedchozí aplikace. LED je pipojena k pinu D9 a je ovládána modulem. Zdrojový text pak obsahuje
jen velmi nepatrné zmny.
Program
Po natení programu pejdte na website modulu. Jednoduše
zadejte IP modulu do sériového rozhraní. Uložení website probíhá
oproti pedchozímu projektu jen s velmi nepatrnými zmnami.
Zatímco tento jednoduchý web je obsažen v obdobném zdrojovém
textu, webpage se nyní ukládá do Progmem (Program Memory).
Tato technologie ukládání využívá SRAM modulu a disponuje
zárove možností ukládat i promnné hodnoty. SRAM disponuje
pouze 2 kB pamti a je využívána použitými etzci.
Funkce programu tím dokáže udržovat obsah website v programové
pamti, která dosahuje již 32 kB. Pístup k datm je však proto
o nco komplexnjší.
const char site[] PROGMEM = {
"<HTML><HEAD>\n<meta name=\"viewport\" content=\"width=device-width, initial-
scale=2.0,
(…)
};
V tomto pípad se jedná o delší HTML dokument ve formátu C-compatible.
Tento formát je charakterizován uvozovkami v podob \" a nový ádek \n.
Tato forma je však dobe známa z jiných projekt, které používají programové etzce.
String createWebsite()
{
String xBuffer;
for (int i = 0; i <= sizeof(site); i++)
{
char myChar = pgm_read_byte_near(site + i);
xBuffer += myChar;
}
return xBuffer;
}
Funkce píkazu createWebsite() zajišuje natení obsahu Progmem a vrácení v podob etzce.
boolean sendWebsite(int connectionId, String webpage)
{
boolean success = true;
if (sendCom("AT+CIPSEND=" + String(connectionId) + "," +
String(webpage.length()), ">"))
{
esp8266.print(webpage);
esp8266.find("SEND OK");
success &= sendCom("AT+CIPCLOSE=" + String(connectionId),
"OK");
}
else
{
success = false;
}
return success;
}
Programový loop-routine v té chvíli oekává request query. Poté, co jej obdrží, dojde k aplikaci
funkce sendWebsite() s výstupem funkce createWebsite() a zadaného parametru.
Délka textu se v tomto pípad definuje pomocí funkce lengh(). Po penosu website
se komunikace ukonuje píkazem AT+CIPCLOSE. Aktivace LED je souástí programového procesu.
Rychlokurz HTML / HTML Crash course
V této ásti se budeme krátce zabývat tvorbou HTML a konkrétn vytvoením website pro ovládání
modulu NanoESP. Dozvíte se více o základní struktue HTML dokumentu, vytváení vstupních
a výstupních prvk a na závr také dojde k integraci vašeho vlastního webu do programu Arduino.
Soubor HTML je vždy definován <HTML> na zaátku dokumentu. Konec dokumentu pak musí
obsahovat </HTML>. Záhlaví dokumentu obsahuje dležité informace jako je název samotné website
pro zobrazení v prohlížei. V následujícím píkladu však záhlaví bude obsahovat ást pídavných
informací, které napíklad umožují komfortní prezentaci na mobilním zaízení (smartphone) (<meta
name ="viewport" …). Tyto ádky mžete použít kdykoliv na vaší HTML website.
<HTML><HEAD>
<meta name="viewport" content="width=device-width, initial-scale=2.0, userscalable=
yes">
<title>
Switch LED
</title>
</HEAD>
Za parametrem HEAD je nezbytná definice parametru BODY, který zahrnuje obsah website.
Na úvod parametru BODY se pak udávají další parametry jako je pozadí webu a barva fontu.
Tyto parametry pak mžete upravovat podle vlastních požadavk i pozdji. Typ písma a jeho
velikost uruje parametr FONT.
<BODY bgcolor="#FFFF99" text="#000000">
<FONT size="6" FACE="Verdana">
Switch LED
</FONT>
Další ást dokumentu obsahuje parametr <HR>, kterým se definuje horizontální ádek webových
stránek. Parametr <BR> pak zajišuje pechod (jump) na další ádek.
<HR>
<BR>
<FONT size="3" FACE="Verdana">
Switch the LED <BR>
on D9 ON and OFF
<BR>
<BR>
Všechny dosud prezentované parametry jsou používány pi návrhu webových stránek.
Dalším dležitým prvkem celého projektu bude ovládání LED.
<form method="GET">
<button type="submit" name="led" value="1">LED ON</button>
<button type="submit" name="led" value="0">LED OFF</button>
</form>
Form-elements, neboli prvky formue tvoí podstatu on-line formuláe. Díky nim je možné na webové
stránce používat napíklad registraní formuláe. Data vložená uživatelem (návštvníkem webu)
pak mohou být rzným zpsobem transformována. Pro tyto úely se používá metoda GET,
která zajišuje pevod vložených dat na webový server za použití URL. Tato metoda používá celkem
2 tlaítek a pevod dat po stisku (výbru) jednoho z tlaítek. Ob tlaítka jsou pojmenovány led, avšak
mají naprosto rozdílné hodnoty. Po stisku prvního tlaítka LED ON dojde k znovunatení aktuální URL
s tím, že za URL (v tomto pípad za IP modulu) se zapíše /?led=1. Tento text je programem Arduino
vyhledáván a peten íslicový parametr píkazem parselnt() a penesen do LED.
Tímto jednoduchým zpsobem pak mžete aktivaci LED ovládat.
<BR>
<HR>
</font>
</HTML>
Poslední ádek HTML zdrojového kódu pak nepináší nic nového. Pechod na další ádek
a konfigurace horizontálního ádku má za úkol dokonit vzhled webu pedtím, než je dokument
ukonen pomocí parametru </HTML>. Vyberte následn jiný website v piloženém adresái
(sketch folder). Vyzkoušejte si sami zmnit napíklad barvu pozadí a na web pidat svj vlastní text.
Vyhnte se však tomu, aby došlo k peplnní website, vzhledem k tomu, že pam SRAM dosáhne
svou maximální kapacitu velmi rychle. Po dokonení úprav webu, dokument peneste do programu
Arduino. Zkopírujte proto text do schránky a pejdte na web Weiss Converter Tool:
http://www.percederberg.net/tools/text_converter.html
Vložte text ze schránky do ásti 2. Select Output: set C/C++/PHP – StringText a UTF-8 – Unix (LF).
Po natení upraveného programu s novými hodnotami mžete spatit nový web po zadání IP modulu
do svého prohlížee.
Ovládání RGB–LED prostřednictvím TCP
Tento projekt se zabývá ovládáním RGB–LED z website na webovém serveru.
Správná struktura rozhraní pak mže být použita pro zmny barev LED. Website bude snadno
pizpsobitelná pro zobrazení i na smartphone. Z hardwarové výbavy bude zapotebí jen deska
spoj (nepájivé pole), modul NanoESP, 1 RGB–LED, 3 rezistory 1 k a vodie.
Program
Nov penášený web je znovu naten do programové pamti. Naleznete jej také v adresái s HTML
weby (Sketch folder). Po konfiguraci WLAN dat a natení programu bude webový server dosažitelný
prostednictvím IP modulu. Hlavní strana webu má obdobný design jako v pedchozím experimentu.
Na tomto webu však bude použito zcela nového prvku a to HTML5 Color Picker, kterým se bude
ovládat barevná paleta LED. Zobrazení aplikace Color Picker se mže výrazn lišit v závislosti na
použitém prohlížei. Rozdílnost této aplikace od pedchozí spoívá v nkolika málo detailech. Jako
první zásadní zmna je v záhlaví HTML dokumentu a ádku:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
Tento ádek a jeho píkazy zajišují pozastavení snahy prohlížee naíst „Favicon“ (Favorite icon)
po natení website. Vtšina web má svou vlastní Favicon, kterou je web snadno identifikován.
Pro natení této identifikace prohlížeem dochází k odesílání druhého dotazu po aktualizaci samotné
stránky. Tento druhý request proto mžete eliminovat a nezatžovat jím modul. K tomu slouží výše
uvedený píkazový ádek. Doporuuje se tento ádek u vašich vlastních HTML stránek použít.
Druhá speciální vlastnost v tomto dokumentu je u použití prvku Color Picker, který nahrazuje
tlaítka z pedchozího projektu. Jedná se o relativn nový element HTML5. V pedchozím pípad
bylo použito tlaítek pro odeslání zápisu hodnot a jejich dalšímu penosu. Pro okamžitý penos dat
z formuláe je navíc možné použitý velmi jednoduchý a krátký JavaScrip kód
(onchange=“this.form“submi()“
Pi tomto zápisu nebude zapotebí použití zvláštního tlaítka:
<form method="GET">
<input type="color" name="rgb" onchange="this.form.submit()"><BR>
</form>
Vybrané barvy jsou nyní aplikovány pomocí zápisu /?rgb=%23, po nmž následuje 6 znak.
Výraz %23 pedstavuje hexadecimální íslo. Pro bílou barvu je URL následující:
[IP]/?rgb=%23ffffff
Pro kontrolér bude následn zapotebí urit konkrétní barevné hodnoty LED z tohoto hexadecimálního
ísla, které získá z následující ásti funkce loop:
if (esp8266.findUntil("?rgb=", "\n"))
{
String hexstring = esp8266.readStringUntil(‚ ‚);
long number = (long) strtol( &hexstring[3], NULL, 16);
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
analogWrite(RED, r);
analogWrite(GREEN, g);
analogWrite(BLUE, b);
}
Funkce strtol() konvertuje text, který je uveden za zápisem %23 do dlouhé íslice a poté
do 3 bajtových hodnot, které jsou poté peneseny do LED za použití funkce analogWrite().
Světelný senzor / Light Sensor
V tomto projektu website webového serveru neslouží pro ovládání rozhraní, ale jako výstupní prvek.
Svtlo mené prostednictvím svtelného senzoru se zobrazuje jako relativní hodnota s novým HTML
elementem. Tato konfigurace vyžaduje fototranzistor, který zde funguje jako svtelný senzor.
Fototranzistor je snadno rozpoznatelný, pestože na první pohled mže vypadat jako bžná LED.
Uvnit pouzdra má však velmi dobe patrný tmavý bod. Kolektor fototranzistoru má kratší elektrodu,
která se pipojuje k signálu +5 V. Do série s fototranzistorem se poté pipojí rezistor 10 o hodnot k.
Fototranzistor je pipojen k pinu A6 v sérii s rezistorem 10 k.
Program
Doposud byl website vždy vytvoen z nemnné stránky, která odesílá
data do kontroléru. V tomto pípad však dochází ke zmn website ped
samotným odesláním dat do prohlížee a zobrazením odpovídající
hodnoty svtelných podmínek prostednictvím fototranzistoru. Zdrojový
kód website bere v patrnost atribut placeholder, kterou program nahradí
hodnotou „bright“ po natení dat z programové pamti, aktuálními
hodnotami. Další ádek v HTML dokumentu zajišuje automatické
obnovení v intervalu nkolika sekund. Aktuální hodnota svtelných
podmínek se zárove zobrazuje v prohlížei.
První zmna v záhlavní ásti dokumentu:
<meta http-equiv="refresh" content="3">
Tento ádek zajišuje automatické obnovování website každé 3 sekundy. Není tak zapotebí stisku
tlaítka F5 na klávesnici, pro zobrazení nových, aktuálních hodnot. Druhá zmna spoívá v míst
zápisu, kde zpravidla bývá umístno formuláové pole.
<label for="hell">Current Brightness: *bright*</label> <BR>
<input type="range" max = "1024" name="hell" value=*bright*><BR>
Pro funkci této aplikace a výstup bude zapotebí pouze samotný website. Dva hlavní prvky label
a range jsou použity coby výstupní prvky. Label, který se zpravidla používá pro oznaení, obsahuje
položku „bright“ v textu. Posuvný prvek pro urení rozsahu má piazenou hodnotu „bright“, která není
legitimní hodnotou, ale bude pozdji zamována. Maximální hodnota rozsahu je 1024 a tato byla
pizpsobena do 10-bitového rozsahu ADC kontroléru. Proto je zapotebí zajistit zámnu placeholderu
hodnoty „bright“ skutenou (legitimní) hodnotou.
String createWebsite()
{
String xBuffer;
for (int i = 0; i <= sizeof(site); i++)
{
char myChar = pgm_read_byte_near(site + i);
xBuffer += myChar;
}
xBuffer.replace("*bright*",
String(analogRead(SENSOR)));
return xBuffer;
}
Placeholder je zamnn ve funkci createWebsite(). Jako první dochází k natení obsahu
Progmem z pamti a uložení do etzce. Pedtím, než funkce vrátí tento etzec, všechny „bright“
etzce jsou zamnny hodnotou aktuáln namenou fotosenzorem. Funkce replace() tuto funkci
provádí zcela automaticky. Na závr pozmnetzec mže být vrácen a penesen do prohlížee.
GPIO-Control
Tento nový experiment provádí jednoduché ovládání digitálních pin D2 – D7 prostednictvím website.
Stav píslušných pin je pitom prezentován v prohlížei a díky tomu tak máte neustálý pehled
o práv probíhající aplikaci. V projektu je použito 1 RGB–LED a 1 LED. Katody obou LED jsou
pipojeny k GND mimo desku. Po uvedení tchto pin do nízké rozhodovací úrovn (low) dojde
k souasnému rozsvícení obou LED.
Poznámka: LED musí být pipojeny bez pedadného rezistoru. Vzhledem k tomu, že jsou LED
umístny mezi 2 porty, jsou již pipojené do obvodu s pedadným rezistorem o hodnot 60 .
V závislosti na typu a barv LED se jejich povolený proud pohybuje v rozsahu 15 – 30 mA.
Program
Website tohoto programu používá zaškrtávací políka coby HTML prvek. Po natení programu
a volání stránky modulu, bude k dispozici vtší množství políek, které je možné zaškrtnout.
Symbol zaškrtnutí v políku pedstavuje vysokou rozhodovací úrove pinu (high).
Nezaškrtnuté políko znamená pin na nízké úrovni (low). Vyzkoušejte proto následn,
která políka je nutné zaškrtnout proto, aby se rozsvítili ob LED.
HTML kód používá website coby vstupní formulá a výstupní prvek zárove. Zaškrtávací políka mají
svoje názvy, které jsou odvozeny z názv pin. Placeholder v textu je text „checkedX“ ve všech
pípadech. Pakliže je uritý pin uveden do nízké rozhodovací úrovn low, placeholder je jednoduše
vymazán. V opaném pípad (úrove high) program zamní „checkedX“ zápisem CHECKED, což
zajistí zobrazení zaškrtávacího pole s píslušným symbolem bhem naítání. V tom okamžiku musí
dojít ke stisku tlaítka po výbru správných polí pro penos dat z formuláe.
<form method="GET">
<input type="checkbox" *checked2* name="ld2">D2
<input type="checkbox" *checked3* name="ld3">D3
<input type="checkbox" *checked4* name="ld4">D4
<br><br>
<input type="checkbox" *checked5* name="ld5">D5
<input type="checkbox" *checked6* name="ld6">D6
<input type="checkbox" *checked7* name="ld7">D7
<br><br>
<input type="submit" value="Send">
</form></HTML>
Programovaný proces pak funguje následovn: Pedpokládejme, že pole 3, 5 a 7 jsou zaškrtnutá. URL
se pak zmní na:
[IP]/?ld3=on&ld5=on&ld7=on
To znamená, že pouze vybraná pole a jejich hodnoty budou pevzaty a identifikovány v rámci
základního indexu, což se provádí díky funkci loop-routine. Port D, na kterém dochází
k vyhodnocování stavu, je pepnutý do úrovn low. Díky funkci while-loop dojde k prohledávání všech
ld“ ve zdrojovém ádku. V indexu je nalezeno ld, na ld3 mže být napíklad hodnota 3, která generuje
1 bajtový posun uvedeného indexu, batju 0b0001000. Jedná se tak o funkci or-linked aktuální hodnoty
bajtu. Tento proces se provádí pro všechny potvrzené indexy, dokud výchozí registr D nedosáhne
správné hodnoty. Tento druh výstupu (namísto digitalWrite()) je pro uživatele Arduino možná ponkud
zvláštní, avšak v tomto pípad vychází z praktického hlediska.
if (esp8266.find("+IPD,"))
{
debug("Incoming Request");
int connectionId = esp8266.parseInt();
if (esp8266.find("/?")) PORTD = B00000000;
while (esp8266.findUntil("ld", "\n"))
{
int ld = esp8266.parseInt();
PORTD |= (1 << ld);
}
}
Zaškrtávací pole pak funguje následovn: Placeholder z HTML dokumentu je zamnn díky funkci
createWebsite(). For-loop prochází všemi porty zapojenými v sérii. Pakliže má pin aktuální úrove
high (znovu urenou bajtem, který byl vytvoen pesunutím high bitových íslic v indexu), placeholder
s indexem je zamnn oznaeným textem. Pakliže má pin low úrove, placeholder bude smazán.
Tím je zajištno odpovídající zobrazení aktivních port.
String createWebsite()
{
String xBuffer;
for (int i = 0; i <= sizeof(site); i++)
{
char myChar = pgm_read_byte_near(site + i);
xBuffer += myChar;
}
for (int x = 2; x <= 7; x++)
{
if (PORTD & (1 << x))
{
xBuffer.replace("*checked" + String(x) + "*", "checked");
}
else
{
xBuffer.replace("*checked" + String(x) + "*", "");
}
}
return xBuffer;
}
Pi vývoji tohoto programu však došlo k zaznamenání uritých problém a jejich píina nebyla
ihned patrná. Chybový stav nastal pi naítání website a po zaškrtávání uritých polí.
Jednoduché ešení však poskytuje aplikace Arduino-MemoryFree-Master-Library na webu:
http://playground.arduino.cc/Code/AvailableMemory
Po dosažení maximální kapacity SRAM docházelo k zvláštním a náhodným chybovým procesm.
Díky aplikaci se však podailo všechny tyto procesy odstranit. Funkce string.replace() je velmi
praktická, pesto však zabírá velké množství pamti. Pakliže zaznamenáte rzné chyby v urité
ásti programu, doporuuje se výrazná redukce zdrojového kódu HTML souboru a optimalizace
nkterých etzcových operací. Shora uvedená knihovna vám pitom mže výrazn pomoci.
Insert: Přístup k modulu z internetu
Vtšina experiment, kterými jsme se doposud zabývali mají praktické využití v ovládání modulu
prostednictvím domácí sít. Speciální funkce modulu však umožují jeho ovládání i na vtší
vzdálenost. Moderní technologie a inteligentní systémy souasných domácností však vyžadují velmi
nároné aplikace, jakými jsou napíklad ovládání domácích spotebi a osvtlení na dálku teba
bhem dovolené. Spínaní osvtlení má využití zejména z bezpenostních dvod, kdy je zapotebí
navodit pítomnost osob v objektu. Použití svtelných senzor zase umožuje spínání osvtlení
na uritých místech a nebo osvtlení za snížených svtelných podmínek a pohybu osob (napíklad
na zahrad). Pro to, aby bylo možné využít všech tchto funkcí, je nezbytné provést nkolik málo
úprav u používaného routeru. Každý router vyžaduje svj specifický software. V následující ásti bude
prezentován obecný postup pro konfiguraci Fritz!Box routeru. Konfigurace jiného routeru však bude
prakticky obdobná.
Vtšina router používá jednoduché webové rozhraní, podobné tomu, které jsme vytváeli
v pedchozích projektech. Pro pipojení k rozhraní je zapotebí zadaní správného uživatelského
jména a pístupového hesla. Routery Fritz!Box používají zpravidla stejnou IP adresu 192.168.178.1.
Obdobn ale mžete pejít na web routeru (http://fritz.box). V pípad použití jiného routeru musíte
získat jeho správnou IP adresu. Router vtšinou používá IP s adresou 1 v podsíti. Pakliže je IP vašeho
poítae napíklad 192.168.4.2., potom IP routeru je zpravidla obdobná. Pístupové heslo a jméno
naleznete na zadní stran routeru nebo v píslušném návodu k routeru. Po pihlášení do uživatelského
rozhraní bude zapotebí nalézt položku s penosovým portem. U routeru Fritz!Box se tato položka
nachází v menu Internet – Release, kde vytvoíte nové pravidlo pro port. Konfigurujte externí queries
pro port 80 a odesílání dat do IP modulu a jeho portu 80. Konfigurace každého routeru je však velmi
jednoduchá a intuitivní. U tohoto routeru staí vybrat HTTP server a zvolit existují IP v rozbalovacím
menu.
Po úspšné konfiguraci routeru mžete pejít k prvnímu experimentu. Použijte proto svou vlastní IP,
kterou zjistíte po pechodu napíklad na http://www.meine-aktuelle-ip.de/. Po zadání IP adresy,
kterou naleznete na této stránce, mžete spatit website vašeho modulu. Pro ovení, zda je modul
dostupný on-line, použijte napíklad svj smartphone s pipojením k mobilní síti a pejdte na stránku
modulu.
Souasná konfigurace je vhodná i pro další experimenty. Pesto se zde nacházejí 2 problémy,
které ztžují praktické využití routeru. Jeho IP je složitá pro zapamatování a navíc se jeho IP asto
mní. Routery provádjí reconnect zpravidla jednou denn a tím dochází ke zmn globální IP
routeru. ešení tchto problému je následující: Domain Name System (DNS).
Tento systém umožuje pechod napíklad na web www.google.com aniž by bylo nutné zadávání IP
adresy. Tato technologie pevádí složité IP adresy na jednoduše zapamatovatelné názvy.
Všechny souasné weby používají DNS, která je pak voln dostupná. Nkteré weby navíc používají
funkci DDNS (Dynamic Domain Name System), která zajišuje správné piazení IP urité domén.
Pro další projekt bude použito webu http://www.anydns.info/. Mžete ale použít jakýkoli jiný web
podle vlastního výbru.
Jako první se musíte na webu pihlásit a zadat název domény. V tomto pípad je použito jména
nanoesp a host dynpc.net. Po pihlášení je k dispozici portál: http://nanoesp.dynpc.net/.
Služba pak musí naíst vaší IP. Proto je zapotebí službu pedat routeru, tak aby nová IP adresa
byla odeslána pímo do služby DDNS. V routeru potom vyberte volbu View: Advanced pro zobrazení
všech možností konfigurace. Zadání služby DDNS je pak možné provést v nabídce Release.
Upozorně pro všechny uživatele internetu!
Dynamická DNS je velmi praktická funkce, pesto však bute velmi opatrní s tím, komu pedáte název
své domény. Vystavujete se tím riziku možného napadení! Jediné co hackei potebují znát proto, aby
pronikli do vašeho poítae, je vaše doména, nikoli IP adresa. Z tchto dvod je bezpené shora
uvedenou stránku používat pouze testovací úely a po nezbytn nutnou dobu.
ThingSpeak
Poslední ást tohoto návodu bude vnována platform ThingSpeak. Tento web je vnován tématu
Internet of Things a zahrnuje praktické poznatky ze svta programování. Tyto stránky mžete využít
pro ovládání a sledování elektronických modul prostednictvím sít internet. Vlastní projekty
a hodnoty pitom mžete ukládat na externí úložné médium.
Pejdte proto na webový portál: www.ThingSpeak.com a vytvote si svj vlastní uživatelský úet.
Po pihlášení se zobrazí náhled dostupných kanál. Vzhledem k tomu, že jste doposud žádné kanály
nekonfigurovali, bude tato stránka prozatím prázdná. Nový kanál vytvoíte výbrem New Channel.
Zadejte jeho název, napíklad „Light“, protože následující projekt bude zamen na analýzu a mení
okolního osvtlení. Pod bodem 1 mžete piadit ješt jeden název pro pole, napíklad „Brightness“.
Všechna ostatní pole pak mohou prozatím zstat prázdná.
Další konfigurace tohoto experimentu je založena na použití senzoru pipojeného k analogovému
vstupu pinu A6. Napový dli s rezistorem 10 k a fototranzistor potom zajišují mení aktuálních
svtelných podmínek. Použít mžete navíc i teplotní senzor. Pi použití termistoru (NTC) bude obvod
praktický stejný, jen s tím rozdílem, že fototranzistor je zamnn za NTC. Termistor je bipolární a tak
na jeho zapojení (polarit) do obvodu nijak nezáleží.
Program
Tento program je uren pro mení okolního svtla. V tomto pípad však nedojde k výstupu dat
na web, ale pímo na webovou stránku ThingSpeak. Na stránce pitom nedochází k uložení dat,
ale k jejich zobrazení v pehledném grafickém režimu. Tento zpsob zobrazení je velmi praktický
pro mící stanice s dlouhodobým monitoringem. Aby byl program schopen odeslat data na website,
bude zapotebí zadní klíe API, který je v programu uveden pod položkou ThingSpeakKEY spolen
s WLAN daty. Po natení programu budou k dispozici namené hodnoty zobrazené na sériovém
rozhraní. Data nashromáždná po dobu 15. sekund jsou následn zprmrována a poté odeslána
na stránku ThingSpeak. Interval 15. sekund hraje velmi významnou roli. Nemže tak docházet
k odesílání dat každou sekundu. Výsledné hodnoty (prmr) jsou pak zobrazeny na stránce
s kanály v grafu.
Zdrojový text se výrazn liší od pedchozích program. Pesto obsahuje všechny doposud známe
prvky. Progmem zahrnuje HTTP request, který musí být odeslán na ThingSpeak page a stejn tak
i nkteré placeholdery, které budou v pípad poteby zamnny.
POST *URL* HTTP/1.1
Host: api.thingspeak.com
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: *LEN*
*APPEND*
Znovu bude zapotebí zadání „URL“. Stejn tak musí být zamnna „LEN“ délkou zápisu, který zadáte
namísto „APPEND“. Jedná se o universální, platný formát website, kterým dochází k odesílání dat
na stránky s POST-request. V pípad, že budete chtít zadat namená data do vytvoeného kanálu,
musíte použít následující strukturu: „URL“ je /update, což je sub-page, na kterou se musí odeslat data.
Zápis je tak vytvoen díky API key, obsahu pole a hodnot.
POST /update HTTP/1.1
Host: api.thingspeak.com
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
api_key=GXE93O4WF03Q3X8I&field1=954
Website umožuje identifikaci uživatele a kanálu pomocí ke API a automaticky vkládá hodnoty.
Pro odeslání nové hodnoty musí dojít k volání (call) funkce sendThingPost(), která vyžaduje parametr
KEY a data senzoru. Ostatní procesy pak budou probíhat na pozadí zcela automaticky.
Twitch Display
Website ThingSpeak disponuje daleko vtším množstvím funkcí, než je jen monitoring senzor.
Následující projekt bude velmi podobný projektm s TCP klientem. Informace se pitom shromažují
z website na internetu. V tomto pípad je specifický datový stream on-line nebo není k dispozici.
Jednou z výhod je, že ThingSpeak mže volat website prostednictvím HTTPS (HyperText Transfer
Protokol Secure), zatímco modul podporuje pouze HTTP protokol, který je daleko mén bezpený.
Druhou výhodou je to, že website umí pedem filtrovat dležité informace a poté i snížit objem dat,
která mají být zpracovány kontrolérem modulu.
V tomto experimentu dojde k realizaci zobrazení Twitch streaming, coby píklad rzných možností.
Twitch (www.twitch.tv) je website, na kterém jsou streamovány live games (a jiný obdobný obsah
související s hrami pro PC). Jeden z nejznámjších streaming kanál je RocketBeansTV
(díve GameOne). Tento kanál vysílá po celý den a je tak velmi vhodný pro první experiment.
V dalších projektech však mžete sami zvolit i jiný web. Pro tento experiment bude mimo jiné
zapotebí 1 LED (ervená) a 1 rezistor 1 k.
Program
Nabídka Apps poskytuje rzné možnosti pro následující aplikaci. V tomto experimentu se budeme
zabývat aplikací ThingHTTP. Po výbru korespondujícího tlaítka se zobrazí tém prázdné rozhraní.
Vyberte NewHTTP. Do aktivního formue zadejte následující parametry:
Name: Twitch
URL: https://api.twitch.tv/kraken/streams?channel=
rocketbeanstv
Method: GET
HTTP Version: 1.1
Parse String: _total
Pakliže dáváte pednost jinému streamovacímu kanálu, zadejte jiný kanál do URL za kanálem.
Vyberte Save ThingHTTP a zkopírujte API key, který se zobrazí, do doasné pamové schránky
(clipboard). Následn klí pekopírujte do programu za #define ThingHTTP. Nezapomete na WLAN
data. V této chvíli mžete naíst program. Program bude 1x za minutu vyhledávat streamovací obsah
a po jeho nalezení se rozsvítí LED. Tento programu funguje díky penosu informací Twitch page
ve známém JSON formátu. Na stránce https://api.twitch.tv/kraken/streams?channel=rocketbeanstv
mžete zaznamenat výstup ve formátu JSON. Naleznete zde velké množství textu. Zajímat se ale
budeme jen o attribute_total, který umožuje zobrazení aktivního streamu. Pakliže je jeho hodnota
vtší než 0, znamená to, že je aktivní nejmén 1 stream. Tento atribut je automaticky analyzován
funkcí ThingSpeak-page a výstup je poskytován ve strukturované hodnot. Tato hodnota mže být
volána a hodnocena programovou funkcí getThingSpeakHttp().
Twitter alarm system
Tímto projektem mžete vytvoit vlastní bezpenostní systém, který zaznamená napíklad otevení
dveí nebo boxu bez píslušného oprávnní. V tomto pípad dochází k nepetržitému vyhodnocování
stavu svtelného senzoru, který je vystaven specifickým svtelným podmínkám. Pakliže dojde
k aktivaci alarmu, systém odešle informace, které spustí akustický výstup prostednictvím pipojeného
reproduktoru. Alternativn je možné namísto senzoru použít teplotní senzor, který bude sledovat
výkyvy teplotních zmn. K modulu proto pipojte 1 fototranzistor, 1 rezistor 10 k a piezo reproduktor.
Svtelný senzor je pipojen k pinu A0, piezo reproduktor k pinu D8. Na webu ThingSpeak a v nabídce
App vyberte ThingTweet. Po výbru linku TwitterAccount a zadání pístupových dat dojde k pipojení
ke dvma službám. Pakliže prozatím nemáte registraci na webu Twitter, doporuujeme se
zaregistrovat a vytvoit zkušební úet k provádní dalších experiment s touto experimentální sadou.
Po úspšném linku do ThingSpeak zadejte API key pod Apps/ThingTweet za zápisem #define
TwitterKEY v tomto programu.
Program bude sledovat namené svtelné hodnoty a zejména pekroení hodnot nad 500.
Po pekroení této hodnoty dojde k odeslání informací do reproduktoru. Pakliže hodnoty znovu
klesnou pod peddefinovanou hranici, zvukový výstup se deaktivuje. Aktuáln namené hodnoty se
zárove zobrazují na sériovém rozhraní. Bhem konfigurace a prvních pokus je však vhodné senzor
zakrýt. V opaném pípad mže dojít k pedasnému spuštní alarmu. Projekt zahrnuje novou funkci
sendTwitterPost(). Povinné parametry, které je nezbytné zadat jsou TwitterKEY a message.
Informace je stejn tak možné odesílat prostednictvím stisku tlaítka nebo kalkulaci namených
hodnot. Tyto funkce jsou založeny na jednoduchém parametru ThingSpeak-API.
TalkBack
V tomto projektu je používána aplikace TalkBack, která umožuje vytváení píkaz,
které jsou peteny a spuštny pomocí modulu. Funkce, které jsou neproveditelné jedním
kontrolérem, jsou realizovatelné dvma nebo více kontroléry. Nkteré moduly pak mohou
aktivovat senzory, napíklad detektory pohybu a odeslat píkaz TalkBack. Další modul pitom
mže peíst píkaz z webu ThingSpeak-page a pak provést další operaci, napíklad otevít dvee
nebo spustit alarm. Pro experiment je zapotebí 2 tlaítek. Aktuální stav a proces pak indikuje
pipojená LED (ervená) s pedadným rezistorem.
Tlaítka jsou pipojena k pinu D5 a D10, LED k pinu D9.
Program
Jako první je nezbytné vytvoení nového TalkBack kanálu (Apps / TalkBack). Kanál mžete nazvat
napíklad „Doors“. Do kanálu je zárove možné zadávat rzné píkazy. Použít mžete „Light“ kanál
z prvního experimentu a stejn tak i jiný kanál. Všechny píkazy jsou aplikací protokolovány.
Zejména API key, který zadejte do #define TalkBackKEY. Vyjma API-KEY bude zapotebí ID,
který naleznete v menu TalkBack ID, poté co jste vybrali Save TalkBack. Zadejte toto ID za #define
TalkBackID v programu. V pípad, že natete program a použijete sériové rozhraní, jako první uvidíte
informaci „No Command“. Stisknte nkteré z tlaítek. Po chvilce se zobrazí zpráva OpenDoor
nebo CloseDoor, v závislosti na tom, které tlaítko stisknete. Bhem píkazu OpenDoor se zárove
rozsvítí LED.
Aplikace poskytuje možnost, díky které mžete zadávat píkazy pímo pes internet. Pokud zvolíte
„Doors“ kanál na stránce TalkBack, zobrazí se možnost vytvoení nového píkazu Add a new
command. Píkazy OpenDoor nebo CloseDoor mžete manuáln zadávat a tím ovládat i modul.
Modul pak navíc mžete ovládat i z rzných zdroj prostednictvím píkaz TalkBack. Ve zdrojovém
textu bude funkce getTalBackCom() vyžadovat nové píkazy. Po jejich nalezení dojde k navrácení
píkazu. K tomu navíc musíte zadat parametry key a id.
Cheerlights
Tento experiment je podporován projektem od vývoe Hanse Scharlera. Cílem je ovládání osvtlení
pomocí píkaz Twitter. Experiment je ideální pro získávání dalších zkušeností a znalostí ze svta
internetu. Do hardwarové výbavy bude znovu použita 1 RGB-LED a poté 3 rezistory 1 k.
RGB-LED je pipojena k desce a k pinm D3, D5 a D6.
Program
Pro funkci tohoto programu nebude zapotebí provádt žádné zvláštní úpravy v aplikaci ThingSpeak.
Tento projekt má k dispozici veejný kanál, který naleznete pod http://thingspeak.com/channels/1417.
Na této stránce navíc naleznete aktuáln používané barvy a další informace k celému projektu.
Pro správnou funkci programu bude nezbytné použití Crossfade-Library (vývojáe R. Wierzbicki,
zdroj: http://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb525b59824c3217d851b3a3c).
Zkopírujte si Library, která je souástí adresáe Sketch a pekopírujte ji do souboru knihoven
Sketchbook. Tato knihovna zajišuje rychlou a snadnou definici barev a pomalý, plynulých pechod
(fade) barev LED. Natete program a chvíli vykejte, než dojde k zobrazení aktuální barvy LED.
Nyní mžete zapisovat Twitter message, kterým dojde k aplikaci barevných zmn u všech aktuáln
pipojených Cheerlights uživatel. Zápis musí obsahovat #Cheerlights, @Cheerlights nebo pouze
klíové slovo Cheerlights a zárove musí za klíovým slovem zahrnovat peddefinované barvy.
Peddefinované barvy jsou: ervená, zelená, modrá, tyrkysová, bílá, teplá bílá, purpurová, agenta,
žlutá, oranžová a ržová.
Tweet pak mže mít napíklad následující podobu:
Testing my #cheerlights project on my #NanoESP with the color blue #ThingSpeak #IoT
Jedná se o možnost jak „zbarvit“ celý svt. Query pro aktuální barvy je implementován ve funkci
getCheerlightColor(). Potebné parametry jsou host, napíklad api.thingsspeak.com, a URL v tomto
pípad /channels/1417/field/1/last.txt. Odezva serveru je znovu zkrácena na píslušný text a vrácena.
Porovnávání klíových slov zajišuje zmnu barev, které jsou zobrazeny v Crossfade Library. Jedná
se v podstat o velmi jednoduchý projekt s fantastickým efektem.
Twitter požární hlásič s funkcí TalkBack
V tomto projektu jsou kombinovány 2 prvky, se kterými jste se již bhem pedchozích experiment
seznámili. Modul je znovu použit pro monitorování teploty. Po dosažení specifických hodnot
(napíklad pi požáru) pak dojde ke generování akustické signalizace. Monitoring dosažení mezních
hodnot (treshold) má však v tomto pípad za úkol ThingSpeak-App React. Celý systém využívá
termistoru NTC (Negative Temperature Coefficient), který byl díve použit coby alternativa svtelného
senzoru. V obvodu je navíc znovu použit potenciometr, který zajišuje pizpsobení citlivosti mení.
Program
Pi aplikaci tohoto programu dojde ke kombinaci nkolika rozhodovacích úrovní.
Velmi významnou roli bude navíc v tomto projektu hrát ThingSpeak page. Monitoring
a penos hodnot namených termistorem zajišuje aplikace ThingSpeak, odkud probíhá spušt
alarmu po odeslání Twitter message a vložení píkazu TalkBack k jeho spuštní. Jako první bude
nezbytné vytvoit nový kanál na stránce ThingSpeak. Pojmenovat jej mžete napíklad „Alarm“.
Pole 1 je ureno pro nastavení hodnot teploty. Pod položkou API Key naleznete první klí,
který musíte zadat do pole ThingSpeakKEY. Tím bude zajištn penos dat aktuální teploty.
V dalším kroku vygenerujte nový TalkBack prvek (pojmenujte jej napíklad „Alarms“).
Použít však mžete i píkazy zaznamenané v kanále FireAlarm. Zadejte API key za TalkBackKEY
a ID za TalkBackID. V té chvíli mžete odesílat píkazy do modulu. Píkazy mžete zadávat i run
po výbru Add a new Command píslušného kanálu a poté je zadejte do Command String Alarm.
V tomto pípad nebudete muset zadávat pozici, protože píkaz je automaticky uložen na první pozici.
Natte program a otestujte jej. Bhem testování zaznamenáte penos hodnot aktuálních teplot
teploty a to jak modul aplikuje pijaté píkazy. Pi tomto experimentu bude vhodné provést kalibraci
NTC prostednictvím potenciometru a podle hodnot pokojového (prostorového) termostatu.
Tento projekt však navíc doposud neodhalil všechny své speciální funkce. V samotné ThingSpeak
aplikaci vyberte React. Jedná se o funkci, která umožuje zvláštní nastavení a reakci modulu pi
specifických událostech. Vytvote novou React funkci a zadejte následující hodnoty:
Name: FireDetect1
Condition Type: Numeric
Test Frequency: On Data Insertion
Condition: If Channel
FireAlarm
field 1 (Temp)
is greater than
40
Action: ThingTweet
then tweet:
Fire Alarm on the #NanoESP! Temp: %%trigger%%C #Thing-
Speak #IoT
Using Twitter Account
[Twitter Account]
Options: Run action only the first time the condition is met
Konfiguraci uložte (Save React). Tím došlo k vytvoení prvního kroku pro monitoring hodnot.
Dojde-li k pekroení nastavených hodnot, ThingSpeak odešle Twitter message prostednictvím
uživatelského útu. V dalším kroku dojde k vložení píkazu alarm command. Hodnoty treshold musí
být na úrovni, pi které je sami mžete pocitov zaznamenat (tvorba koue pi požáru).
Nejedná se o funkci, která je systémem automaticky podporována. Podporu však naleznete
ve funkci ThingHTTP. Pejdte proto do aplikace a vyberte ThingHTTP. Vytvote nový prvek a zadejte
následující parametry:
Name: Alarm
URL: https://api.thingspeak.com/talkbacks/[YOUR
TALKBACK ID]/commands
Method: POST
HTTP Version: 1.1
Host: api.thingspeak.com
Headers:
Body: api_key=[YOUR TALKBACK ID]Key command_
string=Alarm&position=1
Zajistte zámnu [YOUR TALKBACK ID] a [YOUR TALKBACK KEY] v URL a v hlavásti za vlastní
TalkBack ID a KEY. Nyní mžete vytvoit další React prvek, který bude obsahovat stejné parametry
jako v prvním kroku, avšak se malou zmnou v tom, že vyberte ThingHTTP pod menu Action
a položku Alarm. Tím definujete spuštní alarmu (akustického výstupu) po dosažení kritických hodnot
(treshold). Výstup alarmu pak mže být navíc definován pouze pro uritý asový úsek. V aplikaci proto
vyberte TimeControl a vytvote nový prvek, pojmenovaný napíklad AlarmClock a použijte následující
zápis:
Name: Presents
Frequency: One Time
Time Zone: Berlin
Run At: 2015-24-12 7:00 am
Fuzzy Time: ± 0 minutes
TalkBack: Alarms, add command: Alarm
Pokud si nebudete vdt rady, tuto experimentální sadu používat a v tomto návodu
k obsluze nenaleznete potebné informace, obrate se na naši technickou podporu,
nebo požádejte o radu zkušenjšího odborníka.
Recyklace
Elektronické a elektrické produkty nesmjí být vhazovány do domovních odpad.
Likvidujte odpad na konci doby životnosti výrobku pimen podle platných
zákonných pedpis.
Šetřete životní prostředí! Přispějte tak k jeho ochraně!
Příloha
Programovací AT příkazy
Základní příkazy
Test command AT
Reset AT+RST
Firmware info AT+GMR
Echo on/off ATE<1/0>
WLAN příkazy
WLAN-mode (1 = Client, 2 = AP, 3 = Dual) AT+CWMODE=<mode>
Vyhledávání WLAN sítí AT+CWLAP
Connecting WLAN AT+CWJAP=«<ssid>«,«<pass>«
Disconnecting WLAN AT+CWQAP
WLAN-Access-Point settings AT+CWSAP=«<ssid>«,«<pass>«[,<chan>,<enc>]
Output IP-address AT+CIFSR
Activate/deactivate DHCP AT+CWDHCP=<1/0>
Automatically connect to WLAN AT+CWAUTOCONN=<1/0>
Changing MAC-address of the station AT+CIPSTAMAC=<MAC>
Setting IP-address (station) AT+CIPSTA=<IP>
Start SmartConfig AT+CWSTARTSMART=<typ>
Stop SmartConfig AT+CWSTOPSMART
Komunikace
Function ping AT+PING=<HOST>
Permit several connections AT+CIPMUX=<mode>
Data mode (0=Transparent, 1=Data mode) AT+CIPMODE=<mode>
Structure of data received +IPD,<id>,<len>:<data>
Establishing connection AT+CIPSTART=«<type>«,«<address>«,<port>
Send data AT+CIPSEND=<id>,<len>
Disconnect AT+CIPCLOSE=<id>
Server
-
commands
Start server AT+CIPSERVER=1,<port>
End server AT+CIPSERVER=0
Server status & connected clients AT+CIPSTATUS
Specify server time-out AT+CIPSTO=<timeout>
Display connected clients AT+CWLIF
Překlad tohoto návodu zajistila společnost Conrad Electronic Česká republika, s. r. o.
Všechna práva vyhrazena. Jakékoliv druhy kopií tohoto návodu, jako nap. fotokopie, jsou pedmtem souhlasu spolenosti
Conrad Electronic eská republika, s. r. o. Návod k použití odpovídá technickému stavu pi tisku! Změny vyhrazeny!
© Copyright Conrad Electronic eská republika, s. r. o. REI/10/2016
  • Page 1 1
  • Page 2 2
  • Page 3 3
  • Page 4 4
  • Page 5 5
  • Page 6 6
  • Page 7 7
  • Page 8 8
  • Page 9 9
  • Page 10 10
  • Page 11 11
  • Page 12 12
  • Page 13 13
  • Page 14 14
  • Page 15 15
  • Page 16 16
  • Page 17 17
  • Page 18 18
  • Page 19 19
  • Page 20 20

Conrad Components 10215 Profi Lernpaket Internet of Things Course material 14 years and over Návod na používanie

Typ
Návod na používanie