Gabriele Di Simone
/
NUCLEO-F401RE_ROPE_WIFI_SLAVE
Slave program
Diff: main.cpp
- Revision:
- 0:79a1c40a9a1b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Nov 16 19:57:54 2015 +0000 @@ -0,0 +1,144 @@ +#include <string.h> +#include "mbed.h" + +Serial pc(USBTX, USBRX); // tx, rx +Serial serial6(PA_11, PA_12); // tx, rx +DigitalOut led1(LED1); + +int ESP8266limitResponse = 999999; + +char ESP8266responseOkStr[] = "OK\r\n"; +char ESP8266responseGetStr[] = "OK\r\n> "; +char ESP8266responseReadyStr[] = "ready\r\n"; +char ESP8266responseSendStr[] = "SEND OK\r\n\r\n"; +char ESP8266responseClosedStr[] = "CLOSED\r\n"; + +char ESP8266initStr[] = "ROPE WIFI - TECHNOLOGY DAY"; +char ESP8266doneStr[] = "done!"; +char ESP8266resetStr[] = "Init ESP8266... "; +char ESP8266clientModeStr[] = "Client mode... "; +char ESP8266wifiConnectionStr[] = "WiFi connection... "; +char ESP8266serverConnectionStr[] = "Server connection... "; +char ESP8266sendingCharsStr[] = "Sending chars... "; +char ESP8266sendingRequestStr[] = "Sending request... "; + +int ESP8266readResponse(char* delimiter) { + int i = 0, j = 0; + char c, exc; + + while(j<ESP8266limitResponse) { + + c = serial6.getc(); + pc.putc(c); + + if(c == delimiter[i]) { + i++; + + if(delimiter[i] == '\0') { + return (int) (exc-48); + }; + } else { + exc = c; + i = 0; + }; + }; + + return 0; +}; + +void ESP8266init(char* ssid, char* password) { + led1 = 1; + + pc.baud(115200); + serial6.baud(115200); + + pc.printf("%s\r\n", ESP8266initStr); + + pc.printf("%s", ESP8266resetStr); + serial6.printf("AT+RST\r\n"); + + ESP8266readResponse(ESP8266responseOkStr); + ESP8266readResponse(ESP8266responseReadyStr); + pc.printf("%s\r\n", ESP8266doneStr); + led1 = 0; + pc.printf("%s", ESP8266clientModeStr); + serial6.printf("AT+CWMODE=1\r\n"); + ESP8266readResponse(ESP8266responseOkStr); + pc.printf("%s\r\n", ESP8266doneStr); + + pc.printf("%s", ESP8266wifiConnectionStr); + serial6.printf("AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, password); + ESP8266readResponse(ESP8266responseOkStr); + pc.printf("%s\r\n", ESP8266doneStr); + + led1 = 0; + +}; + +int ESP8266get(char* domain, char* url) { + int n1, n2; + + n1 = strlen(domain); + n2 = strlen(url); + + pc.printf("%s", ESP8266serverConnectionStr); + serial6.printf("AT+CIPSTART=\"TCP\",\"%s\",80\r\n", domain); + ESP8266readResponse(ESP8266responseOkStr); + pc.printf("%s\r\n", ESP8266doneStr); + + pc.printf("%s", ESP8266sendingCharsStr); + serial6.printf("AT+CIPSEND=%d\r\n", 11+n1+1+n2+13); + ESP8266readResponse(ESP8266responseGetStr); + pc.printf("%s\r\n", ESP8266doneStr); + + pc.printf("%s", ESP8266sendingRequestStr); + serial6.printf("GET http://%s/%s HTTP/1.0\r\n\r\n", domain, url); + ESP8266readResponse(ESP8266responseSendStr); + pc.printf("%s\r\n", ESP8266doneStr); + + return ESP8266readResponse(ESP8266responseClosedStr); +}; + +void init() { + ESP8266init("Telecom-47520601", "famigliaquino2000router10"); +}; + +void checkState() { + int response; + + while(1) { + char domain[] = "gabrieledisimone.it"; + char url[] = "neapolisRead.php"; + + response = ESP8266get(domain, url); + pc.printf("response:%d\r\n", response); + + switch(response) { + case 1: + + break; + + case 2: + + break; + + case 3: + + break; + + case 4: + + break; + + default: + + break; + }; + wait(3); + }; +}; + +int main() { + init(); + checkState(); +}; \ No newline at end of file