![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Smart-Home-TX Test
Dependencies: 4DGL-uLCD-SE PinDetect
Fork of Xbee-Smart-Home-Outside by
main.cpp@5:65fd90a3352d, 2017-05-02 (annotated)
- Committer:
- pkoirala3
- Date:
- Tue May 02 21:42:10 2017 +0000
- Revision:
- 5:65fd90a3352d
- Parent:
- 4:f87a36946c09
Final Version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pkoirala3 | 0:9d604b1e5409 | 1 | #include "mbed.h" |
pkoirala3 | 0:9d604b1e5409 | 2 | #include <string> |
pkoirala3 | 1:7d069ab3f551 | 3 | #include <stdio.h> |
pkoirala3 | 0:9d604b1e5409 | 4 | #include "uLCD_4DGL.h" |
pkoirala3 | 1:7d069ab3f551 | 5 | #include "rtos.h" |
pkoirala3 | 3:80ca319bd924 | 6 | #include "PinDetect.h" |
pkoirala3 | 1:7d069ab3f551 | 7 | |
pkoirala3 | 1:7d069ab3f551 | 8 | Serial pc(USBTX, USBRX); |
pkoirala3 | 1:7d069ab3f551 | 9 | uLCD_4DGL lcd(p28,p27,p24); |
pkoirala3 | 0:9d604b1e5409 | 10 | Serial xbee(p9, p10); |
pkoirala3 | 0:9d604b1e5409 | 11 | DigitalOut reset(p8); |
pkoirala3 | 0:9d604b1e5409 | 12 | DigitalOut led1(LED1); |
pkoirala3 | 0:9d604b1e5409 | 13 | DigitalOut led2(LED2); |
pkoirala3 | 3:80ca319bd924 | 14 | PinDetect getStatus(p16); |
pkoirala3 | 3:80ca319bd924 | 15 | PinDetect toggleLight(p17); |
pkoirala3 | 4:f87a36946c09 | 16 | PinDetect camPic(p18); |
pkoirala3 | 1:7d069ab3f551 | 17 | |
pkoirala3 | 1:7d069ab3f551 | 18 | volatile bool statusReq = false; |
pkoirala3 | 1:7d069ab3f551 | 19 | volatile bool flipLed = false; |
pkoirala3 | 4:f87a36946c09 | 20 | volatile bool cameraReq = false; |
pkoirala3 | 1:7d069ab3f551 | 21 | |
pkoirala3 | 1:7d069ab3f551 | 22 | Thread t1; |
pkoirala3 | 1:7d069ab3f551 | 23 | |
pkoirala3 | 1:7d069ab3f551 | 24 | char buffer[50]; |
pkoirala3 | 1:7d069ab3f551 | 25 | |
pkoirala3 | 1:7d069ab3f551 | 26 | void statusRequest() |
pkoirala3 | 1:7d069ab3f551 | 27 | { |
pkoirala3 | 1:7d069ab3f551 | 28 | statusReq = true; |
pkoirala3 | 1:7d069ab3f551 | 29 | } |
pkoirala3 | 1:7d069ab3f551 | 30 | |
pkoirala3 | 1:7d069ab3f551 | 31 | void flipLight() |
pkoirala3 | 1:7d069ab3f551 | 32 | { |
pkoirala3 | 1:7d069ab3f551 | 33 | flipLed = true; |
pkoirala3 | 1:7d069ab3f551 | 34 | } |
pkoirala3 | 1:7d069ab3f551 | 35 | |
pkoirala3 | 4:f87a36946c09 | 36 | void cameraTakePic() |
pkoirala3 | 4:f87a36946c09 | 37 | { |
pkoirala3 | 4:f87a36946c09 | 38 | cameraReq = true; |
pkoirala3 | 4:f87a36946c09 | 39 | } |
pkoirala3 | 4:f87a36946c09 | 40 | |
pkoirala3 | 1:7d069ab3f551 | 41 | void sendcommand(char out) |
pkoirala3 | 1:7d069ab3f551 | 42 | { |
pkoirala3 | 4:f87a36946c09 | 43 | if(xbee.writeable()) { |
pkoirala3 | 4:f87a36946c09 | 44 | led2 = 1; |
pkoirala3 | 4:f87a36946c09 | 45 | char outbuf = out; |
pkoirala3 | 4:f87a36946c09 | 46 | xbee.putc(outbuf); |
pkoirala3 | 4:f87a36946c09 | 47 | pc.putc(outbuf); |
pkoirala3 | 4:f87a36946c09 | 48 | outbuf = ' '; |
pkoirala3 | 4:f87a36946c09 | 49 | led2 = 0; |
pkoirala3 | 4:f87a36946c09 | 50 | } |
pkoirala3 | 1:7d069ab3f551 | 51 | } |
pkoirala3 | 1:7d069ab3f551 | 52 | |
pkoirala3 | 1:7d069ab3f551 | 53 | void getcommand() |
pkoirala3 | 1:7d069ab3f551 | 54 | { |
pkoirala3 | 1:7d069ab3f551 | 55 | while(1) { |
pkoirala3 | 1:7d069ab3f551 | 56 | if(xbee.readable()) { |
pkoirala3 | 1:7d069ab3f551 | 57 | led1 = 1; |
pkoirala3 | 1:7d069ab3f551 | 58 | int x = 0; |
pkoirala3 | 1:7d069ab3f551 | 59 | while(xbee.readable()) { |
pkoirala3 | 1:7d069ab3f551 | 60 | buffer[x] = xbee.getc(); |
pkoirala3 | 1:7d069ab3f551 | 61 | x++; |
pkoirala3 | 1:7d069ab3f551 | 62 | } |
pkoirala3 | 1:7d069ab3f551 | 63 | led1 = 0; |
pkoirala3 | 4:f87a36946c09 | 64 | bool statusmsg = true; |
pkoirala3 | 4:f87a36946c09 | 65 | // pc.printf(buffer); |
pkoirala3 | 4:f87a36946c09 | 66 | if(buffer[0] == 'p') { |
pkoirala3 | 4:f87a36946c09 | 67 | lcd.locate(0, 6); |
pkoirala3 | 4:f87a36946c09 | 68 | char msg[] = "Pic Taken,See Mbed"; |
pkoirala3 | 4:f87a36946c09 | 69 | lcd.puts(msg); |
pkoirala3 | 4:f87a36946c09 | 70 | statusmsg = false; |
pkoirala3 | 4:f87a36946c09 | 71 | } |
pkoirala3 | 4:f87a36946c09 | 72 | else if (buffer[0] == 'i'){ |
pkoirala3 | 4:f87a36946c09 | 73 | lcd.locate(0,6); |
pkoirala3 | 4:f87a36946c09 | 74 | char msg[] = "Intrusion Detected"; |
pkoirala3 | 4:f87a36946c09 | 75 | lcd.puts(msg); |
pkoirala3 | 4:f87a36946c09 | 76 | lcd.media_init(); // initialize uSD card |
pkoirala3 | 4:f87a36946c09 | 77 | lcd.set_sector_address(0,0); // address of font file |
pkoirala3 | 4:f87a36946c09 | 78 | lcd.media_init(); |
pkoirala3 | 4:f87a36946c09 | 79 | lcd.display_image(0,60); |
pkoirala3 | 4:f87a36946c09 | 80 | Thread::wait(4000); |
pkoirala3 | 4:f87a36946c09 | 81 | statusmsg = false; |
pkoirala3 | 4:f87a36946c09 | 82 | lcd.filled_rectangle(0, 48, 128, 128, BLACK); |
pkoirala3 | 4:f87a36946c09 | 83 | } else if(buffer[0] == 'u'){ |
pkoirala3 | 4:f87a36946c09 | 84 | lcd.locate(0,6); |
pkoirala3 | 4:f87a36946c09 | 85 | char msg[] = "Door Unlocked"; |
pkoirala3 | 4:f87a36946c09 | 86 | lcd.puts(msg); |
pkoirala3 | 4:f87a36946c09 | 87 | Thread::wait(4000); |
pkoirala3 | 4:f87a36946c09 | 88 | lcd.locate(0,6); |
pkoirala3 | 4:f87a36946c09 | 89 | for(int i = 0; i < 18; ++i){ |
pkoirala3 | 4:f87a36946c09 | 90 | msg[i] = ' '; |
pkoirala3 | 4:f87a36946c09 | 91 | } |
pkoirala3 | 4:f87a36946c09 | 92 | lcd.puts(msg); |
pkoirala3 | 4:f87a36946c09 | 93 | statusmsg = false; |
pkoirala3 | 4:f87a36946c09 | 94 | } |
pkoirala3 | 4:f87a36946c09 | 95 | if(statusmsg == true) { |
pkoirala3 | 4:f87a36946c09 | 96 | const char s[2] = "|"; // s[2] |
pkoirala3 | 4:f87a36946c09 | 97 | char *token; |
pkoirala3 | 4:f87a36946c09 | 98 | token = strtok(buffer, s); // get the first token |
pkoirala3 | 4:f87a36946c09 | 99 | int j = 2; |
pkoirala3 | 4:f87a36946c09 | 100 | while( token != NULL ) { // walk through other tokens |
pkoirala3 | 4:f87a36946c09 | 101 | lcd.locate(11,j); // Print in correct place of LCD |
pkoirala3 | 4:f87a36946c09 | 102 | lcd.puts(token ); |
pkoirala3 | 4:f87a36946c09 | 103 | token = strtok(NULL, s); |
pkoirala3 | 4:f87a36946c09 | 104 | j++; |
pkoirala3 | 4:f87a36946c09 | 105 | } |
pkoirala3 | 1:7d069ab3f551 | 106 | } |
pkoirala3 | 1:7d069ab3f551 | 107 | } |
pkoirala3 | 1:7d069ab3f551 | 108 | } |
pkoirala3 | 1:7d069ab3f551 | 109 | } |
pkoirala3 | 1:7d069ab3f551 | 110 | |
pkoirala3 | 0:9d604b1e5409 | 111 | int main() |
pkoirala3 | 0:9d604b1e5409 | 112 | { |
pkoirala3 | 0:9d604b1e5409 | 113 | reset = 0; |
pkoirala3 | 0:9d604b1e5409 | 114 | wait_ms(1); |
pkoirala3 | 0:9d604b1e5409 | 115 | reset = 1; |
pkoirala3 | 0:9d604b1e5409 | 116 | wait_ms(1); |
pkoirala3 | 4:f87a36946c09 | 117 | |
pkoirala3 | 2:b549ccada3c3 | 118 | getStatus.mode(PullDown); |
pkoirala3 | 3:80ca319bd924 | 119 | getStatus.attach_asserted( &statusRequest ); |
pkoirala3 | 4:f87a36946c09 | 120 | getStatus.setSampleFrequency(); |
pkoirala3 | 4:f87a36946c09 | 121 | |
pkoirala3 | 2:b549ccada3c3 | 122 | toggleLight.mode(PullDown); |
pkoirala3 | 3:80ca319bd924 | 123 | toggleLight.attach_asserted( &flipLight ); |
pkoirala3 | 4:f87a36946c09 | 124 | toggleLight.setSampleFrequency(); |
pkoirala3 | 3:80ca319bd924 | 125 | |
pkoirala3 | 4:f87a36946c09 | 126 | camPic.mode(PullDown); |
pkoirala3 | 4:f87a36946c09 | 127 | camPic.attach_asserted( &cameraTakePic ); |
pkoirala3 | 4:f87a36946c09 | 128 | camPic.setSampleFrequency(); |
pkoirala3 | 4:f87a36946c09 | 129 | |
pkoirala3 | 1:7d069ab3f551 | 130 | lcd.cls(); |
pkoirala3 | 1:7d069ab3f551 | 131 | lcd.locate(0,0); |
pkoirala3 | 1:7d069ab3f551 | 132 | lcd.line(0, 5, 128, 5, 0xFF0000); |
pkoirala3 | 1:7d069ab3f551 | 133 | lcd.printf("\r\nStatus:"); |
pkoirala3 | 1:7d069ab3f551 | 134 | lcd.printf("\r\n"); |
pkoirala3 | 1:7d069ab3f551 | 135 | lcd.printf("Temp degC:\r\n"); |
pkoirala3 | 1:7d069ab3f551 | 136 | lcd.printf("Humidity %:\r\n"); |
pkoirala3 | 1:7d069ab3f551 | 137 | lcd.printf("Lights: \r\n"); |
pkoirala3 | 1:7d069ab3f551 | 138 | lcd.line(0, 45, 128, 45, 0xFF0000); |
pkoirala3 | 1:7d069ab3f551 | 139 | t1.start(getcommand); |
pkoirala3 | 4:f87a36946c09 | 140 | statusReq = true; |
pkoirala3 | 1:7d069ab3f551 | 141 | |
pkoirala3 | 1:7d069ab3f551 | 142 | while(1) { |
pkoirala3 | 1:7d069ab3f551 | 143 | if (statusReq == true) { |
pkoirala3 | 2:b549ccada3c3 | 144 | sendcommand('s'); |
pkoirala3 | 2:b549ccada3c3 | 145 | statusReq = false; |
pkoirala3 | 1:7d069ab3f551 | 146 | } else if (flipLed == true) { |
pkoirala3 | 1:7d069ab3f551 | 147 | sendcommand('l'); |
pkoirala3 | 2:b549ccada3c3 | 148 | flipLed = false; |
pkoirala3 | 4:f87a36946c09 | 149 | } else if(cameraReq == true) { |
pkoirala3 | 4:f87a36946c09 | 150 | sendcommand('c'); |
pkoirala3 | 4:f87a36946c09 | 151 | cameraReq = false; |
pkoirala3 | 0:9d604b1e5409 | 152 | } |
pkoirala3 | 2:b549ccada3c3 | 153 | Thread::wait(2000); |
pkoirala3 | 0:9d604b1e5409 | 154 | } |
pkoirala3 | 4:f87a36946c09 | 155 | } |