User manual

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.