Motion Detected Pictures On a Server

Dependencies:   EthernetNetIf mbed HTTPServer Camera_LS_Y201

Files at this revision

API Documentation at this revision

Comitter:
Shruti
Date:
Mon Feb 28 20:53:01 2011 +0000
Commit message:

Changed in this revision

Camera_LS_Y201.lib Show annotated file Show diff for this revision Revisions of this file
EthernetNetIf.lib Show annotated file Show diff for this revision Revisions of this file
HTTPServer.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Camera_LS_Y201.lib	Mon Feb 28 20:53:01 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/shintamainjp/code/Camera_LS_Y201/#f71232252dcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetNetIf.lib	Mon Feb 28 20:53:01 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mamezu/code/EthernetNetIf/#0f6c82fcde82
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPServer.lib	Mon Feb 28 20:53:01 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/HTTPServer/#d753966e4d97
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Feb 28 20:53:01 2011 +0000
@@ -0,0 +1,132 @@
+#include "mbed.h"
+#include "Camera_LS_Y201.h"
+#include "EthernetNetIf.h"
+#include "HTTPServer.h"
+
+Camera_LS_Y201 cam(p13, p14);
+DigitalOut led1(LED1, "led1");
+DigitalOut led2(LED2, "led2");
+DigitalOut led3(LED3, "led3");
+DigitalOut led4(LED4, "led4");
+AnalogIn sensor(p20);           /*input from analog phidget motion sensor*/
+
+LocalFileSystem fs("webfs");    /*local filesystem*/
+
+EthernetNetIf eth;
+HTTPServer svr;
+
+FILE *fp;
+int count =0;
+
+void callback_func(uint8_t *buf, size_t siz) {
+    fwrite(buf, siz, 1, fp);
+}
+
+int main(void) {
+
+    float level1 , level2 = 1.0;
+
+    Base::add_rpc_class<DigitalOut>();
+
+    printf("Setting up...\n");
+    EthernetErr ethErr = eth.setup();
+    if (ethErr) {
+        printf("Error %d in setup.\n", ethErr);
+        return -1;
+    }
+    printf("Setup OK\n");
+
+    char test[64];
+
+    wait(1);
+
+    printf("reset=%d\n", cam.reset());
+    wait(1);
+
+#if 0
+    printf("setImageSize=%d\n", cam.setImageSize(LS_Y201::ImageSize640x480));
+    wait(1);
+#endif
+
+
+    while (count <5) {                                                  /*loop to catch five consecutive motions in the form of pictures*/
+        level1 = sensor.read();
+        level2 = (level2 * .8 + level1 * .2);                           /* running average filter*/
+        printf("value of sensor = %f and value of level2 is = %f \n\r", level1, level2);
+
+        if ((level2) < 0.67) {
+            
+            printf("reset=%d\n", cam.reset());                          /*reset after each picture*/
+            wait(1);
+
+            char format[] = "/webfs/test%d.jpg";
+            char filename[sizeof(format)+100];
+            sprintf(filename,format,count);
+            printf("file name is %s\n", filename);
+            fp = fopen(filename,"wb");
+
+
+
+            if (fp == NULL) {
+                error("Failure to open a destination file.");
+            }
+            wait(1);
+            
+            printf("takePicture=%d\n", cam.takePicture());              /*clicking the picture*/
+            wait(1);
+
+            int fs;
+            printf("readJpegFileSize=%d\n", cam.readJpegFileSize(&fs));
+            printf("\tFile size = %d\n", fs);
+            wait(1);
+
+            printf("readJpegFileContent=%d\n", cam.readJpegFileContent(callback_func));
+            wait(1);
+
+            fclose(fp);
+
+            FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
+            FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
+            svr.addHandler<SimpleHandler>("/hello");
+            svr.addHandler<RPCHandler>("/rpc");
+            svr.addHandler<FSHandler>("/files");
+            svr.addHandler<FSHandler>("/"); //Default handler
+            //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
+
+            svr.bind(80);
+            count++;
+        } else {
+            printf("no motion");
+        }
+    }
+
+
+    printf("Listening...\n");
+
+    Timer tm;
+    tm.start();
+    //Listen indefinitely
+    while (true) {
+        Net::poll();
+        if (tm.read()>.5) {
+            led1=!led1; //Show that we are alive
+            tm.start();
+        }
+    }
+
+
+    return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Feb 28 20:53:01 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e