DS18b20 Temperatursensor mit ESP-01-Modul für ioBroker

In diesem Artikel werde ich zeigen, dass wir die Temperatur mit dem OneWire-Thermometersensor Dallas DS18b20 messen und Daten mit dem Modul ESP8266-01 mithilfe des MQTT-Protokolls an ioBroker übertragen können.


Sie brauchen möglicherweise:

ESP8266 ESP-01S WLAN Modul

Breadboardadapter für ESP-01S

Programmieradapter USB für ESP8266-01

DS18B20 digitaler Temperatursensor TO92-55°C – +125°C

FT232RL USB zu TTL Serial Adapter für 3,3V und 5V

Widerstände Resistor Kit 525 0 Ohm -1M Ohm


Das ESP8266-01-Modul ist ein kleines, kostengünstiges Modul mit 2 Pins für die serielle Datenleitung und 2 Allzweck-E / A. Sie können zur Verwendung von i2c- oder OneWire-Geräten verwendet werden. Letzteres verwenden wir jetzt, um den Temperatursensor DS18b20 mit dem TO92-Gehäuse zu verbinden.

Wir brauchen einen weiteren 4,7K Widerstand, die Datenleitung muss bis zur Stromversorgung hochgezogen werden.

Beachtung! Das ESP8266-01-Modul kann nur 3,3 V aushalten, es verträgt 5 V nicht gut, der Rauch tritt sofort aus.

Mal sehen, die Verbindung:

ESP8266-01 und DS18b20
ESP8266-01 und DS18b20

Wenn Sie es noch nicht haben, vergessen Sie nicht die erforderlichen Verzeichnisse und laden Sie die folgende Arduino-Skizze hoch:

/****************************************************************/

//  Generic ESP8266 module
//  Flash size: 1M (no SPIFFS)

/****************************************************************/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>


const char* ssid = "ssid";
const char* password = "wifi Passwort";
const char* mqtt_server = "MQTT.Server.IP.Address";

unsigned long previousMillis = 0;
unsigned long lastMsg = 0;
char msg[25];

OneWire oneWire(2);
DallasTemperature sensors(&oneWire);
WiFiClient espClient;
PubSubClient client(espClient);

void setup() 
{
  sensors.begin();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
  }
  client.setServer(mqtt_server, 1883);
}

void loop() 
{
  if (!client.connected()) 
  {
    reconnect();
  }
  client.loop();

  unsigned long Millis = millis();
  if (Millis - lastMsg > 30000)
  {
    lastMsg = Millis;
    char MsgTemp[10];
    sensors.requestTemperatures();
    float h = (sensors.getTempCByIndex(0));
    dtostrf(h, 4, 2, MsgTemp);
    client.publish("DS18b20_topic", MsgTemp);
  }
}

void reconnect() 
{
  while (!client.connected()) 
  {
    String clientId = "ESP8266_DS18b20";
    if (client.connect(clientId.c_str()))
    {
      // pass
    } 
    else 
    {
      delay(6000);
    }
  }
}

Der ESP-01 verfügt nicht über eine integrierte serielle USB-Schnittstellenschaltung, daher muss diese wie unten gezeigt separat vorbereitet werden. Der ESP-01 GPIO 0 Pin muss zum Programmieren auf GND gezogen werden! Dies ist für die normale serielle Kommunikation nicht erforderlich.

ESP8266-01 und das FTDI FT232RL-Modul
ESP8266-01 und das FTDI FT232RL-Modul

Oder Sie können einen Adapter wie diesen kaufen:

USB-zu-ESP8266-Modul, serielle WLAN-Schnittstelle, Entwicklungsplatine und ESP-01-Adatper
werbung

Aber das müssen Sie noch tun, weil es nur eine serielle Schnittstelle ist. Wir brauchen einen Zwisenstück, um GPIO 0 auf GND zu bringen. So was:

Eine kleine Überarbeitung der seriellen Schnittstelle
Eine kleine Überarbeitung der seriellen Schnittstelle

Klicken Sie hier für ähnliche Beschreibungen.

Ich hoffe, Ihnen hat der Artikel gefallen und er war eine nützliche Information für Sie.