Das zweiundzwanzigste Türchen

Poco antes de Navidad, la mayoría de la gente seguramente pensará en ganso asado y bolas de chocolate para árboles de Navidad. Querido buen Santa, mira tu vara, siempre quiero ser bueno (o algo así). Pero el invierno tiene más que ofrecer que solo vacaciones. Father Frost asegura que también deberíamos echar un vistazo ocasional al termómetro, especialmente como conductor u otro usuario de la carretera que debería salir antes en medio de niebla o hielo negro.

El contenido detrás de la pequeña puerta de hoy es perfecto: un ESP8266-12F altamente flexible en forma de Lolin V3 sin soldar.

¿Cuáles son las claras ventajas y fortalezas de este microcontrolador? En primer lugar, es un ESP8266 de alto rendimiento con muchos pines para conectar sensores y actuadores. Y por supuesto, puede integrarlo con WiFi en el WiFi de su hogar. Dado que la placa viene sin soldar, existen otras posibilidades además de usar una placa de pruebas.

La siguiente configuración de prueba es adecuada para medir los datos atmosféricos debajo de la cochera o en el balcón / terraza. En un primer paso, mostraré los datos meteorológicos en el monitor en serie, luego me basaré en esto para mostrar los datos en la WLAN.


La Figura 1 muestra la configuración para medir la temperatura y la humedad relativa con el sensor BME280.

¿Le faltan los cables de puente en la imagen? Lo moví debajo del microcontrolador para pasar con una "media placa". La placa de pruebas se vuelve aún más estrecha si quita las tiras de la fuente de alimentación.

Alternativamente, en lugar de las tiras de pines, puede soldar en las llamadas tiras de resorte, también conocidas como tiras de enchufe (no incluidas en la entrega).


Entonces no necesita una placa de prueba y puede conectar el sensor directamente. Si, como yo, utiliza el sensor combinado de presión de aire, temperatura y humedad BME280, 4 regletas de enchufes pueden ser suficientes. Aconsejo no soldar en el sensor para poder reemplazarlo si es necesario.


La conexión no es un problema con los cuatro pines. Solo necesitamos la fuente de alimentación y las dos conexiones I2C : SDA y SCL, que están aquí en SDA = D6 = GPIO12 y SCL = D5 = GPIO14.

El boceto también ofrece la opción de adaptar líneas individuales para la versión SPI del sensor. Sin embargo, el BME280 de la gama AZ-Delivery solo es compatible con I2C.


// Example testing sketch for various DHT humidity/temperature sensors written by ladyada
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include <Wire.h>

//Sensor
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // I2C
/* pins for SPI
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 4
*/
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime = 2000;
float tempC;
float humid;
float pressure;

void setup() {
//Sensor
  Serial.begin(74880);
  Wire.begin(12,14);
  while(!Serial); // time to get serial running
  Serial.println(F("BME280 test"));

  unsigned status;

// default settings
  status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
    Serial.print("SensorID was: 0x"); 
    Serial.println(bme.sensorID(),16);
    Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
    Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
    Serial.print(" ID of 0x60 represents a BME 280.\n");
    Serial.print(" ID of 0x61 represents a BME 680.\n");
    while (1) delay(10);
  }
}

void loop() {
// Sensor
// Wait a few seconds between measurements.
  delay(delayTime);

// Read temperature as Celsius (the default)
  tempC = bme.readTemperature();
// Read rel. humidity
  humid = bme.readHumidity();
// Read air pressure
  pressure = bme.readPressure() / 100.0;

  Serial.print(F("Air Pressure: "));
  Serial.print(pressure,1);
  Serial.print(F(" HPa "));
  Serial.print(F(" Humidity: "));
  Serial.print(humid,1);
  Serial.print(F("% Temperature: "));
  Serial.print(tempC,1);
  Serial.println(F("°C "));
  Serial.println();

Descarga Code1

Aquí hay una captura de pantalla de la salida en el monitor en serie:


Ahora queremos agregar el registro en la WLAN doméstica; luego, los datos se pueden leer en la PC o en el smartphone en el navegador. Asegúrese de incluir sus datos WiFi (SSID y contraseña) antes de cargar el boceto.

// Example testing sketch for various DHT humidity/temperature sensors written by ladyada
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
// modified for WiFi by Team AZ-Delivery.de
// add your SSID and password below

#include <Wire.h>
// Server
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
const char* SSID = "-----your SSID-----";
const char* PASSWORD = "---your password---";
ESP8266WebServer server(80);

//Sensor
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme; // I2C
/* pins for SPI
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 4
*/
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime = 2000;
float tempC;
float humid;
float pressure;

void setup() {
//Sensor
  Serial.begin(74880);
  Wire.begin(12,14);
  while(!Serial); // time to get serial running
  Serial.println(F("BME280 test"));

  unsigned status;

// default settings
  status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
    Serial.print("SensorID was: 0x");
    Serial.println(bme.sensorID(),16);
    Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
    Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
    Serial.print(" ID of 0x60 represents a BME 280.\n");
    Serial.print(" ID of 0x61 represents a BME 680.\n");
    while (1) delay(10);
  }

// Server
  Serial.begin(74880);
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.printf("Connected to %s.\n", SSID);
  Serial.printf("IP-Address: %s.\n", WiFi.localIP().toString().c_str());

  if (MDNS.begin("Lolin32")) {
    Serial.println("MDNS-Responder started.");
  }

  server.on("/", handleRoot);

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP-Server started.");

}

void loop() {
// Sensor
// Wait a few seconds between measurements.
  delay(delayTime);

// Read temperature as Celsius (the default)
  tempC = bme.readTemperature();
// Read rel. humidity
  humid = bme.readHumidity();
// Read air pressure
  pressure = bme.readPressure() / 100.0;

  Serial.print(F("Air Pressure: "));
  Serial.print(pressure,1);
  Serial.print(F(" HPa "));
  Serial.print(F(" Humidity: "));
  Serial.print(humid,1);
  Serial.print(F("% Temperature: "));
  Serial.print(tempC,1);
  Serial.println(F("°C "));
  Serial.println();
 
// Server
  server.handleClient();

server.on("/Sensor", HTTP_GET, []() {
  String message = "<!doctype html>\n";
  message += "<html>\n";
  message += " <head>\n";
  message += " <title>Lolin V3 und BME280</title>\n";
  message += " </head>\n";
  message += " <body>\n";
  message += " <h1>Air Pressure: ";
  message += String(pressure, 1);
  message += " HPa;</h1>\n";
  message += " <h1>Temperature: ";
  message += String(tempC, 2);
  message += " &#8451;</h1>\n";
  message += " <h1>Rel. Humidity: ";
  message += String(humid, 0);
  message += " %</h1>\n";
  message += " </body>\n";
  message += "</html>\n";
  server.send(200, "text/html", message);
  });
}

void handleRoot() {
  server.send(200, "text/plain", "Here is your LolinV3!");
}

void handleNotFound() {
  String message = "Path ";
  message += server.uri();
  message += " not found.\n";
  server.send(404, "text/plain", message);
}


Descargar Code2

Después del inicio o del reinicio, usted verá la dirección IP del Lolin V3-8266 en el serial Monitor antes de la presión del aire, Rel. humedad y temperatura en un bucle infinito.


Y así todo el asunto en el navegador, simplemente la dirección IP, complementado por /sensor enter.



Les deseo una bendecida Navidad y todo lo mejor para el año 2021.

Specials

3 comentarios

Bernd Albrecht

Bernd Albrecht

@ A. Freudenstein
Hallo und vielen Dank für Ihr Interesse an unseren Produkten und Blog-Beiträgen.
Ich mache keinen Hehl daraus, dass ich aufgrund des letzten Satzes geneigt war, Ihren Kommentar komplett zu löschen. Aber mein Lehrer sagte immer „Sine ira et studio“. Selbstverständlich kann immer etwas beim Hochladen oder Verlinken schief gehen. Also habe ich die Verlinkung aus dem Blog genommen, die beiden Sketches heruntergeladen und gestartet, das richtige Micro Controller Board eingestellt und das Kompilieren gestartet. Beide Sketche wurde ohne Fehlermeldung kompiliert.
Aufgrund Ihrer Angaben kann ich den Fehler bei Ihnen leider nicht abschließend analysieren; ich vermute falsche Board-Einstellung oder nicht-kompatible Bibliotheken.
Wenn die Probleme fortbestehen, wenden Sie sich bitte an unseren Service.

A. Freudenstein

A. Freudenstein

Hallo,
versuchte, über Weihnachten das 22. Türchen zum Laufen zu bringen, nachdem ich mir die Teile original bei az.delivery bestellt und auch noch rechtzeitig erhalten hatte.
Dachte, recht einfache Sache. Trugschluß!
Beim Kompilieren traten Fehler über Fehler auf, die ich nach und nach beseitigt hatte, bis zum Schluß der Fehler mit der wire.h Bibliothek noch übrig blieb, der sich nicht beseitigen ließ und ein Fehler in der Zeile ca. 45, beginnt mit: Serial.println(bme.sensorID(),16);
Frage: Gibt es mittlerweile irgendwo schon eine lauffähige Version, die mir jemand zukommen lassen kann? (Beide Versionen, Code 1 + 2)?
Damit das Suchen und Basteln ein Ende hat.
Wurden die Versionen vom Verfasser des Blogs ausprobiert?
MfG
A. Freudenstein

Matthias Kasper

Matthias Kasper

Hallo zusammen,

genau dafür habe ich schon vor einiger Zeit ein Gehäuse zum 3D-Druck konstruiert. Das kann auf Thingiverse mit dem Link https://www.thingiverse.com/thing:4672436 runter geladen werden.

Mit freundlichen Grüßen
Matthias

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas