The receiver's code for Home Security with RF
Dependencies: Camera_LS_Y201 SDFileSystem Servo hmac_md5 mbed
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 }
Generated on Sat Jul 16 2022 20:05:10 by 1.7.2