Motion Detected Pictures On a Server

Dependencies:   EthernetNetIf mbed HTTPServer Camera_LS_Y201

Committer:
Shruti
Date:
Mon Feb 28 20:53:01 2011 +0000
Revision:
0:f7337de6da7d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Shruti 0:f7337de6da7d 1 #include "mbed.h"
Shruti 0:f7337de6da7d 2 #include "Camera_LS_Y201.h"
Shruti 0:f7337de6da7d 3 #include "EthernetNetIf.h"
Shruti 0:f7337de6da7d 4 #include "HTTPServer.h"
Shruti 0:f7337de6da7d 5
Shruti 0:f7337de6da7d 6 Camera_LS_Y201 cam(p13, p14);
Shruti 0:f7337de6da7d 7 DigitalOut led1(LED1, "led1");
Shruti 0:f7337de6da7d 8 DigitalOut led2(LED2, "led2");
Shruti 0:f7337de6da7d 9 DigitalOut led3(LED3, "led3");
Shruti 0:f7337de6da7d 10 DigitalOut led4(LED4, "led4");
Shruti 0:f7337de6da7d 11 AnalogIn sensor(p20); /*input from analog phidget motion sensor*/
Shruti 0:f7337de6da7d 12
Shruti 0:f7337de6da7d 13 LocalFileSystem fs("webfs"); /*local filesystem*/
Shruti 0:f7337de6da7d 14
Shruti 0:f7337de6da7d 15 EthernetNetIf eth;
Shruti 0:f7337de6da7d 16 HTTPServer svr;
Shruti 0:f7337de6da7d 17
Shruti 0:f7337de6da7d 18 FILE *fp;
Shruti 0:f7337de6da7d 19 int count =0;
Shruti 0:f7337de6da7d 20
Shruti 0:f7337de6da7d 21 void callback_func(uint8_t *buf, size_t siz) {
Shruti 0:f7337de6da7d 22 fwrite(buf, siz, 1, fp);
Shruti 0:f7337de6da7d 23 }
Shruti 0:f7337de6da7d 24
Shruti 0:f7337de6da7d 25 int main(void) {
Shruti 0:f7337de6da7d 26
Shruti 0:f7337de6da7d 27 float level1 , level2 = 1.0;
Shruti 0:f7337de6da7d 28
Shruti 0:f7337de6da7d 29 Base::add_rpc_class<DigitalOut>();
Shruti 0:f7337de6da7d 30
Shruti 0:f7337de6da7d 31 printf("Setting up...\n");
Shruti 0:f7337de6da7d 32 EthernetErr ethErr = eth.setup();
Shruti 0:f7337de6da7d 33 if (ethErr) {
Shruti 0:f7337de6da7d 34 printf("Error %d in setup.\n", ethErr);
Shruti 0:f7337de6da7d 35 return -1;
Shruti 0:f7337de6da7d 36 }
Shruti 0:f7337de6da7d 37 printf("Setup OK\n");
Shruti 0:f7337de6da7d 38
Shruti 0:f7337de6da7d 39 char test[64];
Shruti 0:f7337de6da7d 40
Shruti 0:f7337de6da7d 41 wait(1);
Shruti 0:f7337de6da7d 42
Shruti 0:f7337de6da7d 43 printf("reset=%d\n", cam.reset());
Shruti 0:f7337de6da7d 44 wait(1);
Shruti 0:f7337de6da7d 45
Shruti 0:f7337de6da7d 46 #if 0
Shruti 0:f7337de6da7d 47 printf("setImageSize=%d\n", cam.setImageSize(LS_Y201::ImageSize640x480));
Shruti 0:f7337de6da7d 48 wait(1);
Shruti 0:f7337de6da7d 49 #endif
Shruti 0:f7337de6da7d 50
Shruti 0:f7337de6da7d 51
Shruti 0:f7337de6da7d 52 while (count <5) { /*loop to catch five consecutive motions in the form of pictures*/
Shruti 0:f7337de6da7d 53 level1 = sensor.read();
Shruti 0:f7337de6da7d 54 level2 = (level2 * .8 + level1 * .2); /* running average filter*/
Shruti 0:f7337de6da7d 55 printf("value of sensor = %f and value of level2 is = %f \n\r", level1, level2);
Shruti 0:f7337de6da7d 56
Shruti 0:f7337de6da7d 57 if ((level2) < 0.67) {
Shruti 0:f7337de6da7d 58
Shruti 0:f7337de6da7d 59 printf("reset=%d\n", cam.reset()); /*reset after each picture*/
Shruti 0:f7337de6da7d 60 wait(1);
Shruti 0:f7337de6da7d 61
Shruti 0:f7337de6da7d 62 char format[] = "/webfs/test%d.jpg";
Shruti 0:f7337de6da7d 63 char filename[sizeof(format)+100];
Shruti 0:f7337de6da7d 64 sprintf(filename,format,count);
Shruti 0:f7337de6da7d 65 printf("file name is %s\n", filename);
Shruti 0:f7337de6da7d 66 fp = fopen(filename,"wb");
Shruti 0:f7337de6da7d 67
Shruti 0:f7337de6da7d 68
Shruti 0:f7337de6da7d 69
Shruti 0:f7337de6da7d 70 if (fp == NULL) {
Shruti 0:f7337de6da7d 71 error("Failure to open a destination file.");
Shruti 0:f7337de6da7d 72 }
Shruti 0:f7337de6da7d 73 wait(1);
Shruti 0:f7337de6da7d 74
Shruti 0:f7337de6da7d 75 printf("takePicture=%d\n", cam.takePicture()); /*clicking the picture*/
Shruti 0:f7337de6da7d 76 wait(1);
Shruti 0:f7337de6da7d 77
Shruti 0:f7337de6da7d 78 int fs;
Shruti 0:f7337de6da7d 79 printf("readJpegFileSize=%d\n", cam.readJpegFileSize(&fs));
Shruti 0:f7337de6da7d 80 printf("\tFile size = %d\n", fs);
Shruti 0:f7337de6da7d 81 wait(1);
Shruti 0:f7337de6da7d 82
Shruti 0:f7337de6da7d 83 printf("readJpegFileContent=%d\n", cam.readJpegFileContent(callback_func));
Shruti 0:f7337de6da7d 84 wait(1);
Shruti 0:f7337de6da7d 85
Shruti 0:f7337de6da7d 86 fclose(fp);
Shruti 0:f7337de6da7d 87
Shruti 0:f7337de6da7d 88 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
Shruti 0:f7337de6da7d 89 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
Shruti 0:f7337de6da7d 90 svr.addHandler<SimpleHandler>("/hello");
Shruti 0:f7337de6da7d 91 svr.addHandler<RPCHandler>("/rpc");
Shruti 0:f7337de6da7d 92 svr.addHandler<FSHandler>("/files");
Shruti 0:f7337de6da7d 93 svr.addHandler<FSHandler>("/"); //Default handler
Shruti 0:f7337de6da7d 94 //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
Shruti 0:f7337de6da7d 95
Shruti 0:f7337de6da7d 96 svr.bind(80);
Shruti 0:f7337de6da7d 97 count++;
Shruti 0:f7337de6da7d 98 } else {
Shruti 0:f7337de6da7d 99 printf("no motion");
Shruti 0:f7337de6da7d 100 }
Shruti 0:f7337de6da7d 101 }
Shruti 0:f7337de6da7d 102
Shruti 0:f7337de6da7d 103
Shruti 0:f7337de6da7d 104 printf("Listening...\n");
Shruti 0:f7337de6da7d 105
Shruti 0:f7337de6da7d 106 Timer tm;
Shruti 0:f7337de6da7d 107 tm.start();
Shruti 0:f7337de6da7d 108 //Listen indefinitely
Shruti 0:f7337de6da7d 109 while (true) {
Shruti 0:f7337de6da7d 110 Net::poll();
Shruti 0:f7337de6da7d 111 if (tm.read()>.5) {
Shruti 0:f7337de6da7d 112 led1=!led1; //Show that we are alive
Shruti 0:f7337de6da7d 113 tm.start();
Shruti 0:f7337de6da7d 114 }
Shruti 0:f7337de6da7d 115 }
Shruti 0:f7337de6da7d 116
Shruti 0:f7337de6da7d 117
Shruti 0:f7337de6da7d 118 return 0;
Shruti 0:f7337de6da7d 119 }
Shruti 0:f7337de6da7d 120
Shruti 0:f7337de6da7d 121
Shruti 0:f7337de6da7d 122
Shruti 0:f7337de6da7d 123
Shruti 0:f7337de6da7d 124
Shruti 0:f7337de6da7d 125
Shruti 0:f7337de6da7d 126
Shruti 0:f7337de6da7d 127
Shruti 0:f7337de6da7d 128
Shruti 0:f7337de6da7d 129
Shruti 0:f7337de6da7d 130
Shruti 0:f7337de6da7d 131
Shruti 0:f7337de6da7d 132