frrrr

Dependencies:   Adafruit_GFX WIZnetInterface mbed

Committer:
wiznetw7500
Date:
Mon Apr 30 04:55:26 2018 +0000
Revision:
0:31d9b8b81e7f
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wiznetw7500 0:31d9b8b81e7f 1 #include "mbed.h"
wiznetw7500 0:31d9b8b81e7f 2 #include "EthernetInterface.h"
wiznetw7500 0:31d9b8b81e7f 3 #include "Adafruit_SSD1306.h"
wiznetw7500 0:31d9b8b81e7f 4
wiznetw7500 0:31d9b8b81e7f 5
wiznetw7500 0:31d9b8b81e7f 6
wiznetw7500 0:31d9b8b81e7f 7 #if defined(TARGET_WIZWIKI_W7500)||defined(TARGET_WIZWIKI_W7500P)
wiznetw7500 0:31d9b8b81e7f 8 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x53, 0xAE, 0x90};
wiznetw7500 0:31d9b8b81e7f 9 #endif
wiznetw7500 0:31d9b8b81e7f 10 // W7500 onboard LED & Init
wiznetw7500 0:31d9b8b81e7f 11 DigitalOut rled(LED1,1);
wiznetw7500 0:31d9b8b81e7f 12 DigitalOut gled(LED2,0);
wiznetw7500 0:31d9b8b81e7f 13 DigitalOut bled(LED3,1);
wiznetw7500 0:31d9b8b81e7f 14
wiznetw7500 0:31d9b8b81e7f 15 // I2C Class
wiznetw7500 0:31d9b8b81e7f 16 I2C i2c(PA_10,PA_9);
wiznetw7500 0:31d9b8b81e7f 17
wiznetw7500 0:31d9b8b81e7f 18 // OLED Class
wiznetw7500 0:31d9b8b81e7f 19 Adafruit_SSD1306_I2c gOled(i2c,NC,0x78,64,128);
wiznetw7500 0:31d9b8b81e7f 20
wiznetw7500 0:31d9b8b81e7f 21
wiznetw7500 0:31d9b8b81e7f 22 EthernetInterface eth;
wiznetw7500 0:31d9b8b81e7f 23
wiznetw7500 0:31d9b8b81e7f 24 // Declare TCP Connection Class
wiznetw7500 0:31d9b8b81e7f 25 TCPSocketConnection sock;
wiznetw7500 0:31d9b8b81e7f 26
wiznetw7500 0:31d9b8b81e7f 27 DigitalOut myled(D1);
wiznetw7500 0:31d9b8b81e7f 28
wiznetw7500 0:31d9b8b81e7f 29
wiznetw7500 0:31d9b8b81e7f 30
wiznetw7500 0:31d9b8b81e7f 31 int main() {
wiznetw7500 0:31d9b8b81e7f 32
wiznetw7500 0:31d9b8b81e7f 33
wiznetw7500 0:31d9b8b81e7f 34
wiznetw7500 0:31d9b8b81e7f 35 int phy_link;
wiznetw7500 0:31d9b8b81e7f 36 printf("Wait a second...\r\n");
wiznetw7500 0:31d9b8b81e7f 37
wiznetw7500 0:31d9b8b81e7f 38 eth.init(mac_addr); //Use DHCP
wiznetw7500 0:31d9b8b81e7f 39
wiznetw7500 0:31d9b8b81e7f 40 printf("Check Ethernet Link\r\n");
wiznetw7500 0:31d9b8b81e7f 41 /*while(1) //Wait link up
wiznetw7500 0:31d9b8b81e7f 42 {
wiznetw7500 0:31d9b8b81e7f 43 if(eth.link() == true)
wiznetw7500 0:31d9b8b81e7f 44 break;
wiznetw7500 0:31d9b8b81e7f 45 }*/
wiznetw7500 0:31d9b8b81e7f 46 printf("Link up\r\n");
wiznetw7500 0:31d9b8b81e7f 47
wiznetw7500 0:31d9b8b81e7f 48 eth.connect();
wiznetw7500 0:31d9b8b81e7f 49
wiznetw7500 0:31d9b8b81e7f 50 printf("IP Address is %s\r\n\r\n", eth.getIPAddress());
wiznetw7500 0:31d9b8b81e7f 51 printf("MASK Address is %s\r\n\r\n", eth.getNetworkMask());
wiznetw7500 0:31d9b8b81e7f 52 printf("GATEWAY Address is %s\r\n\r\n", eth.getGateway());
wiznetw7500 0:31d9b8b81e7f 53 printf("MAC Address is %s\r\n\r\n", eth.getMACAddress());
wiznetw7500 0:31d9b8b81e7f 54 while(1){
wiznetw7500 0:31d9b8b81e7f 55 // TCP socket connect to openweather server
wiznetw7500 0:31d9b8b81e7f 56 //TCPSocketConnection sock;
wiznetw7500 0:31d9b8b81e7f 57 sock.connect("api.openweathermap.org", 80);
wiznetw7500 0:31d9b8b81e7f 58
wiznetw7500 0:31d9b8b81e7f 59
wiznetw7500 0:31d9b8b81e7f 60 // GET method, to request weather forecast
wiznetw7500 0:31d9b8b81e7f 61 char http_cmd[] = "GET /data/2.5/weather?q=Seoul,kr&appid=a0ca47dd7f6066404629b3e1ad728981 HTTP/1.0\n\n";
wiznetw7500 0:31d9b8b81e7f 62
wiznetw7500 0:31d9b8b81e7f 63
wiznetw7500 0:31d9b8b81e7f 64 sock.send_all(http_cmd, sizeof(http_cmd)-1);
wiznetw7500 0:31d9b8b81e7f 65
wiznetw7500 0:31d9b8b81e7f 66 // get data into buffer
wiznetw7500 0:31d9b8b81e7f 67 char buffer[2048];
wiznetw7500 0:31d9b8b81e7f 68 int ret;
wiznetw7500 0:31d9b8b81e7f 69 while (true) {
wiznetw7500 0:31d9b8b81e7f 70 ret = sock.receive(buffer, sizeof(buffer)-1);
wiznetw7500 0:31d9b8b81e7f 71 if (ret <= 0)
wiznetw7500 0:31d9b8b81e7f 72 break;
wiznetw7500 0:31d9b8b81e7f 73 buffer[ret] = '\0';
wiznetw7500 0:31d9b8b81e7f 74 printf("Received %d chars from server: %s\n", ret, buffer);
wiznetw7500 0:31d9b8b81e7f 75 }
wiznetw7500 0:31d9b8b81e7f 76 printf("\r\n\r\n");
wiznetw7500 0:31d9b8b81e7f 77
wiznetw7500 0:31d9b8b81e7f 78 // parsing current date, weather, city, tempurature
wiznetw7500 0:31d9b8b81e7f 79 char *date;
wiznetw7500 0:31d9b8b81e7f 80 char *weather;
wiznetw7500 0:31d9b8b81e7f 81 char *city;
wiznetw7500 0:31d9b8b81e7f 82 char *temper;
wiznetw7500 0:31d9b8b81e7f 83
wiznetw7500 0:31d9b8b81e7f 84 char cur_date[17] = {0};
wiznetw7500 0:31d9b8b81e7f 85 char weather_con[15] = {0};
wiznetw7500 0:31d9b8b81e7f 86 char city_name[10] = {0};
wiznetw7500 0:31d9b8b81e7f 87 char temper_data[3] = {0};
wiznetw7500 0:31d9b8b81e7f 88
wiznetw7500 0:31d9b8b81e7f 89 int temp;
wiznetw7500 0:31d9b8b81e7f 90 int num100, num10, num1;
wiznetw7500 0:31d9b8b81e7f 91
wiznetw7500 0:31d9b8b81e7f 92 //parding date
wiznetw7500 0:31d9b8b81e7f 93 date = strstr(buffer, "Date");
wiznetw7500 0:31d9b8b81e7f 94 for(int x=0;x<17;x++){
wiznetw7500 0:31d9b8b81e7f 95 cur_date[x] = date[x+6];
wiznetw7500 0:31d9b8b81e7f 96 }
wiznetw7500 0:31d9b8b81e7f 97
wiznetw7500 0:31d9b8b81e7f 98 // parsing weather condition
wiznetw7500 0:31d9b8b81e7f 99 weather = strstr(buffer, "main");
wiznetw7500 0:31d9b8b81e7f 100 for(int i=0; i<15;i++){
wiznetw7500 0:31d9b8b81e7f 101 weather_con[i] = weather[i+7];
wiznetw7500 0:31d9b8b81e7f 102 if(weather_con[i] == 34){
wiznetw7500 0:31d9b8b81e7f 103 weather_con[i] = 0;
wiznetw7500 0:31d9b8b81e7f 104 break;
wiznetw7500 0:31d9b8b81e7f 105 }
wiznetw7500 0:31d9b8b81e7f 106 }
wiznetw7500 0:31d9b8b81e7f 107
wiznetw7500 0:31d9b8b81e7f 108
wiznetw7500 0:31d9b8b81e7f 109
wiznetw7500 0:31d9b8b81e7f 110 // parsing city name
wiznetw7500 0:31d9b8b81e7f 111 city = strstr(buffer, "name");
wiznetw7500 0:31d9b8b81e7f 112 for(int j=0; j<10;j++){
wiznetw7500 0:31d9b8b81e7f 113 city_name[j] = city[j+7];
wiznetw7500 0:31d9b8b81e7f 114 if(city_name[j] == 34){
wiznetw7500 0:31d9b8b81e7f 115 city_name[j] = 0;
wiznetw7500 0:31d9b8b81e7f 116 break;
wiznetw7500 0:31d9b8b81e7f 117 }
wiznetw7500 0:31d9b8b81e7f 118 }
wiznetw7500 0:31d9b8b81e7f 119
wiznetw7500 0:31d9b8b81e7f 120 //parsing current tempurature
wiznetw7500 0:31d9b8b81e7f 121 temper = strstr(buffer, "temp");
wiznetw7500 0:31d9b8b81e7f 122 for(int k=0; k<3;k++){
wiznetw7500 0:31d9b8b81e7f 123 temper_data[k] = temper[k+6];
wiznetw7500 0:31d9b8b81e7f 124 }
wiznetw7500 0:31d9b8b81e7f 125
wiznetw7500 0:31d9b8b81e7f 126 //kelvin to celius converter
wiznetw7500 0:31d9b8b81e7f 127 num100 = temper_data[0]- 48;
wiznetw7500 0:31d9b8b81e7f 128 num10 = temper_data[1] - 48;
wiznetw7500 0:31d9b8b81e7f 129 num1 = temper_data[2]- 48;
wiznetw7500 0:31d9b8b81e7f 130 temp = (num100*100 + num10*10 + num1) - 273;
wiznetw7500 0:31d9b8b81e7f 131
wiznetw7500 0:31d9b8b81e7f 132 // Debug message
wiznetw7500 0:31d9b8b81e7f 133 printf("city name : %s\r\n", city_name);
wiznetw7500 0:31d9b8b81e7f 134 printf("weather : %s\r\n", weather_con);
wiznetw7500 0:31d9b8b81e7f 135 printf("temperature : %d\r\n\r\n", temp);
wiznetw7500 0:31d9b8b81e7f 136
wiznetw7500 0:31d9b8b81e7f 137
wiznetw7500 0:31d9b8b81e7f 138 }
wiznetw7500 0:31d9b8b81e7f 139
wiznetw7500 0:31d9b8b81e7f 140
wiznetw7500 0:31d9b8b81e7f 141
wiznetw7500 0:31d9b8b81e7f 142 }