BTS Mesure BTS Mesure
ESP01Arduino/ PCESP01/DHT11SQL.phpgraphesLabview

L'ESP01 seul avec un DHT11

L'ESP01 dispose d'une liaison UART (Rx et Tx) mais aussi de 2 GPIO (General Purpose Input/Output, littéralement Entrée-sortie à usage général)

On peut donc l'utiliser seul avec un capteur à une ou deux  sorties numériques, par exemple le capteur de température et humidité DHT11 ou DHT22.

Cela permet d'avoir un capteur connecté minuscule... Il suffit d'alimenter ce bloc en 5 V, avec un panneau solaire par exemple...

Voici un exemple de programme

#include <ESP8266WiFi.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

const char* ssid     = "tpil";
const char* password = "12345678";
const char* host = "bts2m.free.fr";  // Adresse du serveur 
const int httpPort = 80;

int value = 0;
float t,h,pile;
unsigned long t0;

void setup() {
  dht.begin();
  Serial.begin(115200);
  Serial.println(ssid);
  delay(2000);
  Serial.println();
  Serial.print("Connexion a ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay (500);
  Serial.println(WiFi.localIP());
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  delay(500);
}

void loop() {
  t0=millis();
  value++;
  
  WiFiClient client;
  if (!client.connect(host, httpPort))return;

Serial.println(host);
// Mise en forme et envoi de la requête GET au serveur

t = dht.readTemperature();
h = dht.readHumidity();
if (isnan(t)) t=0;
if (isnan(h)) h=0;
pile=5+5*sin(2*3.1416/20*value);
String url = "/Wifi/sql.php?table=1&M1="+String(t,1)+"&M2="+String(h,1)
    +"&M3="+String(pile);

// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
                
while (client.available() == 0) {
    if (millis() - t0 > 5000) {
      client.stop();
      return;
    }} 
while (client.available()) {
     String line = client.readStringUntil('\r');
     Serial.print(line);}
// delay(30000);     
while (millis()-t0<30000) delay(10);    // 30s entre 2 mesures
}