Smart-Home-TX Test

Dependencies:   4DGL-uLCD-SE PinDetect

Fork of Xbee-Smart-Home-Outside by prana koirala

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?

UserRevisionLine numberNew 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 }