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:
Fri Sep 08 10:15:04 2017 +0100
Revision:
32:bca3f5f442b3
Parent:
24:323569a565ec
Child:
33:12f0df4d51d7
Add compiler check for Morpho form factor

.
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 32:bca3f5f442b3 21 #define WIFI_IDW01M1 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 0:857719181846 31 #else
mbed_official 32:bca3f5f442b3 32 #if MBED_CONF_APP_WIFI_SHIELD == WIFI_ESP8266
mbed_official 32:bca3f5f442b3 33 #if !TARGET_FF_MORPHO
mbed_official 32:bca3f5f442b3 34 #error [NOT_SUPPORTED] Only Morpho form factor devices are supported for this shield at this time
mbed_official 32:bca3f5f442b3 35 #endif // !TARGET_FF_MORPHO
mbed_official 32:bca3f5f442b3 36 #else
mbed_official 1:aea78e21a7da 37 #if !TARGET_FF_ARDUINO
mbed_official 32:bca3f5f442b3 38 #error [NOT_SUPPORTED] Only Arduino form factor devices are supported for this shield at this time
mbed_official 32:bca3f5f442b3 39 #endif // !TARGET_FF_ARDUINO
mbed_official 32:bca3f5f442b3 40 #endif // MBED_CONF_APP_WIFI_SHIELD != WIFI_ESP8266
mbed_official 21:b2f2f6a840b4 41
mbed_official 32:bca3f5f442b3 42 #if MBED_CONF_APP_WIFI_SHIELD == WIFI_ESP8266
mbed_official 1:aea78e21a7da 43 #include "ESP8266Interface.h"
mbed_official 10:5b5beb106156 44 ESP8266Interface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
mbed_official 32:bca3f5f442b3 45 #elif MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW01M1
mbed_official 32:bca3f5f442b3 46 #include "SpwfSAInterface.h"
mbed_official 32:bca3f5f442b3 47 SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
mbed_official 32:bca3f5f442b3 48 #endif // MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW01M1
mbed_official 10:5b5beb106156 49
mbed_official 32:bca3f5f442b3 50 #endif // TARGET_UBLOX_EVK_ODIN_W2
mbed_official 0:857719181846 51
mbed_official 0:857719181846 52 const char *sec2str(nsapi_security_t sec)
mbed_official 0:857719181846 53 {
mbed_official 0:857719181846 54 switch (sec) {
mbed_official 0:857719181846 55 case NSAPI_SECURITY_NONE:
mbed_official 0:857719181846 56 return "None";
mbed_official 0:857719181846 57 case NSAPI_SECURITY_WEP:
mbed_official 0:857719181846 58 return "WEP";
mbed_official 0:857719181846 59 case NSAPI_SECURITY_WPA:
mbed_official 0:857719181846 60 return "WPA";
mbed_official 0:857719181846 61 case NSAPI_SECURITY_WPA2:
mbed_official 0:857719181846 62 return "WPA2";
mbed_official 0:857719181846 63 case NSAPI_SECURITY_WPA_WPA2:
mbed_official 0:857719181846 64 return "WPA/WPA2";
mbed_official 0:857719181846 65 case NSAPI_SECURITY_UNKNOWN:
mbed_official 0:857719181846 66 default:
mbed_official 0:857719181846 67 return "Unknown";
mbed_official 0:857719181846 68 }
mbed_official 0:857719181846 69 }
mbed_official 0:857719181846 70
mbed_official 0:857719181846 71 void scan_demo(WiFiInterface *wifi)
mbed_official 0:857719181846 72 {
mbed_official 0:857719181846 73 WiFiAccessPoint *ap;
mbed_official 0:857719181846 74
mbed_official 0:857719181846 75 printf("Scan:\r\n");
mbed_official 0:857719181846 76
mbed_official 0:857719181846 77 int count = wifi->scan(NULL,0);
mbed_official 0:857719181846 78
mbed_official 0:857719181846 79 /* Limit number of network arbitrary to 15 */
mbed_official 0:857719181846 80 count = count < 15 ? count : 15;
mbed_official 0:857719181846 81
mbed_official 0:857719181846 82 ap = new WiFiAccessPoint[count];
mbed_official 0:857719181846 83 count = wifi->scan(ap, count);
mbed_official 0:857719181846 84 for (int i = 0; i < count; i++)
mbed_official 0:857719181846 85 {
mbed_official 0:857719181846 86 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", ap[i].get_ssid(),
mbed_official 0:857719181846 87 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
mbed_official 0:857719181846 88 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 89 }
mbed_official 0:857719181846 90 printf("%d networks available.\r\n", count);
mbed_official 0:857719181846 91
mbed_official 0:857719181846 92 delete[] ap;
mbed_official 0:857719181846 93 }
mbed_official 0:857719181846 94
mbed_official 0:857719181846 95 void http_demo(NetworkInterface *net)
mbed_official 0:857719181846 96 {
mbed_official 0:857719181846 97 TCPSocket socket;
mbed_official 24:323569a565ec 98 nsapi_error_t response;
mbed_official 0:857719181846 99
mbed_official 0:857719181846 100 printf("Sending HTTP request to www.arm.com...\r\n");
mbed_official 0:857719181846 101
mbed_official 0:857719181846 102 // Open a socket on the network interface, and create a TCP connection to www.arm.com
mbed_official 0:857719181846 103 socket.open(net);
mbed_official 24:323569a565ec 104 response = socket.connect("www.arm.com", 80);
mbed_official 24:323569a565ec 105 if(0 != response) {
mbed_official 24:323569a565ec 106 printf("Error connecting: %d\r\n", response);
mbed_official 24:323569a565ec 107 socket.close();
mbed_official 24:323569a565ec 108 return;
mbed_official 24:323569a565ec 109 }
mbed_official 0:857719181846 110
mbed_official 0:857719181846 111 // Send a simple http request
mbed_official 0:857719181846 112 char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
mbed_official 24:323569a565ec 113 nsapi_size_t size = sizeof sbuffer;
mbed_official 24:323569a565ec 114 response = 0;
mbed_official 24:323569a565ec 115 while(size)
mbed_official 24:323569a565ec 116 {
mbed_official 24:323569a565ec 117 response = socket.send(sbuffer+response, size);
mbed_official 24:323569a565ec 118 if (response < 0) {
mbed_official 24:323569a565ec 119 printf("Error sending data: %d\r\n", response);
mbed_official 24:323569a565ec 120 socket.close();
mbed_official 24:323569a565ec 121 return;
mbed_official 24:323569a565ec 122 } else {
mbed_official 24:323569a565ec 123 size -= response;
mbed_official 24:323569a565ec 124 // Check if entire message was sent or not
mbed_official 24:323569a565ec 125 printf("sent %d [%.*s]\r\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
mbed_official 24:323569a565ec 126 }
mbed_official 24:323569a565ec 127 }
mbed_official 0:857719181846 128
mbed_official 0:857719181846 129 // Recieve a simple http response and print out the response line
mbed_official 0:857719181846 130 char rbuffer[64];
mbed_official 24:323569a565ec 131 response = socket.recv(rbuffer, sizeof rbuffer);
mbed_official 24:323569a565ec 132 if (response < 0) {
mbed_official 24:323569a565ec 133 printf("Error receiving data: %d\r\n", response);
mbed_official 24:323569a565ec 134 } else {
mbed_official 24:323569a565ec 135 printf("recv %d [%.*s]\r\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
mbed_official 24:323569a565ec 136 }
mbed_official 0:857719181846 137
mbed_official 0:857719181846 138 // Close the socket to return its memory and bring down the network interface
mbed_official 0:857719181846 139 socket.close();
mbed_official 0:857719181846 140 }
mbed_official 0:857719181846 141
mbed_official 0:857719181846 142 int main()
mbed_official 0:857719181846 143 {
mbed_official 0:857719181846 144 printf("WiFi example\r\n\r\n");
mbed_official 0:857719181846 145
mbed_official 0:857719181846 146 scan_demo(&wifi);
mbed_official 0:857719181846 147
mbed_official 0:857719181846 148 printf("\r\nConnecting...\r\n");
mbed_official 0:857719181846 149 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
mbed_official 0:857719181846 150 if (ret != 0) {
mbed_official 0:857719181846 151 printf("\r\nConnection error\r\n");
mbed_official 0:857719181846 152 return -1;
mbed_official 0:857719181846 153 }
mbed_official 0:857719181846 154
mbed_official 0:857719181846 155 printf("Success\r\n\r\n");
mbed_official 0:857719181846 156 printf("MAC: %s\r\n", wifi.get_mac_address());
mbed_official 0:857719181846 157 printf("IP: %s\r\n", wifi.get_ip_address());
mbed_official 0:857719181846 158 printf("Netmask: %s\r\n", wifi.get_netmask());
mbed_official 0:857719181846 159 printf("Gateway: %s\r\n", wifi.get_gateway());
mbed_official 0:857719181846 160 printf("RSSI: %d\r\n\r\n", wifi.get_rssi());
mbed_official 0:857719181846 161
mbed_official 0:857719181846 162 http_demo(&wifi);
mbed_official 0:857719181846 163
mbed_official 0:857719181846 164 wifi.disconnect();
mbed_official 0:857719181846 165
mbed_official 0:857719181846 166 printf("\r\nDone\r\n");
mbed_official 0:857719181846 167 }