PIR Motion Alarm system + ESP8266 WiFi module was implemented using FRDM-k64f. PIR sensor will detect motion around its environment and then will send update information to Thingspeak.com website through wifi connection. The main components used in this project: Parallax PIR sensor, LED, ESP8266 WiFi module, 3.0 to 28VDC Voltage range Piezo buzzer.
main.cpp@0:bab4cf7cdda8, 2015-05-14 (annotated)
- Committer:
- mokhanaf
- Date:
- Thu May 14 17:09:07 2015 +0000
- Revision:
- 0:bab4cf7cdda8
Pir+Wifi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mokhanaf | 0:bab4cf7cdda8 | 1 | |
mokhanaf | 0:bab4cf7cdda8 | 2 | // PIR Motion Sensor Alarm + ESP8622 WiFi Module + FRDM-k64f |
mokhanaf | 0:bab4cf7cdda8 | 3 | //PIR sensor can detect change on its surrounding by measuring the change of infra red |
mokhanaf | 0:bab4cf7cdda8 | 4 | // Then will send high=1 to the FRDM-k64f to flash the LED, Run the Buzzer, |
mokhanaf | 0:bab4cf7cdda8 | 5 | //Send information through UART serial Port to Tera Term and display how many motion been |
mokhanaf | 0:bab4cf7cdda8 | 6 | //detected,also will send information to Thingspeak IoT website using WiFi connection |
mokhanaf | 0:bab4cf7cdda8 | 7 | |
mokhanaf | 0:bab4cf7cdda8 | 8 | |
mokhanaf | 0:bab4cf7cdda8 | 9 | |
mokhanaf | 0:bab4cf7cdda8 | 10 | #include "mbed.h" |
mokhanaf | 0:bab4cf7cdda8 | 11 | #include "ESP8266.h" |
mokhanaf | 0:bab4cf7cdda8 | 12 | #define APIKEY 7X2TD78DKY4459M0 |
mokhanaf | 0:bab4cf7cdda8 | 13 | |
mokhanaf | 0:bab4cf7cdda8 | 14 | Serial pc(USBTX,USBRX); |
mokhanaf | 0:bab4cf7cdda8 | 15 | DigitalOut Buzzer(D10); // output |
mokhanaf | 0:bab4cf7cdda8 | 16 | PwmOut LED(D13); // flashing the led |
mokhanaf | 0:bab4cf7cdda8 | 17 | DigitalIn inputPin(D2); // pir senor input |
mokhanaf | 0:bab4cf7cdda8 | 18 | DigitalOut redled(LED1); |
mokhanaf | 0:bab4cf7cdda8 | 19 | ESP8266 wifi(PTC17, PTC16, 115200); // baud rate for wifi |
mokhanaf | 0:bab4cf7cdda8 | 20 | char snd[255],rcv[1000]; |
mokhanaf | 0:bab4cf7cdda8 | 21 | |
mokhanaf | 0:bab4cf7cdda8 | 22 | #define IP "184.106.153.149" // thingspeak.com IP Address |
mokhanaf | 0:bab4cf7cdda8 | 23 | |
mokhanaf | 0:bab4cf7cdda8 | 24 | int val = 0; // value to holed the high/low info from pir from pin D2 |
mokhanaf | 0:bab4cf7cdda8 | 25 | int cnt = 0; // counter for motion |
mokhanaf | 0:bab4cf7cdda8 | 26 | //String thingtweetAPIKey = "TTEVLP931ODJ5GMT"; |
mokhanaf | 0:bab4cf7cdda8 | 27 | |
mokhanaf | 0:bab4cf7cdda8 | 28 | /************ WiFi INTIALIZATION *********/ |
mokhanaf | 0:bab4cf7cdda8 | 29 | |
mokhanaf | 0:bab4cf7cdda8 | 30 | void wifi_initialize(void); |
mokhanaf | 0:bab4cf7cdda8 | 31 | void wifi_send(void); |
mokhanaf | 0:bab4cf7cdda8 | 32 | |
mokhanaf | 0:bab4cf7cdda8 | 33 | int main () { |
mokhanaf | 0:bab4cf7cdda8 | 34 | |
mokhanaf | 0:bab4cf7cdda8 | 35 | pc.baud(115200); |
mokhanaf | 0:bab4cf7cdda8 | 36 | pc.printf("SET mode to AP\r\n"); |
mokhanaf | 0:bab4cf7cdda8 | 37 | wifi.SetMode(1); // set ESP mode to 1 |
mokhanaf | 0:bab4cf7cdda8 | 38 | wifi.RcvReply(rcv, 1000); //receive a response from ESP |
mokhanaf | 0:bab4cf7cdda8 | 39 | pc.printf("%s",rcv); //Print the response onscreen |
mokhanaf | 0:bab4cf7cdda8 | 40 | pc.printf("Conneting to AP\r\n"); |
mokhanaf | 0:bab4cf7cdda8 | 41 | wifi.Join("Network", "Password"); // Your wifi username & Password |
mokhanaf | 0:bab4cf7cdda8 | 42 | wifi.RcvReply(rcv, 1000); //receive a response from ESP |
mokhanaf | 0:bab4cf7cdda8 | 43 | pc.printf("%s", rcv); //Print the response onscreen |
mokhanaf | 0:bab4cf7cdda8 | 44 | wait(8); //waits for response from ESP |
mokhanaf | 0:bab4cf7cdda8 | 45 | pc.printf("Getting IP\r\n"); //get IP addresss from the connected AP |
mokhanaf | 0:bab4cf7cdda8 | 46 | wifi.GetIP(rcv); //receive an IP address from the AP |
mokhanaf | 0:bab4cf7cdda8 | 47 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 48 | |
mokhanaf | 0:bab4cf7cdda8 | 49 | |
mokhanaf | 0:bab4cf7cdda8 | 50 | wait(5); // Delay 5 sec to give the pir time to get snapshut of the surrounding |
mokhanaf | 0:bab4cf7cdda8 | 51 | |
mokhanaf | 0:bab4cf7cdda8 | 52 | pc.printf("Initializing WiFi\r\n"); |
mokhanaf | 0:bab4cf7cdda8 | 53 | //wifi_initialize(); |
mokhanaf | 0:bab4cf7cdda8 | 54 | while (1) { |
mokhanaf | 0:bab4cf7cdda8 | 55 | |
mokhanaf | 0:bab4cf7cdda8 | 56 | val = inputPin.read(); |
mokhanaf | 0:bab4cf7cdda8 | 57 | |
mokhanaf | 0:bab4cf7cdda8 | 58 | if (val==0) { |
mokhanaf | 0:bab4cf7cdda8 | 59 | cnt++; |
mokhanaf | 0:bab4cf7cdda8 | 60 | pc.printf(" The Sensor is ON And I Detected = %i Till NOW\r\n",cnt); |
mokhanaf | 0:bab4cf7cdda8 | 61 | pc.printf("PLEASE STAY AWAY\r\n"); |
mokhanaf | 0:bab4cf7cdda8 | 62 | pc.printf("Sending WiFi information"); |
mokhanaf | 0:bab4cf7cdda8 | 63 | wifi_send(); |
mokhanaf | 0:bab4cf7cdda8 | 64 | redled=1; // when the motion detected turn of the on board red led |
mokhanaf | 0:bab4cf7cdda8 | 65 | LED.period(2.0f); // 2 seconds period |
mokhanaf | 0:bab4cf7cdda8 | 66 | wait(2.0f); |
mokhanaf | 0:bab4cf7cdda8 | 67 | LED.pulsewidth(.02); // 2 mseconds pulse (on) |
mokhanaf | 0:bab4cf7cdda8 | 68 | redled=1; |
mokhanaf | 0:bab4cf7cdda8 | 69 | Buzzer = 1; |
mokhanaf | 0:bab4cf7cdda8 | 70 | wait(1.5f); |
mokhanaf | 0:bab4cf7cdda8 | 71 | } |
mokhanaf | 0:bab4cf7cdda8 | 72 | else { |
mokhanaf | 0:bab4cf7cdda8 | 73 | |
mokhanaf | 0:bab4cf7cdda8 | 74 | pc.printf(" The Sensor is OFF \r\n"); |
mokhanaf | 0:bab4cf7cdda8 | 75 | LED = 0; |
mokhanaf | 0:bab4cf7cdda8 | 76 | Buzzer =0; |
mokhanaf | 0:bab4cf7cdda8 | 77 | redled=0; // turn the on board red led on |
mokhanaf | 0:bab4cf7cdda8 | 78 | wait(1.5f); |
mokhanaf | 0:bab4cf7cdda8 | 79 | } |
mokhanaf | 0:bab4cf7cdda8 | 80 | } |
mokhanaf | 0:bab4cf7cdda8 | 81 | } |
mokhanaf | 0:bab4cf7cdda8 | 82 | |
mokhanaf | 0:bab4cf7cdda8 | 83 | void wifi_send(void){ |
mokhanaf | 0:bab4cf7cdda8 | 84 | |
mokhanaf | 0:bab4cf7cdda8 | 85 | //WIFI updates the Status to Thingspeak servers// |
mokhanaf | 0:bab4cf7cdda8 | 86 | strcpy(snd,"AT+CIPMUX=1");//Setting WiFi into MultiChannel mode |
mokhanaf | 0:bab4cf7cdda8 | 87 | wifi.SendCMD(snd); |
mokhanaf | 0:bab4cf7cdda8 | 88 | pc.printf(snd); |
mokhanaf | 0:bab4cf7cdda8 | 89 | wait(2.0); |
mokhanaf | 0:bab4cf7cdda8 | 90 | wifi.RcvReply(rcv, 1000); |
mokhanaf | 0:bab4cf7cdda8 | 91 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 92 | wait(2); |
mokhanaf | 0:bab4cf7cdda8 | 93 | sprintf(snd,"AT+CIPSTART=4,\"TCP\",\"%s\",80",IP); //Initiate connection with THINGSPEAK server |
mokhanaf | 0:bab4cf7cdda8 | 94 | pc.printf(snd); |
mokhanaf | 0:bab4cf7cdda8 | 95 | wait(3.0); |
mokhanaf | 0:bab4cf7cdda8 | 96 | wifi.RcvReply(rcv, 1000); |
mokhanaf | 0:bab4cf7cdda8 | 97 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 98 | wait(2); |
mokhanaf | 0:bab4cf7cdda8 | 99 | strcpy(snd,"AT+CIPSEND=4,47"); //Send Number of open connections,Characters to send |
mokhanaf | 0:bab4cf7cdda8 | 100 | wifi.SendCMD(snd); |
mokhanaf | 0:bab4cf7cdda8 | 101 | pc.printf(snd); |
mokhanaf | 0:bab4cf7cdda8 | 102 | wait(2.0); |
mokhanaf | 0:bab4cf7cdda8 | 103 | wifi.RcvReply(rcv, 1000); |
mokhanaf | 0:bab4cf7cdda8 | 104 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 105 | wait(2); |
mokhanaf | 0:bab4cf7cdda8 | 106 | sprintf(snd,"GET /update?key=7X2TD78DKY4459M0&field1=%2.2f\r\n",1.0); //Post values to thingspeak |
mokhanaf | 0:bab4cf7cdda8 | 107 | pc.printf("%s",snd); |
mokhanaf | 0:bab4cf7cdda8 | 108 | wifi.SendCMD(snd); |
mokhanaf | 0:bab4cf7cdda8 | 109 | wait(3.0f); |
mokhanaf | 0:bab4cf7cdda8 | 110 | wifi.RcvReply(rcv, 1000); |
mokhanaf | 0:bab4cf7cdda8 | 111 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 112 | wifi.SendCMD("AT+CIPCLOSE"); //Close the connection to server |
mokhanaf | 0:bab4cf7cdda8 | 113 | wifi.RcvReply(rcv, 1000); |
mokhanaf | 0:bab4cf7cdda8 | 114 | pc.printf("%s", rcv); |
mokhanaf | 0:bab4cf7cdda8 | 115 | } |
mokhanaf | 0:bab4cf7cdda8 | 116 |