Motion detection using PIR sensor would observe the motions detected near the field of sensor and alerts you with a message whenever there is a detection
main.cpp@0:0a3ec84d1493, 2017-12-13 (annotated)
- Committer:
- spriyanka
- Date:
- Wed Dec 13 20:30:20 2017 +0000
- Revision:
- 0:0a3ec84d1493
Detection
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
spriyanka | 0:0a3ec84d1493 | 1 | #include "mbed.h" |
spriyanka | 0:0a3ec84d1493 | 2 | #include "ESP8266.h" |
spriyanka | 0:0a3ec84d1493 | 3 | #include <string> |
spriyanka | 0:0a3ec84d1493 | 4 | #include <stdio.h> |
spriyanka | 0:0a3ec84d1493 | 5 | #define APIKEY 5ZVYJP19NQZJHIJM //Put "Write key" of your channel in thingspeak.com |
spriyanka | 0:0a3ec84d1493 | 6 | #define IP "184.106.153.149" // IP Address of "api.thingspeak.com\" |
spriyanka | 0:0a3ec84d1493 | 7 | #define WIFI_SSID "iphone" |
spriyanka | 0:0a3ec84d1493 | 8 | #define WIFI_PASS "priyanka2024" |
spriyanka | 0:0a3ec84d1493 | 9 | |
spriyanka | 0:0a3ec84d1493 | 10 | |
spriyanka | 0:0a3ec84d1493 | 11 | char snd[255],rcv[1000],snd_Data[255]; |
spriyanka | 0:0a3ec84d1493 | 12 | int cnt; |
spriyanka | 0:0a3ec84d1493 | 13 | |
spriyanka | 0:0a3ec84d1493 | 14 | |
spriyanka | 0:0a3ec84d1493 | 15 | ESP8266 esp(PTC17, PTC16, 115200); // baud rate for wifi |
spriyanka | 0:0a3ec84d1493 | 16 | Serial pc(USBTX, USBRX); |
spriyanka | 0:0a3ec84d1493 | 17 | |
spriyanka | 0:0a3ec84d1493 | 18 | InterruptIn motion(D2); |
spriyanka | 0:0a3ec84d1493 | 19 | int motion_detected = 0; |
spriyanka | 0:0a3ec84d1493 | 20 | void irq_handler(void) |
spriyanka | 0:0a3ec84d1493 | 21 | { |
spriyanka | 0:0a3ec84d1493 | 22 | motion_detected = 1; |
spriyanka | 0:0a3ec84d1493 | 23 | } |
spriyanka | 0:0a3ec84d1493 | 24 | void esp_initialize(void); |
spriyanka | 0:0a3ec84d1493 | 25 | void esp_send(void); |
spriyanka | 0:0a3ec84d1493 | 26 | |
spriyanka | 0:0a3ec84d1493 | 27 | int main(void) |
spriyanka | 0:0a3ec84d1493 | 28 | { |
spriyanka | 0:0a3ec84d1493 | 29 | pc.baud(115200); |
spriyanka | 0:0a3ec84d1493 | 30 | esp_initialize(); |
spriyanka | 0:0a3ec84d1493 | 31 | |
spriyanka | 0:0a3ec84d1493 | 32 | cnt = 0; |
spriyanka | 0:0a3ec84d1493 | 33 | motion.rise(&irq_handler); |
spriyanka | 0:0a3ec84d1493 | 34 | while(1) |
spriyanka | 0:0a3ec84d1493 | 35 | { |
spriyanka | 0:0a3ec84d1493 | 36 | if(motion_detected) |
spriyanka | 0:0a3ec84d1493 | 37 | { |
spriyanka | 0:0a3ec84d1493 | 38 | cnt++; |
spriyanka | 0:0a3ec84d1493 | 39 | motion_detected = 0; |
spriyanka | 0:0a3ec84d1493 | 40 | printf("Hello! I've detected %d times since reset\n", cnt); |
spriyanka | 0:0a3ec84d1493 | 41 | printf("Now uploading status to cloud\n\r"); |
spriyanka | 0:0a3ec84d1493 | 42 | |
spriyanka | 0:0a3ec84d1493 | 43 | |
spriyanka | 0:0a3ec84d1493 | 44 | esp_send(); |
spriyanka | 0:0a3ec84d1493 | 45 | } |
spriyanka | 0:0a3ec84d1493 | 46 | } |
spriyanka | 0:0a3ec84d1493 | 47 | } |
spriyanka | 0:0a3ec84d1493 | 48 | |
spriyanka | 0:0a3ec84d1493 | 49 | void esp_initialize(void) |
spriyanka | 0:0a3ec84d1493 | 50 | { |
spriyanka | 0:0a3ec84d1493 | 51 | //AT+CWJAP="priyanka2024","iPhone" ; |
spriyanka | 0:0a3ec84d1493 | 52 | |
spriyanka | 0:0a3ec84d1493 | 53 | pc.printf("Initializing ESP\r\n"); |
spriyanka | 0:0a3ec84d1493 | 54 | pc.printf("Reset ESP\r\n"); |
spriyanka | 0:0a3ec84d1493 | 55 | esp.Reset(); //RESET ESP |
spriyanka | 0:0a3ec84d1493 | 56 | esp.RcvReply(rcv, 400); //receive a response from ESP |
spriyanka | 0:0a3ec84d1493 | 57 | wait(2); |
spriyanka | 0:0a3ec84d1493 | 58 | |
spriyanka | 0:0a3ec84d1493 | 59 | strcpy(snd,"AT"); |
spriyanka | 0:0a3ec84d1493 | 60 | esp.SendCMD(snd); |
spriyanka | 0:0a3ec84d1493 | 61 | pc.printf(snd); |
spriyanka | 0:0a3ec84d1493 | 62 | esp.RcvReply(rcv, 400); |
spriyanka | 0:0a3ec84d1493 | 63 | pc.printf(rcv); |
spriyanka | 0:0a3ec84d1493 | 64 | wait(2); |
spriyanka | 0:0a3ec84d1493 | 65 | |
spriyanka | 0:0a3ec84d1493 | 66 | strcpy(snd,"AT+CWMODE=1"); |
spriyanka | 0:0a3ec84d1493 | 67 | esp.SendCMD(snd); |
spriyanka | 0:0a3ec84d1493 | 68 | pc.printf(snd); |
spriyanka | 0:0a3ec84d1493 | 69 | wait(2); |
spriyanka | 0:0a3ec84d1493 | 70 | |
spriyanka | 0:0a3ec84d1493 | 71 | strcpy(snd,"AT+CWJAP=\""); |
spriyanka | 0:0a3ec84d1493 | 72 | strcat(snd,WIFI_SSID); |
spriyanka | 0:0a3ec84d1493 | 73 | strcat(snd,"\",\""); |
spriyanka | 0:0a3ec84d1493 | 74 | strcat(snd,WIFI_PASS); |
spriyanka | 0:0a3ec84d1493 | 75 | strcat(snd,"\""); |
spriyanka | 0:0a3ec84d1493 | 76 | |
spriyanka | 0:0a3ec84d1493 | 77 | esp.SendCMD(snd); |
spriyanka | 0:0a3ec84d1493 | 78 | pc.printf(snd); |
spriyanka | 0:0a3ec84d1493 | 79 | wait(5); |
spriyanka | 0:0a3ec84d1493 | 80 | esp.RcvReply(rcv, 400); |
spriyanka | 0:0a3ec84d1493 | 81 | pc.printf("\n %s \n", rcv); |
spriyanka | 0:0a3ec84d1493 | 82 | |
spriyanka | 0:0a3ec84d1493 | 83 | strcpy(snd,"AT+CIPMUX=1"); |
spriyanka | 0:0a3ec84d1493 | 84 | esp.SendCMD(snd); |
spriyanka | 0:0a3ec84d1493 | 85 | pc.printf(snd); |
spriyanka | 0:0a3ec84d1493 | 86 | esp.RcvReply(rcv, 400); |
spriyanka | 0:0a3ec84d1493 | 87 | pc.printf("\n %s \n", rcv); |
spriyanka | 0:0a3ec84d1493 | 88 | } |
spriyanka | 0:0a3ec84d1493 | 89 | |
spriyanka | 0:0a3ec84d1493 | 90 | void esp_send(void) |
spriyanka | 0:0a3ec84d1493 | 91 | { |
spriyanka | 0:0a3ec84d1493 | 92 | //ESP updates the Status of Thingspeak channel// |
spriyanka | 0:0a3ec84d1493 | 93 | |
spriyanka | 0:0a3ec84d1493 | 94 | strcpy(snd,"AT+CIPSTART="); |
spriyanka | 0:0a3ec84d1493 | 95 | strcat(snd,"\"TCP\",\""); |
spriyanka | 0:0a3ec84d1493 | 96 | strcat(snd,IP); |
spriyanka | 0:0a3ec84d1493 | 97 | strcat(snd,"\",80"); |
spriyanka | 0:0a3ec84d1493 | 98 | |
spriyanka | 0:0a3ec84d1493 | 99 | esp.SendCMD(snd); |
spriyanka | 0:0a3ec84d1493 | 100 | pc.printf("Send\r\n%s",snd); |
spriyanka | 0:0a3ec84d1493 | 101 | esp.RcvReply(rcv, 1000); |
spriyanka | 0:0a3ec84d1493 | 102 | pc.printf("Receive\r\n%s",rcv); |
spriyanka | 0:0a3ec84d1493 | 103 | wait(2); |
spriyanka | 0:0a3ec84d1493 | 104 | |
spriyanka | 0:0a3ec84d1493 | 105 | |
spriyanka | 0:0a3ec84d1493 | 106 | pc.printf("Sending this information to thingspeak.com \r\n"); |
spriyanka | 0:0a3ec84d1493 | 107 | sprintf(snd,"GET https://api.thingspeak.com/update?api_key=5ZVYJP19NQZJHIJM&field1=%d\r\n", cnt); |
spriyanka | 0:0a3ec84d1493 | 108 | //wait(5); |
spriyanka | 0:0a3ec84d1493 | 109 | //https://api.thingspeak.com/update?api_key=5ZVYJP19NQZJHIJM&field1=%d\r\n", cnt |
spriyanka | 0:0a3ec84d1493 | 110 | |
spriyanka | 0:0a3ec84d1493 | 111 | int i=0; |
spriyanka | 0:0a3ec84d1493 | 112 | for(i=0; snd[i]!='\0'; i++); |
spriyanka | 0:0a3ec84d1493 | 113 | i++; |
spriyanka | 0:0a3ec84d1493 | 114 | char cmd[255]; |
spriyanka | 0:0a3ec84d1493 | 115 | |
spriyanka | 0:0a3ec84d1493 | 116 | sprintf(cmd,"AT+CIPSEND=%d",i); //Send Number of open connection and Characters to send |
spriyanka | 0:0a3ec84d1493 | 117 | esp.SendCMD(cmd); |
spriyanka | 0:0a3ec84d1493 | 118 | pc.printf("Send\r\n%s",cmd); |
spriyanka | 0:0a3ec84d1493 | 119 | while(i<=20 || rcv == ">") |
spriyanka | 0:0a3ec84d1493 | 120 | { |
spriyanka | 0:0a3ec84d1493 | 121 | esp.RcvReply(rcv, 1000); |
spriyanka | 0:0a3ec84d1493 | 122 | wait(100); |
spriyanka | 0:0a3ec84d1493 | 123 | i++; |
spriyanka | 0:0a3ec84d1493 | 124 | } |
spriyanka | 0:0a3ec84d1493 | 125 | pc.printf("Receive\r\n%s",rcv); |
spriyanka | 0:0a3ec84d1493 | 126 | |
spriyanka | 0:0a3ec84d1493 | 127 | esp.SendCMD(snd); //Post value to thingspeak channel |
spriyanka | 0:0a3ec84d1493 | 128 | pc.printf("Send\r\n%s",snd); |
spriyanka | 0:0a3ec84d1493 | 129 | |
spriyanka | 0:0a3ec84d1493 | 130 | while(i<=20 || rcv == "OK") |
spriyanka | 0:0a3ec84d1493 | 131 | { |
spriyanka | 0:0a3ec84d1493 | 132 | esp.RcvReply(rcv, 1000); |
spriyanka | 0:0a3ec84d1493 | 133 | wait(100); |
spriyanka | 0:0a3ec84d1493 | 134 | i++; |
spriyanka | 0:0a3ec84d1493 | 135 | } |
spriyanka | 0:0a3ec84d1493 | 136 | pc.printf("Receive\r\n%s",rcv); |
spriyanka | 0:0a3ec84d1493 | 137 | |
spriyanka | 0:0a3ec84d1493 | 138 | } |
spriyanka | 0:0a3ec84d1493 | 139 | |
spriyanka | 0:0a3ec84d1493 | 140 | |
spriyanka | 0:0a3ec84d1493 | 141 | |
spriyanka | 0:0a3ec84d1493 | 142 | |
spriyanka | 0:0a3ec84d1493 | 143 |