Conrad Components 10215 Profi Lernpaket Internet of Things Course material 14 years and over Instrukcja obsługi

Typ
Instrukcja obsługi
ZANIM ROZPOCZNIEMY
Przy pierwszym podłączeniu karty IoT-WiFi (zwanej dalej także
NanoESP) może się zdarzyć, że komputer nie odnajdzie automatycznie
sterownika niezbędnego do konwertera portu USB na port szeregowy. W takim
przypadku należy pobrać sterownik ze strony www.iot.fkainka.de/driver i
zainstalować ręcznie. W oprogramowaniu Arduino można wtedy wybrać port jako
karetę Arduino Nano (procesor: Atmega328). Następnie kontroler powinien
być w pełni gotowy do pracy.
Aby móc pracować z szeregowym monitorem, także trzeba dokonać ustawień.
Stosuje się tutaj prędkość transmisji sygnału na poziomie 19200 bodów. Aby
móc wysyłać polecenia należy ponadto wybrać opcję CR i NL obok menu
prędkości transmisji sygnału.
Poprawne ustawienia w otoczeniu Arduino
Pracowałem z wersjami Arduino-IDE 1.6.5 i 1.6.6. Starsze wersje mogą sprawiać
problemy. Aktualna wersja Arduino-IDE znajduje się na stronie internetowej
www.arduino.cc.
W przypadku jakichkolwiek problemów z kartą lub pakietem do nauki można
zawsze znaleźć pomoc na stronie www.iot.fkainka.de. Ponadto znajduje się
tam forum, nowe projekty użytkowników a także opisane tutaj programy w ich
najnowszych wersjach.
W pakiecie do nauki znajduje się także karta z gniazdem, do której można
podłączyć NanoESP - jak pokazano na ilustracji. Dzięki temu uzyskuje się dużo
miejsca na eksperymenty a moduł WLAN wystaje z tyłu spoza karty. Kabel z
wtykiem micro-USB można wtedy podłączyć tak, jak widać na ilustracji w kolejnym
rozdziale - wtedy kabel prawie wcale nie przeszkadza. Szczegółowe ilustracje
połączeń znajdują się w poszczególnych rozdziałach.
Karta IoT-WiFi (NanoESP)
Głównym elementem niniejszego zestawu jest karta IoT-WiFi (NanoESP). Jak
widać na płytce, karta składa się z dwóch komponentów. Z lewej strony znajduje
się system mikrokontrolera kompatybilny z Arduino, porównywalny z Arduino
Nano. Prawą stronę zajmuje moduł WLAN o oznaczeniu ESP8266.
Oba komponenty komunikują się ze sobą poprzez generowany programowo port
szeregowy.
NanoESP na karcie z gniazdem
Układ pinów na karcie
Na karcie znajduje się wiele żnych elementów, jak np. piny, z których niektóre
mają szczególną funkcję, a także diody LED, których funkcja nie zawsze jest
widoczna na pierwszy rzut oka. W celu zachowania orientacji na poniższej
ilustracji podano najważniejsze funkcje i nazwy poszczególnych elementów.
Najważniejsze piny i oznaczenia na karcie
Moduł WLAN jest sterowany tzw. poleceniami AT. W tym celu część Arduino karty
jest połączona pinami 11 i 12 z modułem WLAN. Niewielki układ przetwarza
poziom 5 V na kompatybilny poziom 3,3 V. We własnych projektach nie należy
więc używać pinów 11 i 12.
Dalsze istotne właściwości sprzętowe karty zostały zestawione w poniższej tabeli.
Dane techniczne
Mikrokontroler: ATmega328
Pamięć flash: 32 kB (z tego 0,5 kB na bootloader)
SRAM: 2 kB
EEPROM: 1 kB
Częstotliwość taktowania: 16 MHz
Piny I/O: 20 (z tego 2 do komunikacji z modułem WLAN)
U
w tym PWM: 6
U
w tym wejścia analogowe: 6
Chip USB-to-Serial: CH340G
Napięcie robocze: 5 V
Zalecane napięcie wejściowe: 7 12 V
Maksymalny prąd na pin I/O: 40 mA
Obciążalność wyjścia 3,3 V: 50 mA
Moduł WLAN: ESP8266
SPI-Flash 4 Mbit
Napięcie robocze: 3,3 V
Standardy WLAN: 802.11 b/g/n
Tryby WLAN: Wi-Fi Direct (P2P), Soft-AP
Firmware: AT-Firmware wersja 0.22
Inne: Zintegrowany stos TCP/IP
+19,5 dBm mocy wyjściowej w trybie 802.11b
Zintegrowany Low-Power-32-bit-CPU
Komunikacja przez UART
ELEMENTY ZESTAWU
DO NAUKI
Poniżej znajduje się zestawienie elementów zestawu do nauki.
1 Karta IoT-WiFi (NanoESP)
1 płytka ze złączami wtykowymi
1 m drut sterujący
2 przyciski
1 klips 9-V
1 dioda LED (czerwona)
1 dioda LED RGB (4 piny podłączeniowe)
1 opornik 10 kiloomów (brązowy-czarny-pomarańczowy)
1 opornik 1 kiloom (brązowy-czarny-czerwony)
1 fototranzystor (2 piny podłączeniowe)
1 NTC 10 kiloomów
1 głośnik piezoelektryczny
1 potencjometr 10 kiloomów z czerwonym pokrętłem
POZNAWANIE MODUŁU
Pierwszy rozdział opisuje podstawowe funkcje modułu WLAN. Moduł jest
sterowany tzw. poleceniami AT. Wszystkie zastosowane tutaj przykładowe
programy a także pomoc i dalsze informacje znajdziesz także na stronie
www.iot.fkainka.de
Najprościej jest pobrać cały folder skompresowany zip i skopiować cały
wyodrębniony folder do własnego folderu szkicu. Wtedy z poziomu interfejsu
Arduino można wygodnie po kolei otwierać wszystkie programy.
1.1
|
Podstawowe polecenia AT
Aby uzyskać pierwsze wrażenie o stosowaniu poleceń AT, najlepiej je po prostu
wypróbować. W związku z tym w niniejszym rozdziale opisano kilka z
podstawowych poleceń modułu.
Otwórz program P01_SoftwareSerial w IDE Arduino. Jest to bardzo prosty
program, którego jedynym zadaniem jest przekazywanie do kontrolera ESP
wszystkich danych odebranych przez sprzętowy interfejs mikrokontrolera. Działa
to także w przeciwnym kierunku. Jak widać w tekście źródłowym, dwa podłączenia
interfejsu programowego to piny 11 i 12. Nie należy ich wykorzystywać we
własnych projektach jako pinów GPIO. Ponadto potrzebna jest SoftwareSerial-
Library, która jest w większości wersji Arduion jest już preinstalowana jeśli nie,
należy pobrać bibliotekę przez managera.
Po załadowaniu programu można uruchomić szeregowy monitor interfejsu
Arduino. Przedtem jednak należy dokonać dwóch ważnych ustawień na
szeregowym monitorze: w dolnym prawym rogu należy ustawić prędkość
transmisji sygnału na 19200 a w kratce obok ustawić CR i NL.
Teraz pojawia się już pierwszy komunikat, jest to AT a kilka wierszy niżej OK.
Polecenie AT zostało wysłane przez mikrokontroler do modułu ESP a moduł
wysłał odpowiedź OK. Oznacza to, że moduł WLAN działa i jest gotowy do pracy.
Ustawienia terminala: CR i NL oraz prędkość transmisji sygnału 19200
1.1.1 | Podstawowe polecenia
Kilka podstawowych poleceń modułu można przetestować wpisując polecenie i
przesyłając je do modułu naciśnięciem
[Enter]
. Wielkie i małe litery wpisywanego
polecenia mają znaczenie. Pierwsze własne polecenie można przekazać wpisując
AT
w szeregowym monitorze i naciskając
[Enter]
. Załadowany program przekazuje
polecenie do modułu ESP, który ponownie odpowiada wysyłając AT a następnie
OK . Kolejne polecenie, które można przetestować, brzmi:
AT+GMR
Tym poleceniem wyświetla się aktualne firmware i numer wersji.
Poleceniem
AT+RST
można zresetować moduł. Wtedy najpierw na terminalu pojawi się najpierw kilka
nieczytelnych znaków a na końcu komunikat ready jako znak, że moduł jest już
gotowy. Kolejne polecenie brzmi:
ATE0
Tym poleceniem można dezaktywować tzw. echo modułu. Oznacza to, że wysłane
polecenie nie zostanie odesłane z powrotem, lecz zostanie wysłana sama
odpowiedź. Jeśli zostanie wysłane np. AT, w odpowiedni nie przyjdzie najpierw AT
a źniej OK, lecz tylko samo OK . Jednakże do pierwszych prób zaleca się
użycie polecenia
ATE1
do ponownej aktywacji echa.
Pierwsze próby z poleceniami AT
1.1.2 | Polecenia WLAN
Poniższymi poleceniami WLAN można zmieniać właściwości WLAN modułu. Przy
niektórych poleceniach można nie tylko ustawić stan, ale także sprawdzić stan
aktualny. Dzieje się tak, jeśli bezpośrednio po poleceniu wpisany zostanie znak
zapytania, np.
AT+CWMODE?
Jako wartość zwrotna przychodzi zazwyczaj
+CWMODE=2
a za nim OK. Po wpisaniu
AT+CWMODE=?
moduł odpowiada podając możliwe parametry polecenia, w tym przypadku 1-3.
CWMODE to polecenie, którym można ustalić tryb WLAN.
Są trzy tryby pracy, które są objaśnione poniżej.
1
AT+CWMODE=2 moduł jako Access Point (tryb AP)
Fabrycznie moduł pracuje jako Access Point (punkt dostępu). Oznacza to, że za
pomocą urządzenia obsługującego WLAN, jak np. smartfon lub komputer można
nawiązać bezpośrednie połączenie z modułem. W tym celu należy po prostu
wyszukać otwartą sieć WLAN o nazwie NanoESP i połączyć się z nią. W
ustawieniu fabrycznym nie jest ustawione żadne hasło i nawiązanie połączenia
powinno się odbyć bez problemów. Po połączeniu się z modułem nie uzyskuje się
połączenia z internetem, jeśli moduł nie pracuje jako router z własnym
połączeniem z siecią telefoniczną. Ten moduł WLAN jest jednakże bardzo
przydatny, gdy potrzebna jest bezpieczna, zamknięta sieć. Jeśli chodzi o
bezpieczeństwo: Jest możliwość chronienia sieci hasłem. Służy do tego polecenie:
AT+CWSAP
Należy tu jeszcze podać parametry w następującej kolejności i oddzielone
przecinkami:
U
nazwa sieci w cudzysłowie,
U
hasło w cudzysłowie,
U
Channel ID (dowolna wartość między 1 a 13),
U
tryb kodowania (wartość 0-4).
Jedno z możliwych ustawień to:
AT+CWSAP="MyNanoESP","MyPassword",5,3
Po krótkim czasie pojawia się OK jako potwierdzenie. Jeśli pojawi się ERROR ,
należy jeszcze raz sprawdzić wpisane wartości, przede wszystkim cudzysłowy.
Jeśli nadal pojawia się ERROR , należy sprawdzić, czy CWMODE to rzeczywiście
2.
Jeśli wszystko zadziała poprawnie, można połączyć się z urządzenia
obsługującego WLAN z kartą. Wszystkie urządzenia połączone z modułem można
wyświetlić wraz z ich adresami IP i MAC poleceniem
AT+CWLIF
.
Moduł w trybie stacji. Adres IP połączonego komputera jest zaznaczony.
2
AT+CWMODE=1 moduł w trybie stacji
Poleceniem
AT+CWMODE=1
ustawia się moduł w trybie stacji. Ten tryb umożliwia nawiązanie połączenia z
routerem WLAN. Dzięki temu moduł jest połączony także z internetem i zyskuje
wiele więcej możliwości.
Wcześniej jednak można poleceniem
AT+CWLAP
wyświetlić wszystkie sieci znajdujące się w zasięgu sprawdzając w ten sposób,
czy Twoja sieć jest w zasięgu modułu. Do nawiązania połączenia z routerem
potrzebne jest polecenie
AT+CWJAP
Polecenie to, podobnie jak CWSAP, zawiera ważne parametry, mianowicie nazwę
sieci WLAN (zwaną także SSID) oraz hasło, obie wartości ponownie w
cudzysłowie i oddzielone przecinkami. Nawiązywanie połączenia z drugim
modułem, na którym ustawione są dane opisane w poprzednim rozdziale dane,
wyglądałoby więc następująco:
AT+CWJAP="MyNanoESP","MyPassword"
Nawiązywanie połączenia może trwać kilka sekund i powinno być potwierdzone
przez zwrotne OK. Można także wywołać nadany przez router adres IP modułu.
Służy do tego polecenie
AT+CIFSR
. Będzie to istotne źniej przy nawiązywaniu połączenia z serwerem TCP
modułu. Poleceniem
AT+CWQAP
można ponownie przerwać połączenie z routerem.
Karta nawiązuje połączenie z drugim NanoESP.
3
AT+CWMODE=3 tryb dual
Trzeci dostępny tryb ustawień WLAN to tryb podwójny. Jak już sama nazwa
wskazuje, tryb ten umożliwia pracę modułu zarówno w trybie stacji jak i w trybie
AP. Oznacza to, że urządzenia mogą zarówno nawiązywać bezpośrednie
połączenie WLAN z modułem oraz przez router jako stację pośrednią. Jest to tryb
bardzo praktyczny, gdy np. planowane jest
utworzenie wewnętrznej sieci z wieloma modułami
i jeden z modułów ma pełnić rolę serwera
dostarczającego dane do sieci. Więcej na ten
temat w dalszej części.
1.2 | Konfiguracja automatyczna
Podstawowe polecenia zostały już przetestowane ręcznie. Ten rozdział jest
poświęcony kwestii, w jaki sposób polecenia te mogą być obsługiwane
bezpośrednio przez kontroler. Ponadto poznamy tu kolejne polecenie, którym
można przetestować, czy dostępny jest określony komputer w sieci lub serwer w
internecie. W tym przykładzie ping wysyłany jest do serwera Google. W
przykładowym programie P02_GooglePing czynności, które w pierwszym
przykładzie były wpisywane ręcznie, są teraz w znacznym stopniu
zautomatyzowane. Kontroler wysyła kolejno po sobie polecenia do modułu ESP i
w ten sposób m.in. nawiązuje połączenie z WLAN. Czasy timeout o róznej
długości dają modułowi wystarczająco czasu na odpowiedź.
Ale zanim program będzie mógł prawidłowo działać, trzeba wpisać dane WLAN za
#define SSID i #define PASSWORD zaraz na początku kodu źródłowego programu.
Moduł potrzebuje bowiem dostępu do internetu, aby mógł wykonać swoje ostatnie
polecenie. Poleceniem
AT+PING
można wysłać ping do innych urządzeń w sieci. Wysyłanie sygnału ping oznacza
zapytanie, czy dany komputer zasadniczo jest osiągalny. Tutaj za pomocą
AT+PING="www.google.de" ping jest wysyłany do serwera Google. Gdy nadejdzie
odpowiedź, na monitorze szeregowym pojawia się komunikat o powodzeniu w
zapala się dioda LEd oznaczona jako D3, która jest podłączona do pina D13 karty.
Pierwsza komunikacja z internetem zakończyła się powodzeniem.
Program
W kolejnych częściach zostaną krok po kroku przeanalizowane funkcje programu.
Najpierw omówiona zostanie komunikacja z modułem.
1
Komunikacja szeregowa
Wszystko działa za pośrednictwem szeregowego portu wirtualnego
udostępnianego przez SoftwareSerial-Library . Podczas inicjalizacji muszą
ponadto zostać podane używane piny, w tym przypadku 11 i 12.
Zestawienie poleceń w załączniku i na stronie
internetowej
Wszystkie istotne polecenia znajdują się także w
załączniku oraz na wspomnianej już wcześniej stronie
internetowej www.iot.fkainka.de. Niektóre polecenia, jak
ustawianie prędkości transmisji sygnału, zostały
świadomie pominięte, ponieważ można nimi uczynić
moduł bezużytecznym.
001
#include <SoftwareSerial.h>
002
SoftwareSerial esp8266(11, 12);
Tak samo, jak przy zwykłym porcie szeregowym, można poleceniami
esp8266.print lub esp8266.println przesyłać bajty lub całe wiersze. Szczególnie
praktyczne są także polecenia esp8266.find i esp8266.findUntil, którymi
przychodzący strumień można sprawdzić pod kątem określonych łańcuchów
znaków. W ten sposób bardzo proste jest wyłapanie pasującej odpowiedzi
modułu. Jeśli jednak oczekiwany ciąg znaków się nie pojawia, oczekiwanie na
dalszy bieg programu można nieco potrwać. Czas oczekiwania (timeout) jest
definiowany przez esp8266.setTimeout . Przez findUntil() można jednakże
zdefiniować drugi ciąg znaków, który pojawia się w funkcji wyszukiwania i daje
false jako wartość zwrotną. To można wykorzystać w funkcji sendCom() :
001
//-------Controll ESP--------
002
003
boolean sendCom(String command, char respond[])
004
{
005
esp8266.println(command);
006
if (esp8266.findUntil(respond, "ERROR"))
007
{
008
return true;
009
}
010
else
011
{
012
debug("ESP SEND ERROR: " + command);
013
return false;
014
}
015
}
Po wywołaniu tej funkcji należy więc przekazać jej polecenie oraz oczekiwaną
wartość zwrotną, np. AT oraz oczekiwana wartość zwrotnaOK. Funkcja println()
przekazuje polecenie i czeka na odebranie oczekiwanej wartości zwrotnej lub
komunikatu ERROR . Gdy oczekiwanie zostanie spełnione, funkcja odsyła
wartośćtrue . Jeśli nie, moduł przez funkcję debug()-odsyła ESP SEND ERROR i
wysłane polecenie, dzięki czemu można w łatwy sposób sprawdzić, które
polecenie stwarza problemy.
Nie wszystkie polecenia AT mają jednoznaczne lub jednowierszowe wartości
zwrotne. Gdy pojawia się np. zapytanie o adres IP, z reguły nie ma wcześniej
znanej wartości. Dlatego jest druga funkcja sendCom(), która potrzebuje jedynie
parametru command i odsyła cały odebrany strumień. Strumień nie może być
jednak zbyt długi, ponieważ może dojść do przepełnienia buforu SoftwareSerial .
001
String sendCom(String command)
002
{
003
esp8266.println(command);
004
return esp8266.readString();
005
}
2
Poszukiwanie błędów
Podczas tworzenia programów dochodzi często do błędów i komplikacji. Aby mieć
jakąkolwiek szansę powodzenia, są dwie funkcje debug, które są aktywowane i
dezaktywowane jednym parametrem na samym początku programu.
#define DEBUG true
Pierwsza funkcja powoduje jedynie uproszczone wydawanie tekstu przez port
szeregowy zdefiniowany jako standardowy. Jeśli stała DEBUG jest prawdziwa,
wysyłana jest zawartość ciągu znaków Msg.
001
void debug(String Msg)
002
{
003
if (DEBUG)
004
{
005
Serial.println(Msg);
006
}
007
}
Drugą funkcję można także szybko wyjaśnić. Gdy wywołana zostanie funkcja
serialDebug, program zapętla się i od tej chwili zachowuje się jak pierwszy
testowany program SoftwareSerial. Oznacza to, że wszystkie dane wysłane przez
szeregowy monitor do kontrolera, są dalej przekazywane do modułu i odwrotnie.
Można więc w przypadku błędu wywołać tę funkcję i wysyłać ręczne polecenia,
aby sprawdzić, gdie występuje błąd.
001
//---Debug Functions---
002
void serialDebug() {
003
while (true)
004
{
005
if (esp8266.available())
006
Serial.write(esp8266.read());
007
if (Serial.available())
008
esp8266.write(Serial.read());
009
}
010
}
3
Konfiguracja
Aby programy były ogólnie zbudowane bardziej przejrzyście, większość ustawień
została przeniesiona do własnych funkcji, przede wszystkim do funkcji espConfig,
w której ustawia się najważniejsze parametry dla danego programu.
001
//---Config ESP8266---
002
boolean espConfig()
003
{
004
boolean success = true;
005
esp8266.setTimeout(5000);
006
success &= sendCom("AT+RST", "ready");
007
esp8266.setTimeout(1000);
008
009
if (configStation(SSID, PASSWORD)) {
010
success &= true;
011
debug("WLAN Connected");
012
debug("My IP is:");
013
debug(sendCom("AT+CIFSR"));
014
}
015
else
016
{
017
success &= false;
018
}
019
020
success &= sendCom("AT+CIPMODE=0", "OK");
021
success &= sendCom("AT+CIPMUX=0", "OK");
022
023
return success;
024
}
Na początku funkcji najpierw ustawiana jest zmienna success na true , ponieważ
ta zmienna jest łączona z żnymi funkcjami ORAZ. Oznacza to, że nawet gdy
tylko jedna z funkcji zwróci wartość false, wartość success natychmiast zmienia
się na false i występuje niepowodzenie całej konfiguracji. Pierwsze polecenie AT,
które w ten sposób jest sprawdzane pod kątem powodzenia, to polecenie Reset,
który prawie zawsze jest wykonywany na początku programu w celu zapewnienia,
że poprzednie próby nie zajmują już modułu. Może jednakże trwać do pięciu
sekund, aż moduł odeśle komunikat ready. Dlatego na krótko przed funkcją
sendCom() timeout jest wydłużany doesp8266.findUtil . Po resecie timeout jest
ponownie ustawiany na standardową wartość jednej sekundy.
Następnie wywoływana jest samodzielnie zdefiniowana funkcja o nazwie
configStation(), która jest omówiona w kolejnym rozdziale. Służy ona do
połączenia modułu z siecią domową. W tym celu przekazywane są parametry
SSID i PASSWORD , które zostały wpisane na początku programu. Jeśli próba
nawiązania połączenia zakończyła się powodzeniem, najpierw komunikaty o
powodzeniu a następnie aktualny adres IP modułu są przesyłane do monitora
szeregowego. Na koniec tej funkcji ustawiane są jeszcze parametry, o których
mowa będzie jeszcze źniej. Na koniec zwracana jest zmienna success, która -
miejmy nadzieję - zachowała wartość true.
001
boolean configStation(String vSSID, String vPASSWORT)
002
{
003
boolean success = true;
004
success &= (sendCom("AT+CWMODE=1", "OK"));
005
esp8266.setTimeout(20000);
006
success &= (sendCom("AT+CWJAP=\"" + String(vSSID) + "\",\""
+ String(vPASSWORT) + "\"", "OK"));
007
esp8266.setTimeout(1000);
008
return success;
009
}
Funkcja configStation() została wywołana w funkcjiespConfig(). Tutaj dokonuje się
ustawienia modułu WLAN w trybie stacji poleceniem CWMODE a następnie
połączenia z siecią poleceniem CWJAP. Nawiązywanie połączenia może trwać
bardzo długo, w związku z czym timeout jest tutaj na krótko wydłużany do 20
sekund. Jeśli jednak preferowany jest podwójny tryb WLAN, można tutaj dla
CWMODE wpisać wartość 3.
001
boolean configAP()
002
{
003
boolean success = true;
004
005
success &= (sendCom("AT+CWMODE=2", "OK"));
006
success &= (sendCom("AT+CWSAP=\"NanoESP\",\"\",5,0",
"OK"));
007
008
return success;
009
}
Funkcja configAP() w tym przykładzie nie jest wywoływana, ale musi byc krótko
omówiona. Można powiedzieć, że jest ona przeciwnością funkcjiconfigStation(),
ponieważ tutaj moduł jest ustawiany jako Access Point. Długi timeout nie jest tutaj
potrzebny, ponieważ moduł może przetworzyć polecenie CWSAPznacznie
szybciej. W źniejszych próbach w funkcji espConfig()-zamiast
configStation() będzie wywoływana funkcja configAP().
001
void setup()
002
{
003
// Open serial communications and wait for port to open:
004
Serial.begin(19200);
005
// set the data rate for the SoftwareSerial port
006
esp8266.begin(19200);
007
008
if (!espConfig()) serialDebug();
009
else debug("Config OK");
010
011
if (sendCom("AT+PING=\"www.google.de\"", "OK"))
012
{
013
Serial.println("Ping OK");
014
digitalWrite(13, HIGH);
015
}
016
else
017
{
018
Serial.println("Ping Error");
019
}
020
}
021
022
void loop() // run over and over
023
{
024
//Start serial Debug Mode - Type Commandos over serial Monitor
025
serialDebug();
026
}
Omówione zostały najważniejsze funkcje, które znajdują się w prawie każdym
programie. W znanych funkcjach Arduino setup() i loop() funkcje te są teraz
stosowane. Najpierw jednak oba porty szeregowe zostają uruchomione z
prędkością transmisji sygnału 19200 bodów. Dopiero wtedy otwierana jest funkcja
espConfig(). W przypadku błędu uruchamiana jest natychmiast funkcja
serialDebug(). Jeśli wszystko przebiegło bez problemu, wysyłany jest komunikat
powodzenia. W źniejszych programach po udanej konfiguracji dodatkowo
zapala się dioda LED na pinie 13, która na karcie oznaczona jest symbolem D3 .
Dzięki temu pojawia się potwierdzenie także wtedy, gdy moduł nie jest podłączony
do komputera z monitorem szeregowym. W tej próbie jednak dioda LED potrzebna
jest do informacji zwrotnej o statusie sygnału ping. Zapytanie odbywa się także
bezpośrednio w kolejnym wierszu po konfiguracji. Wysyłane jest polecenie
AT+PING z adresem Google jako parametr. Zamiast tego adresu można wysłać
zapytanie także na adres IP w sieci lokalnej. W przypadku powodzenia pojawia się
komunikat i włącza się wspomniana dioda LED D3. W ostatnim kroku program
przechodzi do funkcji loop, która z kolei wywołuje funkcję serialDebug(). Można
więc po programie przetestować dalsze polecenia i przykładowo wysyłać sygnały
ping na inne adresy.
1.3 | Rozpoznawanie sieci
W tym rozdziale będzie m.in. mowa po raz pierwszy o drobnych pracach przy
sprzęcie. Celem projektu jest stworzenie swego rodzaju instalacji alarmowej, która
będzie reagować, gdy w zasięgu znajdzie się określona sieć lub gdy zostanie
włączona.
Potrzebne są tylko dwa podzespoły i kawałek
drutu. Szczegóły budowy przedstawione są na
odpowiednich ilustracjach.
Podłączenie głośnika piezoelektrycznego
Potrzebne części
1 x płytka ze złączami wtykowymi, 1 x NanoESP, 1 x
element piezoelektryczny, drut sterujący
Tekst źródłowy tego projektu żni się od poprzedniej próby przede wszystkim w
następujących funkcjach:
001
void findSSID()
002
{
003
esp8266.println("AT+CWLAP");
004
if (esp8266.findUntil(ToFindSSID,"OK")) alarm();
005
else debug("SSID not found!");
006
}
007
008
void alarm()
009
{
010
debug("alarm!");
011
012
digitalWrite(LED_ALARM, HIGH);
013
014
for (int i; i <=30; i++)
015
{
016
tone(PIEZO, 400, 500);
017
delay(500);
018
tone(PIEZO, 800, 500);
019
delay(500);
020
}
021
022
digitalWrite(LED_ALARM, LOW);
023
}
Funkcja findSSID() jest wywoływana co ok. 30 sekund w trybie loop i poszukuje
wszelkich sieci w otoczeniu. Gdy odnaleziona zostanie szukana sieć, uruchamiana
jest funkcja alarm(), włącza się dioda LED D3 a element piezoelektryczny wydaje
sygnał. W tym przykładzie poszukiwana jest sieć o SSID NanoESP , czyli w
zasadzie inne sieci NanoESP w zasięgu. Ale na początku programu w #define
ToFindSSID można wpisać inne SSID. Można w ten sposób np. sprawdzić, jak
daleko sięga dana sieć WLAN.
UDP I IP
Ten rozdział dotyczy podstawowej wymiany danych między dwoma systemami
poprzez sieć WLAN. Zajmiemy się tutaj takimi tematami jak porty IP oraz protokół
UDP. W pierwszym rzędzie należy więc wyjaśnić te podstawowe pojęcia.
Co to jest adres IP?
Adres IP działa tak, jak adres pocztowy. Na jego podstawie można jednoznacznie
zidentyfikować i zaadresować komputer w sieci. Przykładowy adres IP utworzony
na podstawie stosowanego jeszcze standardu IPv4 wygląda następująco:
192.168.4.1
są to cztery liczby, a mówiąc dokładniej cztery bajty. Oznacza to, że wartość
jednej liczby może wynieść maksymalnie 255. Generalnie wyróżnia się lokalne
adresy IP, czyli w skrócie IP, które są np. nadawane komputerom i urządzeniom w
sieci domowej oraz globalne IP.
Lokalne IP są z reguły przydzielane przez router. Zazwyczaj rozpoczynają się od
192.168. Następująca potem liczba jest różna w różnych routerach. Gdy NanoESP
działa jako Access Point i do jego sieci zgłaszają się komputery, każdy z nich
otrzymuje adres rozpoczynający się od 192.168.4. W ten sposób tworzy się
podsieć. Routery Fritz!Box przydzielają z reguły lokalne adresy IP wg schematu
192.168.178.X. Własny IP można sprawdzić w Windows wpisując w wierszu
polecenia (Start -> programy -> akcesoria -> wiersz polecenia) polecenie
ipconfig. Pojawia się dłuższa lista zawierająca także punkt adres IPv4 z Twoim
lokalnym adresem IP w sieci.
Globalne IP są z reguły nadawane przez dostawcę internetu. Jest to np. adres,
pod którym Twój router dostępny jest w sieci globalnej. Router tworzy sieć lokalną
i przesyła dane do klientów. Jedną z moż liwości sprawdzenia swojego globalnego
adresu IP jest wejście na stronę http://www.meine-aktuelle-ip.de/. Na tej
stronie podawane są dodatkowo inne dane, do których ma wgląd serwer sieci
web. Wbrew temu, co wielu sądzi, nie jesteśmy w internecie anonimowi.
Co to jest port?
Kontynuując porównanie do adresu pocztowego port można określić jako drzwi do
mieszkania w domu wielorodzinnym. Komputer posiadający jednoznaczny IP
może udostępniać żne usługi przez żne porty. Poprzez IP można dotrzeć do
serwera, ale poprzez port trzeba wybrać jeszcze odpowiednią usługę. Może to być
np. port 20 do transmisji danych FTP lub port 23 do połączenia Telnet. Z reguły
można dowolnie wybierać port, jednakże występują porty standardowe ułatwiające
pracę z aplikacjami sieciowymi. Lista portów standardowych znajduje się na
stronie
https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports
Co to jest UDP?
UDP to skrót od User Datagram Protocol. Jest to minimalny bezpołączeniowy
protokół internetowy. Oznacza to, że jest on w zasadzie bardziej minimalistyczny i
prostszy niż inne protokoły internetowe, jak np. TCP, którym zajmiemy się źniej.
Porównanie nie jest teraz zbyt proste, ale można już teraz zapamiętać sobie kilka
właściwości protokołu:
U
UDP obsługuję funkcję broadcast.
U
Nie odbywa się sprawdzanie danych pod kątem poprawności oraz
korekta błędów.
U
Nie ma więc żadnej gwarancji, że dane zostały przekazane
pomyślnie.
U
Ponadto nie ma gwarancji, że dane nie zostały po drodze
zafałszowane lub przechwycone przez osoby trzecie.
U
Nie ma konieczności nawiązywania połączenia, lecz możliwa jest
szybka wymiana danych.
U
Prawie nie występują wahania opóźnienia transmisji.
U
Format ten nadaje się np. do VoIP (Voice over IP czyli
telefonowanie przez internet).
Są to najważniejsze podstawy dotyczące pojęć używanych w poniższych
projektach. Można głębiej zająć się tym tematem i w odpowiednim miejscu
zostaną przedstawione jeszcze dalsze informacje. Teraz jednak przejdziemy do
części praktycznej.
2.1 | Wymiana danych między kartą a PC przez UDP
W pierwszym projekcie dotyczącym UDP będą wymieniane dane między kartą i
PC za pośrednictwem WLAN. Warunkiem jest posiadanie przez komputer
adaptera WLAN. Program na komputerze dba o prawidłowe odbieranie
wiadomości. W tej próbie nie jest konieczne dodatkowe rozbudowywanie sprzętu.
Program
Po załadowaniu programu P04_UDPBasics.ino na kontroler będzie on
skonfigurowany jako Access Point i będzie możliwe odnalezienie otwartej sieci o
nazwie NanoESP. Jednakże przed połączeniem się z siecią należy wcześniej z
internetu pobrać odpowiedni program na PC. Przy moich próbach użyłem
programu Packet Sender od Dan Nagle, który można pobrać pod następującym
linkiem:
https://packetsender.com/
  • 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
  • Page 21 21
  • Page 22 22
  • Page 23 23
  • Page 24 24
  • Page 25 25
  • Page 26 26
  • Page 27 27
  • Page 28 28
  • Page 29 29
  • Page 30 30
  • Page 31 31
  • Page 32 32
  • Page 33 33
  • Page 34 34
  • Page 35 35
  • Page 36 36
  • Page 37 37
  • Page 38 38
  • Page 39 39
  • Page 40 40
  • Page 41 41
  • Page 42 42
  • Page 43 43
  • Page 44 44
  • Page 45 45
  • Page 46 46
  • Page 47 47
  • Page 48 48
  • Page 49 49
  • Page 50 50
  • Page 51 51
  • Page 52 52
  • Page 53 53
  • Page 54 54
  • Page 55 55
  • Page 56 56
  • Page 57 57
  • Page 58 58
  • Page 59 59
  • Page 60 60
  • Page 61 61
  • Page 62 62
  • Page 63 63
  • Page 64 64
  • Page 65 65
  • Page 66 66
  • Page 67 67
  • Page 68 68
  • Page 69 69
  • Page 70 70
  • Page 71 71
  • Page 72 72
  • Page 73 73
  • Page 74 74
  • Page 75 75
  • Page 76 76
  • Page 77 77
  • Page 78 78
  • Page 79 79
  • Page 80 80
  • Page 81 81

Conrad Components 10215 Profi Lernpaket Internet of Things Course material 14 years and over Instrukcja obsługi

Typ
Instrukcja obsługi