Archives du projet VélIoT

Dependencies:   mbed NDefLib M24SR BSP_B-L475E-IOT01

Committer:
galaadleconte
Date:
Wed Oct 28 07:57:12 2020 +0000
Revision:
0:8ef2057f72b4
iot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
galaadleconte 0:8ef2057f72b4 1 /* WiFi Example
galaadleconte 0:8ef2057f72b4 2 * Copyright (c) 2018 ARM Limited
galaadleconte 0:8ef2057f72b4 3 *
galaadleconte 0:8ef2057f72b4 4 * Licensed under the Apache License, Version 2.0 (the "License");
galaadleconte 0:8ef2057f72b4 5 * you may not use this file except in compliance with the License.
galaadleconte 0:8ef2057f72b4 6 * You may obtain a copy of the License at
galaadleconte 0:8ef2057f72b4 7 *
galaadleconte 0:8ef2057f72b4 8 * http://www.apache.org/licenses/LICENSE-2.0
galaadleconte 0:8ef2057f72b4 9 *
galaadleconte 0:8ef2057f72b4 10 * Unless required by applicable law or agreed to in writing, software
galaadleconte 0:8ef2057f72b4 11 * distributed under the License is distributed on an "AS IS" BASIS,
galaadleconte 0:8ef2057f72b4 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
galaadleconte 0:8ef2057f72b4 13 * See the License for the specific language governing permissions and
galaadleconte 0:8ef2057f72b4 14 * limitations under the License.
galaadleconte 0:8ef2057f72b4 15 */
galaadleconte 0:8ef2057f72b4 16
galaadleconte 0:8ef2057f72b4 17 #include "mbed.h"
galaadleconte 0:8ef2057f72b4 18 #include "TCPSocket.h"
galaadleconte 0:8ef2057f72b4 19
galaadleconte 0:8ef2057f72b4 20 #define WIFI_IDW0XX1 2
galaadleconte 0:8ef2057f72b4 21
galaadleconte 0:8ef2057f72b4 22 #define TS_DEVICE "StmWifi" //mettre le nom de votre canal TS
galaadleconte 0:8ef2057f72b4 23 #define thingspeak_APIkey_write "2QCEO7RP079WP5R4" //mettre la clé écriture de votre canal TS
galaadleconte 0:8ef2057f72b4 24 #define thingspeak_APIkey_read "OMFA9O4ZPHUXPRKB" //mettre la clé lecture de votre canal TS
galaadleconte 0:8ef2057f72b4 25
galaadleconte 0:8ef2057f72b4 26
galaadleconte 0:8ef2057f72b4 27 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH))
galaadleconte 0:8ef2057f72b4 28 #include "ISM43362Interface.h"
galaadleconte 0:8ef2057f72b4 29 ISM43362Interface wifi(MBED_CONF_APP_WIFI_SPI_MOSI, MBED_CONF_APP_WIFI_SPI_MISO,
galaadleconte 0:8ef2057f72b4 30 MBED_CONF_APP_WIFI_SPI_SCLK, MBED_CONF_APP_WIFI_SPI_NSS, MBED_CONF_APP_WIFI_RESET,
galaadleconte 0:8ef2057f72b4 31 MBED_CONF_APP_WIFI_DATAREADY, MBED_CONF_APP_WIFI_WAKEUP, false);
galaadleconte 0:8ef2057f72b4 32
galaadleconte 0:8ef2057f72b4 33 #else // External WiFi modules
galaadleconte 0:8ef2057f72b4 34
galaadleconte 0:8ef2057f72b4 35 #if MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1
galaadleconte 0:8ef2057f72b4 36 #include "SpwfSAInterface.h"
galaadleconte 0:8ef2057f72b4 37 SpwfSAInterface wifi(MBED_CONF_APP_WIFI_TX, MBED_CONF_APP_WIFI_RX);
galaadleconte 0:8ef2057f72b4 38 #endif // MBED_CONF_APP_WIFI_SHIELD == WIFI_IDW0XX1
galaadleconte 0:8ef2057f72b4 39
galaadleconte 0:8ef2057f72b4 40 #endif
galaadleconte 0:8ef2057f72b4 41
galaadleconte 0:8ef2057f72b4 42 #include "mbed.h"
galaadleconte 0:8ef2057f72b4 43 #include <chrono>
galaadleconte 0:8ef2057f72b4 44 #include <iostream>
galaadleconte 0:8ef2057f72b4 45
galaadleconte 0:8ef2057f72b4 46 // Sensors drivers present in the BSP library
galaadleconte 0:8ef2057f72b4 47 #include "stm32l475e_iot01_gyro.h"
galaadleconte 0:8ef2057f72b4 48 #include "stm32l475e_iot01_accelero.h"
galaadleconte 0:8ef2057f72b4 49
galaadleconte 0:8ef2057f72b4 50 // pour NFC
galaadleconte 0:8ef2057f72b4 51 #include "M24SR.h"
galaadleconte 0:8ef2057f72b4 52 #include "ReadUriCallbacks.h"
galaadleconte 0:8ef2057f72b4 53 #include "WriteUriCallbacks.h"
galaadleconte 0:8ef2057f72b4 54
galaadleconte 0:8ef2057f72b4 55
galaadleconte 0:8ef2057f72b4 56 // Pins definition for the DISCO_L475VG_IOT01A board
galaadleconte 0:8ef2057f72b4 57 #define NFC_I2C_SDA_PIN PB_11
galaadleconte 0:8ef2057f72b4 58 #define NFC_I2C_SCL_PIN PB_10
galaadleconte 0:8ef2057f72b4 59 #define NFC_GPO_PIN PE_4
galaadleconte 0:8ef2057f72b4 60 #define NFC_RF_DISABLE_PIN PE_2
galaadleconte 0:8ef2057f72b4 61
galaadleconte 0:8ef2057f72b4 62 #define LED1_PIN PA_5
galaadleconte 0:8ef2057f72b4 63 #define LED2_PIN PB_14
galaadleconte 0:8ef2057f72b4 64 #define LED3_PIN PC_9
galaadleconte 0:8ef2057f72b4 65
galaadleconte 0:8ef2057f72b4 66 #define M24SR_ADDR 0xAC
galaadleconte 0:8ef2057f72b4 67
galaadleconte 0:8ef2057f72b4 68 // Fin NFC
galaadleconte 0:8ef2057f72b4 69
galaadleconte 0:8ef2057f72b4 70
galaadleconte 0:8ef2057f72b4 71 /* Status PIN */
galaadleconte 0:8ef2057f72b4 72 DigitalOut sessionOpenLed(LED1_PIN); // tag session is open
galaadleconte 0:8ef2057f72b4 73 DigitalOut ongoingOperationLed(LED2_PIN); // ongoing read/write operation
galaadleconte 0:8ef2057f72b4 74 DigitalOut sessionClosedLed(LED3_PIN); // tag session is closed
galaadleconte 0:8ef2057f72b4 75
galaadleconte 0:8ef2057f72b4 76
galaadleconte 0:8ef2057f72b4 77 /** Variable set to true when we receive an interrupt from the NFC component */
galaadleconte 0:8ef2057f72b4 78 static volatile bool nfcInterruptFlag = false;
galaadleconte 0:8ef2057f72b4 79
galaadleconte 0:8ef2057f72b4 80 /** Variable set to true when the user press the board user button */
galaadleconte 0:8ef2057f72b4 81 static volatile bool buttonPress = false;
galaadleconte 0:8ef2057f72b4 82
galaadleconte 0:8ef2057f72b4 83 /** NFC ISR called when the NFC component has a message ready */
galaadleconte 0:8ef2057f72b4 84 static void nfc_interrupt_callback()
galaadleconte 0:8ef2057f72b4 85 {
galaadleconte 0:8ef2057f72b4 86 nfcInterruptFlag = true;
galaadleconte 0:8ef2057f72b4 87 }
galaadleconte 0:8ef2057f72b4 88
galaadleconte 0:8ef2057f72b4 89 static void set_button_press()
galaadleconte 0:8ef2057f72b4 90 {
galaadleconte 0:8ef2057f72b4 91 buttonPress = true;
galaadleconte 0:8ef2057f72b4 92 }
galaadleconte 0:8ef2057f72b4 93
galaadleconte 0:8ef2057f72b4 94
galaadleconte 0:8ef2057f72b4 95 PwmOut R(D9);
galaadleconte 0:8ef2057f72b4 96 PwmOut G(D10);
galaadleconte 0:8ef2057f72b4 97 PwmOut B(D11);
galaadleconte 0:8ef2057f72b4 98 AnalogIn analog_value0(A0);
galaadleconte 0:8ef2057f72b4 99 AnalogIn analog_value1(A1);
galaadleconte 0:8ef2057f72b4 100
galaadleconte 0:8ef2057f72b4 101
galaadleconte 0:8ef2057f72b4 102 DigitalOut led(LED1);
galaadleconte 0:8ef2057f72b4 103
galaadleconte 0:8ef2057f72b4 104 int chute = 0;
galaadleconte 0:8ef2057f72b4 105
galaadleconte 0:8ef2057f72b4 106 const char *sec2str(nsapi_security_t sec)
galaadleconte 0:8ef2057f72b4 107 {
galaadleconte 0:8ef2057f72b4 108 switch (sec) {
galaadleconte 0:8ef2057f72b4 109 case NSAPI_SECURITY_NONE:
galaadleconte 0:8ef2057f72b4 110 return "None";
galaadleconte 0:8ef2057f72b4 111 case NSAPI_SECURITY_WEP:
galaadleconte 0:8ef2057f72b4 112 return "WEP";
galaadleconte 0:8ef2057f72b4 113 case NSAPI_SECURITY_WPA:
galaadleconte 0:8ef2057f72b4 114 return "WPA";
galaadleconte 0:8ef2057f72b4 115 case NSAPI_SECURITY_WPA2:
galaadleconte 0:8ef2057f72b4 116 return "WPA2";
galaadleconte 0:8ef2057f72b4 117 case NSAPI_SECURITY_WPA_WPA2:
galaadleconte 0:8ef2057f72b4 118 return "WPA/WPA2";
galaadleconte 0:8ef2057f72b4 119 case NSAPI_SECURITY_UNKNOWN:
galaadleconte 0:8ef2057f72b4 120 default:
galaadleconte 0:8ef2057f72b4 121 return "Unknown";
galaadleconte 0:8ef2057f72b4 122 }
galaadleconte 0:8ef2057f72b4 123 }
galaadleconte 0:8ef2057f72b4 124
galaadleconte 0:8ef2057f72b4 125 int scan_demo(WiFiInterface *wifi)
galaadleconte 0:8ef2057f72b4 126 {
galaadleconte 0:8ef2057f72b4 127 WiFiAccessPoint *ap;
galaadleconte 0:8ef2057f72b4 128
galaadleconte 0:8ef2057f72b4 129 printf("Scan:\n");
galaadleconte 0:8ef2057f72b4 130
galaadleconte 0:8ef2057f72b4 131 int count = wifi->scan(NULL,0);
galaadleconte 0:8ef2057f72b4 132 printf("%d networks available.\n", count);
galaadleconte 0:8ef2057f72b4 133
galaadleconte 0:8ef2057f72b4 134 /* Limit number of network arbitrary to 15 */
galaadleconte 0:8ef2057f72b4 135 count = count < 15 ? count : 15;
galaadleconte 0:8ef2057f72b4 136
galaadleconte 0:8ef2057f72b4 137 ap = new WiFiAccessPoint[count];
galaadleconte 0:8ef2057f72b4 138 count = wifi->scan(ap, count);
galaadleconte 0:8ef2057f72b4 139 for (int i = 0; i < count; i++)
galaadleconte 0:8ef2057f72b4 140 {
galaadleconte 0:8ef2057f72b4 141 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(),
galaadleconte 0:8ef2057f72b4 142 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
galaadleconte 0:8ef2057f72b4 143 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
galaadleconte 0:8ef2057f72b4 144 }
galaadleconte 0:8ef2057f72b4 145
galaadleconte 0:8ef2057f72b4 146 delete[] ap;
galaadleconte 0:8ef2057f72b4 147 return count;
galaadleconte 0:8ef2057f72b4 148 }
galaadleconte 0:8ef2057f72b4 149
galaadleconte 0:8ef2057f72b4 150
galaadleconte 0:8ef2057f72b4 151 //________________________________________________
galaadleconte 0:8ef2057f72b4 152
galaadleconte 0:8ef2057f72b4 153
galaadleconte 0:8ef2057f72b4 154 void http_demo(NetworkInterface *net)
galaadleconte 0:8ef2057f72b4 155 {
galaadleconte 0:8ef2057f72b4 156 TCPSocket socket;
galaadleconte 0:8ef2057f72b4 157 nsapi_error_t response;
galaadleconte 0:8ef2057f72b4 158
galaadleconte 0:8ef2057f72b4 159 char sbuffer[256];
galaadleconte 0:8ef2057f72b4 160 char message[64];
galaadleconte 0:8ef2057f72b4 161 // mise en place des capteurs (accelerations et gyromètres)
galaadleconte 0:8ef2057f72b4 162 float sensor_value = 0;
galaadleconte 0:8ef2057f72b4 163 int16_t pDataXYZ[3] = {0};
galaadleconte 0:8ef2057f72b4 164 int16_t pDataXYZ_init[3] = {0};
galaadleconte 0:8ef2057f72b4 165 float pGyroDataXYZ[3] = {0};
galaadleconte 0:8ef2057f72b4 166 float pGyroDataXYZ_init[3] = {0};
galaadleconte 0:8ef2057f72b4 167
galaadleconte 0:8ef2057f72b4 168 printf("Start sensor init\n");
galaadleconte 0:8ef2057f72b4 169 // BSP_GYRO_Init();
galaadleconte 0:8ef2057f72b4 170 // BSP_GYRO_GetXYZ(pGyroDataXYZ_init);
galaadleconte 0:8ef2057f72b4 171 BSP_ACCELERO_Init();
galaadleconte 0:8ef2057f72b4 172 BSP_ACCELERO_AccGetXYZ(pDataXYZ_init);
galaadleconte 0:8ef2057f72b4 173 float meas_r0;
galaadleconte 0:8ef2057f72b4 174 float meas_r1;
galaadleconte 0:8ef2057f72b4 175 float i;
galaadleconte 0:8ef2057f72b4 176
galaadleconte 0:8ef2057f72b4 177
galaadleconte 0:8ef2057f72b4 178 //mise en place du NFC
galaadleconte 0:8ef2057f72b4 179 InterruptIn userButton(USER_BUTTON);
galaadleconte 0:8ef2057f72b4 180 userButton.fall(set_button_press);
galaadleconte 0:8ef2057f72b4 181
galaadleconte 0:8ef2057f72b4 182 // Create the NFC component
galaadleconte 0:8ef2057f72b4 183 I2C i2cChannel(NFC_I2C_SDA_PIN, NFC_I2C_SCL_PIN);
galaadleconte 0:8ef2057f72b4 184
galaadleconte 0:8ef2057f72b4 185 M24SR nfcTag(M24SR_ADDR,i2cChannel, &nfc_interrupt_callback, NFC_GPO_PIN, NFC_RF_DISABLE_PIN);
galaadleconte 0:8ef2057f72b4 186
galaadleconte 0:8ef2057f72b4 187 // init needed to enable the component
galaadleconte 0:8ef2057f72b4 188 nfcTag.init(NULL);
galaadleconte 0:8ef2057f72b4 189 // No call back needed since default behavior is sync
galaadleconte 0:8ef2057f72b4 190 nfcTag.get_session();
galaadleconte 0:8ef2057f72b4 191 nfcTag.manage_I2C_GPO(M24SR::I2C_ANSWER_READY); // Switch to async mode
galaadleconte 0:8ef2057f72b4 192
galaadleconte 0:8ef2057f72b4 193 NDefLib::NDefNfcTag &tag = nfcTag.get_NDef_tag();
galaadleconte 0:8ef2057f72b4 194
galaadleconte 0:8ef2057f72b4 195
galaadleconte 0:8ef2057f72b4 196 // Create the callback to use to write a tag
galaadleconte 0:8ef2057f72b4 197 WriteUriCallbacks NDefWriteCallback(sessionOpenLed,ongoingOperationLed,sessionClosedLed);
galaadleconte 0:8ef2057f72b4 198 ReadUriCallbacks NDefReadCallback(sessionOpenLed,ongoingOperationLed,sessionClosedLed);
galaadleconte 0:8ef2057f72b4 199 tag.set_callback(&NDefWriteCallback); // Set the callback
galaadleconte 0:8ef2057f72b4 200 tag.open_session(); // Start the callback chain
galaadleconte 0:8ef2057f72b4 201
galaadleconte 0:8ef2057f72b4 202 // declaration des variables utilisées pour le temps
galaadleconte 0:8ef2057f72b4 203
galaadleconte 0:8ef2057f72b4 204 auto mseconds_last = 0;
galaadleconte 0:8ef2057f72b4 205
galaadleconte 0:8ef2057f72b4 206
galaadleconte 0:8ef2057f72b4 207 //----
galaadleconte 0:8ef2057f72b4 208
galaadleconte 0:8ef2057f72b4 209 /* Loop */
galaadleconte 0:8ef2057f72b4 210 while(true)
galaadleconte 0:8ef2057f72b4 211 {
galaadleconte 0:8ef2057f72b4 212 // Open a socket on the network interface, and create a TCP connection to thingspeaks.com
galaadleconte 0:8ef2057f72b4 213 // Si detection de NFC
galaadleconte 0:8ef2057f72b4 214 if (nfcInterruptFlag)
galaadleconte 0:8ef2057f72b4 215 {
galaadleconte 0:8ef2057f72b4 216 nfcInterruptFlag = false;
galaadleconte 0:8ef2057f72b4 217 // Manage an async event from the NFC component
galaadleconte 0:8ef2057f72b4 218 nfcTag.manage_event();
galaadleconte 0:8ef2057f72b4 219 }
galaadleconte 0:8ef2057f72b4 220
galaadleconte 0:8ef2057f72b4 221 __WFE(); // Wait For Event
galaadleconte 0:8ef2057f72b4 222
galaadleconte 0:8ef2057f72b4 223 // Clignotants
galaadleconte 0:8ef2057f72b4 224
galaadleconte 0:8ef2057f72b4 225 meas_r0 = analog_value0.read();
galaadleconte 0:8ef2057f72b4 226 printf("\n\rx= %f ", meas_r0);
galaadleconte 0:8ef2057f72b4 227 meas_r1 = analog_value1.read();
galaadleconte 0:8ef2057f72b4 228
galaadleconte 0:8ef2057f72b4 229 if (meas_r0 > 0.8)
galaadleconte 0:8ef2057f72b4 230 {
galaadleconte 0:8ef2057f72b4 231 G.write(0);
galaadleconte 0:8ef2057f72b4 232 i=0;
galaadleconte 0:8ef2057f72b4 233 while (i<12 and meas_r1 < 0.8)
galaadleconte 0:8ef2057f72b4 234 {
galaadleconte 0:8ef2057f72b4 235 B.write(1);
galaadleconte 0:8ef2057f72b4 236 meas_r1 = analog_value1.read();
galaadleconte 0:8ef2057f72b4 237 wait(0.2);
galaadleconte 0:8ef2057f72b4 238 B.write(0);
galaadleconte 0:8ef2057f72b4 239 wait(0.2);
galaadleconte 0:8ef2057f72b4 240 printf("y= %f \n\r", meas_r1);
galaadleconte 0:8ef2057f72b4 241 i=i+1;
galaadleconte 0:8ef2057f72b4 242 }
galaadleconte 0:8ef2057f72b4 243 }
galaadleconte 0:8ef2057f72b4 244 if (meas_r0 < 0.5)
galaadleconte 0:8ef2057f72b4 245 {
galaadleconte 0:8ef2057f72b4 246 B.write(0);
galaadleconte 0:8ef2057f72b4 247 i=0;
galaadleconte 0:8ef2057f72b4 248 while (i<12 and meas_r1 < 0.8)
galaadleconte 0:8ef2057f72b4 249 {
galaadleconte 0:8ef2057f72b4 250 G.write(1);
galaadleconte 0:8ef2057f72b4 251 meas_r1 = analog_value1.read();
galaadleconte 0:8ef2057f72b4 252 wait(0.2);
galaadleconte 0:8ef2057f72b4 253 G.write(0);
galaadleconte 0:8ef2057f72b4 254 wait(0.2);
galaadleconte 0:8ef2057f72b4 255 printf("y= %f \n\r", meas_r1);
galaadleconte 0:8ef2057f72b4 256 i=i+1;
galaadleconte 0:8ef2057f72b4 257 }
galaadleconte 0:8ef2057f72b4 258 }
galaadleconte 0:8ef2057f72b4 259
galaadleconte 0:8ef2057f72b4 260
galaadleconte 0:8ef2057f72b4 261 //feux de freinages
galaadleconte 0:8ef2057f72b4 262
galaadleconte 0:8ef2057f72b4 263 BSP_ACCELERO_AccGetXYZ(pDataXYZ);
galaadleconte 0:8ef2057f72b4 264 printf("\n\rACCELERO_X = %d", pDataXYZ[0]);
galaadleconte 0:8ef2057f72b4 265
galaadleconte 0:8ef2057f72b4 266
galaadleconte 0:8ef2057f72b4 267
galaadleconte 0:8ef2057f72b4 268
galaadleconte 0:8ef2057f72b4 269 if (pDataXYZ[0] < -40){
galaadleconte 0:8ef2057f72b4 270 R.write(1);
galaadleconte 0:8ef2057f72b4 271 wait(1.2);
galaadleconte 0:8ef2057f72b4 272 R.write(0);
galaadleconte 0:8ef2057f72b4 273 }
galaadleconte 0:8ef2057f72b4 274 if (pDataXYZ[2] < 750){
galaadleconte 0:8ef2057f72b4 275 R.write(1);
galaadleconte 0:8ef2057f72b4 276 chute = 1;
galaadleconte 0:8ef2057f72b4 277 }
galaadleconte 0:8ef2057f72b4 278 else{
galaadleconte 0:8ef2057f72b4 279 chute = 0;
galaadleconte 0:8ef2057f72b4 280 R.write(0);
galaadleconte 0:8ef2057f72b4 281 }
galaadleconte 0:8ef2057f72b4 282
galaadleconte 0:8ef2057f72b4 283
galaadleconte 0:8ef2057f72b4 284 socket.open(net);
galaadleconte 0:8ef2057f72b4 285 response = socket.connect("api.thingspeak.com", 80);
galaadleconte 0:8ef2057f72b4 286 if(0 != response)
galaadleconte 0:8ef2057f72b4 287 {
galaadleconte 0:8ef2057f72b4 288 printf("Error connecting: %d\n", response);
galaadleconte 0:8ef2057f72b4 289 socket.close();
galaadleconte 0:8ef2057f72b4 290 return;
galaadleconte 0:8ef2057f72b4 291 }
galaadleconte 0:8ef2057f72b4 292 printf("Connected to the Server\n");
galaadleconte 0:8ef2057f72b4 293 //lecture des données des capteurs et actualisation des variables à transmettre
galaadleconte 0:8ef2057f72b4 294 //captX=10; // | Pour illustration :
galaadleconte 0:8ef2057f72b4 295 //captY=20; // | dans cet exemple on attribue des valeurs constantes aux variables
galaadleconte 0:8ef2057f72b4 296 //captZ=30; // | captX =10, captY=20, captZ=30
galaadleconte 0:8ef2057f72b4 297
galaadleconte 0:8ef2057f72b4 298 /* Construct content of HTTP command */ //message à transmettre (données des capteurs)
galaadleconte 0:8ef2057f72b4 299 sprintf(message, "{\"field1\": %0.2f, \"field2\": %0.2f, \"field3\": %0.2f}", meas_r0, (double)pDataXYZ[0], (double) chute);
galaadleconte 0:8ef2057f72b4 300 printf("Content Length = %d\r\n", (int)strlen(message));
galaadleconte 0:8ef2057f72b4 301
galaadleconte 0:8ef2057f72b4 302 /* Construct HTTP command to send */ // Phase de transmission des données à ThingSpeaks.com
galaadleconte 0:8ef2057f72b4 303 sprintf(sbuffer, "GET /update?api_key=%s HTTP/1.1\r\nHost: api.thingspeak.com\r\nContent-Type: application/json\r\nContent-Length: %d\r\n\r\n%s", thingspeak_APIkey_write, (int)strlen(message),message);
galaadleconte 0:8ef2057f72b4 304 printf("HTTP command %s\r\n", sbuffer);
galaadleconte 0:8ef2057f72b4 305 // Send a simple http request
galaadleconte 0:8ef2057f72b4 306 printf("Sending HTTP request to thingspeak.com...\n");
galaadleconte 0:8ef2057f72b4 307 nsapi_size_t size = strlen(sbuffer);
galaadleconte 0:8ef2057f72b4 308 response = 0;
galaadleconte 0:8ef2057f72b4 309 while(size)
galaadleconte 0:8ef2057f72b4 310 {
galaadleconte 0:8ef2057f72b4 311 response = socket.send(sbuffer+response, size);
galaadleconte 0:8ef2057f72b4 312 if (response < 0)
galaadleconte 0:8ef2057f72b4 313 {
galaadleconte 0:8ef2057f72b4 314 printf("Error sending data: %d\n", response);
galaadleconte 0:8ef2057f72b4 315 socket.close();
galaadleconte 0:8ef2057f72b4 316 return;
galaadleconte 0:8ef2057f72b4 317 }
galaadleconte 0:8ef2057f72b4 318 else
galaadleconte 0:8ef2057f72b4 319 {
galaadleconte 0:8ef2057f72b4 320 size -= response;
galaadleconte 0:8ef2057f72b4 321 // Check if entire message was sent or not
galaadleconte 0:8ef2057f72b4 322 printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
galaadleconte 0:8ef2057f72b4 323 }
galaadleconte 0:8ef2057f72b4 324 }
galaadleconte 0:8ef2057f72b4 325 // Receive a simple http response and print out the response line
galaadleconte 0:8ef2057f72b4 326 char rbuffer[64];
galaadleconte 0:8ef2057f72b4 327 response = socket.recv(rbuffer, sizeof rbuffer);
galaadleconte 0:8ef2057f72b4 328 if (response < 0)
galaadleconte 0:8ef2057f72b4 329 {
galaadleconte 0:8ef2057f72b4 330 printf("Error receiving data: %d\n", response);
galaadleconte 0:8ef2057f72b4 331 }
galaadleconte 0:8ef2057f72b4 332 else
galaadleconte 0:8ef2057f72b4 333 {
galaadleconte 0:8ef2057f72b4 334 printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
galaadleconte 0:8ef2057f72b4 335 }
galaadleconte 0:8ef2057f72b4 336 // Close the socket to return its memory and bring down the network interface
galaadleconte 0:8ef2057f72b4 337 socket.close();
galaadleconte 0:8ef2057f72b4 338 }
galaadleconte 0:8ef2057f72b4 339 }
galaadleconte 0:8ef2057f72b4 340
galaadleconte 0:8ef2057f72b4 341
galaadleconte 0:8ef2057f72b4 342
galaadleconte 0:8ef2057f72b4 343
galaadleconte 0:8ef2057f72b4 344 //---------------------------------------------------------------------------------------
galaadleconte 0:8ef2057f72b4 345
galaadleconte 0:8ef2057f72b4 346
galaadleconte 0:8ef2057f72b4 347
galaadleconte 0:8ef2057f72b4 348
galaadleconte 0:8ef2057f72b4 349
galaadleconte 0:8ef2057f72b4 350
galaadleconte 0:8ef2057f72b4 351
galaadleconte 0:8ef2057f72b4 352
galaadleconte 0:8ef2057f72b4 353 int main()
galaadleconte 0:8ef2057f72b4 354 {
galaadleconte 0:8ef2057f72b4 355 int count = 0;
galaadleconte 0:8ef2057f72b4 356
galaadleconte 0:8ef2057f72b4 357 printf("WiFi example\n\n");
galaadleconte 0:8ef2057f72b4 358 printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
galaadleconte 0:8ef2057f72b4 359 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
galaadleconte 0:8ef2057f72b4 360 if (ret != 0)
galaadleconte 0:8ef2057f72b4 361 {
galaadleconte 0:8ef2057f72b4 362 printf("\nConnection error\n");
galaadleconte 0:8ef2057f72b4 363 return -1;
galaadleconte 0:8ef2057f72b4 364 }
galaadleconte 0:8ef2057f72b4 365
galaadleconte 0:8ef2057f72b4 366 printf("Success\n\n");
galaadleconte 0:8ef2057f72b4 367 printf("MAC: %s\n", wifi.get_mac_address());
galaadleconte 0:8ef2057f72b4 368 printf("IP: %s\n", wifi.get_ip_address());
galaadleconte 0:8ef2057f72b4 369 printf("Netmask: %s\n", wifi.get_netmask());
galaadleconte 0:8ef2057f72b4 370 printf("Gateway: %s\n", wifi.get_gateway());
galaadleconte 0:8ef2057f72b4 371 printf("RSSI: %d\n\n", wifi.get_rssi());
galaadleconte 0:8ef2057f72b4 372
galaadleconte 0:8ef2057f72b4 373 http_demo(&wifi);
galaadleconte 0:8ef2057f72b4 374
galaadleconte 0:8ef2057f72b4 375 wifi.disconnect();
galaadleconte 0:8ef2057f72b4 376
galaadleconte 0:8ef2057f72b4 377 printf("\nDone\n");
galaadleconte 0:8ef2057f72b4 378 }