Forum: Mikrocontroller und Digitale Elektronik ESP-01 Analog Input


von reskl (Gast)


Lesenswert?

Hallo

Ich habe hier ein ESP-01 Modul. Ich würde gerne ein Analoges Signal 
lesen. Wie muss ich den ESP anschliessen?

von 50c (Gast)


Lesenswert?

Du hast dir die Pin-Belegung im Datenblatt angesehen?

von reskl (Gast)


Angehängte Dateien:

Lesenswert?

ja habe ich... werde aber irgendwie nicht schlau daraus...

von Ergo70 (Gast)


Lesenswert?


von Sven D. (sven_la)


Lesenswert?

reskl schrieb:
> Hallo
>
> Ich habe hier ein ESP-01 Modul. Ich würde gerne ein Analoges Signal
> lesen. Wie muss ich den ESP anschliessen?

Garnicht, der ESP-01 hat afaik keinen Analoginput an der Steckerleiste.

von reskl (Gast)


Lesenswert?

okay das heisst ich müsste entweder wie im link an den chip löten (was 
ich mir nicht zutraue) oder so ein modul kaufen?

Sven D. schrieb:
> Garnicht, der ESP-01 hat afaik keinen Analoginput an der Steckerleiste.
 darf man fragen wofür die 2 GPIOs sind? (bin noch anfänger...)

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?


von reskl (Gast)


Lesenswert?

Wenn ich das jetzt aber richtig verstehe könnte ich die pins auch nutzen 
für meine zwecke... Hintergrund: Ich muss erkennen ob spannung (0 bzw 
3.3V) anliegt....
Funktioniert das?

von Brain 2.0 (Gast)


Lesenswert?

Ja, für eine reine Feststellung ob Spannung anliegt oder nicht, reicht 
es, einen digitalen Pin dafür zu verwenden. Du musst nur darauf achten, 
den richtigen Pin zu verwenden.

von Sebastian R. (sebastian_r569)


Lesenswert?

reskl schrieb:
> Funktioniert das?

Also ein digitales und kein analoges Signal?
Das geht. Es sei denn, du willst wissen, wie viel die 3.3V sind oder ob 
es genau 3.3V sind.

von Brain 2.0 (Gast)


Lesenswert?

Oh, sorry. Zu früh gedrückt.
Du kannst GPIO1 oder GPIO3 verwenden.

von reskl (Gast)


Lesenswert?

Also ich muss nicht unbedingt wissen wie viel anliegt. Einfach ob bzw ob 
nicht...
also kann ich da einfach den esp normal versorgen und dann mit der 
versorgunsspannung über einen taster an den gpio?

Brain 2.0 schrieb:
> Du kannst GPIO1 oder GPIO3 verwenden.

ähm ich habe nur gpio0 und gpio 2.... (ESP-01)

und vertragen die die 3.3V oder nur 1V?

von Brain 2.0 (Gast)


Lesenswert?

reskl schrieb:
> ähm ich habe nur gpio0 und gpio 2.... (ESP-01)
>
> und vertragen die die 3.3V oder nur 1V?

Nein, auch dein ESP8266-01 hat den GPIO1 und GPIO3.
Auch als TX und RX bezeichnet. Und die vertragen auch 3,3V, da "normale" 
GPIO.

von Brain 2.0 (Gast)


Lesenswert?

Sieh dir mal diese Seite an: http://stefanfrings.de/esp8266/

von reskl (Gast)


Lesenswert?

Ah okay
also vertragen nur gpio 1 und 3 die 3.3V oder auch die 2 und 4? (einfach 
frage fürs verständnis...)

Ich kann wenn ich das richtig verstanden habe jetzt den ESP über 3.3V an 
den 3V3 Pin anschliessen und über GND and Ground... dann um zu schauen 
wann der schalter betätigt ist, den schalter über 3.3V mit TX verbinden?

Das ganze dann über digitalRead(1) abfragen?

von Brain 2.0 (Gast)


Lesenswert?

reskl schrieb:
> also vertragen nur gpio 1 und 3 die 3.3V oder auch die 2 und 4? (einfach
> frage fürs verständnis...)

Die vertragen alle 3,3Volt. Nur haben GPIO 0 UND 2 zum korrekten Start 
ein Pullup Widerstand. Das wird deine "Messung" negativ beeinflussen.

von Wolfgang (Gast)


Lesenswert?

reskl schrieb:
> also vertragen nur gpio 1 und 3 die 3.3V oder auch die 2 und 4? (einfach
> frage fürs verständnis...)

Für solche Dinge verfasst der Hersteller des Controllers ein Datenblatt. 
Da steht ganz genau drin, welcher Pin welche Spannung verträgt. Besorg 
dir das Ding und lies bei den elektrischen Eigenschaften nach. Die 
Absolute Maximum Ratings sind dabei nicht als normale Betriebparameter 
zu verstehen.
Welche Pins des Controllers auf welche Anschlüsse des ESP-01 geführt 
sind, verrät dir der Schaltplan zum Modul.

von reskl (Gast)


Lesenswert?

okay vielen dank euch!

von reskl (Gast)


Lesenswert?

ich verstehe gerade nicht wie ich das nun machen muss...

Code:
void setup() {

  Serial.begin(9600);
  delay(1000);
  Serial.println("Serial geladen.");
  pinMode(USRXD, INPUT);
}

void loop() {
  int sensorValue = analogRead(USRXD);
  Serial.println(sensorValue);
  delay(100);
}

Wenn ich den code so auführe habe ich im Serial wie erwartet alle ca 
100ms eine 0 als ausgabe.... Als input möchte ich nun den RX pin vom ESP 
nutzen.... wie muss ich das jetzt anschliessen damit er das erkennt? 
stehe gerade irgendwie auf dem schlauch...

von Stefan F. (Gast)


Lesenswert?

reskl schrieb:
> wie muss ich das jetzt anschliessen damit er das erkennt?

Du verbindest die Signalquelle mit dem gewünschten Pin und liest dann 
den Status wie üblich mit digitalRead() ein.

AnalogRead funktioniert nur an einem einzigen Pin, nämlich A0. Der ist 
beim ESP-01 Modul aber nicht herausgeführt.

Welchen Pin willst du stattdessen benutzen? Ist er in deinem Aufbau 
wirklich frei? Bist du sicher, dass die Bedingung für das Booten dann 
noch erfüllt ist? Ich frage, weil das beim ESP-01 mangel wirklich freier 
Pins etwas tricky ist. Meine Homepage hast du dir inzwischen hoffentlich 
angeschaut?:Und was ist mit der Doku von Arduino und dem verwendeten 
Arduino Core? Hast du sie gelesen?

http://stefanfrings.de/esp8266/
https://docs.arduino.cc/
https://arduino-esp8266.readthedocs.io/en/latest/

Auf den Seiten steht eigentlich alles, was man dazu wissen muss.

von Brain 2.0 (Gast)


Lesenswert?

Verwende für den Pin die GPIO Nummer. Dann musst du digitalRead(GPIO) 
verwenden und nicht analogRead. Und du darfst nicht gleichzeitig den Pin 
als serielle Schnittstelle verwenden.

von Stefan F. (Gast)


Lesenswert?

Wenn du noch keinerlei Erfahrung mit Arduino hast, dann fange mit einem 
Arduino Uno oder Nano an. Die sind am besten dokumentiert und um 
wenigsten kompliziert. Dieses WLAN Dings hat hingegen eine ganze Menge 
Fallstricke.

von Stefan F. (Gast)


Lesenswert?

Brain 2.0 schrieb:
> Verwende für den Pin die GPIO Nummer.

Würde ich auch empfehlen. Also z.B. digitalRead(2) für den GPIO2.

Nur der analoge Eingang tanzt aus der Reihe, denn er hat keine GPIOx 
Nummer. In Arduino wird er A0 oder 17 genannt.

von Forist (Gast)


Lesenswert?

reskl schrieb:
> ich verstehe gerade nicht wie ich das nun machen muss...

Steht doch deutlich unter
"Wichtige Regeln - erst lesen, dann posten!
...
Formatierung (mehr Informationen...)
1
C-Code
"

von EAF (Gast)


Lesenswert?

reskl schrieb:
> Als input möchte ich nun den RX pin vom ESP
> nutzen....

Wenn du Serial verwendest, dann kannst du Tx und Rx nicht mehr für 
andere Zwecke benutzen.
Entscheide dich.
Aber beides geht nicht.

von reskl (Gast)


Lesenswert?

1
void setup() {
2
3
  Serial.begin(9600);
4
  delay(1000);
5
  Serial.println("Serial geladen.");
6
  pinMode(USRXD, INPUT);
7
}
8
9
void loop() {
10
  int sensorValue = analogRead(USRXD);
11
  Serial.println(sensorValue);
12
  delay(100);
13
}

von Stefan F. (Gast)


Lesenswert?

reskl schrieb:
> int sensorValue = analogRead(USRXD);


Nochmal: Der einzige Pin, den man analog abfragen kann ist A0, und der 
ist bei deinem Modul nicht herausgeführt.

Falls du liest, verstehst du uns überhaupt?

von Stefan F. (Gast)


Lesenswert?

USRXD ist übrigens ein Bit in einem Status Register. USRXD hat den Wert 
15. In einem Arduino Sketch hat das überhaupt nichts verloren.

von reskl (Gast)


Lesenswert?

ja ich lese. ich habe verstanden, dass der analoge pin nicht 
herausgeführt wurde. Das ist also ein Fehler im Code. Ich habe jetzt die 
Tips umgesetzt und der code sieht nun so aus:
1
void setup() {
2
3
  Serial.begin(9600);
4
  delay(1000);
5
  Serial.println("Serial geladen.");
6
  pinMode(2, INPUT);
7
}
8
9
void loop() {
10
  int sensorValue = digitalRead(2);
11
  Serial.println(sensorValue);
12
  delay(100);
13
}

was ich aber immernoch nicht verstehe, wie ich jetzt erkenne bzw wie ich 
es anschliessen muss um zu erkennen ob 0 oder 3.3V auf der Leitung 
liegen...

von Stefan F. (Gast)


Lesenswert?

reskl schrieb:
> int sensorValue = digitalRead(2);

reskl schrieb:
> was ich aber immernoch nicht verstehe, wie ich jetzt erkenne bzw wie ich
> es anschliessen muss um zu erkennen ob 0 oder 3.3V auf der Leitung
> liegen...

Passend zu diesem Code musst du die "Leitung" mit dem Anschluss GPIO2 
verbinden.

Denke daran, dass dieser GPIO2 Pin beim Booten ein Ausgang ist, der zu 
diesem Zeitpunkt nicht auf LOW (0V) gezogen werden darf. Sonst startet 
die Firmware nicht.

Was ist das denn für eine Leitung, wo kommt sie her? Zeichen doch mal 
einen Schaltplan aus dem her vor geht, was du da alles wie miteinander 
verbinden willst. Falls du keinen Schaltplan erstellen kannst, sage das, 
dann empfehle ich dir konkrete einfachere Projekte die dich Schrittweise 
an diese Aufgabe heran führen.

von reskl (Gast)


Lesenswert?

Also ich habe hier ein Taster (OFF/ON/OFF)
ich möchte, dass wenn ich den taster drücke (bzw gedrückt halte) das 
erkennt (1) wird bzw wenn ich ihn wieder loslasse wieder auf 0 zurück 
geht.

von Stefan F. (Gast)


Lesenswert?

Aus deiner Antwort lese ich heraus, dass du nicht weißt, was ein 
Stromkreis ist. Wir müssten eigentlich bei den absoluten Grundlagen 
anfangen, Lehrstoff aus der 3. Schulklasse (sorry, ist aber so).

Damit dir der Spaß nicht ganz vergeht, würde ich dir gerne wenigstens 
verraten, wie der Taster anzuschließen ist, doch deine Beschreibung ist 
unklar. Mit OFF/ON/OFF kann ich nichts anfangen. Um welches konkrete 
Produkt geht es?

> ich möchte, dass wenn ich den taster drücke (bzw gedrückt halte) das
> erkennt (1) wird bzw wenn ich ihn wieder loslasse wieder auf 0 zurück
> geht.

Da der GPIO2 Pin beim Start nicht auf LOW (0) liegen darf, geht es nur 
umgekehrt. Im Ruhezustand HIGH (1) und in gedrücktem zustand LOW (0).

von reskl (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Da der GPIO2 Pin beim Start nicht auf LOW (0) liegen darf, geht es nur
> umgekehrt. Im Ruhezustand HIGH (1) und in gedrücktem zustand LOW (0).

ja das wäre auch okay....

von Andi (Gast)


Lesenswert?

reskl schrieb:
> Also ich habe hier ein Taster (OFF/ON/OFF)
> ich möchte, dass wenn ich den taster drücke (bzw gedrückt halte) das
> erkennt (1) wird bzw wenn ich ihn wieder loslasse wieder auf 0 zurück
> geht.

Na dann schliesst du die eine Seite des Tasters an GPIO2 an und die 
andere Seite an GND.
Du darfst halt den Taster nicht beim Einschalten drücken.
Nicht gedrückt liest du mit digitalRead(2) eine 1, gedrückt eine 0, also 
genau andersrum als du willst. Aber das lässt sich ja per Programm 
korrigieren.

von Stefan F. (Gast)


Lesenswert?

> pinMode(2, INPUT);

auf

pinMode(2, INPUT_PULLUP);

Ändern, sonst hast du bei losgelassenem Taster keine 3,3V.

von reskl (Gast)


Lesenswert?

danke!
habe immer irgendwie gedacht, dass ich da irgendwas mit 3.3V 
anschliessen muss aber das ist ja gar nicht so :)

Was jetzt aber noch ein problem ist, dass sobald ich 1 mal gedrückt habe 
immer auf 0 bleibt...

Also 11111111111111111 drücken 00000000 loslassen 00000000000000

soweit ich das versehe müsste da jetzt irgendwie ein 
pullup/pulldownwiderstand (?) hin?

von reskl (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> auf
>
> pinMode(2, INPUT_PULLUP);
>
> Ändern, sonst hast du bei losgelassenem Taster keine 3,3V.

ah das war gerade gleichzeitig reingekommen.... danke :)

Beitrag #7085323 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Anbei ein Auszug aus 
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%201.pdf

Da geht es um einen anderen Mikrocontroller, aber das Prinzip ist 
identisch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.