lightweight Web server dust sensor

Dependencies:   EthernetInterface HTTPD mbed-rpc mbed-rtos mbed

Committer:
mbedschool
Date:
Mon Feb 02 07:41:01 2015 +0000
Revision:
1:943c19be081b
Parent:
0:b6cf0e62b3a2
lightweight Web server dust sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedschool 0:b6cf0e62b3a2 1 #include "mbed.h"
mbedschool 0:b6cf0e62b3a2 2 #include "EthernetInterface.h"
mbedschool 0:b6cf0e62b3a2 3 #include "HTTPD.h"
mbedschool 0:b6cf0e62b3a2 4
mbedschool 0:b6cf0e62b3a2 5 EthernetInterface *eth;
mbedschool 0:b6cf0e62b3a2 6 HTTPD *httpd;
mbedschool 0:b6cf0e62b3a2 7
mbedschool 0:b6cf0e62b3a2 8 Serial pc(USBTX, USBRX);
mbedschool 0:b6cf0e62b3a2 9 InterruptIn probe(p8);
mbedschool 0:b6cf0e62b3a2 10 LocalFileSystem local("local");
mbedschool 0:b6cf0e62b3a2 11 DigitalOut led1(LED1), led2(LED2);
mbedschool 0:b6cf0e62b3a2 12 Timer timer;
mbedschool 0:b6cf0e62b3a2 13 Ticker ticker;
mbedschool 0:b6cf0e62b3a2 14
mbedschool 0:b6cf0e62b3a2 15 uint32_t low_time = 0;
mbedschool 0:b6cf0e62b3a2 16
mbedschool 0:b6cf0e62b3a2 17 void down();
mbedschool 0:b6cf0e62b3a2 18 void up();
mbedschool 0:b6cf0e62b3a2 19
mbedschool 0:b6cf0e62b3a2 20 void tick()
mbedschool 0:b6cf0e62b3a2 21 {
mbedschool 0:b6cf0e62b3a2 22 pc.printf("%d us, %f %%\r\n", low_time, low_time / (30.0 * 1000000));
mbedschool 0:b6cf0e62b3a2 23 low_time = 0;
mbedschool 0:b6cf0e62b3a2 24 }
mbedschool 0:b6cf0e62b3a2 25
mbedschool 0:b6cf0e62b3a2 26 void down()
mbedschool 0:b6cf0e62b3a2 27 {
mbedschool 0:b6cf0e62b3a2 28 probe.rise(&up);
mbedschool 0:b6cf0e62b3a2 29 led1 = 0;
mbedschool 0:b6cf0e62b3a2 30 timer.start();
mbedschool 0:b6cf0e62b3a2 31 }
mbedschool 0:b6cf0e62b3a2 32
mbedschool 0:b6cf0e62b3a2 33 void up()
mbedschool 0:b6cf0e62b3a2 34 {
mbedschool 0:b6cf0e62b3a2 35 led1 = 1;
mbedschool 0:b6cf0e62b3a2 36 timer.stop();
mbedschool 0:b6cf0e62b3a2 37 probe.fall(&down);
mbedschool 0:b6cf0e62b3a2 38
mbedschool 0:b6cf0e62b3a2 39 low_time += timer.read_us();
mbedschool 0:b6cf0e62b3a2 40 timer.reset();
mbedschool 0:b6cf0e62b3a2 41 }
mbedschool 0:b6cf0e62b3a2 42
mbedschool 0:b6cf0e62b3a2 43 void callback_api(int id) {
mbedschool 0:b6cf0e62b3a2 44 int i, n;
mbedschool 0:b6cf0e62b3a2 45 char low_time_buf[256];
mbedschool 0:b6cf0e62b3a2 46 char buf[256];
mbedschool 0:b6cf0e62b3a2 47
mbedschool 0:b6cf0e62b3a2 48 sprintf( low_time_buf, "%f", low_time / (30.0 * 1000000));
mbedschool 0:b6cf0e62b3a2 49 strcpy(buf, "{");
mbedschool 0:b6cf0e62b3a2 50 strcat(buf, "success: true ,");
mbedschool 0:b6cf0e62b3a2 51 strcat(buf, "data: {");
mbedschool 0:b6cf0e62b3a2 52 strcat(buf, "lowpulseoccupancytime: ");
mbedschool 0:b6cf0e62b3a2 53 strcat(buf, low_time_buf);
mbedschool 0:b6cf0e62b3a2 54 strcat(buf, "}");
mbedschool 0:b6cf0e62b3a2 55 strcat(buf, "}");
mbedschool 0:b6cf0e62b3a2 56
mbedschool 0:b6cf0e62b3a2 57 n = strlen(buf);
mbedschool 0:b6cf0e62b3a2 58 i = httpd->receive(id, &buf[n], sizeof(buf) - n);
mbedschool 0:b6cf0e62b3a2 59 if (i < 0) return;
mbedschool 0:b6cf0e62b3a2 60 i += n;
mbedschool 0:b6cf0e62b3a2 61 buf[i] = 0;
mbedschool 0:b6cf0e62b3a2 62 printf("API %d %s\r\n", id, buf);
mbedschool 0:b6cf0e62b3a2 63 httpd->send(id, buf, i, "Content-Type: text/plain\r\n");
mbedschool 0:b6cf0e62b3a2 64 }
mbedschool 0:b6cf0e62b3a2 65
mbedschool 0:b6cf0e62b3a2 66 int main() {
mbedschool 0:b6cf0e62b3a2 67 pc.baud(115200);
mbedschool 0:b6cf0e62b3a2 68 pc.printf("Dust Sensor test\r\n");
mbedschool 0:b6cf0e62b3a2 69 probe.fall(&down);
mbedschool 0:b6cf0e62b3a2 70 ticker.attach(tick, 30);
mbedschool 0:b6cf0e62b3a2 71
mbedschool 0:b6cf0e62b3a2 72 printf("HTTP Server...\r\n");
mbedschool 0:b6cf0e62b3a2 73
mbedschool 0:b6cf0e62b3a2 74 eth = new EthernetInterface;
mbedschool 0:b6cf0e62b3a2 75 eth->init("192.168.21.81", "255.255.255.0", "192.168.21.2" );
mbedschool 0:b6cf0e62b3a2 76
mbedschool 0:b6cf0e62b3a2 77 if (eth->connect()) return -1;
mbedschool 0:b6cf0e62b3a2 78
mbedschool 0:b6cf0e62b3a2 79 printf("IP Address is %s\r\n", eth->getIPAddress());
mbedschool 0:b6cf0e62b3a2 80 httpd = new HTTPD;
mbedschool 0:b6cf0e62b3a2 81 httpd->attach("/1/mbed/lpc1768/sensor/dust/sen12291p", &callback_api);
mbedschool 0:b6cf0e62b3a2 82 httpd->attach("/", "/local/");
mbedschool 0:b6cf0e62b3a2 83 httpd->start(80);
mbedschool 0:b6cf0e62b3a2 84 printf("httpd ready\r\n");
mbedschool 0:b6cf0e62b3a2 85 led2 = 1;
mbedschool 0:b6cf0e62b3a2 86 }
mbedschool 0:b6cf0e62b3a2 87