Publicat la data

Lua ESP8266MOD Server DHT 11(22)

Lua ESP8266MOD Server DHT 11(22)

pagina

Necesar:

  1. Modul Lua ESP8266MOD Wireless
  2. Senzor temperatură şi umiditate DHT11

  3. Breadboard 420

  4. Cabluri Dupont (10 bucaţi) tată-tată

ESP8266MOD DHT11/DHT22 Temperature and Humidity Web Server

esp8266mod-dht

În acest proiect, veți crea un server web independent cu un ESP8266 care afișează temperatura și umiditatea cu un senzor DHT11 sau DHT22 folosind Arduino IDE (rezistența din poză nu e neapărat necesară). Serverul web pe care îl veți construi poate fi accesat cu orice dispozitiv care are un browser în rețeaua dvs. locală.

Installing the DHT Library for ESP8266

1. Deschideți IDE-ul Arduino și accesați Sketch > Include Library > Manage Libraries. Managerul bibliotecii ar trebui să se deschidă.

2. Căutați „DHT” în caseta Căutare și instalați biblioteca DHT de la Adafruit.

adafruit_dht_library

3. După instalarea bibliotecii DHT de la Adafruit, tastați „Adafruit Unified Sensor” în caseta de căutare. Derulați până la capăt pentru a găsi biblioteca și a o instala.

adafruit_unified_sensor_library

După instalarea bibliotecilor, restart ID-ul Arduino.

Instalează :

Installing the ESPAsyncWebServer library:  https://github.com/me-no-dev/ESPAsyncWebServer

Installing the ESPAsync TCP Library:  https://github.com/me-no-dev/ESPAsyncTCP

Install the ESP8266 Board in Arduino IDE

4-install-esp8266-board

1-install-esp8266-board-add-on-in-arduino-ide-search-esp8266

2-esp8266-board-add-on-in-arduino-ide-installed

3-install-esp8266-board-add-on-in-arduino-ide-select-board

Deschideți ID-ul Arduino și copiați următorul cod :

// ROBOROMANIA LUA ESP8266MOD DHT
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

// completează cu nume și parolă locală Wifi network
const char* ssid = „DIGI-24”;
const char* password = „robo”;

#define DHTPIN D1 // Digital pin D1 connected to the DHT sensor

// tip senzor
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

float t = 0.0;
float h = 0.0;

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
unsigned long previousMillis = 0; // will store last time DHT was updated

// Updates DHT readings every 10 seconds
const long interval = 10000;

const char index_html[] PROGMEM = R”rawliteral(
<!DOCTYPE HTML><html>
<head>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<link rel=”stylesheet” href=”https://use.fontawesome.com/releases/v5.7.2/css/all.css” integrity=”sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr” crossorigin=”anonymous”>
<style>
html {
font-family: Arial;
display: inline-block;
margin: 0px auto;
text-align: center;
}
h2 { font-size: 2.0rem; }
p { font-size: 2.0rem; }
.units { font-size: 1.2rem; }
.dht-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
}
</style>
</head>
<body>
<h2>ESP8266 DHT SERVER ROBOROMANIA roboromania.ro</h2>
<p>
<i class=”fas fa-thermometer-half” style=”color:#059e8a;”></i>
<span class=”dht-labels”>Temperature</span>
<span id=”temperature”>%TEMPERATURE%</span>
<sup class=”units”>&degC</sup>
</p>
<p>
<i class=”fas fa-tint” style=”color:#00add6;”></i>
<span class=”dht-labels”>Humidity</span>
<span id=”humidity”>%HUMIDITY%</span>
<sup class=”units”>%</sup>
</p>

<p style=”font-size:80px”>&#128540;</p>
</body>
<script>
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(„temperature”).innerHTML = this.responseText;
}
};
xhttp.open(„GET”, „/temperature”, true);
xhttp.send();
}, 10000 ) ;

setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(„humidity”).innerHTML = this.responseText;
}
};
xhttp.open(„GET”, „/humidity”, true);
xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral”;

// Replaces placeholder with DHT values
String processor(const String& var){
//Serial.println(var);
if(var == „TEMPERATURE”){
return String(t);
}
else if(var == „HUMIDITY”){
return String(h);
}
return String();
}

void setup(){

Serial.begin(115200);
dht.begin();

// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.println(„Connecting to WiFi”);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(„.”);
}

// Print ESP8266 Local IP Address
Serial.println(WiFi.localIP());

// Route for root / web page
server.on(„/”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/html”, index_html, processor);
});
server.on(„/temperature”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/plain”, String(t).c_str());
});
server.on(„/humidity”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/plain”, String(h).c_str());
});

// Start server
server.begin();
}

void loop(){
unsigned long currentMillis = millis();
if (currentMillis – previousMillis >= interval) {
// save the last time you updated the DHT values
previousMillis = currentMillis;
// Read temperature as Celsius (the default)
float newT = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float newT = dht.readTemperature(true);
// if temperature read failed, don’t change t value
if (isnan(newT)) {
Serial.println(„Failed to read from DHT sensor!”);
}
else {
t = newT;
Serial.println(t);
}
// Read Humidity
float newH = dht.readHumidity();
// if humidity read failed, don’t change h value
if (isnan(newH)) {
Serial.println(„Failed to read from DHT sensor!”);
}
else {
h = newH;
Serial.println(h);
}
}
}

//––––––––––––-

Atenție la declararea pinilor. Dacă copiați codul atenție la fonturi.

Pe serial veți afla IP-ul dat de server și dacă senzorul e ok.

serial

Serverul web pe care îl veți construi poate fi accesat cu orice dispozitiv care are un browser în rețeaua dvs. locală.

pagina

web-server-labeled

Succes!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *