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:
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:
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.
Oder Sie können einen Adapter wie diesen kaufen:
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:
Klicken Sie hier für ähnliche Beschreibungen.
Ich hoffe, Ihnen hat der Artikel gefallen und er war eine nützliche Information für Sie.