Hallo Ich habe hier ein ESP-01 Modul. Ich würde gerne ein Analoges Signal lesen. Wie muss ich den ESP anschliessen?
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.
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...)
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?
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.
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.
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?
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.
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?
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.
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.
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...
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.
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.
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.
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.
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 |
"
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.
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 | }
|
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?
USRXD ist übrigens ein Bit in einem Status Register. USRXD hat den Wert 15. In einem Arduino Sketch hat das überhaupt nichts verloren.
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...
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.
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.
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).
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....
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.
> pinMode(2, INPUT);
auf
pinMode(2, INPUT_PULLUP);
Ändern, sonst hast du bei losgelassenem Taster keine 3,3V.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.