ECE533 project
Dependencies: EthernetInterface M2XStreamClient MODSERIAL jsonlite mbed-rtos mbed
main.cpp
- Committer:
- dallas1287
- Date:
- 2017-12-08
- Revision:
- 0:7d95a161fefc
File content as of revision 0:7d95a161fefc:
#include "mbed.h" #include "EthernetInterface.h" #include "M2XStreamClient.h" #include "MODSERIAL.h" //function declaration void TimerRead(void); void MotionSense(void); void motiontrigger(void); void ledbounce(void); void RxRead(void); void motionTimeOut(void); void streamData(void); void SecurityCam(void); void SecurityEnable(void); //bluetooth variables bool btflag = false; char received[256] = {""}; int i = 0; //led variables int led_total = 0; int led_session = 0; bool ledtimerflag = false; DigitalOut led(LED_RED); //fan variables int fan_total = 0; int fan_session = 0; bool fantimerflag = false; PwmOut fan(D3); //Motion Sensor Variables InterruptIn motionsensor(D2); DigitalOut motionsensorpwr(D1, 0); //Motion Sensor Timeout Timeout motionTimeout; //Timers Initialization Timer ledtimer; Timer fantimer; // Initialize Serial port Serial pc(USBTX, USBRX); //bluetooth module declaration MODSERIAL HC05(PTC15, PTC14); //security camera DigitalOut securitycam(D5, 0); bool securityflag = false; int ret; // Set Sensor Stream details char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to char streamtime[] = "Time"; // Stream you want to push to char streamfan[] = "Fan_Time"; char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key // Initialize the M2X client Client client; M2XStreamClient m2xClient(&client, m2xKey); Ticker streamticker; void rxinterrupt(MODSERIAL_IRQ_INFO *q) { btflag = true; return; } int main() { motionsensor.disable_irq(); // Intialize Ethernet connection EthernetInterface eth; eth.init(); eth.connect(); printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress()); //initialize bluetooth HC05.baud(9600); //attach interrupts HC05.attach(&rxinterrupt, MODSERIAL::RxIrq); motionsensor.rise(&motiontrigger); //streamticker.attach(&streamData,1.0); led.write(1); //led initialized to off pc.printf("Program Begins."); while (1) { RxRead(); streamData(); wait_ms(100); } } void streamData() { ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total); pc.printf("send() returned %d\r\n", ret); ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total); pc.printf("send() returned %d\r\n", ret); } void RxRead(void) { if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#') { HC05.move(received, 256); pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]); wait_ms(5); if(received[0] == 'L') { if(received[2] == 'N') { led = 0; // toggle led ledtimerflag = true; } else if(received[2] == 'F') { led = 1; ledtimerflag = false; } } else if (received[0] == 'F') { if(received[3] == 'H') { fan.write(0.99); fantimerflag = true; } else if(received[3] == 'L') { fan.write(0.6); if(!fantimerflag) fantimerflag = true; } else if(received[3] == 'O') { fan.write(0.0); fantimerflag = false; } } else if(received[0] == 'M') { if(received[1] == 'R') { motionsensor.disable_irq(); } else if(received[1] == 'E') { led = 1; //led off fan.write(0.0); //fan off MotionSense(); } else if(received[1] == 'S') { securityflag = true; SecurityEnable(); } } btflag = false; if(fantimerflag) { fantimer.start(); } else { fantimer.stop(); fan_session = fantimer.read(); //reads the session time fan_total += fan_session; // accumulates to total time fantimer.reset(); } if(ledtimerflag) { ledtimer.start(); } else { ledtimer.stop(); led_session = ledtimer.read(); //reads the session time led_total += led_session; // accumulates to total time ledtimer.reset(); } } } void TimerRead() { pc.printf("LED Session Time: %d", led_session); pc.printf("\r\nTotal LED Time: %d\r\n", led_total); pc.printf("Fan Session Time: %d", fan_session); pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total); } void MotionSense() { HC05.puts("Motion Sensor Initializing..."); ledbounce(); HC05.puts("Enabled."); motionsensor.enable_irq(); } void SecurityEnable() { HC05.puts("Security Initializing..."); ledbounce(); HC05.puts("Enabled."); motionsensor.enable_irq(); } void SecurityCam() { securitycam = 1; wait_ms(50); securitycam = 0; } void motiontrigger() { led = 0; //security mode sends pulse to start python script if(securityflag) { SecurityCam(); securityflag = false; //resets flag } else motionTimeout.attach(&motionTimeOut,10.0); } void motionTimeOut() { led = 1; //led off; } void ledbounce() { for( int i = 0; i < 20; i++) { led = led ^1; wait_ms(100); } led = 1; } /*#include "mbed.h" #include "EthernetInterface.h" #include "M2XStreamClient.h" #include "MODSERIAL.h" //function declaration void TimerRead(void); void MotionSense(void); void motiontrigger(void); void ledbounce(void); void RxRead(void); void motionTimeOut(void); void streamData(void); void SecurityCam(void); void SecurityEnable(void); //bluetooth variables bool btflag = false; char received[256] = {""}; int i = 0; //led variables int led_total = 0; int led_session = 0; bool ledtimerflag = false; DigitalOut led(LED_RED); //fan variables int fan_total = 0; int fan_session = 0; bool fantimerflag = false; PwmOut fan(D3); //Motion Sensor Variables InterruptIn motionsensor(D2); DigitalOut motionsensorpwr(D1, 0); //Motion Sensor Timeout Timeout motionTimeout; //Timers Initialization Timer ledtimer; Timer fantimer; // Initialize Serial port Serial pc(USBTX, USBRX); //bluetooth module declaration MODSERIAL HC05(PTC15, PTC14); //security camera //DigitalOut securitycam(D5, 0); bool securityflag = false; int ret; // Set Sensor Stream details char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to char streamtime[] = "Time"; // Stream you want to push to char streamfan[] = "Fan_Time"; char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key // Initialize the M2X client Client client; M2XStreamClient m2xClient(&client, m2xKey); Ticker streamticker; void rxinterrupt(MODSERIAL_IRQ_INFO *q) { btflag = true; return; } int main() { motionsensor.disable_irq(); // Intialize Ethernet connection EthernetInterface eth; eth.init(); eth.connect(); printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress()); //initialize bluetooth HC05.baud(9600); //attach interrupts HC05.attach(&rxinterrupt, MODSERIAL::RxIrq); motionsensor.rise(&motiontrigger); //streamticker.attach(&streamData,1.0); led.write(1); //led initialized to off pc.printf("Program Begins."); while (1) { RxRead(); streamData(); wait_ms(100); } } void streamData() { ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total); pc.printf("send() returned %d\r\n", ret); ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total); pc.printf("send() returned %d\r\n", ret); } void RxRead(void) { if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#') { HC05.move(received, 256); pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]); wait_ms(5); if(received[0] == 'L') { if(received[2] == 'N') { led = 0; // toggle led ledtimerflag = true; } else if(received[2] == 'F') { led = 1; ledtimerflag = false; } } else if (received[0] == 'F') { if(received[3] == 'H') { fan.write(0.99); fantimerflag = true; } else if(received[3] == 'L') { fan.write(0.6); if(!fantimerflag) fantimerflag = true; } else if(received[3] == 'O') { fan.write(0.0); fantimerflag = false; } } else if(received[0] == 'M') { if(received[1] == 'R') { motionsensor.disable_irq(); } else if(received[1] == 'E') { led = 1; //led off fan.write(0.0); //fan off MotionSense(); } } btflag = false; if(fantimerflag) { fantimer.start(); } else { fantimer.stop(); fan_session = fantimer.read(); //reads the session time fan_total += fan_session; // accumulates to total time fantimer.reset(); } if(ledtimerflag) { ledtimer.start(); } else { ledtimer.stop(); led_session = ledtimer.read(); //reads the session time led_total += led_session; // accumulates to total time ledtimer.reset(); } } } void TimerRead() { pc.printf("LED Session Time: %d", led_session); pc.printf("\r\nTotal LED Time: %d\r\n", led_total); pc.printf("Fan Session Time: %d", fan_session); pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total); } void MotionSense() { HC05.puts("Motion Sensor Initializing..."); ledbounce(); HC05.puts("Enabled."); motionsensor.enable_irq(); } void motiontrigger() { led = 0; motionTimeout.attach(&motionTimeOut,10.0); } void motionTimeOut() { led = 1; //led off; } void ledbounce() { for( int i = 0; i < 20; i++) { led = led ^1; wait_ms(100); } led = 1; }*/