Master Program

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed

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?

UserRevisionLine numberNew 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 };