ich wende mich an euch in voller Verzweiflung mit der Hoffnung auf Hilfe. Ich bin mir sicher, dass mein Problem für euch recht einfach zu lösen sein wird, für mich allerdings stellt es sich als mein persönliches Vietnam Heraus
Es geht, wie der Betreff schon sagt, um das ESP8266 WIFI Modul und den Arduino Uno. Ich bekomme einfach keine Verbindung hin. Ich habe dieses Beispiel probiert:
ich habe alles genau so angeschlossen, wie dort erklärt. Ich kann den Code auch hochladen. Die roter LED AM ESP8266 leuchtet.
Das wars dann aber auch schon. Wenn ich versuche AT Befehle einzugeben passiert gar nichts. Wenn ich den Serial Monitor öffne und die BAUD Rate auf 115200 einstelle, zeigt er mir unaufgefordert "AT+CIPMUX=1" an. Das war alles.
Ich glaube eigentlich nicht, dass die Baudrate das Problem ist, denn immerhin bekommst du ja eine Statusmeldung sauber angezeigt. Ich halte auch nicht viel davon, solche komplexen Sketche wie den verlinkten direkt zu übernehmen, weil da die eigentliche Funktionsweise unklar bleibt. Als Einstieg wäre es wohl besser, die Kommunikation direkt über die Konsole herzustellen und über händische Eingaben der AT-Kommandos die Möglichkeiten der Module kennenzulernen. Als Stolperstein ist in dem Fall die Verwendung der Bibliothek SoftwareSerial zu sehen, die ja gerade in den hohen Baudraten nicht zufriedenstellend arbeitet.
Seit Samstag habe ich auch ein paar dieser ESP8266 bei mir zu liegen, konnte diese aber noch nicht weiter testen. Vielleicht klappt das ja mal in Kürze...
herko:
Ich habe mir für die 3,3V einen eigenen Spannungsregler gebaut. Einen Levelshifter für (TX,RX) habe ich nicht benötigt.
Ein eigener Spannungsregler ist sicher nicht die schlechteste Idee, etwas stutzig macht mich jedoch der Entfall eines Levelshifters. Ich halte es nicht für besonders förderlich, mit 5V-Signalpegeln ein 3,3V-Modul zu füttern, viele ICs nehmen das nämlich sehr übel.
danke für die Antwort. Ich bin für jeden Hinweis und jedes Beispiel dankbar. Ich bin zwar sehr Arduino Begeistert, habe aber programmiertechnisch keinerlei Hintergrund. Ich bin noch dabei mir das selbst anzueignen.
Von daher freue ich mich über jedes Beispiel, das Modul besser verstehen zu können. Habe auch schon im Internet sehr zeitintensiv gesucht, aber nie etwas gefunden, das bei mir auch hingehaut hätte.
Wenn ich mir die Beispiele aber so ansehe, dann bin ich mir sicher, dass eine Verbindungsaufnahme nicht so schwer sein kann....und trotzdem bekomme ich sie nicht hin
ich verwende als Spannungsregler den LD1117V33, der benötigt noch zwei Kondensatoren. Den CH_PD habe ich noch mit VCC verbunden. Dann nehme ich noch die 5V vom UNO sowie GND.
Zu Steuerung habe ich RX--TX und TX--RX verbunden.
Tip
Wenn du einen Sketch lädst, der die serielle Schnittstelle nicht anspricht und den ESP mit den UNO über TX--TX und RX--RX verbindest, kannst du die AT Befehle zum Testen direkt über die Serielle Konsole eingeben.
PS
Man kann den ESP8266 auch über Softserial ansprechen, dann braucht man beim Hochladen des Sketch, den ESP8266 nicht trennen.
Leuchtet bei dir nur die rote LED oder blinkt auch eine blaue beim einschalten? Wenn nicht dann bootet dein Modul nicht richtig. Hast du CH_PD auf high gezogen? Ich habe auch lange versucht das Ding zum laufen zu bekommen, jetzt geht es. Einen levelshifter zwischen den signalleitungen halte ich für sinnvoll. Es geht aber auch ein spannungsteiler in der arduino tx zum Modul rx. Eine extra spannungsquelle ist Pflicht. Das Modul braucht bis zu 250mA, das bekommst du nicht über den arduino. Da fällt mir noch eine fehlerquelle ein. Du hast hoffentlich über Kreuz verbunden und nicht rx mit rx und tx mit tx?
Ich habe 2 ESP Module und beide probiert. Die Verkabelung ist richtig. Eine externe Spannungsquelle habe ich nicht benutzt, werde das aber gleich als nächstes versuchen.
Mir fiel auf, dass bei einem Modul das rote Licht leuchtet, aber die blaue LED nichts tut. Beim anderen blinkt die blaue LED beim einschalten, aber die rote ist nicht an.
Finde das sehr merkwürdig
Eine Kommunikation habe ich leider noch nicht hinbekommen. Vielleicht liegt das ja am Fehlen der separaten Spannungsquelle oder die zwei Module sind einfach nicht ganz in Ordnung...
du solltest zuerst mal eine direkte Kommunikation ohne den Arduino hinbekommen, als vom PC dem Modul. Über einen usb-seriell Adapter. Viele sagen, die Datenleitungen können 5V ab. Bei mir geht's sowohl direkt als auch mit Spannungsteiler.
Am seriellen Monitor kannst du dann verschiedene Baudraten probieren. Wenn du den ESP8266 mit Strom versorgst, kommt eine Meldung. Wenn du die lesen kannst, stimmt die Baudrate.
also einfach die TX und RX Pins des ESP mit den RX bzw. TX Pins des usb-seriell adapters verbinden, beide mit Strom versorgen und dann den Serial Monitor öffnen und die Baud-Raten durchprobieren?
Genau. und nach jedem Wechsel der Baudrate kurz den Strom wegnehmen oder Resetten. Je nach Modul muss noch ein anderer Pin (CH_PD) auf 3.3V gelegt werden.
Auch bei falscher Baudrate wirst du was empfangen, aber eben nur wirre Zeichen, nichts lesbares.
Und Vorsicht mit RX/TX, ich habe RS232/TTL Konverter mit falscher Beschriftung, da muss man Tx auf Tx und Rx auf Rx. Du solltest dir sicher sein, dass die Anschlussbezeichnungen stimmen. D.h. wenn du am Arduino auf Pin0 und Pin1 testest und es gekreuzt funktioniert, dann musst du am ESP8266 auch kreuzen.
Für die Tests sollten die 3,3V vom Arduino reichen.
Ich hoffe, ich habe mich verständlich ausgedrückt.
ich hab' ja auch noch ein paar von diesen dingern unerprobt herumliegen. dazu jetzt mal eine frage:
sie brauchen 3,3V zur stromversorgung sowie am RX-eingang. kann man für beide jeweils einen levelshifter wie den unteren auf DIESER seite nehmen oder braucht man für die versorgungsspannung des moduls einen "richtigen" spannungswandler. ein 5V-netzteil würde den arduino und eben paralell den einen levelshifter versorgen.
Nach Aussagen von vielen und meinen (noch nicht langfristigen) Erfahrungen, kannst du RX und TX direkt anschliessen. Wenn du willst, einen Spannungsteiler mit 2 Wideständen in die RX Leitung vom ESP8266.
Die Versorgungsspannung von 3,3 V sollte 250mA abkönnen. Ich betreibe momentan eines als Client recht nahe beim AP (Fritzbox) und es braucht max. 70mA, dazu reicht mir die Breadboard Versorgung. Nehme ich die 3,3V vom Mega, flackert etwas die Beleuchtung vom I2C TFT 20x4, gehen tuts aber auch.
Wenn du unbedingt ein Level Shifter nehmen willst, muss der nicht bidirektional sein. und der Rx Eingang am Arduino erkennt 3,3V sowieso zuverlässig als High.
ok, levelshifter ist in diesem fall wirklich nicht nötig. spannungsteiler reicht. aber den 3,3V-pin eines arduino will ich für die spannungsversorgung eines moduls auch nicht nehmen, der kann ja nur 50mA, außerdem ist mein ziel immer, einen arduino nur zum testen zu nehmen und dann eine eigene schaltung aufzubauen.
aber welche widerstände nimmt man für einen spannungsteiler eigentlich? das mit dem verhältnis der beiden widerstände zueinander krieg ich ja hin, aber wie "hoch" sollten die beiden widerstandswerte sein? und wieviel mW sollten die widerstände abkönnen? über TX-RX läuft ja sicher kaum strom, bei der versorgung des moduls ist das schon mehr.
EDIT: bin grad auf das gestoßen:
reicht da die diode um 6cent bei reichelt (für 1,3W) oder braucht man mehr beschaltung?
Du kannst testweise auch mal 2 Dioden in Serie als "Vorwiderstand" schalten, jede sollte 0,7V Spanungsabfall bringen, d.h. 3,6V für das Modul. Wenn die nicht heiss werden, müsste es ja auch gehen.
also mit einem Modul geht das. Wenn ich den USB-serial adapter anschließe und eine BAUD_Rate von 9600 einstelle erscheint ein "ready" im Monitor, wenn ich resette.
Das ist ja erstmal gut, nehme ich an. AT Befehle kann ich aber keine geben.
Wie mache ich nun weiter?
Du sagst das du keine AT befehle schicken kannst. Wie regiert das Modul denn? Kommt gar keine Antwort? Bevor du wieder zum arduino gehst sollte das funktionieren. Interessant wäre danach die firmeware Version des Moduls. WElche Software benutzt du zur Kommunikation? Ich hatte immer "hterm " genommen, dort Muster du linefeed und carrierreturn als abschlusszeichen einstellen. Also /n/r. Du hast nicht zufällig einen logikanalysator? Sollte jeder haben aber das du ready empfängst ist schonmal ein sehr gutes Zeichen. Dann bootet dein Modul erstmal richtig.