Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
esp8266_wifi_modules [2014/12/02 12:03] karl [Communication] |
esp8266_wifi_modules [2017/04/04 06:42] (aktuell) karl [Notes] |
||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
This module supports TCP and UDP, both as a server or a client, which is pretty awesome! | This module supports TCP and UDP, both as a server or a client, which is pretty awesome! | ||
+ | Version 2 has an IPEX (U.FL) connector. A possible antenna coudl be this one from [[http:// | ||
===== Documentation Sites ===== | ===== Documentation Sites ===== | ||
http:// | http:// | ||
Zeile 91: | Zeile 92: | ||
==== Testing it as a TCP client ==== | ==== Testing it as a TCP client ==== | ||
+ | |||
+ | < | ||
+ | AT+RST | ||
+ | |||
+ | |||
+ | OK | ||
+ | ? | ||
+ | \0xff | ||
+ | [Vendor: | ||
+ | |||
+ | ready | ||
+ | AT+CWJAP=" | ||
+ | |||
+ | |||
+ | OK | ||
+ | AT+CIPSTART=" | ||
+ | |||
+ | |||
+ | OK | ||
+ | Linked | ||
+ | AT+CIPSEND=43 | ||
+ | |||
+ | > GET / | ||
+ | |||
+ | SEND OK | ||
+ | AT+CIPSEND=30 | ||
+ | |||
+ | > Host: www.zeilhofer.co.at: | ||
+ | |||
+ | SEND OK | ||
+ | AT+CIPSEND=2 | ||
+ | |||
+ | > | ||
+ | |||
+ | SEND OK | ||
+ | |||
+ | +IPD, | ||
+ | Date: Tue, 02 Dec 2014 13:46:03 GMT | ||
+ | Server: Apache | ||
+ | Connection: close | ||
+ | Transfer-Encoding: | ||
+ | Content-Type: | ||
+ | |||
+ | 14 | ||
+ | Hello World!< | ||
+ | |||
+ | |||
+ | |||
+ | OK | ||
+ | |||
+ | +IPD,5:0 | ||
+ | |||
+ | |||
+ | OK | ||
+ | </ | ||
+ | |||
+ | As we can see, we get the desired response from the webserver. | ||
+ | The HTTP message body is " | ||
+ | A chunk is terminated with a < | ||
+ | |||
+ | Lets decode the message above in details: | ||
+ | |||
+ | +IPD,170: | ||
+ | this is sent from the WiFi module, and tells the terminal, that data from the open TCP connection is received. The data has 170 bytes. | ||
+ | HTTP/1.1 200 OK< | ||
+ | 17 bytes: This is the HTTP status line. For details click here: http:// | ||
+ | \\ | ||
+ | The line is terminated with < | ||
+ | Date: Tue, 02 Dec 2014 13:46:03 GMT< | ||
+ | 37 bytes: From the server we get the current date and time | ||
+ | Server: Apache< | ||
+ | 16 bytes: The server tells us, that it is an Apache server. | ||
+ | Connection: close< | ||
+ | 19 bytes: The connection is closed by the server after the message is transmitted. This is because we did not tell the server to keep the connection alive (we could add **Connection: | ||
+ | Transfer-Encoding: | ||
+ | 28 bytes: the message body is transmitted in chunks. | ||
+ | Content-Type: | ||
+ | < | ||
+ | 2 bytes: end of http-message-header\\ | ||
+ | Body: | ||
+ | 14< | ||
+ | 4 bytes: hexadecimal block length = 20 decimal | ||
+ | Hello World!< | ||
+ | < | ||
+ | 20 bytes message body. | ||
+ | < | ||
+ | 2 bytes empty line, which terminates the first chunk | ||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | OK | ||
+ | |||
+ | +IPD,5:0 | ||
+ | |||
+ | |||
+ | OK | ||
+ | </ | ||
+ | |||
+ | ===== TCP Server Example ===== | ||
+ | **Attention: | ||
+ | |||
+ | < | ||
+ | AT+RST | ||
+ | OK | ||
+ | c_\0xc7\0xcfRS\0xfe\0xe2FjS\0xf6fJ[\0xfa\0xe2\0xea | ||
+ | [Vendor: | ||
+ | ready | ||
+ | |||
+ | AT+CWJAP=" | ||
+ | OK | ||
+ | |||
+ | AT+CIPSTATUS | ||
+ | STATUS:5 | ||
+ | OK | ||
+ | |||
+ | AT+CIPMUX=1 | ||
+ | OK | ||
+ | |||
+ | AT+CIPSTATUS | ||
+ | STATUS:5 | ||
+ | OK | ||
+ | |||
+ | AT+CIPSERVER=1, | ||
+ | OK | ||
+ | |||
+ | AT+CIPSTATUS | ||
+ | STATUS:5 | ||
+ | OK | ||
+ | |||
+ | Link | ||
+ | |||
+ | AT+CIPSTATUS | ||
+ | STATUS:3 | ||
+ | +CIPSTATUS: | ||
+ | OK | ||
+ | |||
+ | +IPD, | ||
+ | |||
+ | OK | ||
+ | |||
+ | STATUS:3 | ||
+ | +CIPSTATUS: | ||
+ | OK | ||
+ | |||
+ | AT+CIPSEND=0, | ||
+ | > Hello Lenovo, thank you very much for your request | ||
+ | SEND OK | ||
+ | |||
+ | +IPD, | ||
+ | OK | ||
+ | |||
+ | Unlink | ||
+ | |||
+ | AT+CIPSTATUS | ||
+ | STATUS:4 | ||
+ | OK | ||
+ | </ | ||
+ | |||
+ | A server is opened on a specific port. To this port there can be up to 5 connections in parallel, TCP and UDP mixed. When responding, we have to set the ' | ||
+ | |||
+ | If we have multiple incomint TCP-connections from one client (multiple processes), we get multiple connections in the CIPSTATUS-list. Each with it's own reply port. \\ | ||
+ | But if we get multiple UDP connections from one client (also different client-processes), | ||
+ | |||
+ | ==== CIPSTATUS Example ==== | ||
+ | < | ||
+ | AT+CIPSTATUS | ||
+ | STATUS:3 | ||
+ | +CIPSTATUS: | ||
+ | +CIPSTATUS: | ||
+ | +CIPSTATUS: | ||
+ | OK | ||
+ | </ | ||
+ | |||
+ | Here I opened 4 instances of the application " | ||
+ | |||
+ | ===== Notes ===== | ||
+ | When we close the server with | ||
+ | AT+CIPSERVER=0 | ||
+ | , then the module has to be resetted! | ||
+ | |||
+ | As far as I know, we cannot find out, on which port the server was opened. | ||
+ | |||
+ | We can find the own IP address with | ||
+ | AT+CIFSR | ||
+ | . Note, that there is no questionmark! | ||
+ | |||
+ | |||
+ | {{tag> | ||