Master Program
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@3:2d2c2f2044b4, 2015-11-16 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |