Ich bekomme auf den Serial Monitor folgende Ausgabe...
0cm
Bewegung erkannt...
Die Benachrichtigung via TelegramBot funktioniert.
Irgendwas mit der Messung der Entfernung scheint nicht zu funktionieren.
Habe ich im folgenden Code was falsch geschrieben?
Sitze schon ewig davor und finde den Fehler nicht!
//Bibliotheken
#include <ESP8266WiFi.h> //D1 Mini
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Deine WLAN-Zugangsdaten
const char* ssid = "xxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxx";
// Den Telegram-Bot initialisieren
#define botToken "xxxxxxxxxxxxxxxxxxx"
//Deine User ID
#define userID "xxxxxxxxxxxxxxx"
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
const int trigPin = 14; //D5
const int echoPin = 22; //D6
long dauer = 0;
long entfernung = 0;
//Verbindung zum WLAN
void connectToWiFi() {
Serial.print("Verbinde mich mit: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(300);
}
Serial.println("");
Serial.println("Verbunden!");
}
void setup() {
Serial.begin(115200);
client.setInsecure();
// Verwendeter Pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delay(5);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
dauer = pulseIn(echoPin, HIGH);
entfernung = (dauer / 2) * 0.03432;
Serial.print(entfernung);
Serial.println(" cm");
if (entfernung <= 20) {
// Wenn der Wert für die Entfernung unter
// oder gleich 20cm ist, dann...
connectToWiFi();
bot.sendMessage(userID, "Bewegung erkannt!", "");
Serial.println("Bewegung erkannt");
WiFi.disconnect();
}
}
10 Microsekunden. Mindestens. Du hast den Ultraschallsensor an einem ESP8266.
Der hat nur 3,3V
Möglicherweise wird ein 10µS kurzer Pulse mit nur 3,3V nicht erkannt.
Pulse mal länger machen 20µS
5v/3,3v Pegelwandler ist mit dabei, daran kann es nicht liegen!
Ich bin heute nochmals durch den Sketch gegangen und habe den Fehler gefunden!
Ständig wurde mir 0 cm angezeigt, ja klar muss ja den der echoPin = 22 ist falsch es sollte eigentlich ne 12 da stehen
richtig wäre echoPin = 12
Jetzt funktioniert alles!
//Bibliotheken
#include <ESP8266WiFi.h> //D1 Mini
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Deine WLAN-Zugangsdaten
const char* ssid = "xxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxx";
// Den Telegram-Bot initialisieren
#define botToken "xxxxxxxxxxxxxxxxxxx"
//Deine User ID
#define userID "xxxxxxxxxxxxxxx"
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
const int trigPin = 14; //D5
const int echoPin = 12; //D6
long dauer = 0;
long entfernung = 0;
//Verbindung zum WLAN
void connectToWiFi() {
Serial.print("Verbinde mich mit: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(300);
}
Serial.println("");
Serial.println("Verbunden!");
}
void setup() {
Serial.begin(115200);
client.setInsecure();
// Verwendeter Pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delay(5);
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
dauer = pulseIn(echoPin, HIGH);
entfernung = (dauer / 2) * 0.03432;
Serial.print(entfernung);
Serial.println(" cm");
if (entfernung <= 150) {
// Wenn der Wert für die Entfernung unter
// oder gleich 150cm ist, dann...
connectToWiFi();
bot.sendMessage(userID, "Bewegung erkannt!", "");
Serial.println("Bewegung erkannt");
WiFi.disconnect();
}
}