Openweathermap example for WizFi310

Dependencies:   NetworkSocketAPI WizFi310Interface mbed

Prerequisite

This example is for obtainning and printting data from OpenWeatherMap(Server).

WIZwiki-W7500 and WizFi310 Shield act as TCP client mode.

To implement this function, you need a Platform board and Wi-Fi board. Below are what we used.

  • WIZwiki-W7500 from WIZnet (Platform board)
  • WizFi310 from WIZnet (Wi-Fi board)

Hardware Configuration

WIZwiki-W7500 Pin map

pin map

  • D0 is for RXD, D1 is for TXD
  • D6 is for CTS, D7 is for RTS
  • D9 is for RESET

WizFi310 Pin map

pin map

  • J1 is for RXD, J3 is for TXD
  • SW6-1 is connected to D6 for RTS, SW6-2 is connected to D7 for CTS
  • SW5-3 is connected to D9 for RESET

Software

main.cpp

#include "TCPSocket.h"
#include "mbed.h"
#include "WizFi310Interface.h"

#if defined(TARGET_WIZwiki_W7500)
    WizFi310Interface wifi(D1, D0, D7, D6, D9, NC, 115200);
    Serial pc(USBTX,USBRX);
#endif

#define AP_SSID     "SSID"
#define AP_PASSWORD "PASS"
#define AP_SECURITY NSAPI_SECURITY_WPA2

#define CITY        "Seoul"
#define API_KEY     "API KEY"

int main()
{
    int errConnect;
    char http_cmd[1000] = "";
    char buffer[2048] = "";
    
    pc.baud(115200);
    printf("WizFi310 NetworkSocketAPI TCP Client OpenWeatherMap Example\r\n");
    
    wifi.connect(AP_SSID, AP_PASSWORD, AP_SECURITY);
    
    const char *ip = wifi.get_ip_address();
    const char *mac = wifi.get_mac_address();
    printf("IP address is: %s\r\n", ip ? ip : "No IP");
    printf("MAC address is: %s\r\n", mac ? mac : "No MAC");

    SocketAddress addr(&wifi, "api.openweathermap.org");
    printf("api.openweathermap.org resolved to: %s\r\n", addr.get_ip_address());
           
    TCPSocket socket(&wifi);
    socket.set_timeout(1000);   //Set Block Mode.
    errConnect = socket.connect("api.openweathermap.org", 80);
    //errConnect = socket.connect("222.98.173.233", 5000);
    
    while (true) {
        if(errConnect!=0) {
            printf("\r\ncould not connect to socket : error = %d\r\n", errConnect);
            errConnect = socket.connect("api.openweathermap.org", 80);
        } else {
            printf("socket connected\r\n");
            break;
        }
    }    
     
    sprintf((char *)http_cmd,"GET /data/2.5/weather?q=%s,uk&appid=%s HTTP/1.0\r\nHost: api.openweathermap.org\r\nConnection: close\r\n\r\n",
    CITY, API_KEY);

    socket.send(http_cmd, sizeof(http_cmd));
    
    socket.recv(buffer, sizeof(buffer));
    printf("%s",buffer);
 
    socket.close();
    wifi.disconnect();
    
    printf("Done\r\n");

}



Caution

This example requires an API key that can be obtained by signning up to the openweathmap site. //

Files at this revision

API Documentation at this revision

Comitter:
cliff1
Date:
Thu Aug 24 01:12:21 2017 +0000
Parent:
0:dcc1cf05125a
Child:
2:c243e5fe8820
Commit message:
20170824

Changed in this revision

WizFi310Interface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/WizFi310Interface.lib	Wed Apr 12 01:12:07 2017 +0000
+++ b/WizFi310Interface.lib	Thu Aug 24 01:12:21 2017 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/WIZnet/code/WizFi310Interface/#04c8d61984a3
+http://developer.mbed.org/teams/WIZnet/code/WizFi310Interface/#007cec5e96c0
--- a/main.cpp	Wed Apr 12 01:12:07 2017 +0000
+++ b/main.cpp	Thu Aug 24 01:12:21 2017 +0000
@@ -52,7 +52,6 @@
     TCPSocket socket(&wifi);
     socket.set_timeout(1000);   //Set Block Mode.
     errConnect = socket.connect("api.openweathermap.org", 80);
-    //errConnect = socket.connect("222.98.173.233", 5000);
     
     while (true) {
         if(errConnect!=0) {
--- a/mbed.bld	Wed Apr 12 01:12:07 2017 +0000
+++ b/mbed.bld	Thu Aug 24 01:12:21 2017 +0000
@@ -1,1 +1,1 @@
-https://mbed.org/users/mbed_official/code/mbed/builds/856d2700e60b
\ No newline at end of file
+https://mbed.org/users/mbed_official/code/mbed/builds/e2bfab296f20
\ No newline at end of file