Dependencies:   EthernetNetIf TextLCD mbed

Committer:
Torsten
Date:
Mon Jun 20 11:21:15 2011 +0000
Revision:
0:48abe2923d34
Initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Torsten 0:48abe2923d34 1 /**
Torsten 0:48abe2923d34 2 * XBeeBeispiel
Torsten 0:48abe2923d34 3 * Eine kleine Testanwendung die von einem Arduino die Werte des SHT15 per xbee empf�ngt
Torsten 0:48abe2923d34 4 * die daten werden im serielle AT Modus �bertragen
Torsten 0:48abe2923d34 5 * Anschlie�end werden die Werte in Float convertiert und gespeichert
Torsten 0:48abe2923d34 6 * Autor: Torsten Dillenburg
Torsten 0:48abe2923d34 7 * erstellt: 11.05.2011
Torsten 0:48abe2923d34 8 */
Torsten 0:48abe2923d34 9
Torsten 0:48abe2923d34 10 #include "mbed.h"
Torsten 0:48abe2923d34 11 #include "TextLCD.h"
Torsten 0:48abe2923d34 12 #include "PachubeClient.h"
Torsten 0:48abe2923d34 13 #include "EthernetNetIf.h"
Torsten 0:48abe2923d34 14 #include "HTTPClient.h"
Torsten 0:48abe2923d34 15
Torsten 0:48abe2923d34 16 #define API_KEY "YOUR_API_Key"
Torsten 0:48abe2923d34 17 #define FEED_ID YOUR_FEED_ID
Torsten 0:48abe2923d34 18 #define STREAM_ID "YOUR_STREAM_ID"
Torsten 0:48abe2923d34 19
Torsten 0:48abe2923d34 20 Serial xbee1(p28, p27); //Serielles Objekt f�r den XBEE
Torsten 0:48abe2923d34 21 TextLCD lcd(p26, p25, p24, p23, p22, p21); // rs, e, d4-d7
Torsten 0:48abe2923d34 22 PachubeClient pachube("API_KEY");
Torsten 0:48abe2923d34 23 EthernetNetIf eth;
Torsten 0:48abe2923d34 24
Torsten 0:48abe2923d34 25 DigitalOut rst1(p11); //Digital reset f�r den XBee, 200ns zum reset
Torsten 0:48abe2923d34 26
Torsten 0:48abe2923d34 27 DigitalOut myled(LED3);//Debug �ber Led 3 und 4 am mbed
Torsten 0:48abe2923d34 28 DigitalOut myled2(LED4);
Torsten 0:48abe2923d34 29
Torsten 0:48abe2923d34 30 Serial pc(USBTX, USBRX);//serial Schnittstelle �ber den USB port zum computer
Torsten 0:48abe2923d34 31
Torsten 0:48abe2923d34 32 char v_char_temp[5]; // Buffer f�r die Seriellen werte
Torsten 0:48abe2923d34 33 int stelle;
Torsten 0:48abe2923d34 34 double v_messwert[3];
Torsten 0:48abe2923d34 35 bool debug = true;
Torsten 0:48abe2923d34 36 bool lcd_update = false;
Torsten 0:48abe2923d34 37 Ticker pachubeUpd;
Torsten 0:48abe2923d34 38 Ticker lcdUpd;
Torsten 0:48abe2923d34 39
Torsten 0:48abe2923d34 40 void send_update(void) {
Torsten 0:48abe2923d34 41 double tx1, rx1;
Torsten 0:48abe2923d34 42 if (debug) pc.printf("1.");
Torsten 0:48abe2923d34 43 if (1)
Torsten 0:48abe2923d34 44 {
Torsten 0:48abe2923d34 45 if (debug) pc.printf("Sending to Pachube\n");
Torsten 0:48abe2923d34 46 const int feed_id = FEED_ID;
Torsten 0:48abe2923d34 47 const std::string stream_id = STREAM_ID;
Torsten 0:48abe2923d34 48 char val1_text[32];
Torsten 0:48abe2923d34 49 sprintf(val1_text, "%2.2f,%2.2f", v_messwert[0],v_messwert[1]);
Torsten 0:48abe2923d34 50 if (debug) pc.printf("%c",val1_text);
Torsten 0:48abe2923d34 51 pachube.PutCsv("25387", val1_text);
Torsten 0:48abe2923d34 52 if (debug) printf("Pachube result / response : %d / %d\n",
Torsten 0:48abe2923d34 53 pachube.Result(), pachube.Response());
Torsten 0:48abe2923d34 54
Torsten 0:48abe2923d34 55 wait(10);
Torsten 0:48abe2923d34 56 }
Torsten 0:48abe2923d34 57 }
Torsten 0:48abe2923d34 58
Torsten 0:48abe2923d34 59 void lcdupdate(void)
Torsten 0:48abe2923d34 60 {
Torsten 0:48abe2923d34 61 lcd_update=false;
Torsten 0:48abe2923d34 62 lcd.cls();
Torsten 0:48abe2923d34 63 // 1234567890123456
Torsten 0:48abe2923d34 64 lcd.printf("Aussen: T H\n");
Torsten 0:48abe2923d34 65 lcd.printf(" %2.2f %2.2f",v_messwert[0],v_messwert[1]);
Torsten 0:48abe2923d34 66 }
Torsten 0:48abe2923d34 67
Torsten 0:48abe2923d34 68 void setup(void)
Torsten 0:48abe2923d34 69 {
Torsten 0:48abe2923d34 70 eth.setup();
Torsten 0:48abe2923d34 71 pachubeUpd.attach(&send_update,900);
Torsten 0:48abe2923d34 72 lcdUpd.attach(&lcdupdate,30);
Torsten 0:48abe2923d34 73 rst1 = 0; //Set reset pin to 0
Torsten 0:48abe2923d34 74 myled = 0;//Set LED3 to 0
Torsten 0:48abe2923d34 75 myled2= 0;//Set LED4 to 0
Torsten 0:48abe2923d34 76 wait_ms(1);//Wait at least one millisecond
Torsten 0:48abe2923d34 77 rst1 = 1;//Set reset pin to 1
Torsten 0:48abe2923d34 78 wait_ms(1);//Wait another millisecond
Torsten 0:48abe2923d34 79 stelle =0;
Torsten 0:48abe2923d34 80 }
Torsten 0:48abe2923d34 81
Torsten 0:48abe2923d34 82 void decode(char p_zeichen)
Torsten 0:48abe2923d34 83 {
Torsten 0:48abe2923d34 84 v_char_temp[stelle]=p_zeichen;
Torsten 0:48abe2923d34 85 if (debug) pc.putc(v_char_temp[stelle]);
Torsten 0:48abe2923d34 86 switch(v_char_temp[stelle]) {
Torsten 0:48abe2923d34 87 case '0': stelle++; break;
Torsten 0:48abe2923d34 88 case '1': stelle++; break;
Torsten 0:48abe2923d34 89 case '2': stelle++; break;
Torsten 0:48abe2923d34 90 case '3': stelle++; break;
Torsten 0:48abe2923d34 91 case '4': stelle++; break;
Torsten 0:48abe2923d34 92 case '5': stelle++; break;
Torsten 0:48abe2923d34 93 case '6': stelle++; break;
Torsten 0:48abe2923d34 94 case '7': stelle++; break;
Torsten 0:48abe2923d34 95 case '8': stelle++; break;
Torsten 0:48abe2923d34 96 case '9': stelle++; break;
Torsten 0:48abe2923d34 97 case '.': stelle++; break;
Torsten 0:48abe2923d34 98 case 'T': v_messwert[0] = atof(v_char_temp); lcd_update = true; break; //temp
Torsten 0:48abe2923d34 99 case 'H': v_messwert[1] = atof(v_char_temp); lcd_update = true; break; //hum
Torsten 0:48abe2923d34 100 case 'D': v_messwert[2] = atof(v_char_temp); lcd_update = true; break; //dew
Torsten 0:48abe2923d34 101 default : for(int i=stelle; i>=0; i--) {v_char_temp[i]='0';} stelle=0;//puffer l�schen
Torsten 0:48abe2923d34 102 }
Torsten 0:48abe2923d34 103 }
Torsten 0:48abe2923d34 104
Torsten 0:48abe2923d34 105 int main() {
Torsten 0:48abe2923d34 106 setup();
Torsten 0:48abe2923d34 107 while (1) {//Neverending Loop
Torsten 0:48abe2923d34 108 if (xbee1.readable()) {//Checking for serial comminication
Torsten 0:48abe2923d34 109 decode(xbee1.getc());
Torsten 0:48abe2923d34 110 }
Torsten 0:48abe2923d34 111 }
Torsten 0:48abe2923d34 112 }