The receiver's code for Home Security with RF

Dependencies:   Camera_LS_Y201 SDFileSystem Servo hmac_md5 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "Servo.h"
00003 #include "hmac_md5.h"
00004 #include "Camera_LS_Y201.h"
00005 #include "Speaker.h"
00006 AnalogIn ir(p20);
00007 DigitalOut myled2(LED2);
00008 Serial pc(USBTX,USBRX);
00009 Serial rf(p9,p10);
00010 Servo myservo(p23);
00011 Speaker mySpeaker(p18);
00012 Timer t;
00013 int takepic(int);
00014 int camInit(void);
00015 
00016 int main() {
00017     pc.baud(1200);
00018     rf.baud(1200);
00019     char code = 0;
00020     char codebuf[32];
00021     int cnt = 0;
00022     int unlocked = 0;
00023     int matching = 0;
00024     
00025     int i =0;
00026      char key[4] = "Dhr";
00027     for (i = 0; i < 4; i++) {
00028         key[i] = (key[i] + 5); 
00029     }
00030     char key2[4] = {0};
00031     key2[0] = key[0];
00032     key2[1] = key[1];
00033     key2[2] = key[2];
00034     for (i = 0; i < 4; i++) {
00035         key2[i] = (key2[i] + 5); 
00036     }
00037     char key3[4] = {0};
00038     key3[0] = key2[0];
00039     key3[1] = key2[1];
00040     key3[2] = key2[2];
00041     for (i = 0; i < 4; i++) {
00042         key3[i] = (key3[i] + 5); 
00043     }
00044 
00045     char received[3] = {0};
00046     
00047     camInit(); 
00048     
00049     while(1) {
00050         if (rf.readable()) {
00051             myled2 = 1;
00052             matching = 0;
00053             
00054             //Ignore Sync pattern and do not pass on to PC
00055                 int i = 0;
00056                 
00057                 //Clear the buffer
00058                 for(i = 0; i < 32; i++) {
00059                     codebuf[i] = 0;
00060                 }
00061                 
00062                 for(i = 0; i < 32; i++) {
00063                     code = rf.getc(); 
00064                     if(code != 0xAA) {
00065                         codebuf[i] = code;
00066                         pc.printf("codebuf[%d] = %c\r\n", i, codebuf[i]);
00067                     }
00068                 }
00069                 
00070                 for(i = 0; i < 30; i++) {
00071                     if(codebuf[i] == key[0]) {
00072                         if(codebuf[i+1] == key[1]) {
00073                             if(codebuf[i+2] == key[2]) {
00074                                 received[0] = codebuf[i];
00075                                 received[1] = codebuf[i+1];
00076                                 received[2] = codebuf[i+2];
00077                                 matching = 1;
00078                                 break;
00079                             }
00080                         }
00081                     }
00082                     if(codebuf[i] == key2[0]) {
00083                         if(codebuf[i+1] == key2[1]) {
00084                             if(codebuf[i+2] == key2[2]) {
00085                                 received[0] = codebuf[i];
00086                                 received[1] = codebuf[i+1];
00087                                 received[2] = codebuf[i+2];
00088                                 matching = 2;
00089                                 break;
00090                             }
00091                         }
00092                     }
00093                     if(codebuf[i] == key3[0]) {
00094                         if(codebuf[i+1] == key3[1]) {
00095                             if(codebuf[i+2] == key3[2]) {
00096                                 received[0] = codebuf[i];
00097                                 received[1] = codebuf[i+1];
00098                                 received[2] = codebuf[i+2];
00099                                 matching = 3;
00100                                 break;
00101                             }
00102                         }
00103                     }
00104                 }
00105              
00106                 myled2 = 0;
00107             if(matching) {
00108 
00109                 pc.printf("Unlocking door\r\n");
00110                 mySpeaker.PlayNote(800.0, 0.5, 1.0);
00111                 // Turn servo
00112                 myservo = unlocked;
00113                 wait(1);
00114                 unlocked = !unlocked;
00115                 
00116                 if (matching  == 1) {
00117                     for (i = 0; i < 4; i++) {
00118                         key[i] = (key[i] + 5); 
00119                     }
00120                 }
00121                 if (matching  == 2) {
00122                     for (i = 0; i < 4; i++) {
00123                         key[i] = (key2[i] + 5); 
00124                     }
00125                 }
00126                 if (matching  == 3) {
00127                     for (i = 0; i < 4; i++) {
00128                         key[i] = (key3[i] + 5); 
00129                     }
00130                 }
00131                 
00132                     key2[0] = key[0];
00133                     key2[1] = key[1];
00134                     key2[2] = key[2];
00135                     
00136                     for (i = 0; i < 4; i++) {
00137                         key2[i] = (key2[i] + 5); 
00138                     }
00139                     
00140                     
00141                     key3[0] = key2[0];
00142                     key3[1] = key2[1];
00143                     key3[2] = key2[2];
00144                     for (i = 0; i < 4; i++) {
00145                         key3[i] = (key3[i] + 5); 
00146                     }
00147 
00148                 takepic(cnt);
00149 
00150                 cnt++;
00151             }
00152             
00153             
00154             
00155           
00156         }
00157     } 
00158 }