Smart-Home-TX Test

Dependencies:   4DGL-uLCD-SE PinDetect

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

Committer:
pkoirala3
Date:
Tue May 02 20:37:18 2017 +0000
Revision:
4:f87a36946c09
Parent:
3:80ca319bd924
Child:
5:65fd90a3352d
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 4:f87a36946c09 17 PwmOut speaker(p21);
pkoirala3 1:7d069ab3f551 18
pkoirala3 1:7d069ab3f551 19 volatile bool statusReq = false;
pkoirala3 1:7d069ab3f551 20 volatile bool flipLed = false;
pkoirala3 4:f87a36946c09 21 volatile bool cameraReq = false;
pkoirala3 1:7d069ab3f551 22
pkoirala3 1:7d069ab3f551 23 Thread t1;
pkoirala3 1:7d069ab3f551 24
pkoirala3 1:7d069ab3f551 25 char buffer[50];
pkoirala3 1:7d069ab3f551 26
pkoirala3 1:7d069ab3f551 27 void statusRequest()
pkoirala3 1:7d069ab3f551 28 {
pkoirala3 1:7d069ab3f551 29 statusReq = true;
pkoirala3 1:7d069ab3f551 30 }
pkoirala3 1:7d069ab3f551 31
pkoirala3 1:7d069ab3f551 32 void flipLight()
pkoirala3 1:7d069ab3f551 33 {
pkoirala3 1:7d069ab3f551 34 flipLed = true;
pkoirala3 1:7d069ab3f551 35 }
pkoirala3 1:7d069ab3f551 36
pkoirala3 4:f87a36946c09 37 void cameraTakePic()
pkoirala3 4:f87a36946c09 38 {
pkoirala3 4:f87a36946c09 39 cameraReq = true;
pkoirala3 4:f87a36946c09 40 }
pkoirala3 4:f87a36946c09 41
pkoirala3 1:7d069ab3f551 42 void sendcommand(char out)
pkoirala3 1:7d069ab3f551 43 {
pkoirala3 4:f87a36946c09 44 if(xbee.writeable()) {
pkoirala3 4:f87a36946c09 45 led2 = 1;
pkoirala3 4:f87a36946c09 46 char outbuf = out;
pkoirala3 4:f87a36946c09 47 xbee.putc(outbuf);
pkoirala3 4:f87a36946c09 48 pc.putc(outbuf);
pkoirala3 4:f87a36946c09 49 outbuf = ' ';
pkoirala3 4:f87a36946c09 50 led2 = 0;
pkoirala3 4:f87a36946c09 51 }
pkoirala3 1:7d069ab3f551 52 }
pkoirala3 1:7d069ab3f551 53
pkoirala3 1:7d069ab3f551 54 void getcommand()
pkoirala3 1:7d069ab3f551 55 {
pkoirala3 1:7d069ab3f551 56 while(1) {
pkoirala3 1:7d069ab3f551 57 if(xbee.readable()) {
pkoirala3 1:7d069ab3f551 58 led1 = 1;
pkoirala3 1:7d069ab3f551 59 int x = 0;
pkoirala3 1:7d069ab3f551 60 while(xbee.readable()) {
pkoirala3 1:7d069ab3f551 61 buffer[x] = xbee.getc();
pkoirala3 1:7d069ab3f551 62 x++;
pkoirala3 1:7d069ab3f551 63 }
pkoirala3 1:7d069ab3f551 64 led1 = 0;
pkoirala3 4:f87a36946c09 65 bool statusmsg = true;
pkoirala3 4:f87a36946c09 66 // pc.printf(buffer);
pkoirala3 4:f87a36946c09 67 if(buffer[0] == 'p') {
pkoirala3 4:f87a36946c09 68 lcd.locate(0, 6);
pkoirala3 4:f87a36946c09 69 char msg[] = "Pic Taken,See Mbed";
pkoirala3 4:f87a36946c09 70 lcd.puts(msg);
pkoirala3 4:f87a36946c09 71 statusmsg = false;
pkoirala3 4:f87a36946c09 72 }
pkoirala3 4:f87a36946c09 73 else if (buffer[0] == 'i'){
pkoirala3 4:f87a36946c09 74 lcd.locate(0,6);
pkoirala3 4:f87a36946c09 75 char msg[] = "Intrusion Detected";
pkoirala3 4:f87a36946c09 76 lcd.puts(msg);
pkoirala3 4:f87a36946c09 77 lcd.media_init(); // initialize uSD card
pkoirala3 4:f87a36946c09 78 lcd.set_sector_address(0,0); // address of font file
pkoirala3 4:f87a36946c09 79 lcd.media_init();
pkoirala3 4:f87a36946c09 80 lcd.display_image(0,60);
pkoirala3 4:f87a36946c09 81 Thread::wait(4000);
pkoirala3 4:f87a36946c09 82 statusmsg = false;
pkoirala3 4:f87a36946c09 83 lcd.filled_rectangle(0, 48, 128, 128, BLACK);
pkoirala3 4:f87a36946c09 84 } else if(buffer[0] == 'u'){
pkoirala3 4:f87a36946c09 85 lcd.locate(0,6);
pkoirala3 4:f87a36946c09 86 char msg[] = "Door Unlocked";
pkoirala3 4:f87a36946c09 87 lcd.puts(msg);
pkoirala3 4:f87a36946c09 88 Thread::wait(4000);
pkoirala3 4:f87a36946c09 89 lcd.locate(0,6);
pkoirala3 4:f87a36946c09 90 for(int i = 0; i < 18; ++i){
pkoirala3 4:f87a36946c09 91 msg[i] = ' ';
pkoirala3 4:f87a36946c09 92 }
pkoirala3 4:f87a36946c09 93 lcd.puts(msg);
pkoirala3 4:f87a36946c09 94 statusmsg = false;
pkoirala3 4:f87a36946c09 95 }
pkoirala3 4:f87a36946c09 96 if(statusmsg == true) {
pkoirala3 4:f87a36946c09 97 const char s[2] = "|"; // s[2]
pkoirala3 4:f87a36946c09 98 char *token;
pkoirala3 4:f87a36946c09 99 token = strtok(buffer, s); // get the first token
pkoirala3 4:f87a36946c09 100 int j = 2;
pkoirala3 4:f87a36946c09 101 while( token != NULL ) { // walk through other tokens
pkoirala3 4:f87a36946c09 102 lcd.locate(11,j); // Print in correct place of LCD
pkoirala3 4:f87a36946c09 103 lcd.puts(token );
pkoirala3 4:f87a36946c09 104 token = strtok(NULL, s);
pkoirala3 4:f87a36946c09 105 j++;
pkoirala3 4:f87a36946c09 106 }
pkoirala3 1:7d069ab3f551 107 }
pkoirala3 1:7d069ab3f551 108 }
pkoirala3 1:7d069ab3f551 109 }
pkoirala3 1:7d069ab3f551 110 }
pkoirala3 1:7d069ab3f551 111
pkoirala3 0:9d604b1e5409 112 int main()
pkoirala3 0:9d604b1e5409 113 {
pkoirala3 0:9d604b1e5409 114 reset = 0;
pkoirala3 0:9d604b1e5409 115 wait_ms(1);
pkoirala3 0:9d604b1e5409 116 reset = 1;
pkoirala3 0:9d604b1e5409 117 wait_ms(1);
pkoirala3 4:f87a36946c09 118
pkoirala3 2:b549ccada3c3 119 getStatus.mode(PullDown);
pkoirala3 3:80ca319bd924 120 getStatus.attach_asserted( &statusRequest );
pkoirala3 4:f87a36946c09 121 getStatus.setSampleFrequency();
pkoirala3 4:f87a36946c09 122
pkoirala3 2:b549ccada3c3 123 toggleLight.mode(PullDown);
pkoirala3 3:80ca319bd924 124 toggleLight.attach_asserted( &flipLight );
pkoirala3 4:f87a36946c09 125 toggleLight.setSampleFrequency();
pkoirala3 3:80ca319bd924 126
pkoirala3 4:f87a36946c09 127 camPic.mode(PullDown);
pkoirala3 4:f87a36946c09 128 camPic.attach_asserted( &cameraTakePic );
pkoirala3 4:f87a36946c09 129 camPic.setSampleFrequency();
pkoirala3 4:f87a36946c09 130
pkoirala3 1:7d069ab3f551 131 lcd.cls();
pkoirala3 1:7d069ab3f551 132 lcd.locate(0,0);
pkoirala3 1:7d069ab3f551 133 lcd.line(0, 5, 128, 5, 0xFF0000);
pkoirala3 1:7d069ab3f551 134 lcd.printf("\r\nStatus:");
pkoirala3 1:7d069ab3f551 135 lcd.printf("\r\n");
pkoirala3 1:7d069ab3f551 136 lcd.printf("Temp degC:\r\n");
pkoirala3 1:7d069ab3f551 137 lcd.printf("Humidity %:\r\n");
pkoirala3 1:7d069ab3f551 138 lcd.printf("Lights: \r\n");
pkoirala3 1:7d069ab3f551 139 lcd.line(0, 45, 128, 45, 0xFF0000);
pkoirala3 1:7d069ab3f551 140 t1.start(getcommand);
pkoirala3 4:f87a36946c09 141 statusReq = true;
pkoirala3 1:7d069ab3f551 142
pkoirala3 1:7d069ab3f551 143 while(1) {
pkoirala3 1:7d069ab3f551 144 if (statusReq == true) {
pkoirala3 2:b549ccada3c3 145 sendcommand('s');
pkoirala3 2:b549ccada3c3 146 statusReq = false;
pkoirala3 1:7d069ab3f551 147 } else if (flipLed == true) {
pkoirala3 1:7d069ab3f551 148 sendcommand('l');
pkoirala3 2:b549ccada3c3 149 flipLed = false;
pkoirala3 4:f87a36946c09 150 } else if(cameraReq == true) {
pkoirala3 4:f87a36946c09 151 sendcommand('c');
pkoirala3 4:f87a36946c09 152 cameraReq = false;
pkoirala3 0:9d604b1e5409 153 }
pkoirala3 2:b549ccada3c3 154 Thread::wait(2000);
pkoirala3 0:9d604b1e5409 155 }
pkoirala3 4:f87a36946c09 156 }