Hilfe für mein Projekt

Hallo zusammen.
Ich bin neu hier und zwar mit folgendem Projekt/Problem:
Ich habe ein Projekt bei welchem ein Arduino Mega mit einem ESP8266-01 Modul kommunizieren soll.
Nun bin ich an der Programierung des ESP Moduls. Dieses muss nur die Daten (zahlenwerte) von einem Pin lesen und an eine IP senden, sowie Daten welches es von der Website erhält an den Arduino über einen anderen Pin senden.
Nun zu meiner Frage welche Pins auf dem ESP8266-01 Modul können als Input/Output verwendet werden und wie müssen diese benannt sein (zb. serin = A13;)

Vielen Dank für eure Hilfe und ein schönes Weekend
Grüsse
Robin

Hi,

[esp8266-01 pinout](http://esp8266-01 pinout)

Dann kann ich Dir noch die Seite empfehlen

http://stefanfrings.de/esp8266/index.html

Vielen Dank für deine schnelle Antwort.
Der zweite Link ist genau das was ich gesucht hab.

Hallo
Ich habe heute am Programm weitergeschrieben.
Dabei wollte ich den seriellen Eingang RxD (GPIO3) sowie den seriellen Ausgang TxD (GPIO1) verwenden.

Dabei habe ich folgendes (leider ohne Erfolg versucht):
int serin = GPI03;
int serout = GPIO1;

int serin = RxD;
int serout = TxD;

#define serin GPI03
#define serout GPI01

#define serin RxD
#define serout TxD

Wie müssen die Pins definiert werden?

Vielen Dank
Robin

Hi,

entweder hab ich was falsch verstanden oder Du bist komplett auf dem Holzweg.

Nochmal Dein eigendliches Projekt läuft auf dem Mega. Den willst Du über das ESP Modul an Dein Netzwerk anbinden um irgendwelche Daten irgendwo hin zu senden.

Dazu gibts sicher mehere Mäglichkeiten , ich hab hier schon mal darüber gelesen den den Mega mit dem ESP über I2C zu verbinden. ist sicher die beste Art, kenn ich aber nicht.

ich hab ne Weile mit einem Uno sowas gemacht und hab dazu die AT befehle benutzt. Dabei kommunizieren dien beiden Teile über Seriell schnittstelle miteinander also Seriell.print(). und Seriel.read() beim Uno gibt´s dazu eine Softseriell . Ich glaube der Mega hat von Hause aus mehrere hardware Serielle.

wie Du diese AT befehle benutzt ist etwas ... vermittelt aber schön die Grundlagen. Beispiele dazu gibts auch.
Wie willst du denn die Wifi Verbindung benutzen UDP, TCP , FTP ? Und beim Hersteller gibt eine gute Doku zu den AT Befehlen.

Du kannst natürlich auch den ESP direkt mit der IDE benutzen. Wenn Du ber mehrals 2 Digitale EA benötigst gibts dazu besser geeignete Hardware.

Hi Danke für deine Antwort
Genau ich habe zwei ADCs die an den Arduino angeschlossen sind, deshalb habe ich keine I2C Steckplätze mehr.
Der Mega soll per Serial and das ESP-8266 die Messwerte senden, welches diese wiederum per TCP/IP an einen Webserver senden soll.
Deshalb wollte ich per IDE ein Programm machen, welches sich mit dem Wifi verbindet und dann einfach die empfangenen Serialdaten weiterschickt, sowie die empfangen per Serial an den Arduino zurückgibt.

Geht das so?

I2C ist ein Bus, da kannst Du mehrere Teilnehmer anschließen.

Gruß Tommy

Hi,
Hast Du den ESP denn schon geflushed oder hat er noch seinen original Zustand ?

Wenn er nicht mehr jungfreulich ist, solltest Du das eventuell Rückgängig machen , ist aber nicht ganz einfach.

Auf dem Link zum Hersteller findest Du das manual zu dem ESP8266-01 da sind die AT befehle beschrieben.

irgendwo gabs da zu auch noch eine PDF

4b-esp8266_at_command_examples_en.pdf

da finde ich aber den link nicht mehr zu ( ich hab sie mir runtergeladen.)

Wenn Du nicht I2C bus nehmen willst, musst Du dich durch die AT Befehle beissen. In dem Link zu Stephan Frings steht auch was zu den AT Befehlen.

Google mal ESP8266 AT da findest Du dann eigentlich alles um loszulegen.

Heinz

Hallo,

falls Du den ESP8266 aus der ArduinoIDE selbst progrmmierst, kannst Du natürlich die Verbindung auch über den UART des ESP8266 zu einem UART Deines Mega machen.
Die Serial-Library des ESP8266 entspricht der des Mega.

Natürlich mußt Du dann umstecken, entweder den ESP-UART zum Programmieren an den USB-Adapter oder eben an den Mega. 3,3V Pegel beachten und RX/TX über kreuz wie üblich.

Gruß aus Berlin
Michael

@Michael

Stimmt natürlich die Lösung ist mir noch gar nicht in den Sinn gekommen. Ist sicher einfacher als sich mit den doofen AT rumzuärgern.

Ach wie schön da hat man doch wieder was neues zum spielen gefunden. :slight_smile:

Gruß aus Wachtberg
Heinz

Was spricht dagegen (außer der Pegelanpassung) den Arduino per I2C an den ESP8266 zu hängen?
Mit einem NodeMCU / Wemos D1 mini pro habe ich das hier mal demonstriert.

Gruß Tommy

Hallo,

Tommy56:
Was spricht dagegen (außer der Pegelanpassung) den Arduino per I2C an den ESP8266 zu hängen?
Mit einem NodeMCU / Wemos D1 mini pro habe ich das hier mal demonstriert.

Gruß Tommy

es spricht überhaupt nichts dagegen, ich wollte nur auf die Möglichkeit mit Serial hinweisen.
Bei mir hängt es von den Datenmengen ab, vom Zusammenspiel Master/Slave im konkreten Projekt.
Man kann auch Softserial nehmen, wenn man sich auf 9600Baud beschränkt. Für mich ich der Vorteil manchmal, daß ich die Teilprojekte unabhängig vom Rest testen kann, speziell wenn ich plain-ASCII nutze.
Serielle per UART-USB an den PC. Terminalprogramm aufmachen und schauen was passiert, wenn ich Daten oder Kommandos schicke oder bekomme.

Ein Bespiel wäre meine Panaplex-Uhr, die auf einem Arduono-Mini schon fertig war und dann per ESP-01 die Uhrzeit per NTP gesetzt bekommen sollte. Natürlich ginge das auch per I2C, die serielle war aber wegen der Programmierbarkeit soweiso frei. Also den ESP mit WLAN. NTP usw. fertig gemacht und alle paar Minuten einen String mit der Uhrzeit rausgeschickt. Das konnte ich in Ruhe am PC testet.

Genauso die Mini-Software den seriellen String eingelesen und Uhr gesetzt. Am PC ein paar Uhrzeit-Strings per Terminal hingeschickt, wurden richtig bearbeitet. Also zusammengesteckt und fertig.
Mit I2C wäre Test und Debug zumindest umständlicher gewesen.

Gruß aus Berlin
Michael

Hallo Michael
Ich hätte der Einfachheit und der Verständlichkeit wegen die Verbindung auch gerne per UART gemacht.
Wie hast du die Pins am ESP-Modul bennant? Ich nehme an du hast für dieses auch per IDE einen Code geschrieben.

Gruss
Robin

Hallo,

bei mir leigen meist ausgedruckte Blätter der ESP und auch Arduino-Varianten daneben, wo die jeweiligen Pinbedeutungen möglichst komplett mit drauf sind. Findet man mit der google-Bildersuche eigentlich immer was passendes.
Bei den ESP benutze ich in der ArduinoIDE immer die GPIO-Nummern, da gibt es für mich sonst zuviel Durcheinander bei den Modulen und Boards.

Die IDE versteht diese direkt, also für GPIO0 eben pinMode(0,OUTPUT). TX ist GPIO1, RX ist GPIO3.
Die sind aber ohnehin default als Serial in der ArduinoIDE für die ESP.

Ein Serial.begin(115200); öffnet also wie üblich die Serielle mit 115kBaud und benutzt RX und TX.

Ansonsten immer einen Link zu
https://arduino-esp8266.readthedocs.io/en/2.4.1/reference.html#digital-io
parat haben, die Doku ist inzwischen sehr gut und ziemlich komplett.

Gruß aus Berlin
Michael

Hallo Michael
Danke für deine Antwort.
Ich habe ebenfalls die Schaltpläne zum ESP-01 in betracht gezogen, allerdings kommt bei mir dann immer die Fehlermeldung "GPIO3 was not declared in this scope.
Weis jemand woran das vielleicht liegen könnte?
Den Code habe ich als Attachement angehängt.

Ich danke euch für eure Super Hilfe :slight_smile:

Gruss aus der Schweiz
Robin

ESP8266-01.ino (731 Bytes)

Stelle Deinen Code bitte direkt ins Forum. Benuitze dazu Codetags (</>-Button oben links im Forumseditor).

Gruß Tommy

Hi,

ich muss jetzt noch mal die Frage stellen was Du eigendlich willst. Ich hab das schon noch mal gelesen ganz am Anfang, aber Du scheinst auf dem falschen Weg zu sein.

Wenn Du die serielle Schnittstelle benutzen willst dann kannst Du nicht die GPIO 1 u 3 für was anderes benutzen weil die für die Schnittstelle benutzt werden.( Beim UNO sind das Pin0 und 1). siehe Pinout des ESP. Was sollen in deinem Sketch die GPO 1 und 3 denn machen ?

Eigendlich hattest Du mal nach Ein /Ausgängen des ESP8266-01 gefragt er hat 4 davon. Wenn Du an die was anschliessen willst , Sensoren, LED´s oder Deinen Mega dann kannst Du die ganz normal als E/A benutzen wie beim auch Mega.Außnahme GPI0 0 der wird zum flashen mit verwendet und darf bein booten nicht auf Low liegen, danach ist es egal.

int Sensor1 = 0 weist der Variablen den Wert 0 zu (mehr passiert hier nicht )
int LED1 = 3 weist der Variablen LED1 den Wert 3 zu

PinMode (Sensor1, INPUT) deffiniert den Pin Sensor1 als INPUT ( Sensor ist 0 siehe oben )

so machst Du das im Mega und beim ESP eben auch.

PinMode (LED1,OUTPUT) => LED1 als OUTPUT ( merke LED1 hat den Wert 3)

Dann gabs hier mal den Vorschlag IC2 oder Seriell die Daten auszutauschen, macht ja auch Sinn Du willst ja irgendwelche Daten und nicht 4 Bit von dem Mega letztlich übers WLan senden.. Das geht dann bei Seriell ganz normal mit

Serial.println() auf der sendeseite ( das ist dann alles was Du im Monitor auch sehen kannst bei dir der Mega )

und

Serial.read () auf der anderen Seite

ist dann so als wenn jemand im Monitor die Eingaben macht Das wäre dann bei Dir der ESP der die Daten die er von der Seriellen Schnittstelle bekommt und übers Wlan sendet.

AT geht ja jetzt nicht mehr dazu must Du den ESP erst wieder Jungfreulich machen.

Zu deiner Fehlermeldung

klar GPIO1 GPIO3 kennt er nicht das wären ja Variable in dem Syntax

Dein Mega kennt ja auch die Varialbe Pin3 nicht ohne das Du sie zugewiesen hast.

z.B mit

int Pin3=3 Pin3 ist hier auch nur einen Variable mit dem Namen Pin3 die den Wert 3 bekommt.

Gruß Heinz

Hallo Heinz
Auch dir ein herzliches Dankeschön für deine Antwort.
Ich habe mal so eine kleine Skizze erstellt, was ich machen möchte.
Im Moment möchte ich einfach an einem beliebigen Pin am ESP den Serialeingang lesen, im Monitor ausgeben und auf einem anderen Pin per Serial werte an den Arduino schicken.
Bezüglich der Pinbeschreibung, wie muss ich den Pin (sagen wir mal GPIO3) als Serialin definieren?
Ich nehme mal an, diese Methode funktioniert ebenfalls nicht.
#define ledPin 3

Nochmals Danke an alle
Gruss
Robin

Wenn ich mir Dein Bild so anschaue sehe ich ein großes Porblem. Der ESP arbeitet mit 3,3V uns seine Eingänge sind nicht 5V tolerant. D.H wenn du den direkt an den MEGA anschließt, wirst Du ihn grillen.

Gruß Tommy

Hi Tommy
Danke für deine Antwort.
Ja für die Stromversorgung muss ich mir was ausdenken die 3,3V vom Mega wird ja tendenziell zu schlecht sein.
Auf der Zeichnung geht es ja um die Datenleitungen, spielt es dort auch eine Rolle?? ich dachte das ist egal und die Datenleitungen können direkt an den Arduino gehängt werden einfach das Plus muss halt 3,3V haben.

Danke und Gruss
Robin