Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: WIZnetInterface mbed-src
Prerequisite
This example is for PIR test using digital I/O.
To implement this function, you need a Platform board, network Interface board.
- WIZwiki-W7500 from WIZnet (Platform board and Ethernet I/F board)
Hardware Configuration
WIZwiki-W7500 Pin map

Just connect Ethernet Cable & USB Cable
Software
Init Ethernet
void initEthernet(uint8_t* mac_addr) {
int phy_link;
eth.init(mac_addr); //Use DHCP
eth.connect();
/* phy link */
do{
phy_link = eth.ethernet_link();
printf(".");
wait(2);
}while(!phy_link);
printf("\r\n");
printf("IP Address is %s\r\n", eth.getIPAddress());
}
Request to server using HTTP
void requestHTTP(void)
{
char req_buf[256];
/* TCP socket connect */
sock.connect(WEB_SERVER, 80);
/* Request to WEB Server using HTTP */
sprintf(req_buf,"GET /data/2.5/weather?q=%s,%s&appid=%s HTTP/1.1\nHost: %s\nConnection: close\n\n",
CITY,COUNTRY, API_KEY, WEB_SERVER);
sock.send_all(req_buf, strlen(req_buf));
}
Get data from server & Parsing it
void parsingGetData(void)
{
char buffer[1024];
/* get info */
int ret;
while (true) {
ret = sock.receive_all(buffer, sizeof(buffer)-1);
if (ret <= 0) break;
buffer[ret] = '\0';
pc.printf("Received %d chars from server: %s\n", ret, buffer);
}
/* parsing weather, city, tempurature */
char *weather;
char *city;
char *temp;
uint8_t i;
pc.printf("\r\n\r\n======== WeatherForecast ========\r\n");
weather = strstr(buffer, "main");
pc.printf("\t State : ");
for(i = 7; i < 20; i++)
{
if(*(weather+i) == '\"') break;
pc.printf("%c", *(weather+i));
}
city = strstr(buffer, "name");
pc.printf("\r\n\t City : ");
for(i = 7; i < 20; i++)
{
if(*(city+i) == '\"') break;
pc.printf("%c", *(city+i));
}
temp = strstr(buffer, "temp");
pc.printf("\r\n\t temp(kelvin) : ");
for(i = 6; i < 12; i++)
{
if((*(temp+i) == '\"')||(*(temp+i) == ',')) break;
pc.printf("%c", *(temp+i));
}
pc.printf("\r\n\r\n");
}
Caution
Must fix API_KEY & MAC Address
Diff: main.cpp
- Revision:
- 0:bb128f0e952f
- Child:
- 1:e2652bd064c6
diff -r 000000000000 -r bb128f0e952f main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Jun 26 14:39:21 2012 +0000
@@ -0,0 +1,35 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+int main()
+{
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+
+ eth.connect();
+
+ TCPSocket sock;
+ sock.connect("mbed.org", 80);
+
+ const char http_cmd[] = "GET /media/uploads/donatien/hello.txt HTTP/1.1\r\nHost: %s\r\n\r\n";
+ sock.send((std::uint8_t*)http_cmd, sizeof(http_cmd) - 1, 3000);
+
+ char in_buf[256];
+ bool firstIteration = true;
+ int ret;
+ do
+ {
+ ret = sock.receive((std::uint8_t*)in_buf, 255, firstIteration?3000:0);
+ in_buf[ret] = '\0';
+
+ printf("Received %d chars from server: %s\n", ret, in_buf);
+ firstIteration = false;
+ } while( ret > 0 );
+
+ sock.close();
+
+ eth.disconnect();
+
+ while(1) {
+ }
+}