Master Program

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed

Committer:
GabDiSi
Date:
Mon Nov 16 19:59:28 2015 +0000
Revision:
3:2d2c2f2044b4
Parent:
2:b05f40331fc3
v0.1

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 1:b6e184239fba 3 #include "TS_DISCO_F746NG.h"
GabDiSi 1:b6e184239fba 4 #include "LCD_DISCO_F746NG.h"
GabDiSi 1:b6e184239fba 5
GabDiSi 1:b6e184239fba 6 LCD_DISCO_F746NG lcd;
GabDiSi 1:b6e184239fba 7 TS_DISCO_F746NG ts;
GabDiSi 0:beeeb5671c2a 8
GabDiSi 0:beeeb5671c2a 9 Serial pc(USBTX, USBRX); // tx, rx
GabDiSi 0:beeeb5671c2a 10 Serial serial6(D1, D0); // tx, rx
GabDiSi 0:beeeb5671c2a 11 DigitalOut led1(LED1);
GabDiSi 0:beeeb5671c2a 12
GabDiSi 1:b6e184239fba 13 int lineDisplay = 0;
GabDiSi 0:beeeb5671c2a 14 int ESP8266limitResponse = 999999;
GabDiSi 0:beeeb5671c2a 15
GabDiSi 1:b6e184239fba 16 char ESP8266responseOkStr[] = "OK\r\n";
GabDiSi 1:b6e184239fba 17 char ESP8266responseGetStr[] = "OK\r\n> ";
GabDiSi 1:b6e184239fba 18 char ESP8266responseReadyStr[] = "ready\r\n";
GabDiSi 1:b6e184239fba 19 char ESP8266responseSendStr[] = "SEND OK\r\n\r\n";
GabDiSi 1:b6e184239fba 20 char ESP8266responseClosedStr[] = "CLOSED\r\n";
GabDiSi 1:b6e184239fba 21
GabDiSi 1:b6e184239fba 22 char ESP8266initStr[] = "ROPE WIFI - TECHNOLOGY DAY";
GabDiSi 1:b6e184239fba 23 char ESP8266doneStr[] = "done!";
GabDiSi 1:b6e184239fba 24 char ESP8266resetStr[] = "Init ESP8266... ";
GabDiSi 1:b6e184239fba 25 char ESP8266clientModeStr[] = "Client mode... ";
GabDiSi 1:b6e184239fba 26 char ESP8266wifiConnectionStr[] = "WiFi connection... ";
GabDiSi 1:b6e184239fba 27 char ESP8266serverConnectionStr[] = "Server connection... ";
GabDiSi 1:b6e184239fba 28 char ESP8266sendingCharsStr[] = "Sending chars... ";
GabDiSi 1:b6e184239fba 29 char ESP8266sendingRequestStr[] = "Sending request... ";
GabDiSi 0:beeeb5671c2a 30
GabDiSi 2:b05f40331fc3 31 TS_StateTypeDef TS_State;
GabDiSi 2:b05f40331fc3 32 uint8_t status;
GabDiSi 2:b05f40331fc3 33
GabDiSi 2:b05f40331fc3 34
GabDiSi 2:b05f40331fc3 35 void checkDisplayLines() {
GabDiSi 2:b05f40331fc3 36 if(lineDisplay>7) {
GabDiSi 2:b05f40331fc3 37 for(int idx = 2; idx<8; idx++) {
GabDiSi 2:b05f40331fc3 38 lcd.ClearStringLine(idx);
GabDiSi 2:b05f40331fc3 39 };
GabDiSi 2:b05f40331fc3 40
GabDiSi 2:b05f40331fc3 41 lineDisplay = 2;
GabDiSi 2:b05f40331fc3 42 };
GabDiSi 2:b05f40331fc3 43 };
GabDiSi 2:b05f40331fc3 44
GabDiSi 0:beeeb5671c2a 45 bool ESP8266readResponse(char* delimiter, char* response) {
GabDiSi 0:beeeb5671c2a 46 int i = 0, j = 0;
GabDiSi 0:beeeb5671c2a 47 char c;
GabDiSi 0:beeeb5671c2a 48
GabDiSi 0:beeeb5671c2a 49 while(j<ESP8266limitResponse) {
GabDiSi 0:beeeb5671c2a 50 c = serial6.getc();
GabDiSi 0:beeeb5671c2a 51 response[j++] = c;
GabDiSi 0:beeeb5671c2a 52
GabDiSi 0:beeeb5671c2a 53 if(c == delimiter[i]) {
GabDiSi 0:beeeb5671c2a 54 i++;
GabDiSi 0:beeeb5671c2a 55
GabDiSi 0:beeeb5671c2a 56 if(delimiter[i] == '\0') {
GabDiSi 0:beeeb5671c2a 57 response[j] = '\0';
GabDiSi 0:beeeb5671c2a 58 return true;
GabDiSi 0:beeeb5671c2a 59 };
GabDiSi 0:beeeb5671c2a 60 } else {
GabDiSi 0:beeeb5671c2a 61 i = 0;
GabDiSi 0:beeeb5671c2a 62 };
GabDiSi 0:beeeb5671c2a 63 };
GabDiSi 0:beeeb5671c2a 64
GabDiSi 0:beeeb5671c2a 65 response[j] = '\0';
GabDiSi 0:beeeb5671c2a 66 return false;
GabDiSi 0:beeeb5671c2a 67 };
GabDiSi 0:beeeb5671c2a 68
GabDiSi 0:beeeb5671c2a 69 void ESP8266init(char* ssid, char* password) {
GabDiSi 0:beeeb5671c2a 70 led1 = 0;
GabDiSi 2:b05f40331fc3 71 lineDisplay = 0;
GabDiSi 0:beeeb5671c2a 72
GabDiSi 0:beeeb5671c2a 73 pc.baud(115200);
GabDiSi 0:beeeb5671c2a 74 serial6.baud(115200);
GabDiSi 0:beeeb5671c2a 75
GabDiSi 2:b05f40331fc3 76 lcd.SetTextColor(LCD_COLOR_RED);
GabDiSi 1:b6e184239fba 77 pc.printf("%s\r\n", ESP8266initStr);
GabDiSi 1:b6e184239fba 78 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266initStr, CENTER_MODE);
GabDiSi 1:b6e184239fba 79 lineDisplay++;
GabDiSi 2:b05f40331fc3 80 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 81
GabDiSi 1:b6e184239fba 82 pc.printf("%s", ESP8266resetStr);
GabDiSi 1:b6e184239fba 83 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266resetStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 84 serial6.printf("AT+RST\r\n");
GabDiSi 1:b6e184239fba 85 ESP8266readResponse(ESP8266responseOkStr, NULL);
GabDiSi 1:b6e184239fba 86 ESP8266readResponse(ESP8266responseReadyStr, NULL);
GabDiSi 2:b05f40331fc3 87 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 88 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 89 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 90 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 91
GabDiSi 1:b6e184239fba 92 pc.printf("%s", ESP8266clientModeStr);
GabDiSi 1:b6e184239fba 93 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266clientModeStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 94 serial6.printf("AT+CWMODE=1\r\n");
GabDiSi 1:b6e184239fba 95 ESP8266readResponse(ESP8266responseOkStr, NULL);
GabDiSi 2:b05f40331fc3 96 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 97 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 98 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 99 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 100
GabDiSi 1:b6e184239fba 101 pc.printf("%s", ESP8266wifiConnectionStr);
GabDiSi 1:b6e184239fba 102 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266wifiConnectionStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 103 serial6.printf("AT+CWJAP=\"%s\",\"%s\"\r\n", ssid, password);
GabDiSi 1:b6e184239fba 104 ESP8266readResponse(ESP8266responseOkStr, NULL);
GabDiSi 2:b05f40331fc3 105 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 106 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 107 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 108 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 109
GabDiSi 0:beeeb5671c2a 110 led1 = 1;
GabDiSi 2:b05f40331fc3 111 lcd.SetTextColor(LCD_COLOR_BLUE); //request button
GabDiSi 2:b05f40331fc3 112 lcd.FillCircle(425, 230, 25);
GabDiSi 3:2d2c2f2044b4 113
GabDiSi 3:2d2c2f2044b4 114 lcd.SetTextColor(LCD_COLOR_RED); //request button
GabDiSi 3:2d2c2f2044b4 115 lcd.FillCircle(350, 230, 25);
GabDiSi 3:2d2c2f2044b4 116
GabDiSi 3:2d2c2f2044b4 117 lcd.SetTextColor(LCD_COLOR_YELLOW); //request button
GabDiSi 3:2d2c2f2044b4 118 lcd.FillCircle(275, 230, 25);
GabDiSi 3:2d2c2f2044b4 119
GabDiSi 3:2d2c2f2044b4 120 lcd.SetTextColor(LCD_COLOR_GREEN); //request button
GabDiSi 3:2d2c2f2044b4 121 lcd.FillCircle(200, 230, 25);
GabDiSi 3:2d2c2f2044b4 122
GabDiSi 3:2d2c2f2044b4 123 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 124 };
GabDiSi 0:beeeb5671c2a 125
GabDiSi 0:beeeb5671c2a 126 void ESP8266get(char* domain, char* url, char* response) {
GabDiSi 0:beeeb5671c2a 127 int n1, n2;
GabDiSi 0:beeeb5671c2a 128
GabDiSi 0:beeeb5671c2a 129 n1 = strlen(domain);
GabDiSi 0:beeeb5671c2a 130 n2 = strlen(url);
GabDiSi 0:beeeb5671c2a 131
GabDiSi 1:b6e184239fba 132 pc.printf("%s", ESP8266serverConnectionStr);
GabDiSi 2:b05f40331fc3 133 checkDisplayLines();
GabDiSi 1:b6e184239fba 134 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266serverConnectionStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 135 serial6.printf("AT+CIPSTART=\"TCP\",\"%s\",80\r\n", domain);
GabDiSi 1:b6e184239fba 136 ESP8266readResponse(ESP8266responseOkStr, NULL);
GabDiSi 2:b05f40331fc3 137 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 138 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 139 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 140 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 141
GabDiSi 1:b6e184239fba 142 pc.printf("%s", ESP8266sendingCharsStr);
GabDiSi 2:b05f40331fc3 143 checkDisplayLines();
GabDiSi 1:b6e184239fba 144 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266sendingCharsStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 145 serial6.printf("AT+CIPSEND=%d\r\n", 11+n1+1+n2+13);
GabDiSi 1:b6e184239fba 146 ESP8266readResponse(ESP8266responseGetStr, NULL);
GabDiSi 2:b05f40331fc3 147 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 148 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 149 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 150 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 151
GabDiSi 1:b6e184239fba 152 pc.printf("%s", ESP8266sendingRequestStr);
GabDiSi 2:b05f40331fc3 153 checkDisplayLines();
GabDiSi 1:b6e184239fba 154 lcd.DisplayStringAt(0, LINE(lineDisplay), (uint8_t *)ESP8266sendingRequestStr, LEFT_MODE);
GabDiSi 0:beeeb5671c2a 155 serial6.printf("GET http://%s/%s HTTP/1.0\r\n\r\n", domain, url);
GabDiSi 1:b6e184239fba 156 ESP8266readResponse(ESP8266responseSendStr, NULL);
GabDiSi 1:b6e184239fba 157 ESP8266readResponse(ESP8266responseClosedStr, response);
GabDiSi 2:b05f40331fc3 158 lcd.SetTextColor(LCD_COLOR_GREEN);
GabDiSi 1:b6e184239fba 159 pc.printf("%s\r\n", ESP8266doneStr);
GabDiSi 1:b6e184239fba 160 lcd.DisplayStringAt(0, LINE(lineDisplay++), (uint8_t *)ESP8266doneStr, RIGHT_MODE);
GabDiSi 2:b05f40331fc3 161 lcd.SetTextColor(LCD_COLOR_BLACK);
GabDiSi 0:beeeb5671c2a 162 };
GabDiSi 0:beeeb5671c2a 163
GabDiSi 2:b05f40331fc3 164 void LCDinit() {
GabDiSi 1:b6e184239fba 165 lcd.Clear(LCD_COLOR_WHITE);
GabDiSi 1:b6e184239fba 166 lcd.SetBackColor(LCD_COLOR_WHITE);
GabDiSi 1:b6e184239fba 167
GabDiSi 2:b05f40331fc3 168 status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
GabDiSi 0:beeeb5671c2a 169
GabDiSi 2:b05f40331fc3 170 lcd.SetTextColor(LCD_COLOR_BLACK); //reset button
GabDiSi 2:b05f40331fc3 171 lcd.FillCircle(50, 230, 25);
GabDiSi 2:b05f40331fc3 172 };
GabDiSi 2:b05f40331fc3 173
GabDiSi 2:b05f40331fc3 174 void init() {
GabDiSi 2:b05f40331fc3 175 LCDinit();
GabDiSi 2:b05f40331fc3 176 ESP8266init("Telecom-47520601", "famigliaquino2000router10");
GabDiSi 2:b05f40331fc3 177 };
GabDiSi 2:b05f40331fc3 178
GabDiSi 2:b05f40331fc3 179 void TSdetect() {
GabDiSi 0:beeeb5671c2a 180 while(1) {
GabDiSi 2:b05f40331fc3 181 int idx, x, y;
GabDiSi 2:b05f40331fc3 182 ts.GetState(&TS_State); //TOUCH STATE
GabDiSi 2:b05f40331fc3 183
GabDiSi 2:b05f40331fc3 184 if (TS_State.touchDetected) { //TOUCH DETECTED
GabDiSi 2:b05f40331fc3 185 for (idx = 0; idx < TS_State.touchDetected; idx++) {
GabDiSi 2:b05f40331fc3 186 x = TS_State.touchX[idx];
GabDiSi 2:b05f40331fc3 187 y = TS_State.touchY[idx];
GabDiSi 2:b05f40331fc3 188
GabDiSi 2:b05f40331fc3 189 if ((x>400)&&(x<450)&&(y>205)&&(y<255)) {
GabDiSi 2:b05f40331fc3 190 char response[ESP8266limitResponse];
GabDiSi 2:b05f40331fc3 191 char domain[] = "gabrieledisimone.it";
GabDiSi 3:2d2c2f2044b4 192 char url[] = "neapolis.php?button=4";
GabDiSi 3:2d2c2f2044b4 193
GabDiSi 3:2d2c2f2044b4 194 ESP8266get(domain, url, response);
GabDiSi 3:2d2c2f2044b4 195 pc.printf("response:\r\n%s", response);
GabDiSi 3:2d2c2f2044b4 196 } else if ((x>325)&&(x<375)&&(y>205)&&(y<255)) {
GabDiSi 3:2d2c2f2044b4 197 char response[ESP8266limitResponse];
GabDiSi 3:2d2c2f2044b4 198 char domain[] = "gabrieledisimone.it";
GabDiSi 3:2d2c2f2044b4 199 char url[] = "neapolis.php?button=3";
GabDiSi 3:2d2c2f2044b4 200
GabDiSi 3:2d2c2f2044b4 201 ESP8266get(domain, url, response);
GabDiSi 3:2d2c2f2044b4 202 pc.printf("response:\r\n%s", response);
GabDiSi 3:2d2c2f2044b4 203 } else if ((x>250)&&(x<300)&&(y>205)&&(y<255)) {
GabDiSi 3:2d2c2f2044b4 204 char response[ESP8266limitResponse];
GabDiSi 3:2d2c2f2044b4 205 char domain[] = "gabrieledisimone.it";
GabDiSi 3:2d2c2f2044b4 206 char url[] = "neapolis.php?button=2";
GabDiSi 3:2d2c2f2044b4 207
GabDiSi 3:2d2c2f2044b4 208 ESP8266get(domain, url, response);
GabDiSi 3:2d2c2f2044b4 209 pc.printf("response:\r\n%s", response);
GabDiSi 3:2d2c2f2044b4 210 } else if ((x>175)&&(x<225)&&(y>205)&&(y<255)) {
GabDiSi 3:2d2c2f2044b4 211 char response[ESP8266limitResponse];
GabDiSi 3:2d2c2f2044b4 212 char domain[] = "gabrieledisimone.it";
GabDiSi 3:2d2c2f2044b4 213 char url[] = "neapolis.php?button=1";
GabDiSi 2:b05f40331fc3 214
GabDiSi 2:b05f40331fc3 215 ESP8266get(domain, url, response);
GabDiSi 2:b05f40331fc3 216 pc.printf("response:\r\n%s", response);
GabDiSi 2:b05f40331fc3 217 } else if ((x>25)&&(x<75)&&(y>205)&&(y<255)) {
GabDiSi 2:b05f40331fc3 218 init();
GabDiSi 2:b05f40331fc3 219 };
GabDiSi 2:b05f40331fc3 220 };
GabDiSi 2:b05f40331fc3 221 };
GabDiSi 0:beeeb5671c2a 222 };
GabDiSi 2:b05f40331fc3 223 };
GabDiSi 2:b05f40331fc3 224
GabDiSi 2:b05f40331fc3 225 int main() {
GabDiSi 2:b05f40331fc3 226 init();
GabDiSi 2:b05f40331fc3 227 TSdetect();
GabDiSi 0:beeeb5671c2a 228 };