frrrr
Dependencies: Adafruit_GFX WIZnetInterface mbed
main.cpp@0:31d9b8b81e7f, 2018-04-30 (annotated)
- Committer:
- wiznetw7500
- Date:
- Mon Apr 30 04:55:26 2018 +0000
- Revision:
- 0:31d9b8b81e7f
f
Who changed what in which revision?
User | Revision | Line number | New 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 | } |