mbeduino + Weatherduino Weather Stations post test

Dependencies:   mbed

Committer:
okini3939
Date:
Tue Oct 26 17:19:28 2010 +0000
Revision:
0:10bcaa7c2253

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:10bcaa7c2253 1 #include "mbed.h"
okini3939 0:10bcaa7c2253 2 #include "BMP085.h"
okini3939 0:10bcaa7c2253 3 #include "SHT.h"
okini3939 0:10bcaa7c2253 4 #include "WeatherMeters.h"
okini3939 0:10bcaa7c2253 5 //#include "I2CLCD.h"
okini3939 0:10bcaa7c2253 6 #include "KITTScanner.h"
okini3939 0:10bcaa7c2253 7 #include "EthernetNetIf.h"
okini3939 0:10bcaa7c2253 8 #include "HTTPClient.h"
okini3939 0:10bcaa7c2253 9
okini3939 0:10bcaa7c2253 10 // ステーションの登録ID
okini3939 0:10bcaa7c2253 11 #define STATIONID "0000"
okini3939 0:10bcaa7c2253 12 // ステーションのPIN
okini3939 0:10bcaa7c2253 13 #define STATIONPIN "xxxxxxxxxxx"
okini3939 0:10bcaa7c2253 14 // 投稿間隔(秒)
okini3939 0:10bcaa7c2253 15 #define WAIT 300
okini3939 0:10bcaa7c2253 16 //
okini3939 0:10bcaa7c2253 17 #define URI "http://weather.sugakoubou.com/post.php"
okini3939 0:10bcaa7c2253 18
okini3939 0:10bcaa7c2253 19
okini3939 0:10bcaa7c2253 20 I2C i2c(p9, p10);
okini3939 0:10bcaa7c2253 21
okini3939 0:10bcaa7c2253 22 BMP085 bmp085(i2c, BMP085_oss4);
okini3939 0:10bcaa7c2253 23 //I2CLCD i2clcd(i2c);
okini3939 0:10bcaa7c2253 24 SHT sht11(p24, p12, SHT_high); // sclock, data
okini3939 0:10bcaa7c2253 25 WeatherMeters wmeters(p30, p17, p21); // anemo, vane, rain
okini3939 0:10bcaa7c2253 26
okini3939 0:10bcaa7c2253 27 Serial pc(USBTX, USBRX);
okini3939 0:10bcaa7c2253 28 AnalogIn photo(p18);
okini3939 0:10bcaa7c2253 29 AnalogIn moist(p16);
okini3939 0:10bcaa7c2253 30 AnalogIn uv(p15);
okini3939 0:10bcaa7c2253 31
okini3939 0:10bcaa7c2253 32 EthernetNetIf eth;
okini3939 0:10bcaa7c2253 33 HTTPClient http;
okini3939 0:10bcaa7c2253 34
okini3939 0:10bcaa7c2253 35 KITTScanner kitt;
okini3939 0:10bcaa7c2253 36
okini3939 0:10bcaa7c2253 37 float get_photo (AnalogIn &ain) {
okini3939 0:10bcaa7c2253 38 float f;
okini3939 0:10bcaa7c2253 39
okini3939 0:10bcaa7c2253 40 f = ain * 5.0 / 1000; // A
okini3939 0:10bcaa7c2253 41 return f / 0.0000026; // lx
okini3939 0:10bcaa7c2253 42 }
okini3939 0:10bcaa7c2253 43
okini3939 0:10bcaa7c2253 44 float get_moist (AnalogIn &ain) {
okini3939 0:10bcaa7c2253 45 float f;
okini3939 0:10bcaa7c2253 46
okini3939 0:10bcaa7c2253 47 f = ain * 5.0; // V
okini3939 0:10bcaa7c2253 48 return f / ((3.3 - f) / 10.0); // k ohm
okini3939 0:10bcaa7c2253 49 }
okini3939 0:10bcaa7c2253 50
okini3939 0:10bcaa7c2253 51 float get_uv (AnalogIn &ain) {
okini3939 0:10bcaa7c2253 52 float f;
okini3939 0:10bcaa7c2253 53
okini3939 0:10bcaa7c2253 54 f = ain * 5.0 / 100000; // A
okini3939 0:10bcaa7c2253 55 return f / 0.000384; // mW/cm2
okini3939 0:10bcaa7c2253 56 }
okini3939 0:10bcaa7c2253 57
okini3939 0:10bcaa7c2253 58 void http_post (float *values, int num) {
okini3939 0:10bcaa7c2253 59 int i;
okini3939 0:10bcaa7c2253 60 char post_data[200];
okini3939 0:10bcaa7c2253 61 HTTPText post("application/x-www-form-urlencoded"), txt;
okini3939 0:10bcaa7c2253 62 HTTPResult r;
okini3939 0:10bcaa7c2253 63
okini3939 0:10bcaa7c2253 64 strcpy(post_data, "fcd=" STATIONID "&pin=" STATIONPIN);
okini3939 0:10bcaa7c2253 65 for (i = 0; i < num; i ++) {
okini3939 0:10bcaa7c2253 66 sprintf(&post_data[strlen(post_data)], "&d%d=%.2f", i, values[i]);
okini3939 0:10bcaa7c2253 67 }
okini3939 0:10bcaa7c2253 68 printf("Post :%s\n", post_data);
okini3939 0:10bcaa7c2253 69 post.puts(post_data);
okini3939 0:10bcaa7c2253 70
okini3939 0:10bcaa7c2253 71 r = http.post(URI, post, &txt);
okini3939 0:10bcaa7c2253 72 if (r == HTTP_OK) {
okini3939 0:10bcaa7c2253 73 printf("Result :\"%s\"\n", txt.gets());
okini3939 0:10bcaa7c2253 74 } else {
okini3939 0:10bcaa7c2253 75 printf("Error %d \"%s\"\n", r, txt.gets());
okini3939 0:10bcaa7c2253 76 }
okini3939 0:10bcaa7c2253 77 }
okini3939 0:10bcaa7c2253 78
okini3939 0:10bcaa7c2253 79 int main() {
okini3939 0:10bcaa7c2253 80 float p, t, h, b, a, v, r, m, u;
okini3939 0:10bcaa7c2253 81 float values[10];
okini3939 0:10bcaa7c2253 82 IpAddr ip;
okini3939 0:10bcaa7c2253 83
okini3939 0:10bcaa7c2253 84 kitt.start();
okini3939 0:10bcaa7c2253 85 printf("Setting up...\n");
okini3939 0:10bcaa7c2253 86 EthernetErr ethErr = eth.setup();
okini3939 0:10bcaa7c2253 87 if (ethErr) {
okini3939 0:10bcaa7c2253 88 printf("Error %d in setup.\n", ethErr);
okini3939 0:10bcaa7c2253 89 return -1;
okini3939 0:10bcaa7c2253 90 }
okini3939 0:10bcaa7c2253 91 ip = eth.getIp();
okini3939 0:10bcaa7c2253 92 printf("Setup OK %d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
okini3939 0:10bcaa7c2253 93 kitt.stop();
okini3939 0:10bcaa7c2253 94
okini3939 0:10bcaa7c2253 95 while(1) {
okini3939 0:10bcaa7c2253 96 kitt.start();
okini3939 0:10bcaa7c2253 97
okini3939 0:10bcaa7c2253 98 bmp085.update();
okini3939 0:10bcaa7c2253 99 p = bmp085.get_pressure();
okini3939 0:10bcaa7c2253 100 pc.printf("p:%6.2f hPa / t:%6.2f C\n", p, bmp085.get_temperature());
okini3939 0:10bcaa7c2253 101
okini3939 0:10bcaa7c2253 102 sht11.update(SHT_high);
okini3939 0:10bcaa7c2253 103 t = sht11.get_temperature();
okini3939 0:10bcaa7c2253 104 h = sht11.get_humidity();
okini3939 0:10bcaa7c2253 105 pc.printf("t:%6.2f C / h:%6.2f %%\n", t, h);
okini3939 0:10bcaa7c2253 106
okini3939 0:10bcaa7c2253 107 a = wmeters.get_windspeed();
okini3939 0:10bcaa7c2253 108 v = wmeters.get_windvane();
okini3939 0:10bcaa7c2253 109 r = wmeters.get_raingauge();
okini3939 0:10bcaa7c2253 110 pc.printf("a:%6.2f m/s / v:%6.2f / r:%6.2f mm\n", a, v, r);
okini3939 0:10bcaa7c2253 111
okini3939 0:10bcaa7c2253 112 b = get_photo(photo);
okini3939 0:10bcaa7c2253 113 pc.printf("b:%6.2f lx\n", b);
okini3939 0:10bcaa7c2253 114 m = get_moist(moist);
okini3939 0:10bcaa7c2253 115 pc.printf("m:%6.2f k ohm\n", m);
okini3939 0:10bcaa7c2253 116 u = get_uv(uv);
okini3939 0:10bcaa7c2253 117 pc.printf("u:%6.2f mW/cm2\n", u);
okini3939 0:10bcaa7c2253 118 /*
okini3939 0:10bcaa7c2253 119 i2clcd.locate(0, 0);
okini3939 0:10bcaa7c2253 120 i2clcd.printf("%4.1f hPa", p);
okini3939 0:10bcaa7c2253 121 i2clcd.locate(0, 1);
okini3939 0:10bcaa7c2253 122 i2clcd.printf("%2.1f C / %2.1f %%", t, h);
okini3939 0:10bcaa7c2253 123 */
okini3939 0:10bcaa7c2253 124 values[0] = p; values[9] = 0;
okini3939 0:10bcaa7c2253 125 values[1] = t; values[2] = h;
okini3939 0:10bcaa7c2253 126 values[3] = a; values[4] = v; values[5] = r;
okini3939 0:10bcaa7c2253 127 values[6] = b; values[7] = u; values[8] = u;
okini3939 0:10bcaa7c2253 128 http_post(values, 10);
okini3939 0:10bcaa7c2253 129
okini3939 0:10bcaa7c2253 130 kitt.stop();
okini3939 0:10bcaa7c2253 131 wait(WAIT);
okini3939 0:10bcaa7c2253 132 }
okini3939 0:10bcaa7c2253 133 }