Work with nodejs server: https://github.com/bjo3rn/idd-examples/tree/ben-node-demo/web/nodeServerHTTPSocket

Dependencies:   HTTPClient WebSocketClient cc3000_hostdriver_mbedsocket mbed

Fork of CC3000_demo by Ben Zhang

Committer:
nebgnahz
Date:
Wed Nov 05 08:49:02 2014 +0000
Revision:
18:922b1ad5c826
Parent:
17:97c355870263
Simple WiFi demo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nebgnahz 13:26905142e97b 1 /**
nebgnahz 15:ac15ec676d87 2 * \brief CS294-84 demo \author Ben Zhang, Antonio Iannopollo
nebgnahz 14:efd42910791b 3 *
nebgnahz 14:efd42910791b 4 * This sampel code illustrates how to connect the mbed KL25Z platform to internet
nebgnahz 14:efd42910791b 5 * thorugh the CC3000 wifi breakout board (http://www.adafruit.com/product/1469).
nebgnahz 14:efd42910791b 6 * Connections between the KL25Z and the CC3000 are made according to the
nebgnahz 14:efd42910791b 7 * guide at https://learn.adafruit.com/adafruit-cc3000-wifi -- KL25Z and arduino
nebgnahz 14:efd42910791b 8 * UNO are pin to pin compatible --
nebgnahz 14:efd42910791b 9 *
nebgnahz 14:efd42910791b 10 * This application uses the following libraries:
nebgnahz 14:efd42910791b 11 * - cc3000_hostdriver_mbedsocket
nebgnahz 14:efd42910791b 12 * (http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/)
nebgnahz 14:efd42910791b 13 * - HTTPClient (http://developer.mbed.org/users/donatien/code/HTTPClient/)
nebgnahz 14:efd42910791b 14 */
nebgnahz 13:26905142e97b 15
nebgnahz 18:922b1ad5c826 16 #include <string>
nebgnahz 18:922b1ad5c826 17
Kojto 0:fe1445e57b7d 18 #include "cc3000.h"
nebgnahz 18:922b1ad5c826 19 #include "mbed.h"
Kojto 0:fe1445e57b7d 20 #include "HTTPClient.h"
Kojto 0:fe1445e57b7d 21
nebgnahz 18:922b1ad5c826 22 const string POLLING_URL = "http://universe.eecs.berkeley.edu:8080/value";
nebgnahz 18:922b1ad5c826 23 const string UPDATE_URL = "http://universe.eecs.berkeley.edu:8080/update?value=";
nebgnahz 18:922b1ad5c826 24
nebgnahz 13:26905142e97b 25 // KL25Z wifi connection
nebgnahz 13:26905142e97b 26 // we need to define connection pins for:
nebgnahz 13:26905142e97b 27 // - IRQ => (pin D3)
nebgnahz 13:26905142e97b 28 // - Enable => (pin D5)
nebgnahz 13:26905142e97b 29 // - SPI CS => (pin D10)
nebgnahz 13:26905142e97b 30 // - SPI MOSI => (pin D11)
nebgnahz 13:26905142e97b 31 // - SPI MISO => (pin D12)
nebgnahz 13:26905142e97b 32 // - SPI CLK => (pin D13)
nebgnahz 13:26905142e97b 33 // plus wifi network SSID, password, security level and smart-configuration flag.
nebgnahz 14:efd42910791b 34 mbed_cc3000::cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13),
nebgnahz 16:d40dee28b02e 35 "SSID", "PASSWORD", WPA2, false);
antoni0 10:1804a9dbaee0 36
nebgnahz 13:26905142e97b 37 // create an http instance
nebgnahz 13:26905142e97b 38 HTTPClient http;
Kojto 0:fe1445e57b7d 39
nebgnahz 13:26905142e97b 40 // str is used to hold the response data
nebgnahz 13:26905142e97b 41 char str[512];
nebgnahz 14:efd42910791b 42 char url[80];
antoni0 7:47cd0d3d5e4d 43
nebgnahz 13:26905142e97b 44 // setup the serial connection, and LEDs
nebgnahz 13:26905142e97b 45 Serial pc(USBTX, USBRX);
nebgnahz 13:26905142e97b 46 DigitalOut led_green(LED_GREEN);
nebgnahz 18:922b1ad5c826 47 PwmOut led_red(LED_RED);
nebgnahz 18:922b1ad5c826 48
nebgnahz 18:922b1ad5c826 49 Ticker reportSensorTicker;
nebgnahz 18:922b1ad5c826 50 bool shouldReadSensor;
nebgnahz 18:922b1ad5c826 51 int sensorData;
nebgnahz 18:922b1ad5c826 52
nebgnahz 18:922b1ad5c826 53 void readSensor() {
nebgnahz 18:922b1ad5c826 54 // avoid doing much work here (in the interrupt).
nebgnahz 18:922b1ad5c826 55 // put the actual sensor reading in the main function
nebgnahz 18:922b1ad5c826 56 shouldReadSensor = true;
nebgnahz 18:922b1ad5c826 57 }
antoni0 7:47cd0d3d5e4d 58
nebgnahz 16:d40dee28b02e 59 int main() {
nebgnahz 18:922b1ad5c826 60 pc.printf("CC3000 Nodejs Demo Starts\r\n");
nebgnahz 18:922b1ad5c826 61 // by default, we make the LED red
nebgnahz 18:922b1ad5c826 62 led_red = 0;
nebgnahz 18:922b1ad5c826 63 led_green = 1;
nebgnahz 13:26905142e97b 64
nebgnahz 18:922b1ad5c826 65 // reset the readsensor bool to false so we don't read the data.
nebgnahz 18:922b1ad5c826 66 shouldReadSensor = false;
nebgnahz 18:922b1ad5c826 67 sensorData = 0;
nebgnahz 18:922b1ad5c826 68 // Every 5 second, we sample the sensor and report the data.
nebgnahz 18:922b1ad5c826 69 reportSensorTicker.attach(&readSensor, 5.0);
nebgnahz 18:922b1ad5c826 70
nebgnahz 18:922b1ad5c826 71 wifi.init();
nebgnahz 18:922b1ad5c826 72
nebgnahz 18:922b1ad5c826 73 while(1) {
nebgnahz 18:922b1ad5c826 74 // continuosly check connection status
nebgnahz 18:922b1ad5c826 75 if(wifi.is_connected() == false) {
nebgnahz 18:922b1ad5c826 76 // try to connect
nebgnahz 18:922b1ad5c826 77 if (wifi.connect() == -1) {
nebgnahz 18:922b1ad5c826 78 pc.printf("Failed to connect."
nebgnahz 18:922b1ad5c826 79 "Please verify connection details and try again.\r\n");
nebgnahz 18:922b1ad5c826 80 continue;
nebgnahz 18:922b1ad5c826 81 } else {
nebgnahz 13:26905142e97b 82
nebgnahz 18:922b1ad5c826 83 pc.printf("IP address: %s \r\n", wifi.getIPAddress());
nebgnahz 18:922b1ad5c826 84 // once connected, turn green LED on and red LED off
nebgnahz 18:922b1ad5c826 85 led_red = 1;
nebgnahz 18:922b1ad5c826 86 led_green = 0;
nebgnahz 18:922b1ad5c826 87 }
nebgnahz 18:922b1ad5c826 88 }
nebgnahz 14:efd42910791b 89
nebgnahz 18:922b1ad5c826 90 // update the value when shouldReadSensor is true
nebgnahz 18:922b1ad5c826 91 if (shouldReadSensor == true) {
nebgnahz 18:922b1ad5c826 92 shouldReadSensor = false;
nebgnahz 18:922b1ad5c826 93 sensorData += 10;
nebgnahz 18:922b1ad5c826 94 char url[128];
nebgnahz 18:922b1ad5c826 95 snprintf(url, sizeof(url), "%s%d", UPDATE_URL.c_str(), sensorData);
nebgnahz 18:922b1ad5c826 96 int ret = http.get(url, str, 128);
nebgnahz 18:922b1ad5c826 97 if (!ret) {
nebgnahz 18:922b1ad5c826 98 pc.printf("sending sensorData %d, response: %s\r\n", sensorData, str);
nebgnahz 18:922b1ad5c826 99 } else {
nebgnahz 18:922b1ad5c826 100 pc.printf("[PUSH] Error - ret = %d - HTTP %d\r\n", ret, http.getHTTPResponseCode());
nebgnahz 18:922b1ad5c826 101 }
nebgnahz 18:922b1ad5c826 102 }
nebgnahz 18:922b1ad5c826 103
nebgnahz 18:922b1ad5c826 104 // everytime we do HTTP polling
nebgnahz 18:922b1ad5c826 105 int ret = http.get(POLLING_URL.c_str(), str, 128);
nebgnahz 18:922b1ad5c826 106 if (!ret) {
nebgnahz 18:922b1ad5c826 107 int value = atoi(str);
nebgnahz 18:922b1ad5c826 108 led_red = 1.0 * value / 255;
nebgnahz 18:922b1ad5c826 109 } else {
nebgnahz 18:922b1ad5c826 110 pc.printf("[POLL] Error - ret = %d - HTTP %d\r\n", ret, http.getHTTPResponseCode());
nebgnahz 18:922b1ad5c826 111 }
nebgnahz 18:922b1ad5c826 112 wait(0.1);
Kojto 0:fe1445e57b7d 113 }
nebgnahz 14:efd42910791b 114 }