Master Program
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@0:beeeb5671c2a, 2015-10-31 (annotated)
- Committer:
- GabDiSi
- Date:
- Sat Oct 31 22:35:23 2015 +0000
- Revision:
- 0:beeeb5671c2a
- Child:
- 1:b6e184239fba
ESP8266 implemented
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GabDiSi | 0:beeeb5671c2a | 1 | #include <string.h> |
GabDiSi | 0:beeeb5671c2a | 2 | #include "mbed.h" |
GabDiSi | 0:beeeb5671c2a | 3 | |
GabDiSi | 0:beeeb5671c2a | 4 | Serial pc(USBTX, USBRX); // tx, rx |
GabDiSi | 0:beeeb5671c2a | 5 | Serial serial6(D1, D0); // tx, rx |
GabDiSi | 0:beeeb5671c2a | 6 | DigitalOut led1(LED1); |
GabDiSi | 0:beeeb5671c2a | 7 | |
GabDiSi | 0:beeeb5671c2a | 8 | int ESP8266limitResponse = 999999; |
GabDiSi | 0:beeeb5671c2a | 9 | |
GabDiSi | 0:beeeb5671c2a | 10 | char ESP8266okStr[] = "OK\r\n"; |
GabDiSi | 0:beeeb5671c2a | 11 | char ESP8266getStr[] = "OK\r\n> "; |
GabDiSi | 0:beeeb5671c2a | 12 | char ESP8266readyStr[] = "ready\r\n"; |
GabDiSi | 0:beeeb5671c2a | 13 | char ESP8266sendStr[] = "SEND OK\r\n\r\n"; |
GabDiSi | 0:beeeb5671c2a | 14 | char ESP8266closedStr[] = "CLOSED\r\n"; |
GabDiSi | 0:beeeb5671c2a | 15 | |
GabDiSi | 0:beeeb5671c2a | 16 | bool ESP8266readResponse(char* delimiter, char* response) { |
GabDiSi | 0:beeeb5671c2a | 17 | int i = 0, j = 0; |
GabDiSi | 0:beeeb5671c2a | 18 | char c; |
GabDiSi | 0:beeeb5671c2a | 19 | |
GabDiSi | 0:beeeb5671c2a | 20 | while(j<ESP8266limitResponse) { |
GabDiSi | 0:beeeb5671c2a | 21 | c = serial6.getc(); |
GabDiSi | 0:beeeb5671c2a | 22 | response[j++] = c; |
GabDiSi | 0:beeeb5671c2a | 23 | |
GabDiSi | 0:beeeb5671c2a | 24 | if(c == delimiter[i]) { |
GabDiSi | 0:beeeb5671c2a | 25 | i++; |
GabDiSi | 0:beeeb5671c2a | 26 | |
GabDiSi | 0:beeeb5671c2a | 27 | if(delimiter[i] == '\0') { |
GabDiSi | 0:beeeb5671c2a | 28 | response[j] = '\0'; |
GabDiSi | 0:beeeb5671c2a | 29 | return true; |
GabDiSi | 0:beeeb5671c2a | 30 | }; |
GabDiSi | 0:beeeb5671c2a | 31 | } else { |
GabDiSi | 0:beeeb5671c2a | 32 | i = 0; |
GabDiSi | 0:beeeb5671c2a | 33 | }; |
GabDiSi | 0:beeeb5671c2a | 34 | }; |
GabDiSi | 0:beeeb5671c2a | 35 | |
GabDiSi | 0:beeeb5671c2a | 36 | response[j] = '\0'; |
GabDiSi | 0:beeeb5671c2a | 37 | return false; |
GabDiSi | 0:beeeb5671c2a | 38 | }; |
GabDiSi | 0:beeeb5671c2a | 39 | |
GabDiSi | 0:beeeb5671c2a | 40 | void ESP8266init(char* ssid, char* password) { |
GabDiSi | 0:beeeb5671c2a | 41 | led1 = 0; |
GabDiSi | 0:beeeb5671c2a | 42 | |
GabDiSi | 0:beeeb5671c2a | 43 | pc.baud(115200); |
GabDiSi | 0:beeeb5671c2a | 44 | serial6.baud(115200); |
GabDiSi | 0:beeeb5671c2a | 45 | |
GabDiSi | 0:beeeb5671c2a | 46 | pc.printf("Hello!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 47 | |
GabDiSi | 0:beeeb5671c2a | 48 | pc.printf("ESP8266... "); |
GabDiSi | 0:beeeb5671c2a | 49 | serial6.printf("AT+RST\r\n"); |
GabDiSi | 0:beeeb5671c2a | 50 | ESP8266readResponse(ESP8266okStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 51 | ESP8266readResponse(ESP8266readyStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 52 | pc.printf("ready!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 53 | |
GabDiSi | 0:beeeb5671c2a | 54 | pc.printf("Client mode... "); |
GabDiSi | 0:beeeb5671c2a | 55 | serial6.printf("AT+CWMODE=1\r\n"); |
GabDiSi | 0:beeeb5671c2a | 56 | ESP8266readResponse(ESP8266okStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 57 | pc.printf("done!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 58 | |
GabDiSi | 0:beeeb5671c2a | 59 | pc.printf("Wi-Fi connection... "); |
GabDiSi | 0:beeeb5671c2a | 60 | serial6.printf("AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, password); |
GabDiSi | 0:beeeb5671c2a | 61 | ESP8266readResponse(ESP8266okStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 62 | pc.printf("done!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 63 | |
GabDiSi | 0:beeeb5671c2a | 64 | led1 = 1; |
GabDiSi | 0:beeeb5671c2a | 65 | }; |
GabDiSi | 0:beeeb5671c2a | 66 | |
GabDiSi | 0:beeeb5671c2a | 67 | void ESP8266get(char* domain, char* url, char* response) { |
GabDiSi | 0:beeeb5671c2a | 68 | int n1, n2; |
GabDiSi | 0:beeeb5671c2a | 69 | |
GabDiSi | 0:beeeb5671c2a | 70 | n1 = strlen(domain); |
GabDiSi | 0:beeeb5671c2a | 71 | n2 = strlen(url); |
GabDiSi | 0:beeeb5671c2a | 72 | |
GabDiSi | 0:beeeb5671c2a | 73 | pc.printf("Connection at server... "); |
GabDiSi | 0:beeeb5671c2a | 74 | serial6.printf("AT+CIPSTART=\"TCP\",\"%s\",80\r\n", domain); |
GabDiSi | 0:beeeb5671c2a | 75 | ESP8266readResponse(ESP8266okStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 76 | pc.printf("done!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 77 | |
GabDiSi | 0:beeeb5671c2a | 78 | pc.printf("Sending # chars... "); |
GabDiSi | 0:beeeb5671c2a | 79 | serial6.printf("AT+CIPSEND=%d\r\n", 11+n1+1+n2+13); |
GabDiSi | 0:beeeb5671c2a | 80 | ESP8266readResponse(ESP8266getStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 81 | pc.printf("done!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 82 | |
GabDiSi | 0:beeeb5671c2a | 83 | pc.printf("Sending request... "); |
GabDiSi | 0:beeeb5671c2a | 84 | serial6.printf("GET http://%s/%s HTTP/1.0\r\n\r\n", domain, url); |
GabDiSi | 0:beeeb5671c2a | 85 | ESP8266readResponse(ESP8266sendStr, NULL); |
GabDiSi | 0:beeeb5671c2a | 86 | ESP8266readResponse(ESP8266closedStr, response); |
GabDiSi | 0:beeeb5671c2a | 87 | pc.printf("done!\r\n"); |
GabDiSi | 0:beeeb5671c2a | 88 | }; |
GabDiSi | 0:beeeb5671c2a | 89 | |
GabDiSi | 0:beeeb5671c2a | 90 | int main() { |
GabDiSi | 0:beeeb5671c2a | 91 | char response[ESP8266limitResponse]; |
GabDiSi | 0:beeeb5671c2a | 92 | char domain[] = "gabrieledisimone.it"; |
GabDiSi | 0:beeeb5671c2a | 93 | char url[] = ""; |
GabDiSi | 0:beeeb5671c2a | 94 | |
GabDiSi | 0:beeeb5671c2a | 95 | ESP8266init("Telecom-47520601", "famigliaquino2000router10"); |
GabDiSi | 0:beeeb5671c2a | 96 | |
GabDiSi | 0:beeeb5671c2a | 97 | ESP8266get(domain, url, response); |
GabDiSi | 0:beeeb5671c2a | 98 | |
GabDiSi | 0:beeeb5671c2a | 99 | pc.printf("response:\r\n%s", response); |
GabDiSi | 0:beeeb5671c2a | 100 | while(1) { |
GabDiSi | 0:beeeb5671c2a | 101 | pc.putc(serial6.getc()); |
GabDiSi | 0:beeeb5671c2a | 102 | }; |
GabDiSi | 0:beeeb5671c2a | 103 | }; |