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
main.cpp
- Committer:
- Bongjun
- Date:
- 2014-09-01
- Revision:
- 13:ab5db87a253a
- Parent:
- 10:6497effa1a26
- Child:
- 14:5a9ba3d8c9ca
File content as of revision 13:ab5db87a253a:
#include "mbed.h" //#include "WiflyInterface.h" #include "EthernetInterfaceW5500.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) #define XI_FEED_ID 614972906 // set Xively Feed ID (numerical, no quoutes) #define XI_API_KEY "Z2CG4NytDaxrk2LRSViyVVvi4kpWPH3bnrHeby24k8JCBZp1" // set Xively API key (double-quoted string) //Serial pc(USBTX, USBRX); DigitalOut myled(LED1); #define _SENSOR #ifdef _SENSOR // if there is sensor. #include "DS18B20.h" //DS18B20Sensor sensor(P1_25); DS18B20 sensor(P1_25, DS18B20::RES_12_BIT); // Dallas 1-wire #endif //#define _DHCP /* wifly object where: * - p9 and p10 are for the serial communication * - p25 is for the reset pin * - p26 is for the connection status * - "mbed" is the ssid of the network * - "password" is the password * - WPA is the security */ //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 ) { printf( "Could not initialise. Will halt!\n" ); exit( 0 ); } s = eth.connect(); if( s == false ) { printf( "Could not connect. Will halt!\n" ); exit( 0 ); } 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("222.98.173.211", "255.255.255.192", "222.98.173.254"); 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 #ifdef _SENSOR // if there is sensor. char sensorBuf[25]; // uint8_t result; // uint8_t sensor_cnt; //Before using this sensor, should called sensor.count() once. // sensor_cnt = sensor.count(); printf("DS18B20 Configuration\n\r"); DS18B20::ROM_Code_t ROM_Code; sensor.ReadROM(&ROM_Code); printf("Family code: 0x%X\n\r", ROM_Code.BYTES.familyCode); printf("Serial Number: "); for (unsigned i = 6; i != 0; --i) { printf("%02X%s", ROM_Code.BYTES.serialNo[i-1], (i != 1)?":":"\r\n"); } printf("CRC: 0x%X\r\n", ROM_Code.BYTES.CRC); /* printf("\n\rRunning temperature conversion...\n\r"); while (1) { printf("Temperature is: %.4fC\n\r", sensor.GetTemperature()); wait(10); } */ #endif xi_feed_t feed; memset( &feed, NULL, sizeof( xi_feed_t ) ); feed.feed_id = XI_FEED_ID; feed.datastream_count = 1; feed.datastreams[0].datapoint_count = 1; xi_datastream_t* orientation_datastream = &feed.datastreams[0]; strcpy( orientation_datastream->datastream_id, "Channel_Test1" ); xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0]; // create the cosm library context xi_context_t* xi_context = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id ); // check if everything works if( xi_context == NULL ) { return -1; } while(1) { #ifdef _SENSOR // if there is sensor. /* 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"); } */ // use New library for DS18B20 sprintf(sensorBuf,"%4.2f", sensor.GetTemperature()); xi_set_value_str( current_orientation, sensorBuf ); #else xi_set_value_str( current_orientation, "27" ); #endif printf( "update..." ); // send to xively server xi_feed_update( xi_context, &feed ); printf( "done...\n" ); wait( 5.0 ); } }