Plant Monitoring CS

Dependencies:   HTS221

Files at this revision

API Documentation at this revision

Comitter:
titi9211
Date:
Wed Mar 25 15:46:56 2020 +0000
Parent:
58:8d4bde75ebb9
Child:
60:445b8534e023
Commit message:
Plant Monitoring Program

Changed in this revision

DHT22.cpp Show annotated file Show diff for this revision Revisions of this file
DHT22.h Show annotated file Show diff for this revision Revisions of this file
HTS221.lib Show annotated file Show diff for this revision Revisions of this file
TSL2591.cpp Show annotated file Show diff for this revision Revisions of this file
TSL2591.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
mbed_app_ism43362.json Show diff for this revision Revisions of this file
wifi-ism43362.lib Show annotated file Show diff for this revision Revisions of this file
wifi-x-nucleo-idw01m1.lib Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT22.cpp	Wed Mar 25 15:46:56 2020 +0000
@@ -0,0 +1,49 @@
+#include "DHT22.h"
+
+
+DHT22::DHT22(PinName pin) {
+    _data_pin = pin;
+}
+
+int DHT22::getTemperature() {
+    return _temperature;
+}
+
+int DHT22::getHumidity() {
+    return _humidity;
+}
+
+bool DHT22::sample() {
+    DigitalInOut DHT22(_data_pin);
+    int dht22_dat [5];
+    DHT22.output();
+    DHT22.write(0);
+    wait_ms(18);
+    DHT22.write(1);
+    DHT22.input();
+    wait_us(40);
+    wait_us(80);
+    int i,j,result=0;
+    for (i=0; i<5; i++) {
+        result=0;
+        for (j=0; j<8; j++) {
+            while (DHT22);
+            while (!DHT22);
+            wait_us(50);
+            int p;
+            p=DHT22;
+            p=p <<(7-j);
+            result=result|p;
+        }
+        dht22_dat[i] = result;
+    }
+    int dht22_check_sum;
+    dht22_check_sum=dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
+    dht22_check_sum= dht22_check_sum%256;
+    if (dht22_check_sum==dht22_dat[4]) {
+        _humidity=dht22_dat[0]*256+dht22_dat[1];
+        _temperature=dht22_dat[2]*256+dht22_dat[3];
+        return true;
+    }
+    return false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT22.h	Wed Mar 25 15:46:56 2020 +0000
@@ -0,0 +1,17 @@
+#ifndef MBED_DHT22_H
+#define MBED_DHT22_H
+
+#include "mbed.h"
+
+class DHT22 {
+private:
+    int _temperature,_humidity;
+    PinName _data_pin;
+public:
+    DHT22(PinName);
+    bool sample();
+    int getTemperature();
+    int getHumidity();
+};
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HTS221.lib	Wed Mar 25 15:46:56 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/ST/code/HTS221/#ccf7f36492ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TSL2591.cpp	Wed Mar 25 15:46:56 2020 +0000
@@ -0,0 +1,149 @@
+#include "TSL2591.h"
+
+TSL2591::TSL2591 (I2C& tsl2591_i2c, uint8_t tsl2591_addr):
+    _i2c(tsl2591_i2c), _addr(tsl2591_addr<<1)
+{
+    _init = false;
+    _integ = TSL2591_INTT_100MS;
+    _gain = TSL2591_GAIN_LOW;
+}
+/*
+ *  Initialize TSL2591
+ *  Checks ID and sets gain and integration time
+ */
+bool TSL2591::init(void)
+{
+    char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ID)};
+    if(_i2c.write(_addr, write, 1, 0) == 0) {
+        char read[1];
+        _i2c.read(_addr, read, 1, 0);
+        if(read[0] == TSL2591_ID) {
+            _init = true;
+            setGain(TSL2591_GAIN_LOW);
+            setTime(TSL2591_INTT_100MS);
+            disable();
+            return true;
+        }
+    }
+    return false;
+}
+/*
+ *  Power On TSL2591
+ */
+void TSL2591::enable(void)
+{
+    char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ENABLE), (TSL2591_EN_PON|TSL2591_EN_AEN|TSL2591_EN_AIEN|TSL2591_EN_NPIEN)};
+    _i2c.write(_addr, write, 2, 0);
+}
+/*
+ *  Power Off TSL2591
+ */
+void TSL2591::disable(void)
+{
+    char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ENABLE), (TSL2591_EN_POFF)};
+    _i2c.write(_addr, write, 2, 0);
+}
+/*
+ *  Set Gain and Write
+ *  Set gain and write time and gain
+ */
+void TSL2591::setGain(tsl2591Gain_t gain)
+{
+    enable();
+    _gain = gain;
+    char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_CONTROL), (_integ|_gain)};
+    _i2c.write(_addr, write, 2, 0);
+    disable();
+}
+/*
+ *  Set Integration Time and Write
+ *  Set gain and write time and gain
+ */
+void TSL2591::setTime(tsl2591IntegrationTime_t integ)
+{
+    enable();
+    _integ = integ;
+    char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_CONTROL), (_integ|_gain)};
+    _i2c.write(_addr, write, 2, 0);
+    disable();
+}
+/*
+ *  Read ALS
+ *  Read full spectrum, infrared, and visible
+ */
+void TSL2591::getALS(void)
+{
+    enable();
+    for(uint8_t t=0; t<=_integ+1; t++) {
+        wait(0.12);
+    }
+    char write1[] = {(TSL2591_CMD_BIT|TSL2591_REG_CHAN1_L)};
+    _i2c.write(_addr, write1, 1, 0);
+    char read1[2];
+    _i2c.read(_addr, read1, 2, 0);
+    char write2[] = {(TSL2591_CMD_BIT|TSL2591_REG_CHAN0_L)};
+    _i2c.write(_addr, write2, 1, 0);
+    char read2[2];
+    _i2c.read(_addr, read2, 2, 0);
+    rawALS = (((read1[1]<<8)|read1[0])<<16)|((read2[1]<<8)|read2[0]);
+    disable();
+    full = rawALS & 0xFFFF;
+    ir = rawALS >> 16;
+    visible = full - ir;
+}
+/*
+ *  Calculate Lux
+ */
+void TSL2591::calcLux(void)
+{
+    float atime, again, cpl, lux1, lux2, lux3;
+    if((full == 0xFFFF)|(ir == 0xFFFF)) {
+        lux3 = 0;
+        return;
+    }
+    switch(_integ) {
+        case TSL2591_INTT_100MS:
+            atime = 100.0F;
+            break;
+        case TSL2591_INTT_200MS:
+            atime = 200.0F;
+            break;
+        case TSL2591_INTT_300MS:
+            atime = 300.0F;
+            break;
+        case TSL2591_INTT_400MS:
+            atime = 400.0F;
+            break;
+        case TSL2591_INTT_500MS:
+            atime = 500.0F;
+            break;
+        case TSL2591_INTT_600MS:
+            atime = 600.0F;
+            break;
+        default:
+            atime = 100.0F;
+            break;
+    }
+    switch(_gain) {
+        case TSL2591_GAIN_LOW:
+            again = 1.0F;
+            break;
+        case TSL2591_GAIN_MED:
+            again = 25.0F;
+            break;
+        case TSL2591_GAIN_HIGH:
+            again = 428.0F;
+            break;
+        case TSL2591_GAIN_MAX:
+            again = 9876.0F;
+            break;
+        default:
+            again = 1.0F;
+            break;
+    }
+    cpl = (atime * again) / TSL2591_LUX_DF;
+    lux1 = ((float)full - (TSL2591_LUX_COEFB * (float)ir)) / cpl;
+    lux2 = (( TSL2591_LUX_COEFC * (float)full ) - ( TSL2591_LUX_COEFD * (float)ir)) / cpl;
+    lux3 = lux1 > lux2 ? lux1 : lux2;
+    lux = (uint32_t)lux3;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TSL2591.h	Wed Mar 25 15:46:56 2020 +0000
@@ -0,0 +1,104 @@
+#ifndef TSL2591_H
+#define TSL2591_H
+
+#include "mbed.h"
+
+#define TSL2591_ADDR        (0x29)
+#define TSL2591_ID          (0x50)
+
+#define TSL2591_CMD_BIT     (0xA0)
+
+#define TSL2591_EN_NPIEN    (0x80)
+#define TSL2591_EN_SAI      (0x40)
+#define TSL2591_EN_AIEN     (0x10)
+#define TSL2591_EN_AEN      (0x02)
+#define TSL2591_EN_PON      (0x01)
+#define TSL2591_EN_POFF     (0x00)
+
+#define TSL2591_LUX_DF      (408.0F)
+#define TSL2591_LUX_COEFB   (1.64F)  // CH0 coefficient 
+#define TSL2591_LUX_COEFC   (0.59F)  // CH1 coefficient A
+#define TSL2591_LUX_COEFD   (0.86F)  // CH2 coefficient B
+
+enum {
+    TSL2591_REG_ENABLE          = 0x00,
+    TSL2591_REG_CONTROL         = 0x01,
+    TSL2591_REG_THRES_AILTL     = 0x04,
+    TSL2591_REG_THRES_AILTH     = 0x05,
+    TSL2591_REG_THRES_AIHTL     = 0x06,
+    TSL2591_REG_THRES_AIHTH     = 0x07,
+    TSL2591_REG_THRES_NPAILTL   = 0x08,
+    TSL2591_REG_THRES_NPAILTH   = 0x09,
+    TSL2591_REG_THRES_NPAIHTL   = 0x0A,
+    TSL2591_REG_THRES_NPAIHTH   = 0x0B,
+    TSL2591_REG_PERSIST         = 0x0C,
+    TSL2591_REG_PID             = 0x11,
+    TSL2591_REG_ID              = 0x12,
+    TSL2591_REG_STATUS          = 0x13,
+    TSL2591_REG_CHAN0_L         = 0x14,
+    TSL2591_REG_CHAN0_H         = 0x15,
+    TSL2591_REG_CHAN1_L         = 0x16,
+    TSL2591_REG_CHAN1_H         = 0x17,
+};
+
+typedef enum {
+    TSL2591_GAIN_LOW    = 0x00,
+    TSL2591_GAIN_MED    = 0x01,
+    TSL2591_GAIN_HIGH   = 0x02,
+    TSL2591_GAIN_MAX    = 0x03,
+} tsl2591Gain_t;
+
+typedef enum {
+    TSL2591_INTT_100MS  = 0x00,
+    TSL2591_INTT_200MS  = 0x01,
+    TSL2591_INTT_300MS  = 0x02,
+    TSL2591_INTT_400MS  = 0x03,
+    TSL2591_INTT_500MS  = 0x04,
+    TSL2591_INTT_600MS  = 0x05,
+} tsl2591IntegrationTime_t;
+
+typedef enum {
+    TSL2591_PER_EVERY   = 0x00,
+    TSL2591_PER_ANY     = 0x01,
+    TSL2591_PER_2       = 0x02,
+    TSL2591_PER_3       = 0x03,
+    TSL2591_PER_5       = 0x04,
+    TSL2591_PER_10      = 0x05,
+    TSL2591_PER_15      = 0x06,
+    TSL2591_PER_20      = 0x07,
+    TSL2591_PER_25      = 0x08,
+    TSL2591_PER_30      = 0x09,
+    TSL2591_PER_35      = 0x0A,
+    TSL2591_PER_40      = 0x0B,
+    TSL2591_PER_45      = 0x0C,
+    TSL2591_PER_50      = 0x0D,
+    TSL2591_PER_55      = 0x0E,
+    TSL2591_PER_60      = 0x0F,
+} tsl2591Persist_t;
+
+class TSL2591
+{
+    public:
+    TSL2591(I2C& tsl2591_i2c, uint8_t tsl2591_addr=TSL2591_ADDR);
+    bool init(void);
+    void enable(void);
+    void disable(void);
+    void setGain(tsl2591Gain_t gain);
+    void setTime(tsl2591IntegrationTime_t integ);
+    void getALS(void);
+    void calcLux(void);
+    volatile uint32_t           rawALS;
+    volatile uint16_t           ir;
+    volatile uint16_t           full;
+    volatile uint16_t           visible;
+    volatile uint32_t           lux;
+    
+    protected:
+    I2C                         _i2c;
+    uint8_t                     _addr;
+    bool                        _init;
+    tsl2591Gain_t               _gain;
+    tsl2591IntegrationTime_t    _integ;
+};
+
+#endif
\ No newline at end of file
--- a/main.cpp	Tue Feb 27 14:07:49 2018 +0100
+++ b/main.cpp	Wed Mar 25 15:46:56 2020 +0000
@@ -16,8 +16,15 @@
 
 #include "mbed.h"
 #include "TCPSocket.h"
+#include "HTS221Sensor.h"
+#include "DHT22.h"
+#include "TSL2591.h"
 
 #define WIFI_IDW0XX1    2
+#define UBIDOTS_TOKEN   "BBFF-xp89MM8kmzzbp6eJ074XjDpqz7qryh"
+#define UBIDOTS_DEVICE  "stmwifi"
+
+
 
 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH))
 #include "ISM43362Interface.h"
@@ -81,46 +88,104 @@
     TCPSocket socket;
     nsapi_error_t response;
 
-    printf("Sending HTTP request to www.arm.com...\n");
-
-    // Open a socket on the network interface, and create a TCP connection to www.arm.com
-    socket.open(net);
-    response = socket.connect("www.arm.com", 80);
-    if(0 != response) {
-        printf("Error connecting: %d\n", response);
-        socket.close();
-        return;
-    }
-
     // Send a simple http request
-    char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
-    nsapi_size_t size = strlen(sbuffer);
-    response = 0;
-    while(size)
-    {
-        response = socket.send(sbuffer+response, size);
-        if (response < 0) {
-            printf("Error sending data: %d\n", response);
+    char sbuffer[256];
+    char message[64];
+    
+    /* Analog ressources */
+    AnalogIn adc_temp(ADC_TEMP);    // Internal Temp Sensor to ADC Channel
+    AnalogIn adc_vbat(ADC_VBAT);    // VBAT / 3 internal to ADC channel 
+    
+    static DevI2C devI2c(PB_11,PB_10);
+    static HTS221Sensor sen_hum_temp(&devI2c);
+    static DHT22 tempSensor(D2);
+    static I2C i2c1(I2C_SDA, I2C_SCL);
+    static TSL2591 sensor1(i2c1, TSL2591_ADDR);
+    static AnalogIn analog_value(A0);
+    
+    //sen_hum_temp.init(NULL);
+    //sen_hum_temp.enable();
+    
+    /* Global variables */
+    float temp;
+    float t;
+    float hum;
+    float h;
+    float lux;
+    float moist_r;
+    float moist_v;
+    
+    while(true){
+        // Open a socket on the network interface, and create a TCP connection
+        socket.open(net);
+        response = socket.connect("things.ubidots.com", 80);
+        if(0 != response) {
+            printf("Error connecting: %d\n", response);
             socket.close();
             return;
-        } else {
-            size -= response;
-            // Check if entire message was sent or not
-            printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
         }
+        printf("Connected to the Server\n");
+        
+        /* Sensor acquisition */
+        // ADC sensors
+        //temp = adc_temp.read() * 100; // Converted in C
+        //batt = adc_vbat.read() * 30000;   // Converted in mV 
+        
+        // HTS221 sensors
+        printf("Temperature and humidity acquisition\n");
+        tempSensor.sample();
+        printf("\n");
+        t = (float) tempSensor.getTemperature();
+        temp = t/10;
+        h = (float) tempSensor.getHumidity();
+        hum = h/10;
+        printf("Luminosity acquisition\n");
+        sensor1.getALS();
+        sensor1.calcLux();
+        lux = (float) sensor1.full;
+        printf("Soil moisture acquisition\n");
+        moist_r = analog_value.read();
+        printf("Soil moisture conversion\n");
+        moist_v = moist_r*100;
+        //sen_hum_temp.get_humidity(&h_val);
+        //sen_hum_temp.get_temperature(&t_val);
+        
+        /* Construct content of HTTP command */
+        sprintf(message, "{\"temperature\": %0.2f, \"humidity\": %0.2f, \"soilmoisture\": %f, \"luminosite\": %0.2f}", temp, hum, moist_v, lux);
+        printf("Content Length = %d\r\n", (int)strlen(message));
+        
+        /* Construct HTTP command to send */
+        sprintf(sbuffer, "POST /api/v1.6/devices/%s/?token=%s HTTP/1.1\r\nHost: things.ubidots.com\r\nContent-Type: application/json\r\nContent-Length: %d\r\n\r\n%s", UBIDOTS_DEVICE, UBIDOTS_TOKEN, (int)strlen(message),message); 
+        printf("HTTP command %s\r\n", sbuffer);
+        wait(2.0);
+                     
+        /* Send http request to Ubidots */      
+        printf("Sending HTTP request to ubidots.com...\n");
+        nsapi_size_t size = strlen(sbuffer);
+        printf("send %d [%.*s]\r\n", size, strstr(sbuffer, "\r\n") - sbuffer, sbuffer);
+        response = 0;
+        while(size)
+        {
+            response = socket.send(sbuffer+response, size);
+            if (response < 0) {
+                printf("Error sending data: %d\n", response);
+                socket.close();
+                return;
+            } else {
+                size -= response;
+                // Check if entire message was sent or not
+                printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
+            }
+        }
+    
+        /* Receive a simple http response and print out the response line */
+        char respBuffer[64];
+        int rcount = socket.recv(respBuffer, sizeof respBuffer);
+        printf("recv %d [%.*s]\r\n", rcount, strstr(respBuffer, "\r\n") - respBuffer, respBuffer);
+        wait(10);
+        // Close the socket to return its memory and bring down the network interface
+        socket.close();
     }
-
-    // Recieve a simple http response and print out the response line
-    char rbuffer[64];
-    response = socket.recv(rbuffer, sizeof rbuffer);
-    if (response < 0) {
-        printf("Error receiving data: %d\n", response);
-    } else {
-        printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
-    }
-
-    // Close the socket to return its memory and bring down the network interface
-    socket.close();
 }
 
 int main()
@@ -129,11 +194,12 @@
 
     printf("WiFi example\n\n");
 
+    /*
     count = scan_demo(&wifi);
     if (count == 0) {
         printf("No WIFI APNs found - can't continue further.\n");
         return -1;
-    }
+    }*/
 
     printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
     int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
--- a/mbed_app.json	Tue Feb 27 14:07:49 2018 +0100
+++ b/mbed_app.json	Wed Mar 25 15:46:56 2020 +0000
@@ -1,83 +1,86 @@
-{
-    "config": {
-        "wifi-shield": {
-            "help": "Options are internal, WIFI_IDW0XX1",
-            "value": "internal"
-        },
-        "wifi-ssid": {
-            "help": "WiFi SSID",
-            "value": "\"SSID\""
-        },
-        "wifi-password": {
-            "help": "WiFi Password",
-            "value": "\"PASSWORD\""
-        },
-        "wifi-tx": {
-            "help": "TX pin for serial connection to external device",
-            "value": "D1"
-        },
-        "wifi-rx": {
-            "help": "RX pin for serial connection to external device",
-            "value": "D0"
-        },
-        "wifi-spi_miso": {
-            "help": "SPI-MISO connection to external device",
-            "value": "PC_11"
-        },
-        "wifi-spi_mosi": {
-            "help": "SPI-MOSI connection to external device",
-            "value": "PC_12"
-        },
-        "wifi-spi_sclk": {
-            "help": "SPI-CLOCK connection to external device",
-            "value": "PC_10"
-        },
-        "wifi-spi_nss": {
-            "help": "SPI chip select of external device",
-            "value": "PE_0"
-        },
-        "wifi-reset": {
-            "help": "WIFI module reset pin",
-            "value": "PE_8"
-        },
-        "wifi-dataready": {
-            "help": "WIFI module data ready pin",
-            "value": "PE_1"
-        },
-        "wifi-wakeup": {
-            "help": "WIFI module wakeup pin",
-            "value": "PB_12"
-        }
-    },
-    "target_overrides": {
-        "*": {
-            "platform.stdio-convert-newlines": true
-        },
-        "NUCLEO_L476RG": {
-            "wifi-tx": "D8",
-            "wifi-rx": "D2"
-        },
-        "NUCLEO_F401RE": {
-            "wifi-tx": "D8",
-            "wifi-rx": "D2"
-        },
-        "DISCO_L475VG_IOT1A": {
-            "wifi-spi_miso": "PC_11",
-            "wifi-spi_mosi": "PC_12",
-            "wifi-spi_sclk": "PC_10",
-            "wifi-spi_nss": "PE_0",
-            "wifi-reset": "PE_8",
-            "wifi-dataready": "PE_1",
-            "wifi-wakeup": "PB_12"
-        },
-        "DISCO_F413ZH": {
-            "wifi-spi_miso": "PB_4",
-            "wifi-spi_mosi": "PB_5",
-            "wifi-spi_sclk": "PB_12",
-            "wifi-spi_nss": "PG_11",
-            "wifi-reset": "PH_1",
-            "wifi-dataready": "PG_12",
-            "wifi-wakeup": "PB_15"
-        }
-    }
-}
+{
+    "config": {
+        "wifi-shield": {
+            "help": "Options are internal, WIFI_ESP8266, WIFI_IDW0XX1",
+            "value": "internal"
+        },
+        "wifi-ssid": {
+            "help": "WiFi SSID",
+            "value": "\"brand0388\""
+        },
+        "wifi-password": {
+            "help": "WiFi Password",
+            "value": "\"tloa7568\""
+        },
+        "wifi-tx": {
+            "help": "TX pin for serial connection to external device",
+            "value": "D1"
+        },
+        "wifi-rx": {
+            "help": "RX pin for serial connection to external device",
+            "value": "D0"
+        },
+        "wifi-spi_miso": {
+            "help": "SPI-MISO connection to external device",
+            "value": "PC_11"
+        },
+        "wifi-spi_mosi": {
+            "help": "SPI-MOSI connection to external device",
+            "value": "PC_12"
+        },
+        "wifi-spi_sclk": {
+            "help": "SPI-CLOCK connection to external device",
+            "value": "PC_10"
+        },
+        "wifi-spi_nss": {
+            "help": "SPI chip select of external device",
+            "value": "PE_0"
+        },
+        "wifi-reset": {
+            "help": "WIFI module reset pin",
+            "value": "PE_8"
+        },
+        "wifi-dataready": {
+            "help": "WIFI module data ready pin",
+            "value": "PE_1"
+        },
+        "wifi-wakeup": {
+            "help": "WIFI module wakeup pin",
+            "value": "PB_12"
+        }
+    },
+    "target_overrides": {
+        "*": {
+            "platform.stdio-convert-newlines": true
+        },
+        "UBLOX_EVK_ODIN_W2": {
+            "target.device_has": ["EMAC"]
+        },
+        "NUCLEO_L476RG": {
+            "wifi-tx": "D8",
+            "wifi-rx": "D2"
+        },
+        "NUCLEO_F401RE": {
+            "wifi-tx": "D8",
+            "wifi-rx": "D2"
+        },
+        "DISCO_L475VG_IOT1A": {
+            "wifi-spi_miso": "PC_11",
+            "wifi-spi_mosi": "PC_12",
+            "wifi-spi_sclk": "PC_10",
+            "wifi-spi_nss": "PE_0",
+            "wifi-reset": "PE_8",
+            "wifi-dataready": "PE_1",
+            "wifi-wakeup": "PB_12"
+        },
+        "DISCO_F413ZH": {
+            "wifi-spi_miso": "PB_4",
+            "wifi-spi_mosi": "PB_5",
+            "wifi-spi_sclk": "PB_12",
+            "wifi-spi_nss": "PG_11",
+            "wifi-reset": "PH_1",
+            "wifi-dataready": "PG_12",
+            "wifi-wakeup": "PB_15"
+        }
+    }
+}
--- a/mbed_app_ism43362.json	Tue Feb 27 14:07:49 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-{
-    "config": {
-        "wifi-shield": {
-            "help": "Options are internal, WIFI_ESP8266, WIFI_IDW0XX1",
-            "value": "internal"
-        },
-        "wifi-ssid": {
-            "help": "WiFi SSID",
-            "value": "\"SSID\""
-        },
-        "wifi-password": {
-            "help": "WiFi Password",
-            "value": "\"PASSWORD\""
-        },
-        "wifi-tx": {
-            "help": "TX pin for serial connection to external device",
-            "value": "D1"
-        },
-        "wifi-rx": {
-            "help": "RX pin for serial connection to external device",
-            "value": "D0"
-        },
-        "wifi-spi_miso": {
-            "help": "SPI-MISO connection to external device",
-            "value": "PC_11"
-        },
-        "wifi-spi_mosi": {
-            "help": "SPI-MOSI connection to external device",
-            "value": "PC_12"
-        },
-        "wifi-spi_sclk": {
-            "help": "SPI-CLOCK connection to external device",
-            "value": "PC_10"
-        },
-        "wifi-spi_nss": {
-            "help": "SPI chip select of external device",
-            "value": "PE_0"
-        },
-        "wifi-reset": {
-            "help": "WIFI module reset pin",
-            "value": "PE_8"
-        },
-        "wifi-dataready": {
-            "help": "WIFI module data ready pin",
-            "value": "PE_1"
-        },
-        "wifi-wakeup": {
-            "help": "WIFI module wakeup pin",
-            "value": "PB_12"
-        }
-    },
-    "target_overrides": {
-        "*": {
-            "platform.stdio-convert-newlines": true
-        },
-        "UBLOX_EVK_ODIN_W2": {
-            "target.device_has": ["EMAC"]
-        },
-        "NUCLEO_L476RG": {
-            "wifi-tx": "D8",
-            "wifi-rx": "D2"
-        },
-        "NUCLEO_F401RE": {
-            "wifi-tx": "D8",
-            "wifi-rx": "D2"
-        },
-        "DISCO_L475VG_IOT1A": {
-            "wifi-spi_miso": "PC_11",
-            "wifi-spi_mosi": "PC_12",
-            "wifi-spi_sclk": "PC_10",
-            "wifi-spi_nss": "PE_0",
-            "wifi-reset": "PE_8",
-            "wifi-dataready": "PE_1",
-            "wifi-wakeup": "PB_12"
-        },
-        "DISCO_F413ZH": {
-            "wifi-spi_miso": "PB_4",
-            "wifi-spi_mosi": "PB_5",
-            "wifi-spi_sclk": "PB_12",
-            "wifi-spi_nss": "PG_11",
-            "wifi-reset": "PH_1",
-            "wifi-dataready": "PG_12",
-            "wifi-wakeup": "PB_15"
-        }
-    }
-}
--- a/wifi-ism43362.lib	Tue Feb 27 14:07:49 2018 +0100
+++ b/wifi-ism43362.lib	Wed Mar 25 15:46:56 2020 +0000
@@ -1,2 +1,1 @@
 https://github.com/ARMmbed/wifi-ism43362/#e4ecc27e87d96072f7df62a25ef007986dc95c4e
-
--- a/wifi-x-nucleo-idw01m1.lib	Tue Feb 27 14:07:49 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://github.com/ARMmbed/wifi-x-nucleo-idw01m1/#5871f7011d7ff2c50e3faf992ebab88e9f69dc95
\ No newline at end of file