Deep Slumber, codename ISA, is a program made for the arm MBED during Hack The Burgh 2018 that analyses light, temperature, humidity and CO2 levels in a room. It uploads this information onto an SQL server through a rest API, providing the necessary environment for data processing. Further improvements we hope to provide are the regulation of said parameters by wifi connection to electric heaters, wifi enabled controllable lightbulbs and other iot gadgets as well as a website that will provide recommendations for sleep cycle improvements.

Dependencies:   C12832 CCS811 Sht31 TSL2561

Fork of ARM_HACK_THE_BURGH by Carey Williams

Committer:
mbed_official
Date:
Tue Nov 21 11:30:03 2017 +0000
Revision:
44:63be19b7a3db
Parent:
37:3a31525e2971
Child:
56:bea82468efd3
Add STM WiFi expansion boards `X-NUCLEO-IDW0XX1`

.
Commit copied from https://github.com/ARMmbed/mbed-os-example-wifi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:857719181846 1 /* WiFi Example
mbed_official 0:857719181846 2 * Copyright (c) 2016 ARM Limited
mbed_official 0:857719181846 3 *
mbed_official 0:857719181846 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 0:857719181846 5 * you may not use this file except in compliance with the License.
mbed_official 0:857719181846 6 * You may obtain a copy of the License at
mbed_official 0:857719181846 7 *
mbed_official 0:857719181846 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 0:857719181846 9 *
mbed_official 0:857719181846 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 0:857719181846 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 0:857719181846 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 0:857719181846 13 * See the License for the specific language governing permissions and
mbed_official 0:857719181846 14 * limitations under the License.
mbed_official 0:857719181846 15 */
mbed_official 0:857719181846 16
mbed_official 0:857719181846 17 #include "mbed.h"
mbed_official 0:857719181846 18 #include "TCPSocket.h"
mbed_official 0:857719181846 19
mbed_official 32:bca3f5f442b3 20 #define WIFI_ESP8266 1
mbed_official 44:63be19b7a3db 21 #define WIFI_IDW0XX1 2
mbed_official 32:bca3f5f442b3 22
mbed_official 0:857719181846 23 #if TARGET_UBLOX_EVK_ODIN_W2
mbed_official 1:aea78e21a7da 24 #include "OdinWiFiInterface.h"
mbed_official 1:aea78e21a7da 25 OdinWiFiInterface wifi;
mbed_official 10:5b5beb106156 26
mbed_official 21:b2f2f6a840b4 27 #elif TARGET_REALTEK_RTL8195AM
mbed_official 21:b2f2f6a840b4 28 #include "RTWInterface.h"
mbed_official 21:b2f2f6a840b4 29 RTWInterface wifi;
mbed_official 21:b2f2f6a840b4 30
mbed_official 33:12f0df4d51d7 31 #else // External WiFi modules
mbed_official 21:b2f2f6a840b4 32
mbed_official 32:bca3f5f442b3 33 #if MBED_CONF_APP_WIFI_SHIELD == WIFI_ESP8266
mbed_official 1:aea78e21a7da 34 #include "ESP8266Interface.h"
mbed_official 10:5b5beb106156 35 ESP8266Interface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
mbed_official 44:63be19b7a3db 36 #elif MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1
mbed_official 32:bca3f5f442b3 37 #include "SpwfSAInterface.h"
mbed_official 32:bca3f5f442b3 38 SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
mbed_official 44:63be19b7a3db 39 #endif // MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1
mbed_official 10:5b5beb106156 40
mbed_official 33:12f0df4d51d7 41 #endif
mbed_official 0:857719181846 42
mbed_official 0:857719181846 43 const char *sec2str(nsapi_security_t sec)
mbed_official 0:857719181846 44 {
mbed_official 0:857719181846 45 switch (sec) {
mbed_official 0:857719181846 46 case NSAPI_SECURITY_NONE:
mbed_official 0:857719181846 47 return "None";
mbed_official 0:857719181846 48 case NSAPI_SECURITY_WEP:
mbed_official 0:857719181846 49 return "WEP";
mbed_official 0:857719181846 50 case NSAPI_SECURITY_WPA:
mbed_official 0:857719181846 51 return "WPA";
mbed_official 0:857719181846 52 case NSAPI_SECURITY_WPA2:
mbed_official 0:857719181846 53 return "WPA2";
mbed_official 0:857719181846 54 case NSAPI_SECURITY_WPA_WPA2:
mbed_official 0:857719181846 55 return "WPA/WPA2";
mbed_official 0:857719181846 56 case NSAPI_SECURITY_UNKNOWN:
mbed_official 0:857719181846 57 default:
mbed_official 0:857719181846 58 return "Unknown";
mbed_official 0:857719181846 59 }
mbed_official 0:857719181846 60 }
mbed_official 0:857719181846 61
mbed_official 37:3a31525e2971 62 int scan_demo(WiFiInterface *wifi)
mbed_official 0:857719181846 63 {
mbed_official 0:857719181846 64 WiFiAccessPoint *ap;
mbed_official 0:857719181846 65
mbed_official 35:052c1ba06ce7 66 printf("Scan:\n");
mbed_official 0:857719181846 67
mbed_official 0:857719181846 68 int count = wifi->scan(NULL,0);
mbed_official 0:857719181846 69
mbed_official 0:857719181846 70 /* Limit number of network arbitrary to 15 */
mbed_official 0:857719181846 71 count = count < 15 ? count : 15;
mbed_official 0:857719181846 72
mbed_official 0:857719181846 73 ap = new WiFiAccessPoint[count];
mbed_official 0:857719181846 74 count = wifi->scan(ap, count);
mbed_official 0:857719181846 75 for (int i = 0; i < count; i++)
mbed_official 0:857719181846 76 {
mbed_official 35:052c1ba06ce7 77 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(),
mbed_official 0:857719181846 78 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
mbed_official 0:857719181846 79 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
mbed_official 0:857719181846 80 }
mbed_official 35:052c1ba06ce7 81 printf("%d networks available.\n", count);
mbed_official 0:857719181846 82
mbed_official 0:857719181846 83 delete[] ap;
mbed_official 37:3a31525e2971 84 return count;
mbed_official 0:857719181846 85 }
mbed_official 0:857719181846 86
mbed_official 0:857719181846 87 void http_demo(NetworkInterface *net)
mbed_official 0:857719181846 88 {
mbed_official 0:857719181846 89 TCPSocket socket;
mbed_official 24:323569a565ec 90 nsapi_error_t response;
mbed_official 0:857719181846 91
mbed_official 35:052c1ba06ce7 92 printf("Sending HTTP request to www.arm.com...\n");
mbed_official 0:857719181846 93
mbed_official 0:857719181846 94 // Open a socket on the network interface, and create a TCP connection to www.arm.com
mbed_official 0:857719181846 95 socket.open(net);
mbed_official 24:323569a565ec 96 response = socket.connect("www.arm.com", 80);
mbed_official 24:323569a565ec 97 if(0 != response) {
mbed_official 35:052c1ba06ce7 98 printf("Error connecting: %d\n", response);
mbed_official 24:323569a565ec 99 socket.close();
mbed_official 24:323569a565ec 100 return;
mbed_official 24:323569a565ec 101 }
mbed_official 0:857719181846 102
mbed_official 0:857719181846 103 // Send a simple http request
mbed_official 0:857719181846 104 char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
mbed_official 33:12f0df4d51d7 105 nsapi_size_t size = strlen(sbuffer);
mbed_official 24:323569a565ec 106 response = 0;
mbed_official 24:323569a565ec 107 while(size)
mbed_official 24:323569a565ec 108 {
mbed_official 24:323569a565ec 109 response = socket.send(sbuffer+response, size);
mbed_official 24:323569a565ec 110 if (response < 0) {
mbed_official 35:052c1ba06ce7 111 printf("Error sending data: %d\n", response);
mbed_official 24:323569a565ec 112 socket.close();
mbed_official 24:323569a565ec 113 return;
mbed_official 24:323569a565ec 114 } else {
mbed_official 24:323569a565ec 115 size -= response;
mbed_official 24:323569a565ec 116 // Check if entire message was sent or not
mbed_official 35:052c1ba06ce7 117 printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
mbed_official 24:323569a565ec 118 }
mbed_official 24:323569a565ec 119 }
mbed_official 0:857719181846 120
mbed_official 0:857719181846 121 // Recieve a simple http response and print out the response line
mbed_official 0:857719181846 122 char rbuffer[64];
mbed_official 24:323569a565ec 123 response = socket.recv(rbuffer, sizeof rbuffer);
mbed_official 24:323569a565ec 124 if (response < 0) {
mbed_official 35:052c1ba06ce7 125 printf("Error receiving data: %d\n", response);
mbed_official 24:323569a565ec 126 } else {
mbed_official 35:052c1ba06ce7 127 printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
mbed_official 24:323569a565ec 128 }
mbed_official 0:857719181846 129
mbed_official 0:857719181846 130 // Close the socket to return its memory and bring down the network interface
mbed_official 0:857719181846 131 socket.close();
mbed_official 0:857719181846 132 }
mbed_official 0:857719181846 133
mbed_official 0:857719181846 134 int main()
mbed_official 0:857719181846 135 {
mbed_official 37:3a31525e2971 136 int count = 0;
mbed_official 37:3a31525e2971 137
mbed_official 35:052c1ba06ce7 138 printf("WiFi example\n\n");
mbed_official 0:857719181846 139
mbed_official 37:3a31525e2971 140 count = scan_demo(&wifi);
mbed_official 37:3a31525e2971 141 if (count == 0) {
mbed_official 37:3a31525e2971 142 printf("No WIFI APNs found - can't continue further.\n");
mbed_official 37:3a31525e2971 143 return -1;
mbed_official 37:3a31525e2971 144 }
mbed_official 0:857719181846 145
mbed_official 37:3a31525e2971 146 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
mbed_official 0:857719181846 147 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
mbed_official 0:857719181846 148 if (ret != 0) {
mbed_official 35:052c1ba06ce7 149 printf("\nConnection error\n");
mbed_official 0:857719181846 150 return -1;
mbed_official 0:857719181846 151 }
mbed_official 0:857719181846 152
mbed_official 35:052c1ba06ce7 153 printf("Success\n\n");
mbed_official 35:052c1ba06ce7 154 printf("MAC: %s\n", wifi.get_mac_address());
mbed_official 35:052c1ba06ce7 155 printf("IP: %s\n", wifi.get_ip_address());
mbed_official 35:052c1ba06ce7 156 printf("Netmask: %s\n", wifi.get_netmask());
mbed_official 35:052c1ba06ce7 157 printf("Gateway: %s\n", wifi.get_gateway());
mbed_official 35:052c1ba06ce7 158 printf("RSSI: %d\n\n", wifi.get_rssi());
mbed_official 0:857719181846 159
mbed_official 0:857719181846 160 http_demo(&wifi);
mbed_official 0:857719181846 161
mbed_official 0:857719181846 162 wifi.disconnect();
mbed_official 0:857719181846 163
mbed_official 35:052c1ba06ce7 164 printf("\nDone\n");
mbed_official 0:857719181846 165 }