Xively Demo - WIZ550io, W5500 (WIZnet) + Temperature Sensor (DS18B20) EthernetInterfaceW5500 + LPC11U68 Xpresso v2 used
Dependencies: DS18B20_1wire W5500Interface libxively mbed
Fork of WIZ550io_Xively_Demo by
Xively Demo
Board Pic
LPC11U68 + WIZ550io (WIZnet) + DS18B20 Temp Sensor
PC Screenshot
Diff: main.cpp
- Revision:
- 7:5ce11b80fb04
- Parent:
- 6:3c44af154da8
- Child:
- 8:a0edf4bce160
--- a/main.cpp Sat Nov 09 01:02:05 2013 +0000 +++ b/main.cpp Wed Jul 09 04:20:16 2014 +0000 @@ -1,12 +1,16 @@ #include "mbed.h" -#include "WiflyInterface.h" +//#include "WiflyInterface.h" +#include "EthernetInterfaceW5500.h" +#include "DS18B20Sensor.h" #include "xively.h" #include "xi_err.h" #define XI_FEED_ID 273104668 // set Xively Feed ID (numerical, no quoutes) #define XI_API_KEY "Your API Key" // set Xively API key (double-quoted string) -Serial pc(USBTX, USBRX); +//Serial pc(USBTX, USBRX); +DigitalOut myled(LED1); +DS18B20Sensor sensor(P1_25); /* wifly object where: * - p9 and p10 are for the serial communication @@ -16,10 +20,29 @@ * - "password" is the password * - WPA is the security */ -WiflyInterface eth(p9, p10, p25, p26, "ssid", "passwd", WPA); +//WiflyInterface eth(p9, p10, p25, p26, "ssid", "passwd", WPA); int main() { +#if defined(TARGET_LPC1114) + SPI spi(dp2, dp1, dp6); // mosi, miso, sclk + EthernetInterfaceW5500 eth(&spi, dp25, dp26); // spi, cs, reset + +#elif defined(TARGET_LPC1768) + SPI spi(p11, p12, p13); // mosi, miso, sclk + EthernetInterfaceW5500 eth(&spi, p14, p15); // spi, cs, reset + +#elif defined(TARGET_LPC11U68) + SPI spi(P0_9, P0_8, P1_29); // mosi, miso, sclk +//WIZnetInterface eth(&spi, P0_2, P1_25); // spi, cs, reset +//SPI spi(p5, p6, p7); // mosi, miso, sclk + EthernetInterfaceW5500 eth(&spi, P0_2, P1_28);//, nRESET(p9); // reset pin is dummy, don't affect any pin of WIZ550io + spi.format(8,0); // 8bit, mode 0 + spi.frequency(7000000); // 7MHz + wait(1); // 1 second for stable state + +#endif +/* int s = eth.init(); //Use DHCP if( s != NULL ) { @@ -35,6 +58,40 @@ } else { printf( "IP: %s\n", eth.getIPAddress() ); } +*/ + +#ifdef _DHCP // didn't test yet in DHCP + + eth.init(); //Use DHCP + eth.connect(); + //printf("IP Address is %s\n\r", eth.getIPAddress()); + printf("Initialized, MAC: %s\n", eth.getMACAddress()); + printf("Connected, IP: %s, MASK: %s, GW: %s\n", + eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); + +#else + // as your env. change to real IP address and so on. + int ret = eth.init("YourIP", "YourNetmask", "YourGateway"); + // example.. + //int ret = eth.init("xxx.xxx.xxx.xxx", "255.255.255.0", "xxx.xxx.xxx.xxx"); + + if (!ret) { + printf("Initialized, MAC: %s\n", eth.getMACAddress()); + printf("Connected, IP: %s, MASK: %s, GW: %s\n", + eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); + } else { + printf("Error eth.init() - ret = %d\n", ret); + return -1; + } +#endif + +// Sensor variables + char sensorBuf[25]; + uint8_t result; + uint8_t sensor_cnt; + + //Before using this sensor, should called sensor.count() once. + sensor_cnt = sensor.count(); xi_feed_t feed; memset( &feed, NULL, sizeof( xi_feed_t ) ); @@ -44,7 +101,7 @@ feed.datastreams[0].datapoint_count = 1; xi_datastream_t* orientation_datastream = &feed.datastreams[0]; - strcpy( orientation_datastream->datastream_id, "orientation" ); + strcpy( orientation_datastream->datastream_id, "Channel_Test1" ); xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0]; // create the cosm library context @@ -57,15 +114,25 @@ } while(1) { - time_t seconds = time(NULL); - char buffer[32]; - // get the current time - strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds)); - xi_set_value_str( current_orientation, buffer ); + if (sensor_cnt) { + result = sensor.startReading(true); // start sensor readings and wait + if (result == DS18X20_OK) { + sensor.getReading(sensorBuf, 0); // get result into buf + xi_set_value_str( current_orientation, sensorBuf ); + } + else + { + xi_set_value_str( current_orientation, "0" ); + } + + } else { + printf("No Sensor"); + } + printf( "update...\n" ); // send to xively server xi_feed_update( xi_context, &feed ); printf( "done...\n" ); - wait( 1.0 ); + wait( 10.0 ); } }