Midiendo temperatura con ESP8266 y DHT11 (2 / 3 steg)
Steg 2: Codigo
Lo primero que debemos realizar es wow la tarjeta de desarrollo ESP8266 en nuestro IDE de Arduino si aun ingen lo han realizado pueden seguir el siguiente instructable desde el paso 2:
Ahora debemos de wow la librería de DHT de Adafruit es una librería controlar el sensor DHT11 y DHT22, ademas funciona correctamente con el ESP8266
https://github.com/adafruit/DHT-sensor-Library
UNA vez reiniciado nuestro IDE ingresamos el siguiente código y cambiamos los datos de la wifi a la que lo vamos en conectar
Código sv gist: https://gist.github.com/sabas1080/68c0f5cf6d4bb363bc39
< p > / * DHTServer - ESP8266 Webserver med DHT sensor som indata < br >
Baserat på ESP8266Webserver, DHTexample och BlinkWithoutDelay (tack)
Version 1.0 5/3/2014 Version 1.0 Mike Barela för Adafruit
*/
#include
#include
#include
#include
#define DHTTYPE DHT11
#define DHTPIN 13
CONST char * ssid = "Namn Wifi";
CONST char * lösenord = "Lösenord wifi";
ESP8266WebServer server(80);
Initiera DHT sensor
Obs: för att arbeta med en snabbare än ATmega328p 16 MHz Arduino chip, som en ESP8266,
behöver du höja tröskeln för cykel räknas anses vara en 1 eller 0.
Du kan göra detta genom att skicka en 3: e parametern för detta tröskelvärde. Det är lite
för mygel för att hitta rätt värde, men i allmänhet snabbare CPU den
högre värde. Standard för en 16mhz AVR är ett värde av 6. För en
Arduino Due som körs på 84mhz ett värde av 30 verk.
Detta är för ESP8266 processorn på ESP-01
DHT dht (DHTPIN, DHTTYPE, 11); 11 fungerar bra för ESP8266
float fuktighet, temp_f; Värdena läsas från sensorn
String webString = ""; Strängen ska visas
I allmänhet bör du använda "osignerade långa" för variabler som håller tiden
osignerade långa previousMillis = 0; kommer att lagra senaste temp lästes
CONST långa intervall = 2000. intervall som du vill läsa sensor
void handle_root() {
Server.send (200, "text/plain", "Hej från vädret esp8266, läsa från /temp eller /humidity");
Delay(100);
}
void setup(void)
{
Du kan öppna fönstret Arduino IDE Serial Monitor för att se vad koden gör
Serial.BEGIN(115200); Seriell anslutning från ESP-01 via 3.3V trösta kabel
DHT.BEGIN(); initiera temperaturgivare
Ansluta till WiFi-nätverk
WiFi.begin (ssid, lösenord);
Serial.Print ("\n\r \n\rWorking att ansluta");
Vänta för anslutning
medan (WiFi.status()! = WL_CONNECTED) {
Delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("DHT väder behandlingen Server");
Serial.Print ("ansluten till");
Serial.println(SSID);
Serial.Print ("IP-adress:");
Serial.println(WiFi.localIP());
Server.on ("/", handle_root);
Server.on ("/ temp", [] () {/ / om du lägger till denna underkatalog på din webserver samtal, du få texten nedan :)
gettemperature(); Läs sensor
webString = "temperatur:" + String((int)temp_f) + "C". Arduino har svårt med float till sträng
Server.send (200, "text/plain", webString); Skicka till någons webbläsare när frågan
});
Server.on ("/ luftfuktighet", [] () {/ / om du lägger till denna underkatalog på din webserver samtal, du få texten nedan :)
gettemperature(); Läs sensor
webString = "luftfuktighet:" + String((int)humidity) + "%".
Server.send (200, "text/plain", webString); Skicka till någons webbläsare när frågan
});
Server.BEGIN();
Serial.println ("HTTP server började");
}
void loop(void)
{
server.handleClient();
}
void gettemperature() {
Vänta minst 2 sekunder sekunder mellan mätningarna.
om skillnaden mellan den aktuella tiden och sista gången du läser
sensorn är större än det intervall du har angett, läsa sensorn
Fungerar bättre än fördröjning för saker som händer på andra ställen också
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > = intervall) {
Spara sista gången läsa du sensorn
previousMillis = currentMillis;
Läst temperatur för luftfuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor)
fukt = dht.readHumidity(); Läs fuktighet (procent)
temp_f = dht.readTemperature(); Läs temperatur som Celsius
Kontrollera om någon läser misslyckades och avsluta tidigt (för att försöka igen).
om (isnan(humidity) || isnan(temp_f)) {
Serial.println ("kunde inte läsa från DHT sensorn!");
hemkomst.
}
}
} < /p >
Ponemos el modo Boot el ESP8266 y el cargamos skiss