The receiver's code for Home Security with RF

Dependencies:   Camera_LS_Y201 SDFileSystem Servo hmac_md5 mbed

Committer:
jsobchuk3
Date:
Mon Dec 08 22:42:21 2014 +0000
Revision:
0:bbfc7c781872
ECE 4180 Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jsobchuk3 0:bbfc7c781872 1 #include "mbed.h"
jsobchuk3 0:bbfc7c781872 2 #include "Servo.h"
jsobchuk3 0:bbfc7c781872 3 #include "hmac_md5.h"
jsobchuk3 0:bbfc7c781872 4 #include "Camera_LS_Y201.h"
jsobchuk3 0:bbfc7c781872 5 #include "Speaker.h"
jsobchuk3 0:bbfc7c781872 6 AnalogIn ir(p20);
jsobchuk3 0:bbfc7c781872 7 DigitalOut myled2(LED2);
jsobchuk3 0:bbfc7c781872 8 Serial pc(USBTX,USBRX);
jsobchuk3 0:bbfc7c781872 9 Serial rf(p9,p10);
jsobchuk3 0:bbfc7c781872 10 Servo myservo(p23);
jsobchuk3 0:bbfc7c781872 11 Speaker mySpeaker(p18);
jsobchuk3 0:bbfc7c781872 12 Timer t;
jsobchuk3 0:bbfc7c781872 13 int takepic(int);
jsobchuk3 0:bbfc7c781872 14 int camInit(void);
jsobchuk3 0:bbfc7c781872 15
jsobchuk3 0:bbfc7c781872 16 int main() {
jsobchuk3 0:bbfc7c781872 17 pc.baud(1200);
jsobchuk3 0:bbfc7c781872 18 rf.baud(1200);
jsobchuk3 0:bbfc7c781872 19 char code = 0;
jsobchuk3 0:bbfc7c781872 20 char codebuf[32];
jsobchuk3 0:bbfc7c781872 21 int cnt = 0;
jsobchuk3 0:bbfc7c781872 22 int unlocked = 0;
jsobchuk3 0:bbfc7c781872 23 int matching = 0;
jsobchuk3 0:bbfc7c781872 24
jsobchuk3 0:bbfc7c781872 25 int i =0;
jsobchuk3 0:bbfc7c781872 26 char key[4] = "Dhr";
jsobchuk3 0:bbfc7c781872 27 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 28 key[i] = (key[i] + 5);
jsobchuk3 0:bbfc7c781872 29 }
jsobchuk3 0:bbfc7c781872 30 char key2[4] = {0};
jsobchuk3 0:bbfc7c781872 31 key2[0] = key[0];
jsobchuk3 0:bbfc7c781872 32 key2[1] = key[1];
jsobchuk3 0:bbfc7c781872 33 key2[2] = key[2];
jsobchuk3 0:bbfc7c781872 34 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 35 key2[i] = (key2[i] + 5);
jsobchuk3 0:bbfc7c781872 36 }
jsobchuk3 0:bbfc7c781872 37 char key3[4] = {0};
jsobchuk3 0:bbfc7c781872 38 key3[0] = key2[0];
jsobchuk3 0:bbfc7c781872 39 key3[1] = key2[1];
jsobchuk3 0:bbfc7c781872 40 key3[2] = key2[2];
jsobchuk3 0:bbfc7c781872 41 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 42 key3[i] = (key3[i] + 5);
jsobchuk3 0:bbfc7c781872 43 }
jsobchuk3 0:bbfc7c781872 44
jsobchuk3 0:bbfc7c781872 45 char received[3] = {0};
jsobchuk3 0:bbfc7c781872 46
jsobchuk3 0:bbfc7c781872 47 camInit();
jsobchuk3 0:bbfc7c781872 48
jsobchuk3 0:bbfc7c781872 49 while(1) {
jsobchuk3 0:bbfc7c781872 50 if (rf.readable()) {
jsobchuk3 0:bbfc7c781872 51 myled2 = 1;
jsobchuk3 0:bbfc7c781872 52 matching = 0;
jsobchuk3 0:bbfc7c781872 53
jsobchuk3 0:bbfc7c781872 54 //Ignore Sync pattern and do not pass on to PC
jsobchuk3 0:bbfc7c781872 55 int i = 0;
jsobchuk3 0:bbfc7c781872 56
jsobchuk3 0:bbfc7c781872 57 //Clear the buffer
jsobchuk3 0:bbfc7c781872 58 for(i = 0; i < 32; i++) {
jsobchuk3 0:bbfc7c781872 59 codebuf[i] = 0;
jsobchuk3 0:bbfc7c781872 60 }
jsobchuk3 0:bbfc7c781872 61
jsobchuk3 0:bbfc7c781872 62 for(i = 0; i < 32; i++) {
jsobchuk3 0:bbfc7c781872 63 code = rf.getc();
jsobchuk3 0:bbfc7c781872 64 if(code != 0xAA) {
jsobchuk3 0:bbfc7c781872 65 codebuf[i] = code;
jsobchuk3 0:bbfc7c781872 66 pc.printf("codebuf[%d] = %c\r\n", i, codebuf[i]);
jsobchuk3 0:bbfc7c781872 67 }
jsobchuk3 0:bbfc7c781872 68 }
jsobchuk3 0:bbfc7c781872 69
jsobchuk3 0:bbfc7c781872 70 for(i = 0; i < 30; i++) {
jsobchuk3 0:bbfc7c781872 71 if(codebuf[i] == key[0]) {
jsobchuk3 0:bbfc7c781872 72 if(codebuf[i+1] == key[1]) {
jsobchuk3 0:bbfc7c781872 73 if(codebuf[i+2] == key[2]) {
jsobchuk3 0:bbfc7c781872 74 received[0] = codebuf[i];
jsobchuk3 0:bbfc7c781872 75 received[1] = codebuf[i+1];
jsobchuk3 0:bbfc7c781872 76 received[2] = codebuf[i+2];
jsobchuk3 0:bbfc7c781872 77 matching = 1;
jsobchuk3 0:bbfc7c781872 78 break;
jsobchuk3 0:bbfc7c781872 79 }
jsobchuk3 0:bbfc7c781872 80 }
jsobchuk3 0:bbfc7c781872 81 }
jsobchuk3 0:bbfc7c781872 82 if(codebuf[i] == key2[0]) {
jsobchuk3 0:bbfc7c781872 83 if(codebuf[i+1] == key2[1]) {
jsobchuk3 0:bbfc7c781872 84 if(codebuf[i+2] == key2[2]) {
jsobchuk3 0:bbfc7c781872 85 received[0] = codebuf[i];
jsobchuk3 0:bbfc7c781872 86 received[1] = codebuf[i+1];
jsobchuk3 0:bbfc7c781872 87 received[2] = codebuf[i+2];
jsobchuk3 0:bbfc7c781872 88 matching = 2;
jsobchuk3 0:bbfc7c781872 89 break;
jsobchuk3 0:bbfc7c781872 90 }
jsobchuk3 0:bbfc7c781872 91 }
jsobchuk3 0:bbfc7c781872 92 }
jsobchuk3 0:bbfc7c781872 93 if(codebuf[i] == key3[0]) {
jsobchuk3 0:bbfc7c781872 94 if(codebuf[i+1] == key3[1]) {
jsobchuk3 0:bbfc7c781872 95 if(codebuf[i+2] == key3[2]) {
jsobchuk3 0:bbfc7c781872 96 received[0] = codebuf[i];
jsobchuk3 0:bbfc7c781872 97 received[1] = codebuf[i+1];
jsobchuk3 0:bbfc7c781872 98 received[2] = codebuf[i+2];
jsobchuk3 0:bbfc7c781872 99 matching = 3;
jsobchuk3 0:bbfc7c781872 100 break;
jsobchuk3 0:bbfc7c781872 101 }
jsobchuk3 0:bbfc7c781872 102 }
jsobchuk3 0:bbfc7c781872 103 }
jsobchuk3 0:bbfc7c781872 104 }
jsobchuk3 0:bbfc7c781872 105
jsobchuk3 0:bbfc7c781872 106 myled2 = 0;
jsobchuk3 0:bbfc7c781872 107 if(matching) {
jsobchuk3 0:bbfc7c781872 108
jsobchuk3 0:bbfc7c781872 109 pc.printf("Unlocking door\r\n");
jsobchuk3 0:bbfc7c781872 110 mySpeaker.PlayNote(800.0, 0.5, 1.0);
jsobchuk3 0:bbfc7c781872 111 // Turn servo
jsobchuk3 0:bbfc7c781872 112 myservo = unlocked;
jsobchuk3 0:bbfc7c781872 113 wait(1);
jsobchuk3 0:bbfc7c781872 114 unlocked = !unlocked;
jsobchuk3 0:bbfc7c781872 115
jsobchuk3 0:bbfc7c781872 116 if (matching == 1) {
jsobchuk3 0:bbfc7c781872 117 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 118 key[i] = (key[i] + 5);
jsobchuk3 0:bbfc7c781872 119 }
jsobchuk3 0:bbfc7c781872 120 }
jsobchuk3 0:bbfc7c781872 121 if (matching == 2) {
jsobchuk3 0:bbfc7c781872 122 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 123 key[i] = (key2[i] + 5);
jsobchuk3 0:bbfc7c781872 124 }
jsobchuk3 0:bbfc7c781872 125 }
jsobchuk3 0:bbfc7c781872 126 if (matching == 3) {
jsobchuk3 0:bbfc7c781872 127 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 128 key[i] = (key3[i] + 5);
jsobchuk3 0:bbfc7c781872 129 }
jsobchuk3 0:bbfc7c781872 130 }
jsobchuk3 0:bbfc7c781872 131
jsobchuk3 0:bbfc7c781872 132 key2[0] = key[0];
jsobchuk3 0:bbfc7c781872 133 key2[1] = key[1];
jsobchuk3 0:bbfc7c781872 134 key2[2] = key[2];
jsobchuk3 0:bbfc7c781872 135
jsobchuk3 0:bbfc7c781872 136 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 137 key2[i] = (key2[i] + 5);
jsobchuk3 0:bbfc7c781872 138 }
jsobchuk3 0:bbfc7c781872 139
jsobchuk3 0:bbfc7c781872 140
jsobchuk3 0:bbfc7c781872 141 key3[0] = key2[0];
jsobchuk3 0:bbfc7c781872 142 key3[1] = key2[1];
jsobchuk3 0:bbfc7c781872 143 key3[2] = key2[2];
jsobchuk3 0:bbfc7c781872 144 for (i = 0; i < 4; i++) {
jsobchuk3 0:bbfc7c781872 145 key3[i] = (key3[i] + 5);
jsobchuk3 0:bbfc7c781872 146 }
jsobchuk3 0:bbfc7c781872 147
jsobchuk3 0:bbfc7c781872 148 takepic(cnt);
jsobchuk3 0:bbfc7c781872 149
jsobchuk3 0:bbfc7c781872 150 cnt++;
jsobchuk3 0:bbfc7c781872 151 }
jsobchuk3 0:bbfc7c781872 152
jsobchuk3 0:bbfc7c781872 153
jsobchuk3 0:bbfc7c781872 154
jsobchuk3 0:bbfc7c781872 155
jsobchuk3 0:bbfc7c781872 156 }
jsobchuk3 0:bbfc7c781872 157 }
jsobchuk3 0:bbfc7c781872 158 }