The receiver's code for Home Security with RF
Dependencies: Camera_LS_Y201 SDFileSystem Servo hmac_md5 mbed
main.cpp@0:bbfc7c781872, 2014-12-08 (annotated)
- Committer:
- jsobchuk3
- Date:
- Mon Dec 08 22:42:21 2014 +0000
- Revision:
- 0:bbfc7c781872
ECE 4180 Final
Who changed what in which revision?
User | Revision | Line number | New 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 | } |