Torsten Dillenburg / Mbed 2 deprecated XBee2Pachube_public

Dependencies:   EthernetNetIf TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /**
00002  * XBeeBeispiel
00003  * Eine kleine Testanwendung die von einem Arduino die Werte des SHT15 per xbee empf�ngt
00004  * die daten werden im serielle AT Modus �bertragen
00005  * Anschlie�end werden die Werte in Float convertiert und gespeichert
00006  * Autor: Torsten Dillenburg
00007  * erstellt: 11.05.2011
00008  */
00009 
00010 #include "mbed.h"
00011 #include "TextLCD.h"
00012 #include "PachubeClient.h"
00013 #include "EthernetNetIf.h"
00014 #include "HTTPClient.h"
00015 
00016 #define API_KEY "YOUR_API_Key"
00017 #define FEED_ID YOUR_FEED_ID
00018 #define STREAM_ID "YOUR_STREAM_ID"
00019 
00020 Serial xbee1(p28, p27); //Serielles Objekt f�r den XBEE
00021 TextLCD    lcd(p26, p25, p24, p23, p22, p21);  // rs, e, d4-d7
00022 PachubeClient pachube("API_KEY");
00023 EthernetNetIf eth;
00024 
00025 DigitalOut rst1(p11); //Digital reset f�r den XBee, 200ns zum reset
00026 
00027 DigitalOut myled(LED3);//Debug �ber Led 3 und 4 am mbed
00028 DigitalOut myled2(LED4);
00029 
00030 Serial pc(USBTX, USBRX);//serial Schnittstelle �ber den  USB port zum computer
00031 
00032 char v_char_temp[5]; // Buffer f�r die Seriellen werte
00033 int stelle;
00034 double v_messwert[3];
00035 bool debug = true;
00036 bool lcd_update = false;
00037 Ticker pachubeUpd;
00038 Ticker lcdUpd;
00039 
00040 void send_update(void) {
00041     double tx1, rx1;
00042     if (debug) pc.printf("1.");
00043     if (1)
00044     {
00045         if (debug) pc.printf("Sending to Pachube\n");
00046         const int feed_id = FEED_ID;
00047         const std::string stream_id = STREAM_ID;
00048         char val1_text[32];
00049         sprintf(val1_text, "%2.2f,%2.2f", v_messwert[0],v_messwert[1]);
00050         if (debug) pc.printf("%c",val1_text);
00051         pachube.PutCsv("25387", val1_text);
00052          if (debug) printf("Pachube result  / response : %d / %d\n", 
00053            pachube.Result(), pachube.Response());
00054        
00055         wait(10);
00056     }
00057 }
00058 
00059 void lcdupdate(void)
00060 {
00061             lcd_update=false;
00062             lcd.cls();
00063             //          1234567890123456
00064             lcd.printf("Aussen: T H\n");
00065             lcd.printf("   %2.2f %2.2f",v_messwert[0],v_messwert[1]);
00066 }
00067 
00068 void setup(void)
00069 {
00070     eth.setup();
00071     pachubeUpd.attach(&send_update,900);
00072     lcdUpd.attach(&lcdupdate,30);
00073     rst1 = 0; //Set reset pin to 0
00074     myled = 0;//Set LED3 to 0
00075     myled2= 0;//Set LED4 to 0
00076     wait_ms(1);//Wait at least one millisecond
00077     rst1 = 1;//Set reset pin to 1
00078     wait_ms(1);//Wait another millisecond
00079     stelle =0;
00080 }
00081 
00082 void decode(char p_zeichen)
00083 {
00084             v_char_temp[stelle]=p_zeichen;
00085             if (debug) pc.putc(v_char_temp[stelle]);
00086             switch(v_char_temp[stelle]) {
00087                 case '0': stelle++; break;
00088                 case '1': stelle++; break;
00089                 case '2': stelle++; break;
00090                 case '3': stelle++; break;
00091                 case '4': stelle++; break;
00092                 case '5': stelle++; break;
00093                 case '6': stelle++; break;
00094                 case '7': stelle++; break;
00095                 case '8': stelle++; break;
00096                 case '9': stelle++; break;
00097                 case '.': stelle++; break;
00098                 case 'T': v_messwert[0] = atof(v_char_temp); lcd_update = true; break; //temp
00099                 case 'H': v_messwert[1] = atof(v_char_temp); lcd_update = true; break; //hum
00100                 case 'D': v_messwert[2] = atof(v_char_temp); lcd_update = true; break; //dew
00101                 default : for(int i=stelle; i>=0; i--) {v_char_temp[i]='0';} stelle=0;//puffer l�schen
00102             }              
00103 }
00104 
00105 int main() {
00106     setup();
00107     while (1) {//Neverending Loop
00108         if (xbee1.readable()) {//Checking for serial comminication
00109            decode(xbee1.getc());
00110         }
00111     }
00112 }