v2 for lunchbox
Dependencies: HTTPClient PWM_Tone_Library PinDetect_KL25Z Queue cc3000_hostdriver_mbedsocket mbed
Fork of kragl by
Revision 0:a77a884aa413, committed 2015-11-09
- Comitter:
- ahsueh
- Date:
- Mon Nov 09 06:00:22 2015 +0000
- Child:
- 1:90b792629d5e
- Commit message:
- Working Alarm -> wifi -> website update
Changed in this revision
--- /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
