Signal von ESP32 Pin im Seriellen Monitor ausgeben

Hi, ich will, dass, wenn mein Anemometer ein Signal sendet, es im Seriellen Monitor ausgegeben wird. Dazu habe ich den Data Anschluss vom Anemometer, die Stromversorgung und den GND and den ESP32 angeschlossen.

#include <Esprit.h> //Pin-Mapping Arduino-Uno R3 
#include <WiFi.h>
#include <FreematicsOLED.h>
#include <Wire.h>

void setup() {
    Serial.begin(115200);
    Serial1.begin(115200);
}

void loop() {
    if (Serial.available() > 0) {
        Serial.println(Serial1.read());
    }
}

Das ist der Code den ich aus einem anderen Forenbeitrag habe, der ein ähnliches Thema behandelt. Ich kann ihn auf den ESP32 hochladen, bei Drehung des Anemometer kommt aber leider kein Signal im Seriellen Monitor.

Wie bringe ich das Signal in den Seriellen Monitor?
Danke im Voraus.

Das geht nicht.
Soll sicher so aussehen:

    if (Serial1.available() > 0) {
        Serial.println(Serial1.read());

Danke für deine Antwort. Habe es verbessert, funktioniert aber leider immer noch nicht.

Ich denke, Du bist mit deiner Config daneben.
Probier das.
Geht?

Das kann jetzt alle möglichen Ursachen haben.

Was für eine Baudrate hat das Anemometer?
Was für eine Baudrate hast du am seriellen Monitor eingestellt?

Sendet das Anemometer wiklich serielle Daten ?
oder ein Pulse-Signal?
Was für Spannungspegel hat das Anemometer?
Sendet das Anemometer ohne hardware handshaking?
Sendet das Anemometer 8N1?

Jede Menge Fragen die man am besten mit den Datenblättern und Screenshots vom seriellen Monitor beantworten kann
vgs

Also das ist der Anemometer. Es gibt noch einen Niederschlagssensor und einen Windrichtungsmesser. Ich will vorerst aber erstmal auf der Anemometer zum laufen bringen
Aber er ist nicht Original. Das ganze ist ein Schulprojekt und ein anderer Schüler hat vorher schonmal etwas damit gemacht und das Kabel das von den Windsensoren kommt abgetrennt und die vier Kabel darin (Data Windgeschwindigkeit, Data Windrichtung, GND, Stromquelle) an male Kabel gelötet, damit sie in den ESP32 passen.

Das kam nach dem hochladen des Programms.

Hoffe das Hilft.

Also das hat ganz schön gedauert.

im Originalcode steht

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial1.begin(9600);

Serial1 wird für den Feinstaubsensor SDS011 verwendet

WindSensor ws(windSpeedPin, windDirPin);
RainSensor rs(rainPin);
Adafruit_BME280 bme;
SDS011 sds(Serial1);

Wenn man in die WindSensor.cpp-library reinschaut sieht man dass
da das Signal kein serielles ist sondern schlicht und ergreifend Impulse
Die Messung erfolgt über die Messung wie viel Zeit zwischen zwei Impulsen vergeht.

Da kann also wirklich nichts mit seriell einlesen gemacht werden
Die Programmdateien habe ich hier gefunden

Jetzt musst du noch einmal prüfen ob das wirklich deine Wetterstation ist

Aber das ist die einzige Elektor-Wetterstation mit ESP32
https://www.elektormagazine.com/search?query=esp32+weatherstation

vgs

Sorry dass ich jetzt eine Weile nichts geschrieben habe, ich habe einiges rumprobiert. Ich habe den Code, der auf der Seite verlinkt war runtergeladen und versucht hochzuladen. Dann kam eine Fehlermeldung wegen dieser Zeile:

#include <Adafruit_BME280.h>

Ich habe dann diese Bibliothek runtergeladen und eingebunden. Dann kommt aber diese Fehlermeldung beim Hochladen:

Bitte die Fehlermeldung als Text in Code-Tags posten und nicht als schlecht lesbares Bild.

Ok sorry, hier als Text

Mehrere Bibliotheken wurden für "WiFi.h" gefunden
In file included from C:\Users\...\Desktop\180468-11\esp32weatherstation\esp32weatherstation.ino:8:
 Benutzt: C:\Users\...\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi
C:\Users\...\Documents\Arduino\libraries\Adafruit_BME280_Library-master/Adafruit_BME280.h:26:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
 #include <Adafruit_I2CDevice.h>
          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module.

: fatal error: Adafruit_I2CDevice.h: No such file or directory

es muss noch eine library installiert werden.
Wenn man voneinander abhängige libraries über den library-manager installiert dann werden die anderen mitinstalliert

vgs

Habe das Problem mit den Libarys gefixt. Jetzt kommt allerdings in Z. 136

  Wire.begin(25, 26, 100000); //sda, scl, freq=100kHz

diese Fehlermeldung

call of overloaded 'begin(int, int, int)' is ambiguous

C:\Users\...\Desktop\180468-11\esp32weatherstation\esp32weatherstation.ino: In function 'void setup()':
esp32weatherstation:136:28: error: call of overloaded 'begin(int, int, int)' is ambiguous
   Wire.begin(25, 26, 100000); //sda, scl, freq=100kHz
                            ^
In file included from C:\Users\...\Documents\Arduino\libraries\Adafruit_BusIO/Adafruit_I2CDevice.h:5,
                 from C:\Users\...\Documents\Arduino\libraries\Adafruit_BME280_Library/Adafruit_BME280.h:26,
                 from C:\Users\...\Desktop\180468-11\esp32weatherstation\esp32weatherstation.ino:8:
C:\Users\...\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\Wire\src/Wire.h:79:10: note: candidate: 'bool TwoWire::begin(int, int, uint32_t)'
     bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); // returns true, if successful init of i2c bus
          ^~~~~
C:\Users\...\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\Wire\src/Wire.h:80:10: note: candidate: 'bool TwoWire::begin(uint8_t, int, int, uint32_t)'
     bool begin(uint8_t slaveAddr, int sda=-1, int scl=-1, uint32_t frequency=0);
          ^~~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\network.ino: In function 'void setWiFiSettings()':
network:31:3: error: 'pass' was not declared in this scope
   pass = server->arg("pass");
   ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\network.ino:31:3: note: suggested alternative: 'pause'
   pass = server->arg("pass");
   ^~~~
   pause
C:\Users\...\Desktop\180468-11\esp32weatherstation\network.ino: In function 'bool connectWiFi()':
network:219:68: error: 'pass' was not declared in this scope
   Serial.println("Attempting to connect to " + ssid + ", pass: " + pass);
                                                                    ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\network.ino:219:68: note: suggested alternative: 'pause'
   Serial.println("Attempting to connect to " + ssid + ", pass: " + pass);
                                                                    ^~~~
                                                                    pause
C:\Users\...\Desktop\180468-11\esp32weatherstation\serialHandler.ino: In function 'void handleSerial()':
serialHandler:45:9: error: 'pass' was not declared in this scope
         pass = serialIn.substring(serialIn.indexOf(",") + 1, serialIn.indexOf("\n"));
         ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\serialHandler.ino:45:9: note: suggested alternative: 'pause'
         pass = serialIn.substring(serialIn.indexOf(",") + 1, serialIn.indexOf("\n"));
         ^~~~
         pause
serialHandler:48:68: error: 'pass' was not declared in this scope
       Serial.println("WiFi settings: SSID: " + ssid + ", pass: " + pass);
                                                                    ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\serialHandler.ino:48:68: note: suggested alternative: 'pause'
       Serial.println("WiFi settings: SSID: " + ssid + ", pass: " + pass);
                                                                    ^~~~
                                                                    pause
C:\Users\...\Desktop\180468-11\esp32weatherstation\storePrefs.ino: In function 'void loadNetworkCredentials()':
storePrefs:7:3: error: 'pass' was not declared in this scope
   pass = pref.getString("pass");
   ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\storePrefs.ino:7:3: note: suggested alternative: 'pause'
   pass = pref.getString("pass");
   ^~~~
   pause
C:\Users\...\Desktop\180468-11\esp32weatherstation\storePrefs.ino: In function 'void storeNetworkCredentials()':
storePrefs:14:26: error: 'pass' was not declared in this scope
   pref.putString("pass", pass);
                          ^~~~
C:\Users\...\Desktop\180468-11\esp32weatherstation\storePrefs.ino:14:26: note: suggested alternative: 'pause'
   pref.putString("pass", pass);
                          ^~~~
                          pause
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
 Benutzt: C:\Users\...\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.2\libraries\WiFi
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
Mehrere Bibliotheken wurden für "Adafruit_BME280.h" gefunden
 Benutzt: C:\Users\...\Documents\Arduino\libraries\Adafruit_BME280_Library
 Nicht benutzt: C:\Users\...\Documents\Arduino\libraries\Adafruit_BME280_Library-master
exit status 1
call of overloaded 'begin(int, int, int)' is ambiguous

also so ein bißchen googeln kannst du doch auch selber
https://www.google.de/search?as_q=call+of+overloaded+'begin(int%2C+int%2C+int)'+is+ambiguous&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&as_filetype=&tbs=

vgs

1 Like

Da scheinen zumindest zwei Dinge nicht i.O. zu sein:

  • Der String pass scheint nicht korrekt deklariert zu sein.
  • Der Aufruf der Funktion wire.begin(a,b,c) ist "ambiguous" = mehrdeutig. Das deutet darauf hin, dass es für diesen Aufruf zwei Varianten gibt, bei denen die Parameter unterschiedliche Typen haben, der Compiler die gewünschte Variante jedoch anhand des vorliegenden Codes nicht sicher unterscheiden kann. Google wirft aus, dass diese Fehlermeldung auftritt, wenn der dritte Parameter nicht klar als uint23_t erkennbar ist.

Lösung:

  • String pass; // An der "richtigen" Stelle deklarieren
  • wire.begin() so aufrufen :

wire.begin(25, 26, uint32_t(100000));

Gerne mal versuchen ...

Moin @StefanL38, das hat sich mal wieder überschnitten ... :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.