ESP32 und HX711 Waage: Serieller Monitor bleibt leer – Keine Ausgabe im Monitor

Hallo zusammen,

ich habe ein Problem mit meinem ESP32 und der HX711 Waage, die ich für ein einfaches Waagenprojekt verwende. Ich versuche, den ESP32 so zu programmieren, dass er das Gewicht von der HX711 liest und an einen MQTT-Server sendet, aber ich bekomme keine Ausgabe im seriellen Monitor. Der Upload des Codes scheint jedoch erfolgreich zu sein und der ESP32 baut eine Verbindung zum WiFi auf. Dennoch bleibt der serielle Monitor leer.

Hier ist mein Code:

cpp

KopierenBearbeiten

#include <HX711.h>
#include <WiFi.h>
#include <PubSubClient.h>

// HX711 Pins
#define DOUT GPIO_NUM_4
#define CLK GPIO_NUM_5

HX711 scale;

// WiFi-Konfiguration
const char* ssid = "Padrina-IoT";
const char* password = "**************";

// MQTT-Konfiguration
const char* mqtt_server = "10.0.2.10";  
const int mqtt_port = ****;  
const char* mqtt_topic = "salzwaage/gewicht";

WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.println("Verbindung zum WLAN wird hergestellt...");
  WiFi.mode(WIFI_STA);
  WiFi.setHostname("Bravatec");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWLAN verbunden!");
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Verbinde mit MQTT...");
    if (client.connect("Bravatec")) {
      Serial.println("Verbunden!");
    } else {
      Serial.print("Fehler, rc=");
      Serial.print(client.state());
      Serial.println(" Neuer Versuch in 5 Sekunden...");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);  // Seriellen Monitor mit 115200 Baud starten

  // Setup HX711
  scale.begin(DOUT, CLK);
  scale.set_scale(2280.f); // Kalibrierungswert (anpassen!)

  // Setup WiFi und MQTT
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

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

  // Gewicht messen
  if (scale.is_ready()) {
    float gewicht = scale.get_units();
    Serial.print("Gewicht: ");
    Serial.println(gewicht);

    // Gewicht an MQTT senden
    char payload[10];
    dtostrf(gewicht, 1, 2, payload);
    client.publish(mqtt_topic, payload);

    delay(1000); // 1 Sekunde warten
  } else {
    Serial.println("HX711 nicht bereit.");
  }
}

Problem:

  • Der Code wird ohne Fehler hochgeladen.
  • Der ESP32 verbindet sich mit dem WiFi.
  • Der serielle Monitor zeigt jedoch keine Ausgabe – selbst die einfache Initialisierungsnachricht wie „Verbindung zum WLAN wird hergestellt…“ wird nicht angezeigt.
  • Ich bekomme keine Fehlermeldungen, aber der Monitor bleibt einfach leer.

Was ich bereits versucht habe:

  1. Baudrate im seriellen Monitor auf 115200 eingestellt (entspricht dem Serial.begin(115200) im Code).
  2. Den ESP32 an verschiedenen USB-Ports und mit verschiedenen Kabeln getestet (sicher, dass es ein Datenkabel ist).
  3. Einfache Testcodes verwendet, um sicherzustellen, dass der serielle Monitor funktioniert (z. B. nur Serial.println("Test");).
  4. Board und Port in der Arduino IDE überprüft (ESP32 Dev Module und den richtigen COM-Port ausgewählt).
  5. Die Verbindung zum WiFi wird im Code etabliert (d.h. der ESP32 scheint richtig zu starten).

Fragen:

  1. Habt ihr Ideen, warum der serielle Monitor leer bleibt, obwohl der Upload erfolgreich war?
  2. Gibt es spezielle Einstellungen, die ich beachten muss, um die serielle Ausgabe korrekt zu erhalten?
  3. Gibt es etwas, das ich im Code oder in den Einstellungen anpassen sollte, um das Problem zu beheben?

Ich freue mich über jede Hilfe oder einen Hinweis!

Setze doch gleich nach Serial.begin eine Zeile mit Serial.println("Start");

Wenn da auch nichts kommt, ist evtl. Dein ESP defekt oder die Kabel oder ...
Hast Du ausführliche Meldungen beim Hochladen eingestellt?
Welche IDE, welcher ESP32?

Gruß Tommy

Danke Tommy!

IDE, v 2.3.4
ESP32C6 Dev Module,

Neuer Code:

#include <HX711.h>
#include <WiFi.h>
#include <PubSubClient.h>

// HX711 Pins
#define DOUT GPIO_NUM_4
#define CLK GPIO_NUM_5

HX711 scale;

// WiFi-Konfiguration
const char* ssid = "Padrina-IoT";        // Ihr WLAN-Name
const char* password = "************"; // Ihr WLAN-Passwort

// MQTT-Konfiguration
const char* mqtt_server = "10.0.2.10";  // IP-Adresse Ihres MQTT-Brokers
const int mqtt_port = ****;  // Port Ihres MQTT-Brokers
const char* mqtt_topic = "salzwaage/gewicht";

WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.println("Verbindung zum WLAN wird hergestellt...");
  WiFi.mode(WIFI_STA);
  WiFi.setHostname("Bravatec"); // Gerätename ändern
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWLAN verbunden!");
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Verbinde mit MQTT...");
    if (client.connect("Bravatec")) { // MQTT-Client-ID ändern
      Serial.println("Verbunden!");
    } else {
      Serial.print("Fehler, rc=");
      Serial.print(client.state());
      Serial.println(" Neuer Versuch in 5 Sekunden...");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);  // Seriellen Monitor mit 115200 Baud starten
  Serial.println("Start");  // Testausgabe um sicherzustellen, dass der Monitor funktioniert

  // Setup HX711
  scale.begin(DOUT, CLK);
  scale.set_scale(2280.f); // Kalibrierungswert (anpassen!)

  // Setup WiFi und MQTT
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

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

  // Gewicht messen
  if (scale.is_ready()) {
    float gewicht = scale.get_units();
    Serial.print("Gewicht: ");
    Serial.println(gewicht);

    // Gewicht an MQTT senden
    char payload[10];
    dtostrf(gewicht, 1, 2, payload);
    client.publish(mqtt_topic, payload);

    delay(1000); // 1 Sekunde warten
  } else {
    Serial.println("HX711 nicht bereit.");
  }
}

Auch so keine Ausgabe im Monitor.

Erscheint nach wie vor als Gerät im Wifi und erstellte einen Datenpunkt im iobroker (mqtt).
Das Ding läuft...

Welcher ist das genau ?
Es gibt mehrere.
Auch welche ohne extra USB Chip.

hey,
hast du mal probiert ein anderes Micro USB Kabel zu nutzen? Manche Kabel unterstützen die Datenübertragung nicht richtig und es kommt dadurch zu Problemen.
LG Hypergamer

ESP32-C6-Zero

Bitte einen Link posten

https://www.galaxus.ch/de/s1/product/waveshare-esp32-c6-zero-mini-entwicklungsboard-entwicklungsboard-kit-45989973

Genau, da gibt es Probleme.
Sieh mal Diese Diskussion , evtl. helfen die genannten Einstellungen.
Auch wenn es da der C3 ist.

ich schaue morgen gerne nach.. herzlichen dank auf jeden fall an alle.
welches board empfiehlst du?

achtung spoiler, bin absoluter laie und wollte "schnell" eine waage bauen...

Als Anfänger empfehle ich einen ESP8266 Wemos D1 mini oder eine ESP32 NodeMcu

1 Like

Es heißt, man müsse im Menü "Tools" den Eintrag "USB CDC on Boot" auf enable stellen und mit dieser Einstellung den Sketch kompilieren/uploaden.

Das war das Problem! Danke dir HotSystems, war im Link den du gesendet hast! Weltklasse...

1 Like

Ja, prima.
Ich habe das auch mit meinem C3 so gelöst und vermutet, dass es eben auch am C6 so klappt.
Danke für die Rückmeldung.