Initial revision

Dependencies:   HTTPClient PWM_Tone_Library PinDetect_KL25Z Queue cc3000_hostdriver_mbedsocket mbed

Files at this revision

API Documentation at this revision

Comitter:
ahsueh
Date:
Mon Nov 09 06:00:22 2015 +0000
Commit message:
Working Alarm -> wifi -> website update

Changed in this revision

HTTPClient.lib Show annotated file Show diff for this revision Revisions of this file
PWM_Tone_Library.lib Show annotated file Show diff for this revision Revisions of this file
PinDetect_KL25Z.lib Show annotated file Show diff for this revision Revisions of this file
Queue.lib Show annotated file Show diff for this revision Revisions of this file
cc3000_hostdriver_mbedsocket.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTTPClient.lib	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/nebgnahz/code/HTTPClient/#25e3d3516a03
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PWM_Tone_Library.lib	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/justinkim/code/PWM_Tone_Library/#d06af372d384
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PinDetect_KL25Z.lib	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/bjo3rn/code/PinDetect_KL25Z/#4f11ae3737c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Queue.lib	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/wbasser/code/Queue/#a03810d46457
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cc3000_hostdriver_mbedsocket.lib	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/#192e2fde71e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,363 @@
+/**
+ *  \brief CS294-84 demo \author Ben Zhang, Antonio Iannopollo
+ *
+ * This sampel code illustrates how to connect the mbed KL25Z platform to internet
+ * thorugh the CC3000 wifi breakout board (http://www.adafruit.com/product/1469).
+ * Connections between the KL25Z and the CC3000 are made according to the
+ * guide at https://learn.adafruit.com/adafruit-cc3000-wifi -- KL25Z and arduino
+ * UNO are pin to pin compatible --
+ *
+ * This application uses the following libraries:
+ * - cc3000_hostdriver_mbedsocket
+ *   (http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/)
+ * - HTTPClient (http://developer.mbed.org/users/donatien/code/HTTPClient/)
+ */
+
+#include "mbed.h"
+#include "cc3000.h"
+#include "HTTPClient.h"
+#include "PinDetect.h"
+#include "pwm_tone.h"
+
+// KL25Z wifi connection
+// we need to define connection pins for:
+// - IRQ      => (pin D3)
+// - Enable   => (pin D5)
+// - SPI CS   => (pin D10)
+// - SPI MOSI => (pin D11)
+// - SPI MISO => (pin D12)
+// - SPI CLK  => (pin D13)
+// plus wifi network SSID, password, security level and smart-configuration flag.
+mbed_cc3000::cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13),
+                         "CalVisitor", "", NONE, false);
+
+// create an http instance
+HTTPClient http;
+
+// str is used to hold the response data
+char str[512];
+char url[128];
+char in[512];
+char out[512];
+
+
+// setup the serial connection, and LEDs
+Serial pc(USBTX, USBRX);
+DigitalOut led_red(LED_RED);
+DigitalOut led_green(LED_GREEN);
+
+PinDetect p1(D4);
+PinDetect p2(D6);
+PinDetect p3(D7);
+PinDetect reed(D8);
+PwmOut Buzzer(D9);
+
+int code[] = {0, 0, 0, 0};
+int passwordcounter = 0;
+bool codeEntered = false;
+bool reedIsOpen = false;
+bool alarmOn = false;
+bool boxOpenLegal = false;
+int password[] = {3, 3, 1, 2};
+float C_3 = 1000000/Do3,
+      Cs_3 = 1000000/Do3s,
+      D_3 = 1000000/Re3,
+      Ds_3 = 1000000/Re3s,
+      E_3 = 1000000/Mi3,
+      F_3 = 1000000/Fa3,
+      Fs_3 = 1000000/Fa3s,
+      G_3 = 1000000/So3,
+      Gs_3 = 1000000/So3s,
+      A_3 = 1000000/La3,
+      As_3 = 1000000/La3s,
+      B_3 = 1000000/Ti3,
+      C_4 = 1000000/Do4,
+      Cs_4 = 1000000/Do4s,
+      D_4 = 1000000/Re4,
+      Ds_4 = 1000000/Re4s,
+      E_4 = 1000000/Mi4,
+      F_4 = 1000000/Fa4,
+      Fs_4 = 1000000/Fa4s,
+      G_4 = 1000000/So4,
+      Gs_4 = 1000000/So4s,
+      A_4 = 1000000/La4,
+      As_4 = 1000000/La4s,
+      B_4 = 1000000/Ti4,
+      C_5 = 1000000/Do5,
+      Cs_5 = 1000000/Do5s,
+      D_5 = 1000000/Re5,
+      Ds_5 = 1000000/Re5s,
+      E_5 = 1000000/Mi5,
+      F_5 = 1000000/Fa5,
+      Fs_5 = 1000000/Fa5s,
+      G_5 = 1000000/So5,
+      Gs_5 = 1000000/So5s,
+      A_5 = 1000000/La5,
+      As_5 = 1000000/La5s,
+      B_5 = 1000000/Ti5;
+
+int tones[] = {E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, D_4, 0, E_4, G_4, G_4, 0,
+               E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, E_4, D_4, C_4, 0, 0, 0
+              };
+int tones_num = 32;
+
+//Queue buttonQ(4,4);
+
+void key1Pressed( void )
+{
+    //pc.printf("Key Pressed\n");
+    int i = 1;
+    code[passwordcounter] = i;
+    passwordcounter++;
+    //buttonQ.Put(&i);
+}
+
+void key1Released( void )
+{
+    //pc.printf("Key Released\n");
+}
+
+void key1PressedHeld( void )
+{
+    //pc.printf("Key Pressed Held\n");
+}
+
+void key2Pressed( void )
+{
+    //pc.printf("Key Pressed\n");
+    int i = 2;
+    code[passwordcounter] = i;
+    passwordcounter++;
+    //buttonQ.Put(&i);
+
+}
+
+void key2Released( void )
+{
+    //pc.printf("Key Released\n");
+}
+
+void key2PressedHeld( void)
+{
+    //pc.printf("Key Pressed Held\n");
+}
+
+void key3Pressed( void )
+{
+    //pc.printf("Key Pressed\n");
+    int i = 3;
+    code[passwordcounter] = i;
+    passwordcounter++;
+    //buttonQ.Put(&i);
+
+}
+
+void key3Released( void )
+{
+    //pc.printf("Key Released\n");
+}
+
+void key3PressedHeld( void )
+{
+    //pc.printf("Key Pressed Held\n");
+}
+
+void reedOpen( void )
+{
+    pc.printf("Reed Open\n");
+    reedIsOpen = 1;
+
+}
+
+void reedClosed( void )
+{
+    pc.printf("Reed Closed\n");
+    reedIsOpen = 0;
+}
+
+void reedOpenHeld( void )
+{
+    //pc.printf("Key Pressed Held\n");
+}
+
+
+int main()
+{
+    // by default, it's red
+    led_red = 0;
+    led_green = 1;
+
+    // print message to indicate the program has started
+    pc.printf("CC3000 Lunch Theft\r\n");
+    wifi.init();
+
+    p1.mode(PullUp);
+    p2.mode(PullUp);
+    p3.mode(PullUp);
+    reed.mode(PullUp);
+
+    p1.attach_asserted( &key1Pressed);
+    p1.attach_deasserted( &key1Released);
+    p1.attach_asserted_held( &key1PressedHeld);
+    p1.setAssertValue( 0 );
+    p1.setSampleFrequency( 10000 );
+
+    p2.attach_asserted( &key2Pressed);
+    p2.attach_deasserted( &key2Released);
+    p2.attach_asserted_held( &key2PressedHeld);
+    p2.setAssertValue( 0 );
+    p2.setSampleFrequency( 10000 );
+
+    p3.attach_asserted( &key3Pressed);
+    p3.attach_deasserted( &key3Released);
+    p3.attach_asserted_held( &key3PressedHeld);
+    p3.setAssertValue( 0 );
+    p3.setSampleFrequency( 10000 );
+
+    reed.attach_asserted( &reedClosed);
+    reed.attach_deasserted( &reedOpen);
+    reed.attach_asserted_held( &reedOpenHeld);
+    reed.setAssertValue( 0 );
+    reed.setSampleFrequency( 10000 );
+
+    Tune(Buzzer, C_4, 4);  //4 Octave C beat 4/16
+    wait_ms(250);
+    Tune(Buzzer, D_4, 4);  //4 Octave D beat 4/16
+    wait_ms(250);
+    Tune(Buzzer, E_4, 4);  //4 Octave E beat 4/16
+    wait_ms(250);
+
+    int i;
+    int init = 0; // init wifi done
+
+
+    while (1) {
+        if (init == 0) {
+            if(wifi.is_connected() == false) {
+                // try to connect
+                if (wifi.connect() == -1) {
+                    pc.printf("Failed to connect."
+                              "Please verify connection details and try again.\r\n");
+                } else {
+                    pc.printf("IP address: %s \r\n", wifi.getIPAddress());
+
+                    //once connected, turn green LED on and red LED off
+                    led_red = 1;
+                    led_green = 0;
+                }
+            } else {
+                sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=0&alarmOn=0");
+                int ret = http.get(url, str, 128);
+                init = 1;
+                int tries = 5;
+                while (ret && tries > 0) {
+                    ret = http.get(url, str, 128);
+                    if (!ret) {
+                        pc.printf("Requested %s\r\n", url);
+                        pc.printf("Page fetched successfully - read %d characters\r\n",
+                                  strlen(str));
+                        pc.printf("Result: %s\r\n", str);
+                    } else {
+                        pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
+                                  ret,
+                                  http.getHTTPResponseCode());
+                    }
+                    tries--;
+                }
+
+            }
+        }
+
+        if (reedIsOpen && codeEntered) {
+            pc.printf("LEGAL OPENING");
+            boxOpenLegal = true;
+            codeEntered = false;
+            wait(0.3);
+        } else if (reedIsOpen && !boxOpenLegal) {
+            // turn on alarm;
+            pc.printf("ALARM TIME\n");
+            for(i=0; i<tones_num; i++) {
+                Auto_tunes(Buzzer, tones[i], 4); // Auto performance
+                Stop_tunes(Buzzer);
+            }
+            boxOpenLegal = false;
+
+            if(wifi.is_connected() == false) {
+                // try to connect
+                if (wifi.connect() == -1) {
+                    pc.printf("Failed to connect."
+                              "Please verify connection details and try again.\r\n");
+                } else {
+                    pc.printf("IP address: %s \r\n", wifi.getIPAddress());
+
+                    //once connected, turn green LED on and red LED off
+                    led_red = 1;
+                    led_green = 0;
+                }
+            } else {
+                // get input url and then return the value
+                pc.printf("SENDING TO URL\n");
+                sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=1&alarmOn=1");
+
+                int ret = http.get(url, str, 128);
+                pc.printf("Trying to Request %s\r\n", url);
+                int tries = 5;
+                while (ret && tries > 0) {
+                    if (!ret) {
+                        pc.printf("Requested %s\r\n", url);
+                        pc.printf("Page fetched successfully - read %d characters\r\n",
+                                  strlen(str));
+                        pc.printf("Result: %s\r\n", str);
+                    } else {
+                        pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
+                                  ret,
+                                  http.getHTTPResponseCode());
+                        tries--;
+                    }
+                }
+            }
+
+
+            wait(0.3);
+        } else if (!reedIsOpen && boxOpenLegal) {
+            boxOpenLegal = false;
+            wait(0.3);
+        }
+        if (passwordcounter==sizeof(code)/4) {
+            codeEntered = true;
+            for (int j=0; j<sizeof(code)/4; j++) {
+                if (code[j]!=password[j]) {
+                    codeEntered = false;
+                }
+            }
+
+
+            pc.printf("CODE IS ENTERED\n");
+            passwordcounter = 0;
+
+            pc.printf("SENDING TO URL\n");
+            sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=0&alarmOn=0");
+
+            int ret = http.get(url, str, 128);
+            pc.printf("Trying to Request %s\r\n", url);
+            int tries = 5;
+            while (ret && tries > 0) {
+                if (!ret) {
+                    pc.printf("Requested %s\r\n", url);
+                    pc.printf("Page fetched successfully - read %d characters\r\n",
+                              strlen(str));
+                    pc.printf("Result: %s\r\n", str);
+                } else {
+                    pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
+                              ret,
+                              http.getHTTPResponseCode());
+                    tries--;
+                }
+            }
+
+
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Nov 09 06:00:22 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9296ab0bfc11
\ No newline at end of file