A security system that is activated after the object is removed from the box.

Dependencies:   4DGL-uLCD-SE Camera_LS_Y201 FatFileSystem SDFileSystem mbed wave_player

Files at this revision

API Documentation at this revision

Comitter:
tdouglas6
Date:
Wed Dec 10 02:42:58 2014 +0000
Commit message:
A program

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
Camera_LS_Y201.lib Show annotated file Show diff for this revision Revisions of this file
FATFileSystem.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.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
wave_player.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Camera_LS_Y201.lib	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/shintamainjp/code/Camera_LS_Y201/#43358d40f879
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FATFileSystem.lib	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_unsupported/code/fatfilesystem/#333d6e93e58f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SDFileSystem.lib	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/SDFileSystem/#7b35d1709458
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,226 @@
+#include "mbed.h"
+#include "Camera_LS_Y201.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+#include "uLCD_4DGL.h"
+#include <stdio.h>
+
+#define DEBMSG      printf
+#define DEBUG       printf("Bug me")
+#define NEWLINE()   printf("\r\n")
+
+#define USE_SDCARD 0
+
+
+#define FILENAME    "/sd/IMG_%04d.jpg"
+SDFileSystem fs(p5, p6, p7, p8, "sd");
+
+//#define FILENAME    "/local/IMG_%04d.jpg"
+//LocalFileSystem fs("local");
+
+Camera_LS_Y201 cam1(p13, p14);
+
+AnalogIn sensor(p19);
+DigitalOut led(LED1);
+uLCD_4DGL uLCD(p28,p27,p11); // serial tx, serial rx, reset pin;
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+Serial pc(USBTX, USBRX);
+Serial device(p9,p10);
+
+typedef struct work {
+    FILE *fp;
+} work_t;
+
+work_t work;
+
+void regularSub() {
+
+}
+void microInterrupt() {
+    int strikes = 0;
+    char rchar=0;
+//wake up device - needs more work and a timeout
+    device.putc('b');
+    while (device.getc()!='o') {
+        DEBMSG("First While loop.");
+        NEWLINE();
+        device.putc('b');
+        wait(0.2);
+    }
+    while (strikes<=3) {
+    DEBMSG("Second While loop.");
+    NEWLINE();        
+        device.putc('i'); //Start Recognition
+        device.putc('B'); //Use Wordset 3 - the numbers 1..10
+//Use built-in speaker independent numbers (0..10) and listen for a number
+        while (device.readable()!=0) {DEBMSG("Third While loop.");
+    NEWLINE();}
+        if (device.getc()=='s') {
+            device.putc(' ');
+            rchar=device.getc();
+            if (rchar=='G') {DEBMSG("Correct Command.");
+            //strikes--;
+    NEWLINE();
+    uLCD.text_width(2); //4X size text
+        uLCD.text_height(2);
+        uLCD.cls();
+    uLCD.color(GREEN);
+    uLCD.printf("Correct Command");
+    wait(5);
+    uLCD.cls();
+        wait(2);
+        uLCD.color(RED);
+        uLCD.text_width(3); //4X size text
+        uLCD.text_height(3);
+        uLCD.printf("Alarm is turn off"); //Default Green on black text
+        strikes = 4;
+    }
+            else {
+                strikes++;
+                DEBMSG("Wrong Command.");
+                uLCD.cls();
+                uLCD.text_width(2); //4X size text
+                uLCD.text_height(2);
+                uLCD.color(RED);
+                uLCD.printf("Wrong Command");
+                wait(5);
+                uLCD.cls();
+    NEWLINE();
+            while(strikes==4){    
+            DEBMSG("buzzing While loop.");
+    NEWLINE();
+            FILE *wave_file;
+            wave_file=fopen("/sd/buzzer2.wav","r");
+            waver.play(wave_file);
+            fclose(wave_file);
+            } 
+            }
+             
+        }
+    }
+}
+/**
+ * Callback function for readJpegFileContent.
+ *
+ * @param buf A pointer to a buffer.
+ * @param siz A size of the buffer.
+ */
+void callback_func(int done, int total, uint8_t *buf, size_t siz) {
+    fwrite(buf, siz, 1, work.fp);
+
+    static int n = 0;
+    int tmp = done * 100 / total;
+    if (n != tmp) {
+        n = tmp;
+        DEBMSG("Writing...: %3d%%", n);
+        NEWLINE();
+    }
+}
+
+/**
+ * Capture.
+ *
+ * @param cam A pointer to a camera object.
+ * @param filename The file name.
+ *
+ * @return Return 0 if it succeed.
+ */
+int capture(Camera_LS_Y201 *cam, char *filename) {
+    /*
+     * Take a picture.
+     */
+    if (cam->takePicture() != 0) {
+        return -1;
+    }
+    DEBMSG("Captured.");
+    NEWLINE();
+
+    /*
+     * Open file.
+     */
+    work.fp = fopen(filename, "wb");
+    if (work.fp == NULL) {
+        return -2;
+    }
+
+    /*
+     * Read the content.
+     */
+    DEBMSG("%s", filename);
+    NEWLINE();
+    if (cam->readJpegFileContent(callback_func) != 0) {
+        fclose(work.fp);
+        return -3;
+    }
+    fclose(work.fp);
+
+    /*
+     * Stop taking pictures.
+     */
+    cam->stopTakingPictures();
+
+    return 0;
+}
+
+/**
+ * Entry point.
+ */
+int main(void) {
+        while(1){   
+        DEBMSG("Checking again");
+        NEWLINE();
+        if(sensor > 0.3) {
+        //pc.printf("The distance is %d\n",sensor);
+        uLCD.cls();
+        wait(2);
+        uLCD.color(RED);
+        uLCD.text_width(3); //4X size text
+        uLCD.text_height(3);
+        uLCD.printf("Alarm is turn off"); //Default Green on black text
+        } else {
+        uLCD.cls();
+        uLCD.color(GREEN);
+        uLCD.text_width(3); //4X size text
+        uLCD.text_height(3);
+        uLCD.printf("Alarm is turn on");
+        uLCD.cls();
+        uLCD.printf("A picture is taken now");
+        wait(3);
+        uLCD.cls();
+        uLCD.printf("Alarm is turn on");
+        DEBMSG("Camera module");
+    NEWLINE();
+    DEBMSG("Resetting...");
+    NEWLINE();
+    wait(1);
+
+    if (cam1.reset() == 0) {
+        DEBMSG("Reset OK.");
+        NEWLINE();
+    } else {
+        DEBMSG("Reset fail.");
+        NEWLINE();
+        error("Reset fail.");
+    }
+    wait(1);
+
+    int cnt = 0;
+        char fname[64];
+        snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
+        int r = capture(&cam1, fname);
+        if (r == 0) {
+            DEBMSG("[%04d]:OK.", cnt);
+            NEWLINE();
+        } else {
+            DEBMSG("[%04d]:NG. (code=%d)", cnt, r);
+            NEWLINE();
+            error("Failure.");
+        }
+        cnt++;
+        
+        microInterrupt();
+        }
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wave_player.lib	Wed Dec 10 02:42:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/sravet/code/wave_player/#acc3e18e77ad