Komunikacja z modułem WiFi ESP-01 (cz. 2/3)


Tomasz Bartuś



2016-09-15
Komunikacja z modułem WiFi ESP-01

Wstęp

W pierwszej części cyklu: Konfiguracja konwertera UART i modułu WiFi ESP-01 (cz. 1/3) opisano sposób nawiązania komunikacji z modułem WiFi. W tej części poradnika zaprezentowane zostaną niektóre polecenia (AT) obsługujące moduł ESP8266. Źródło: ElektroPrzewodnik.

Lista części

  1. platforma prototypowa Arduino (tu Leonardo),
  2. czujnik temperatury DS18B20,
  3. Moduł WiFi ESP8266 (ESP-01),
  4. Moduł zasilania 545043,
  5. Konwerter USB-UART CP2102,
  6. płytka prototypowa,
  7. przewody.

Komendy AT

Testy rozpoczniemy od upewnienia się, że moduł ESP8266 posiada odłączony pin GPIO0 od masy (stan normalnej pracy) (Fig. 1).

Użytkowanie modułu ESP8266
Fig. 1. Układ do testowania modułu ESP8266

Komunikację z modułem ESP8266 zapewni monitor portu szeregowego Arduino IDE. Należy uruchomić środowisko, a następnie z menu głównego > Narzędzia > Port szeregowy wybrać port, do którego, za pośrednictwem konwertera, podłączony jest nasz moduł WiFi. Otwieramy Monitor portu szeregowego i wydajemy modułowi ESP8266 pierwsze polecenie: AT, które służy do potwierdzenia komunikacji pomiędzy komputerem a modułem ESP8266. Pełną listę poleceń AT można pobrać ze strony. Jeżeli połączenie jest poprawne. moduł WiFi odpowie nam

AT

OK

Oznacza, to, że moduł WiFi jest gotowy do pracy.

Sprawdzenie wersji oprogramowania
 
AT+GMR
00200.9.5(b1)
compiled @ Dec 25 2014 21:40:28
AI-THINKER Dec 25 2014

OK
Sprawdzenie prędkości transmisji danych
 
AT+CIOBAUD?
+CIOBAUD:9600

OK
Sprawdzanie trybu pracy
 
AT+CWMODE?
+CWMODE:1

OK

gdzie:

1 - klient,
2 - access point,
3 - klient + access point.
Ustawienie trybu pracy
 
AT+CWMODE=1
OK
Sprawdzanie trybu odbierania danych
 
AT+CIPMODE?
+CIPMODE:0

OK

gdzie:

0 - dane przychodzą w formacie: "+IPD,kanał,liczba_bajtów",
1 - dane odbiorcze są wysyłane bezpośrednio na port szeregowy.
Ustawienie trybu odbierania danych
 
AT+CIPMODE=0

OK
Sprawdzanie trybu (1 czy wiele połączeń)
 
AT+CIPMUX?
+CIPMUX:0

OK

gdzie:

0 - obsługa wyłącznie jednego połączenia,
1 - obsługa wielu połączeń.
Ustawienie trybu (1 czy wiele połączeń)
 
AT+CIPMUX=1

OK
Skanowanie okolicznych sieci WiFi
 
AT+CWLAP
+CWLAP:(3,"UPC248663944",-85,"34:7a:60:a5:f2:b9",1)
+CWLAP:(4,"UPC1368607",-77,"8c:04:ff:b9:ab:d9",1)
+CWLAP:(0,"UPC Wi-Free",-76,"8e:04:ff:b9:ab:db",1)
+CWLAP:(4,"vlan",-82,"64:66:b3:90:51:29",1)
+CWLAP:(4,"K1",-86,"78:54:2e:f5:b8:46",2)
+CWLAP:(2,"F91",-60,"00:1e:2a:09:29:a2",13)
+CWLAP:(0,"UPC Wi-Free",-86,"06:7c:34:4f:d4:3f",6)
+CWLAP:(4,"UPC7165297",-85,"64:7c:34:4f:d4:3f",6)
+CWLAP:(4,"Tech_D0044388",-85,"08:95:2a:0d:03:bd",7)

OK
Połączenie z określoną siecią
 
AT+CWJAP="F91","haslo"

OK
Sprawdznie połączenie z siecią
 
AT+CWJAP?
+CWJAP:"F91"

OK
Sprawdznie nr IP (tryb klient)
 
AT+CIPSTA?
+CIPSTA:"192.168.1.8"

OK
Sprawdznie nr MAC (tryb klient)
 
AT+CIPSTAMAC?
+CIPSTAMAC:"18:fe:34:d1:3e:18"

OK
Sprawdznie adresów IP i MAC modułu
 
AT+CIFSR
+CIFSR:STAIP,"192.168.1.8"
+CIFSR:STAMAC,"18:fe:34:d1:3e:18"

OK
Uruchamianie serwera WWW
 
AT+CIPSERVER=1,80

OK

gdzie:

1 - uruchamia serwer,
0 - wyłącza serwer,
80 - numer portu,

Jeżeli w przeglądarce WWW wpiszemy adres serwera WWW modułu ESP8266 (192.168.1.8), moduł zgłosi na monitorze portu szeregowego zapytanie klienta (kanał=0):

0,CONNECT

+IPD,0,383:GET / HTTP/1.1
Host: 192.168.1.8
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4


OK

Możemy teraz do przeglądarki klienta wysłać dowolną informację

Wysłanie iformacji do klienta
 
AT+CIPSEND=0,12
>HELLO WORLD!busy...

SEND OK

gdzie:

0 - nr klienta,
12 - liczba wysyłanych bajtów (1 znak ASCII = 8 bitów),
Zamykanie połączenia klienta
 
AT+CIPCLOSE=0
0 CLOSED

OK

gdzie:

0 - nr klienta,
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]