Linkit One and a SHT31 readings on a web page

In this example we will expand on our SHT 31 example – Linkit One and a SHT31 temperature and humidity sensors and we will output the temperature and humidiity on a web page

The layout is the same as previous

Layout

%e2%80%8clinkitone-and-sht31_bb

Code

This example uses the adafruit sht31 library – https://github.com/adafruit/Adafruit_SHT31

Similar to our LM35 example but we added a little table to display the temperature and humidity on the page, just an example of how easy it is

[codesyntax lang=”cpp”]

#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
#include <LTask.h>
#include <LWiFi.h>
#include <LWiFiServer.h>
#include <LWiFiClient.h>

#define WIFI_AP "ssid here"
#define WIFI_PASSWORD "password here"
#define WIFI_AUTH LWIFI_WPA                 // choose from LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP according to your WiFi AP configuration


LWiFiServer server(80);
Adafruit_SHT31 sht31 = Adafruit_SHT31();

float t,h;
int outputpin= A0;


float getTemperature()
{
    t = sht31.readTemperature();
    if (! isnan(t)) 
    {
      Serial.print("Temp *C = "); Serial.println(t);
    } 
    else 
    { 
      Serial.println("Failed to read temperature");
    }
}

void getHumidity()
{
    h = sht31.readHumidity();
    if (! isnan(h)) 
    {
      Serial.print("Hum. % = "); Serial.println(h);
    } 
    else 
    { 
      Serial.println("Failed to read humidity");
    }
    Serial.println();
}

void setup()
{
    LTask.begin();
    LWiFi.begin();
    Serial.begin(9600);
    //while(!Serial.available());     // input anything to start the program
    if (! sht31.begin(0x44)) 
    {
      Serial.println("Couldn't find SHT31");
      while (1) delay(1);
    }

    // keep retrying until connected to AP
    Serial.println("Connecting to AP");
    while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
    {
        delay(1000);
    }

    printWifiStatus();

    Serial.println("Start Server");
    server.begin();
    Serial.println("Server Started");
}

int loopCount = 0;

void loop()
{
    // put your main code here, to run repeatedly:
    delay(500);
    loopCount++;
    LWiFiClient client = server.available();
        
    getTemperature();
    getHumidity();
    if (client)
    {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        
        unsigned long timer_out = millis();
        
        while (client.connected())
        {
        
            if(millis()-timer_out > 5000)break;
            
            if (client.available())
            {
                // we basically ignores client request, but wait for HTTP request end
                int c = client.read();
                Serial.print((char)c);

                if (c == '\n' && currentLineIsBlank)
                {
                    Serial.println("send response");
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");  // the connection will be closed after completion of the response
                    client.println("Refresh: 5");  // refresh the page automatically every 5 sec
                    client.println();
                    client.println("<!DOCTYPE HTML>");
                    client.println("<html>");
                    client.println("<h2>Temperature and humidity Example</h2>");
                    client.println("<table border=1>");
                    client.println("<tr><td>Temperature</td><td>");
                    client.println(t);
                    client.println("</td></tr>");
                    client.println("<tr><td>Humidity</td><td>");
                    client.println(h);
                    client.println("</td></tr>");
                    client.println("</table>");
                    client.println("</html>");
                    client.println();
                    break;
                }
                if (c == '\n')
                {
                    // you're starting a new line
                    currentLineIsBlank = true;
                }
                else if (c != '\r')
                {
                    // you've gotten a character on the current line
                    currentLineIsBlank = false;
                }
            }
        }
        // give the web browser time to receive the data
        delay(500);

        // close the connection:
        Serial.println("close connection");
        client.stop();
        Serial.println("client disconnected");
    }
}

void printWifiStatus()
{
    // print the SSID of the network you're attached to:
    Serial.print("SSID: ");
    Serial.println(LWiFi.SSID());

    // print your WiFi shield's IP address:
    IPAddress ip = LWiFi.localIP();
    Serial.println("Please open your browser, and input the following address:");
    Serial.println(ip);

    Serial.print("\r\nsubnet mask: ");
    Serial.println(LWiFi.subnetMask());

    Serial.print("gateway IP: ");
    Serial.println(LWiFi.gatewayIP());

    // print the received signal strength:
    long rssi = LWiFi.RSSI();
    Serial.print("signal strength (RSSI):");
    Serial.print(rssi);
    Serial.println(" dBm");
}

[/codesyntax]

 

Testing

navigate to the ip address in your favourite web browser

Temperature and humidity Example

Temperature 23.33
Hunidity 56.20

 

 

Link
1PCS/LOT SHT31 Temperature & SHT31-D Humidity Sensor module Breakout Weather for Arduino