ESP8266 12E - SDS011 nicht funktionstüchtig nach Power-off

Ich habe mir einen SDS011 Sensor zugelegt, mit dem ich die Feinstaubwerte mit meinem ESP8266 12E lese und via MQTT an meinen Broker schicke. Ich verwende dabei soweit den gleichen Code wie bei meinem ESP8266 12E und meinem BME680 Sensor. Jedoch habe ich beim SDS011 das Problem, dass nach dem hochladen des Sketches alles funktioniert, jedoch nach einem Power Cylce nichts mehr geht. Zudem kann ich den Sketch nicht hochladen, wenn der Sensor gleichzeitig verbunden ist.

Code:

#include <Wire.h>
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
#include <SDS011-select-serial.h>
#include <SoftwareSerial.h>

float p10,p25;
int error;

SoftwareSerial mySerial(D8, D7); // RX, TX
SDS011 my_sds(mySerial);

const char* ssid = "ssid";
const char* password =  "password";
const char* mqttServer = "fqdn";
const int mqttPort = 8883;
const char* mqttUser = "user";
const char* mqttPassword = "password";

WiFiClientSecure espClient;
PubSubClient client(espClient);




void setup() {
  Serial.begin(115200);
  while (!Serial);
  mySerial.begin(9600);
}

void loop() {
  String hostname = "hostname";
  WiFi.hostname(hostname);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  error = my_sds.read(&p25,&p10);
  delay(1000);
  
  String JSONdata ="{\"node_data\": {\"hostname\": \"ESP826612E-2-Balkon\", \"mac-address\": \"mac\"}, \"p25\": " + String(p25) + ", \"p10\": " + String(p10) + "}";
  char data[240];
  JSONdata.toCharArray(data, 240);
  Serial.println(data);
  client.setServer(mqttServer, mqttPort);
 
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
 
    if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {
 
      Serial.println("connected");  
 
    } else {
 
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(2000);
 
    }
  }
client.publish("topic",data);
delay(300000);
}

Jemand eine Idee warum das nicht geht?

Gemäß den Informationen bei Watterott spricht das Teil im Gegensatz zum BME680 weder I2C noch SPI.
Dann kann es mit dem gleichen Code auch nicht funktionieren.

Gruß Tommy

Hi

Die sinnlosen delay() haben welchen Sinn?
WO ist der Sensor eigentlich angeschlossen?
Beim Überfliegen fiel mir nicht auf, wo Das sein könnte.

MfG

So wie ich es sehe, ist der Sensor an SoftwareSerial angeschlossen.

Meine Vermutung ist, dass der Sensor Probleme wegen der Spannung hat.
Poste doch mal, wie du den angeschlossen hast.

Senor ist direkt an D8 sowie D7 für Serial angeschlossen, sowie VIN für + und GND für -. Wie bereits erwähnt, wenn ich den Sketch hochlade läuft es für Stunden. Erst wenn ich ein Power Cyclr mache geht es nicht mehr.

darox:
Senor ist direkt an D8 sowie D7 für Serial angeschlossen, sowie VIN für + und GND für -. Wie bereits erwähnt, wenn ich den Sketch hochlade läuft es für Stunden. Erst wenn ich ein Power Cyclr mache geht es nicht mehr.

Und welche Spannung ist bei dir Vin ?
Warum kein Schaltbild ?
Da steht sowas normal drin.

Sensor braucht 5V und ESP8266 12E ist an einem 5V 2A Netzteil

darox:
Sensor braucht 5V und ESP8266 12E ist an einem 5V 2A Netzteil

Und du gibst jetzt über Serial 5Volt vom Sensor auf den IO des ESP.

Ist der IO 5Volt-Tolerant ?
Was sagt das Datenblatt ?

Laut Datenblatt ist er das nicht, auch wenn andere Aussagen im Netz kursieren.
Ich finde, das Datenblatt ist das Entscheidende.

Gruß Tommy

Tommy56:
Laut Datenblatt ist er das nicht, auch wenn andere Aussagen im Netz kursieren.
Ich finde, das Datenblatt ist das Entscheidende.

Gruß Tommy

Und damit sollte zumindest das Problem geklärt sein.
@TO
Also Widerstände (min. einen) dazwischen.

Das verstehe ich jetzt nicht. Wenn ich den Sketch hochlade läuft es einwandfrei, aber wenn ich ein Power Cycle mache, geht es nicht mehr. Was hat das mit der Spannungsversorgung zu tun?

darox:
Das verstehe ich jetzt nicht. Wenn ich den Sketch hochlade läuft es einwandfrei, aber wenn ich ein Power Cycle mache, geht es nicht mehr. Was hat das mit der Spannungsversorgung zu tun?

Vermutlich.....weil sich durch die zu hohe Spannung am Pin dieser verabschiedet.
Ob das der tatsächliche Fehler ist, wissen wir nicht.

Fakt ist, du musst deinen Aufbau entsprechend dem Datenblatt vornehmen.
Alles was nicht dem Datenblatt entspricht (z.B. zu hohe Spannung am Pin) kann zu Fehlern und Ausfällen führen.
Wie das System danach reagiert, wissen wir nicht.

Sensor braucht laut Datenblatt 5V und der ESP8266 gibt 5V raus.
https://goo.gl/images/4tkfxx

https://goo.gl/images/9XQqj5

darox:
Sensor braucht laut Datenblatt 5V und der ESP8266 gibt 5V raus.

Wo bitte steht, dass der ESP8266 5 Volt rausgibt ?
Ich sehe da auch kein Datenblatt vom ESP8266.
Das ist nur ein Bild.

Es geht um die I/O-Pins und die können nur 3,3 Volt rausgeben und als Input vertragen.

Wenn du uns nicht glaubst, warum fragst du hier überhaupt ?

Lies dir das Datenblatt des ESP8266 durch, dann siehst du klarer.
Wenn du es dann immer noch nicht glaubst, dann ist es dein Problem.

Der Aufbau ist wie hier beschrieben: SDS011-Sensor | Sensors | Watterott electronic

darox:
Der Aufbau ist wie hier beschrieben: https://learn.watterott.com/sensors/sds011/

Ok....hier steht mal etwas, was du uns bisher vorenthalten hast.

Die Datenpins des Sensors sollen 3,3 Volt Logic Level sein, dann sollte es funktionieren.
Warum nicht gleich so ?

Sollte.....

Dann musst du prüfen, ob dein NodeMCU ne Macke hat.

Was bedeutet das genau? Weil wenn ich am TX messe, so habe ich 3.3V? Zudem habe ich herausgefunden, dass wenn ich den Nodemcu ohne Sensor anstecke, alles richtig funktioniert. Die Werte sind dann halt einfach 0.

darox:
Was bedeutet das genau? Weil wenn ich am TX messe, so habe ich 3.3V? Zudem habe ich herausgefunden, dass wenn ich den Nodemcu ohne Sensor anstecke, alles richtig funktioniert. Die Werte sind dann halt einfach 0.

Und warum postest du immer noch halbe Sachen ?

Was bedeutet was ?

An welchem TX hast du gemessen ?

Wenn das so ist hat evtl. dein Sensor eine Macke.