Forum: Mikrocontroller und Digitale Elektronik dumme frage esp8266


von Reiner D. (dollreiner)


Lesenswert?

als experte für die blöden fragen hier sei wieder mal eine gestattet :

kann ich ein esp8266-modul an einen atmega2560 (arduino mega) hängen, 
ohne rumgebastel am modul seriell daten draufgeben, und diese am anderen 
ende vom wlan im pc lesen ?

(die hw geht, der 8266 spielt acesspoint, dhcp geht, ping auch .. aber 
was macht jetzt die firmware im modul ??)

http oder telnet bringen keine verbindung ..

von Georg G. (df2au)


Lesenswert?

Reiner D. schrieb:
> http oder telnet bringen keine verbindung

Was erwartest du? Läuft auf dem ATMega ein Webserver (http) oder ein 
Telnet-Server?

von Reiner D. (dollreiner)


Lesenswert?

ich dachte die firmware im esp macht die höhere kommunikation.
ich schicke dem ding nur bytes auf der seriellen schnittstelle. oh.

von Franz M. (franzma)


Lesenswert?

Reiner D. schrieb:
> http oder telnet bringen keine verbindung ..

schau mal hier
https://learn.adafruit.com/esp8266-temperature-slash-humidity-webserver/overview

Je nach verwendetem ESP8SP8266-Modul brauchts nicht mal einen µC.

von Ulrich F. (Gast)


Lesenswert?

Reiner D. schrieb:
> ich schicke dem ding nur bytes auf der seriellen schnittstelle.
Richtig!
Du musste dem Modul sagen was es tun soll.
Dann tut es das auch, oder es meldet einen Fehler.

Siehe bei Google: "esp8266 at commands"

von Reiner D. (dollreiner)


Lesenswert?

vielen dank ! ich verstehs, es wird ein webserver im esp implementiert 
mittels der arduino-ide. arduino brauchts dann gar nicht mehr ..

ich will aber folgendes :

ich hab den arduino mega als prozessor in nem fahrzeug (programmiere 
allerdings in c++). der macht messungen, und die messwerte (byte) möchte 
ich am pc graphisch darstellen. telemetrie sozusagen.
der 8266 soll nur die verdammten bytes an den pc schicken, wenn die als 
http kommen muss ich halt dort parsen.

ich dachte nun, die fw des 8266-moduls kann das ohne neuprogrammierung 
...

-> letzte antwort zu spät gesehen : danke für den tipp mit den 
modem-kommandos, bin schon beim lesen.

: Bearbeitet durch User
von Ulrich F. (Gast)


Lesenswert?

Reiner D. schrieb:
> ich dachte nun, die fw des 8266-moduls kann das ohne neuprogrammierung
Ja das geht!

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ein lesenswerter Artikel:
https://blog.thesen.eu/stabiler-http-1-1-wlan-webserver-mit-dem-esp8266-microcontroller/

Reiner D. schrieb:
> tipp mit den modem-kommandos

Zu der Variante mit den "modem-kommandos" steht da:
> Es hat zwar funktioniert, wurde aber regelmäßig instabil. Und es ist
> offen gesagt relativ furchtbar zu programmieren.

Das kann ich bestätigen. Klar, mit viel Aufwand bekommt man auch diese 
Variante stabil: Einen Balkon nach dem anderen dran bauen.

: Bearbeitet durch User
von Timmo H. (masterfx)


Lesenswert?

Wenn du es ohne zusätzliche Software am PC abfragen willst, gehts recht 
einfach über HTTP.
Du verbindest den PC zu dem Accesspoint (also dem ESP-Modul).
Beim ESP startest du einen Server auf port 80
1
AT+CIPMUX=1
2
AT+CIPSERVER=1,80
Dann gibst du im browser auf dem PC die IP-Adresse vom ESP-Modul ein:
=> http://192.168.0.30:80

Beim ESP wartest du nun auf den eingehenden String "GET / HTTP" und wenn 
du ihn bekommst schickst du einfach deine messdaten per 
"AT+CIPSEND=<laenge_des_messdaten_Strings>" und dann feuerst du deinen 
String durch

: Bearbeitet durch User
von Bestromer (Gast)


Lesenswert?

...ich finde diese Module auch ganz interessant und wollte mich mal 
damit befassen....


Reiner D. schrieb:
> vielen dank ! ich verstehs, es wird ein webserver im esp
> implementiert

...das kann kann ich mir aber nicht vorstellen?!

Reiner D. schrieb:
> ich dachte nun, die fw des 8266-moduls kann das ohne neuprogrammierung
> ...

grundsätzlich denke ich man kann das Modul über AT-Befehle nur 
initialisieren und in einen Datenmodus versetzen, ähnlich wie bei 
Bluetooth oder GSM-Modulen oder?

Jetzt liegt es an Dir die Daten in ein standardisiertes oder eigenes 
Protokoll zu packen oder eben als Rohdaten zu übertragen...
Kenne das Modul aber wie gesagt noch nicht :)

von Reiner D. (dollreiner)


Lesenswert?

danke, masterfx !

(wieder zu langsam)

auf 115200 baud kommen meine at-befehle im klartext zurück, baudrate und 
so scheint zu stimmen. aber er tut nix. weder im browser noch telnet 
192.168.4.1 80 klappen. er findet die ip offenbar, aber dann kommt 
"verbindung fehlgeschlagen".

@bestromer : bin mir eigentlich sicher, daß das in dem artikel so 
gemacht wird.

: Bearbeitet durch User
von Thomas Z. (thomas_z41)


Lesenswert?

kommt auf AT<CR><LF> ein OK zurück?

Es ist wichtig dass du Carrige Return und Line Feed sendest!

von Reiner D. (dollreiner)


Lesenswert?

ich sedne den at-string mit docklight, nem terminalprogramm. das setzt 
doch die endezeichen selber dahinter, oder ?

jedenfalls kommen alle zeichen gespiegelt zurück, aber nur bei der 
richtigen baudrate, werden offenbar also schon übertragen.

von Bestromer (Gast)


Lesenswert?

Timmo H. schrieb:
> Beim ESP startest du einen Server auf port 80

...startest Du da wirklich einen Server? Ich denke da wird nur ein Port
(in dem Fall Port80) im IP-Stack geöffnet, also ein Socket der jetzt
benutzbar ist.
Schliesslich bekommst Du ja die Rohdaten vom PC, also die HTTP-Anfrage
welche Du nun beantworten musst, also muss der Server im Atmega 
"implementiert" werden ;-)
Wenn die Http-Anfrage konform beantwortet werden soll,dann muss eben 
dein Atmega auch in der Lage sein dieses Protokoll bedienen zu können 
und man kann jetzt ganze Webseiten zurück geben...

Ansonsten kannst Du eben auch mit Telnet auf das Modul zugreifen und 
übers Terminal normal Zeichen austauschen.....in dem Fall musst Du 
Deinen Telnet-Clienten eben überreden auf Port80 zu connecten, oder 
Deinem Modul den Telnet-Port (ich glaube Port22) öffnen lassen....

von Thomas Z. (thomas_z41)


Lesenswert?

Das Modul empfängt deine Befehle dann schon mal und weil die Echo 
Funktion aktiv ist sendet es sie auch zurück, aber wenn auf AT kein OK 
kommt erkennt es deine Befehle nicht. Bei mir lag es daran das ich kein 
\r\n sondern nur \n gesendet habe.
Guck mal ob du das bei deinem Terminalprogramm einstellen kannst.

von Reiner D. (dollreiner)


Lesenswert?

mit "telnet 192.168.4.1 80" probier ich das ja, oder ?

(das ist die ip vom esp)

-> es konnte keine verbindung zu dem host aufgebaut werden. hab auch 
andere prots probiert. wenn ich einen apache so anspreche, kann ich ihm 
mit GET daten rauskitzeln.

von Ulrich F. (Gast)


Lesenswert?

Reiner D. schrieb:
> mit "telnet 192.168.4.1 80" probier ich das ja, oder ?
>
> (das ist die ip vom esp)
>
> -> es konnte keine verbindung zu dem host aufgebaut werden. hab auch
> andere prots probiert. wenn ich einen apache so anspreche, kann ich ihm
> mit GET daten rauskitzeln.

Du musst dem esp sagen, dass er auf Port 80 lauschen soll.
Dein atmega2560 muss die empfangenen Daten lesen, verarbeiten und eine 
Antwort zum esp übertragen.

von Bestromer (Gast)


Lesenswert?

Reiner D. schrieb:
> wenn ich einen apache so anspreche, kann ich ihm
> mit GET daten rauskitzeln.

der Apache ist ja auch das Software-Konstrukt was dir fehlt, Dein 
Controller muss jetzt das GET beantworten ;-)
Ein PC ohne Apache(WEB-Server Software) hat eine Netzwerkschnittstelle 
die Du konfigurieren kannst und weiter nix, also analog wie bei Deiner 
Zusammenstellung ---> das Modul ist die Netzwerkschnittstelle welche Du 
konfiguriert hast und jetzt brauchst Du eine Software auf deinem 
Controller um die eingehenden Daten von Deiner Schnittstelle verarbeiten 
zu können, also z.B. auf das GET antworten....

oder sehe ich das falsch ;-)

von Bestromer (Gast)


Lesenswert?

Ulrich hat es etwas knapper formuliert, aber da sind ja schon Zwei der 
gleichen Meinung :)

von Reiner D. (dollreiner)


Lesenswert?

docklight ist mist.

mit HTERM gehts !

AT mit \r\n dahinter bringt ein wunderschönes OK.
dann CIPMUX und CIPSERVER, und dann mit dem browser oder telent 
gekitzelt kommen nach GET auch massig daten vom mozilla-server.

CIPSEND = 1 und dann ein Byte geht aber noch nicht ...

von Bestromer (Gast)


Lesenswert?

Reiner D. schrieb:
> -> es konnte keine verbindung zu dem host aufgebaut werden.

Dann stimmt die Konfiguration über die AT-Befehle nicht...Du schreibst 
ja,das ein Ping funktioniert hat, ist das immernoch so?

Kannst Du irgendwie überprüfen ob wirklich der port 80 geöffnet ist?

Versucht Dein Telnet-Client wirklich auf Port 80 zu verbinden?

mit Telnet sollte es auf jeden Fall klappen,da dies eine einfache 
Terminalemulation ist und keine Antwort erwartet, es muss aber auch auf
den Socket(IP/Port) verbinden können.....

Es stimmt also etwas mit Deinem Socket nicht :)

von Reiner D. (dollreiner)


Lesenswert?

ist verzwickt..  im einzelnen :


AT \r\n   -> OK
AT+CIPMUX=1 \r\n  ->OK
AT+CIPSERVER = 1,80 \r\n  ->OK

jetzt kommt :

0,CONNECT+IPD,0,287:GET  HTTP  1.1 HOST (usw....) Connection: 
keep-alive

jetzt schicke ich AT+CIPSEND=2 \r\n -> ERROR 0,CLOSED

: Bearbeitet durch User
von Reiner D. (dollreiner)


Lesenswert?

der fehler (und das problem) ist der CIPSEND-befehl.
bei CIPMUX=1 (nötig für serverbetrieb) muß der als parameter die id und 
die länge der nachricht haben. ich kann aber nicht finden, wie ich die 
id rauskriege ...

von Reiner D. (dollreiner)


Lesenswert?

jetzt gehts, hab einfach geraten : id=0

der esp sagt nun auf AT+CIPSEND = 0,2 -> OK
und wenn ich 2 byte schicke kommt : -> busy, RECV 2 Bytes, Send OK

das im pc parsen ist eher ne leichtere übung hoffe ich ;-)

von Helmut H. (der_andere)


Lesenswert?


von Ulrich F. (Gast)


Lesenswert?

> geraten

Wenn du die AT Kommandos nochmal sorgfältig untersuchst, wirst du 
feststellen, dass dir der ESP die ID frei Haus liefert.
Nutze diese ID!

Mit raten wirst du in eine Falle tappen.

von Ulrich F. (Gast)


Lesenswert?

Helmut H. schrieb:
> Lesenswert:
>
> http://esp8266-server.de/

Wenn er denn den ESP standalone betreiben wollte, wäre das evtl. 
hilfreich.
Aber er möchte ihn an einen Arduino Mega2560 klemmen.
Warum auch immer....

Der ESP hat mehr Speicher als der Mega, schnelleren Tackt, nur weniger 
Beinchen.

von Reiner D. (dollreiner)


Lesenswert?

wenn ich nicht irre, muß ich dann erstmal mit nem client (pc) einen 
request schicken, der dann beantwortet wird und esp-seitig am terminal 
die id abgibt, z.b. : +IPD,0,313:GET/ ... wobei hier wieder die 0 die id 
ist.

@combie : weil ich den arduino eh schon im fahrzeug hab, und der sich 
bislang eher langweilt.

: Bearbeitet durch User
von Bestromer (Gast)


Lesenswert?

Helmut H. schrieb:
> Lesenswert:
>
> http://esp8266-server.de/

Sehr interessant...scheint ja wirklich so zu sein,das man ein kleines 
Web-Serverchen direkt auf der CPU zum laufen bringen kann, cool;-)

von Ulrich F. (Gast)


Lesenswert?

Bestromer schrieb:
> Helmut H. schrieb:
>> Lesenswert:
>>
>> http://esp8266-server.de/
>
> Sehr interessant...scheint ja wirklich so zu sein,das man ein kleines
> Web-Serverchen direkt auf der CPU zum laufen bringen kann, cool;-)

Ja!
Bei mir im Einsatz.

Meine ersten Knoten bestanden aus einem ProMini+ESP8266-01

Ich hatte keine Lust mehr mich mit dem fürchterlichen AT Gedöns 
herumzuschlagen. Das ist echt gruselig. Auch hat der ATMega328 zu wenig 
Ressourcen um das WEB Gedöns vernünftig abzuhandeln. String Verarbeitung 
in 2KB, ist echt knapp.

Jetzt nutze ich die ESP8266-01 und ESP8266-201 Standalone. Nach 
einspielen der ESP Erweiterung in die Arduino IDE lässt sich damit auch 
recht gut umgehen. Die Anzahl der angepassten Libs ist noch etwas mau. 
Also noch recht viel Eigenentwicklung nötig. Aber die Unterstützung wird 
täglich besser.

Der ESP hat so ziemlich alles mehr, besser und schneller, als die 
(Arduino) AVRs. Nur weniger Beinchen.

von Reiner D. (dollreiner)


Lesenswert?

zunächst mal zusammenfassend (danke an alle !!!) :

der esp8266 kann mit ein paar wenigen at-commands als webserver am 
arduino betrieben werden. damit kann man eine anzugebende zahl zeichen 
übers wlan senden.

weiter :

wenn man sich auf sendeseite (arduino) mit den zeichen ein wenig mühe 
gibt, kann man also auch xml schicken.

das xml kann man am empfänger (=client) z.b. in visual basic sehr 
einfach mit microsofts xmldom parsen, und damit hat man die daten.

aber : das ist ziemlich viel protokolloverhead, ich fürchte mit 
schnelleren messdaten (ich hab z.b. 100hz) wird das eng.

also : udp-übertragung ohne http. was mir hier völlig unklar ist, ist 
die frage wie man auf clientseite hier nen udp/ip-socket aufbaut und die 
daten parst. (gegoogelt hab ich natürlich, aber ich scheine unbegabt)

korrektur : https://www.youtube.com/watch?v=15H2_ikPr9E

: Bearbeitet durch User
von Helmut H. (der_andere)


Lesenswert?

Scheinst ähnliche Anforderungen zu haben,

Michael hat Software entwickelt um mit der NetIO-App eine schöne 
Applikation als Haussteuerung nur mit einem ESP-01, I2C-Bausteinen, 
16-Opto_In und 16 ULN_Out auf 6er Hutschienenbasis zu machen.
Da ist XML-Ausgabe auch gern gesehen ;-)

ESP meldet sich mit der Erklärung wie was funktioniert:

PCF8574 Adr 000-Input  1-7   Adr 001 Input  8-16
PCF8574 Adr 010-Output 1-7   Adr 011 Output 8-16

http://Dein IP/Setstate.php?PinNr=9&State=1
-Ausgang 9 einschalten
State kann 0,1 oder T sein T-Bedeutet Zuschand wechseln

http://Dein IP/Getstate.php                 -Input Staus abfragen

http://Dein IP/Getstate.xml                 -Daten im XML-Format

So ähnlich wie Pokeys Haus mit Pokeys57E auf 
http://netio.davideickhoff.de/de/projects/

von R. W. (quakeman)


Lesenswert?

Wenn es darum geht einen Web-Server auf dem ESP laufen zu lassen würde 
sich auch die alternative Firmware NodeMCU anbieten. Diese integriert 
einen LUA Interpreter auf dem ESP, wodurch man den Controller im ESP 
quasi standalone betreiben kann ohne einen externen Controller 
anzuschließen. Damit ist ein Webserver sehr einfach zu programmieren. 
NodeMCU beherrscht GPIO, I2C, SPI und OneWire von Haus aus, wodurch 
etliche gängige Sensoren und LCDs sehr einfach ansteuerbar sind. Damit 
rentiert sich zumindest der im ESP integrierte 80MHz Controller etwas 
mehr. :)

Ciao,
     Rainer

https://github.com/nodemcu/nodemcu-firmware

von Ulrich F. (Gast)


Lesenswert?

80MHz?
Per Software auf 160MHz umschaltbar.

LUA Interpreter?
Die Sprache gefällt mir nicht so....
Vielleicht bin ich auch nur zu faul, diese auch noch zu lernen.

Bin mit C/C++ auf dem ESP zufrieden.

Aber wer es mag, mag es so tun .... ;-)

von R. W. (quakeman)


Lesenswert?

Ulrich F. schrieb:
> LUA Interpreter?
> Die Sprache gefällt mir nicht so....
> Vielleicht bin ich auch nur zu faul, diese auch noch zu lernen.
Lua ist etwas gewöhnungsbedürftig, das ist aber bei den meisten 
Interpretersprachen so finde ich (z.B. auch Python). Hat man sich aber 
mit der Syntax mal angefreundet sind diese ganz brauchbar.

> Bin mit C/C++ auf dem ESP zufrieden.
Ich bin auch eher ein Freund von C/C++, aber eine Interpretersprache 
bietet manchmal doch ein paar Vorteile. Z.B. dass man den ESP live 
programmieren und seinen Code testen kann, ohne jedes mal ein neues 
Programm zu flashen. Und Lua bietet eine recht gute High-Level API, 
wodurch z.B. ein Webserver in wenigen Zeilen Code programmiert ist.
Dass die Effizienz natürlich bei weitem nicht an ein C/C++ Programm 
heran reicht ist auch klar. Aber ich denke für viele kleine Aufgaben 
lassen sich mit Lua sehr schnell funktionierende Programme erstellen 
ohne extra Compiler, IDE, Flasher.

> Aber wer es mag, mag es so tun .... ;-)
War ja auch nur als Alternative ein Vorschlag. :)

von Bestromer (Gast)


Lesenswert?

Reiner D. schrieb:
> der esp8266 kann mit ein paar wenigen at-commands als webserver am
> arduino betrieben werden. damit kann man eine anzugebende zahl zeichen
> übers wlan senden.

...was ist wenn Du den Web-Server mal aussen vor läaast und einfach 
Daten im transparendten Modus sendest und empfängst?
Unvarnished Transmission Mode

Wrap return “>” after execute command. Enters unvarnished transmission, 
20ms interval between each packet, maximum 2048 bytes per packet. When 
single packet containing “+++” is received, it returns to command mode.

...klingt für mich, als könnte man da in einen transparenten Datenmodus 
schalten und aus diesen explizit per sequenz +++ zurück in den 
Befehlsmodus kehren kann....
Somit kannst Du mit Deinem Atmega im transparenten Modus auf alles 
Antworten wie Du magst, d.h. bei einer Anfrage auch eine HTTP Seite 
zurück senden, natürlich mit Deinem Layout und Deinen Werten.
Es liegt jetzt an Dir, die Seite so zu gestalten,das nach deren 
Übertragung auf das anfragende Gerät Scripte gezielt Variablen per GET 
von Deinem Atmega abfragen und in Intervallen Auffrischen, oder Du auf 
dem Endgerät einen Datenstrom aufbereitest.

Ich habe mir auf jeden Fall drei solcher Module bestellt, Du hast mich 
jetzt neugierig gemacht :)

von Reiner D. (dollreiner)


Lesenswert?

für das geld ein prima spielzeug !

ich will genau was du beschreibst, eine transparente dfü.

den webserver hab ich nur benutzt, damit überhuapt mal was geht, mit xml 
wärs wohl im "hype", aber eigentlich unsinn..

ich will seriell vom arduino in den esp bytes einfüllen, und am 
pc(labtop) in vb die bytes empfangen und wie an nem digitaloszi 
graphisch darstellen. die grafik und so hab ich schon alles, aber nur 
für drahtgebundene rs232.

jetzt bastle ich also am udp-kanal ...

von Bestromer (Gast)


Lesenswert?

... wird ein Weilchen dauern bis die Module da sind, ich behalte den 
Thread auf jeden Fall im Auge und melde mich wenn es was neues gibt :)

von Alexander B. (Firma: brickwedde.dev) (alexbrickwedde)


Lesenswert?

Ich habe mir vor ein paar Tagen mal das "ESP Link" von JeeLabs geflasht. 
Realisiert eine Bridge zwischen TCP Port 23 (Telnet) und den seriellen 
Pins. Hat (nicht mit der Beta, nur mit stable 1.0) super funktioniert - 
aber habe noch keinen Langzeittest durchgeführt. Source (für ESP SDK) 
und Binary ist verfügbar, inkl. Webserver. AP zum Einrichten usw. 
https://github.com/jeelabs/esp-link

von Müller (Gast)


Lesenswert?

Das Teil ist gut und ich verwende es gerne als Basis für Projekte. 
Diskussion zum esp-link ist hier (dort ist auch der Autor aktiv):
http://www.esp8266.com/viewtopic.php?f=34&t=3445&p=24907#p24907

von Joachim B. (jar)


Lesenswert?

Reiner D. schrieb:
> ich will seriell vom arduino in den esp bytes einfüllen,

wie das denn?

mein Problem, ein Arduino mit 16MHz ist nicht schnell genug für die 115k 
Baud der ESP Defaultlieferung bei geringstem Baudratenfehler.
Ergo habe ich den ESP erst mal umprogrammiert mit einer fertigen 
Firmware zu 9600 Bd.

Wie also willst du vom Arduino mit 16MHz seriell zum ESP schreiben und 
vom ESP lesen?

von Timmo H. (masterfx)


Lesenswert?

Tja wenn man arduino nimmt ist 115k wohl schon zu schnell. Nativ ist das 
kein Problem.

von Ulrich F. (Gast)


Lesenswert?

1. Wenn das nativ geht, dann gehts auch per Arduino.(vielleicht nicht 
offensichtlich, aber geht)
2. Dem ESP kann man per AT Kommando eine andere Baudrate verpassen.

von Bestromer (Gast)


Lesenswert?

Joachim B. schrieb:
> mein Problem, ein Arduino mit 16MHz ist nicht schnell genug für die 115k
> Baud der ESP Defaultlieferung bei geringstem Baudratenfehler.

Das glaub ich Dir aber nun garnicht ;-)
Also ich behaupte mal sogar ganze sequenzen oder Befehlsketten aus einem 
Datenstrom mit 115kB heraus filtern zu können...

Ein 16 MHz-Quarz ist ja nicht wirklich geeignet,man sollte schon ein 
Baudratenquarz bei solchen Vorhaben verwenden, oder die Taktrate etwas 
mit den Fuses verbiegen...

von holger (Gast)


Lesenswert?

>mein Problem, ein Arduino mit 16MHz ist nicht schnell genug für die 115k
>Baud

Das hat mit schnell genug evtl. wenig zu tun.
Mit U2X = 0 ist der Baudratenfehler -3,5%.
Mit U2X = 1 noch 2,1%.

von Joachim B. (jar)


Lesenswert?

Bestromer schrieb:
> Das glaub ich Dir aber nun garnicht ;-)

musst du nicht....

Bestromer schrieb:
> Ein 16 MHz-Quarz ist ja nicht wirklich geeignet,man sollte schon ein
> Baudratenquarz bei solchen Vorhaben verwenden

ich weiss und habe die schon in 14,xxx MHz und 18,xxx MHz hier zu 
liegen, aber auch viele andere Baustellen als mich mit einem Arduino 
Bootloader und Umgebung rumzuprügeln.

holger schrieb:
> Das hat mit schnell genug evtl. wenig zu tun.

weiss ich doch ist bei euch alle so warm oder was ist an meinen Worten 
nicht zu verstehen?

Arduino zu kaufen 8 oder 16 MHz, diese sind nicht wirklich 
baudratengerecht für 115k, den ESP umzupatchen geht zwar, ist aber auch 
Arbeit.

Wie mans auch dreht und wendet,

"lalala, eines von diesen Dingen passt nicht zu den anderen"

Arduino mit 16MHz und ESP mit 115k PUNKT

von Bestromer (Gast)


Lesenswert?

@Joachim
Du bist ja ganz aufgeregt, das ist bei der Hitze wirklich nicht gut :)

Joachim B. schrieb:
> weiss ich doch ist bei euch alle so warm oder was ist an meinen Worten
> nicht zu verstehen?

...passt schon ;-)

Schönen Abend noch...

von Joachim B. (jar)


Lesenswert?

Bestromer schrieb:
> @Joachim
> Du bist ja ganz aufgeregt,

woran kann es wohl liegen?

Bestromer schrieb:
> Ein 16 MHz-Quarz ist ja nicht wirklich geeignet,


btt:

Reiner D. schrieb:
> kann ich ein esp8266-modul an einen atmega2560 (arduino mega) hängen,

JA

Reiner D. schrieb:
> ohne rumgebastel am modul seriell daten draufgeben,

BEDINGT,
1.) ESP8266 umpatchen auf 9600 Bd oder für
2.) 115k im Arduino einen Baudratenquarz einsetzen und den ganzen 
Arduino neue SW verpassen und dieses der Arduino IDE mitzuteilen, ich 
wüsste auf Anhieb nicht wo man überall ändern müsste.

ohne rumgebastel also NEIN

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> ohne rumgebastel also NEIN

Neuere ESP Firmwares kennen: AT+CIOBAUD=9600

Joachim B. schrieb:
> und dieses der Arduino IDE mitzuteilen, ich
> wüsste auf Anhieb nicht wo man überall ändern müsste.

An einer Stelle: In der boards.txt

Tipp:
Besser eine eigene boards.txt anlegen. Die IDE bietet einen solchen Ort, 
der auch beim Update nicht verloren geht.
Das anlegen eigener Boards wird sowieso jeder, auch nur halbwegs 
ernsthafte Arduinobastler, irgendwann machen.

von Joachim B. (jar)


Lesenswert?

Reiner D. schrieb:
> atmega2560 (arduino mega)

Ulrich F. schrieb:
> Joachim B. schrieb:
>> und dieses der Arduino IDE mitzuteilen, ich
>> wüsste auf Anhieb nicht wo man überall ändern müsste.
>
> An einer Stelle: In der boards.txt
>
> Tipp:
> Besser eine eigene boards.txt anlegen.

btw. hat ein Arduino mega2560 nicht 2 µC drauf und 2 ISP 12560 und einen 
für die USB

Ich gehe mal davon aus das der Quarz am 2560 gemeint ist (ist das ein 
Quarz oder Resonator?)

Reicht es wirklich das in der boards.txt einzutragen?

muss auf der USB Seite nix geändert werden?

klingt zwar machbar, aber einen Ardu m2560 original zu verändern ist 
schon gewöhnungsbedürftig, hat man 2 auf dem Tisch oder gar 5 kanns 
verwirrend werden oder ich baue alle gleich um und schmeisse alle 16MHz 
m2560 in der boards.txt raus, muss nur daran denken wenn ich mit dem 
ardu an andere Rechner gehe das die nix von wissen.

Ulrich F. schrieb:
> Neuere ESP Firmwares kennen: AT+CIOBAUD=9600

wie werden die ausgeliefert mit 115k? dann hilft das ja nicht weil der 
AT Befehl über einen Arduino nie ankommt.

: Bearbeitet durch User
von Ulrich F. (Gast)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> btw. hat ein Arduino mega2560 nicht 2 µC drauf und 2 ISP 12560 und einen
> für die USB
So ist es!
Das gilt für die meisten "großen" Arduinos.
Einige haben stattdessen einen FTDI oder vergleichbaren Bausteinen an 
Board
Die kleinen nix dergleichen....

Joachim B. schrieb:
> (ist das ein
> Quarz oder Resonator?)
Meist Resonator

Joachim B. schrieb:
> Reicht es wirklich das in der boards.txt einzutragen?
Ja!
Der alt bekannte FCPU Wert wird da eingestellt.
Alle Abhängigen Werte / Registerinhalte werden mit Macros usw. 
berechnet.
Ich habe dir mal eine von meinen angehangen

Joachim B. schrieb:
> muss auf der USB Seite nix geändert werden?
Tja...
Die 8U2 und 16U2 haben auch einen 16MHz Quarz


Das mit den 115200 Baud funktioniert übrigens erstaunlich gut. Ein paar 
Fehler gibts, ja...
Aber das raus pumpen von AT+CIOBAUD=9600 klappt.
(spätestens beim dritten mal)

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Ja!
> Der alt bekannte FCPU Wert wird da eingestellt.
> Alle Abhängigen Werte / Registerinhalte werden mit Macros usw.
> berechnet.
> Ich habe dir mal eine von meinen angehangen

du hast leider noch nicht alles beantwortet:

Joachim B. schrieb:
> Ulrich F. schrieb:
>> Neuere ESP Firmwares kennen: AT+CIOBAUD=9600
>
> wie werden die ausgeliefert mit 115k? dann hilft das ja nicht weil der
> AT Befehl über einen Arduino nie ankommt.

Ich nutze ja m1284p mit FTDI momentan mit 16 MHz optiboot und 1M Bd

müsste erst mal die Optiboot neu übersetzen, wäre toll mit
921600 Bd knapp weniger als Optiboot mit 1M

Quarze wären aber nur:
7.3728  (0%)
scheidet aus der soll ja nicht kastriert werden.

14.7456  (0%)
ist leider weniger als 16 MHz

22.1184  (0%)
ich hätte Bock den 1284p moderat zu überreizen

den hat mein dealer sogar in SMD, morgen mal einige kaufen

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> Ich nutze ja m1284p mit FTDI momentan mit 16 MHz optiboot und 1M Bd

Joachim B. schrieb:
> du hast leider noch nicht alles beantwortet:

Die letzten habe ich mit 115200 Baud bekommen.
Aber das interessiert mich nicht sonderlich.

Die, welche ich jetzt (meist) einsetze sind von der 201er Variante der 
ESP Boards.
Standalone.
Die haben mehr Power, in vielen Belangen, als dein 1284p, so dass du den 
AVR eigentlich in die Tonne kloppen kannst, wenn da auch noch ein 
ESP8266 im Spiel ist.
Pins! Da ist etwas Mangel.
Als Entwicklungsumgebung benutze ich die Arduino IDE.
(kann man drüber streiten, aber tuts)

Joachim B. schrieb:
> 22.1184  (0%)
> ich hätte Bock den 1284p moderat zu überreizen

Der ESP zuckt mit wahlweise 80 oder 160MHz

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Joachim B. schrieb:
>> 22.1184 MHz (0%)
>> ich hätte Bock den 1284p moderat zu überreizen
>
> Der ESP zuckt mit wahlweise 80 oder 160MHz

der ESP interessiert mich nur als Skave für wlan zum 1284p, ich verstehe 
deine Antwort nicht.

Es ist ja das Problem der Baudrate ohne Baudraten Quarz. Optiboot mit 1 
M bei 16 MHz gefällt mir, mit Baudratenquarz 22.1184 MHz akzeptiere ich 
auch etwas weniger mit 921600 Bd zum Proggen und zum ESP gehen dann auch 
115k Bd

von R. W. (quakeman)


Lesenswert?

Joachim B. schrieb:
> Ulrich F. schrieb:
>> Der ESP zuckt mit wahlweise 80 oder 160MHz
>
> der ESP interessiert mich nur als Skave für wlan zum 1284p, ich verstehe
> deine Antwort nicht.

Ich vermute er wollte damit sagen, dass der ESP selber deutlich 
schneller und leistungsfähiger als ein Atmega ist und man diesen 
alternativ auch standalone ohne extra Atmega betreiben könnte. Auch wenn 
das ja offensichtlich nicht das ist was du machen willst. ;)

von Ulrich F. (Gast)


Lesenswert?

So ist es....
Als wenn man ein Rennpferd und einen Ackergaul an den selben Karren 
spannt...
Das sieht nicht nur komisch aus, die finden auch keinen Rhythmus.

Wie wäre es denn mit Alternativen?
z.B. per SPI anbinden (oder I2C)
Das können auch beide.

Meiner bescheidenen Meinung nach, ist der AT Befehlssatz und die 
Serielle eher ein Klotz am Bein.

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> So ist es....
> Als wenn man ein Rennpferd und einen Ackergaul an den selben Karren
> spannt...
> Das sieht nicht nur komisch aus, die finden auch keinen Rhythmus.

Projekt minutengenaue wordclock

Ich werde aber jetzt nicht anfangen im Galopp die Pferde zu wechseln ;-)

von Ulrich F. (Gast)


Lesenswert?

Joachim B. schrieb:
> Projekt minutengenaue wordclock

Dann kommst du auch mit 9600 Baud aus.

Es kann gut sein, dass der ESP die Baudrate auch über den 
Reset/Stromausfall hinaus behält.
(ungetestet, die Frage stellte sich mir noch nicht)

Denn die Wlan Zugangsdaten behält er auch über den Reset/Stromausfall 
hinaus.
(getestet)

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Dann kommst du auch mit 9600 Baud aus.

ich weiss brauche den ESP nur für NTP oder wer hardcore progger ist für 
fernsteuerbare Uhrspielereien.

Da es aber ein Nachbauprojekt wird möchte ich schon gerne so einfach wie 
möglich, aber es scheint nicht zu klappen.

1.) der Arduino mighty atmega1284p kann fertig bestellt werden nur mit 
16MHz Quarz, müsste also umgebaut werden auf Baudratenquarz und neuen 
Bootloader bekommen, nicht für jeden zu stemmen.
2.) der ESP muss umgepatched werden auf 9600 Bd habe ich ja gemacht aber 
kann auch nicht jeder interessierte Nachbauer.

Frank ist ja nun beim STM angekommen, aber ich hatte ja vor 1-2 Jahren 
mit wordclock1 Nachbau begonnen auf Arduino, der Prototyp mit 119 LEDs 
in WS2812b Stripes läuft, wlan Verbindung läuft, DCF77 läuft wenn auch 
bescheiden, I2C Clock und Tastatur z. manuellen Stellen läuft, sogar 
Displays nach Wunsch Oled 128x64 oder Nokia5110 läuft.
Bin dann zur wordclock2 gewechselt und habe zwischendurch eine Binninger 
Berlin Uhr gebaut

: Bearbeitet durch User
von Reiner D. (dollreiner)


Lesenswert?

stand der dinge :

esp8266 hängt seriell an der tx von usart1 vom arduino_mega.
dieser sendet :

AT
AT+CIPMUX=1
AT+CIPSERVER=1,80
AT+CIPSEND=0,2

alles brav mit cr/lf dahinter, alles wird vom ESP mit OK beantwortet.
die antworten schcike ich nicht zum Ardu, sondern zu ner FTDI, die mir 
das komfortabel in den PC übersetzt (dort terminalprogramm)

aber : jetzt schicke ich bytes, und bekomme fehlermeldungen. auch wenn 
ich vorher mit dem laptop eine wlan-verbindung aufbaue (was incl. dchp 
funktioniert)

-> ich hab die befehlsfolge für den unvarnished mode nicht verstanden, 
oder ?

ist da jemand schlauer ?

von Ulrich F. (Gast)


Lesenswert?

Reiner D. schrieb:
> -> ich hab die befehlsfolge für den unvarnished mode nicht verstanden,
> oder ?
Vermutlich ....

Du musst natürlich erst eine "Verbindung" aufbauen, bevor du was 
sendest....
Ziel Ip Adresse, Port und Protokoll ist dazu nötig.


https://github.com/espressif/esp8266_at/wiki/at_example_0020000903

von Reiner D. (dollreiner)


Lesenswert?

hallo, genau den gleichen link hab ich parallel auch gefunden. ist super 
...
danke für deine mühe !

mit dem tcp-server tools auf dem laptop kann ich nun bytes empfangen, 
die der arduino über den esp sendet.

nun noch ein tcp_listener in vb geschrieben, dann sollte ne telemetrie 
übner wlan möglich sein. bin gespannt, welche datengeschwindigkeit ich 
bei tcp oder udp hinkriege.

by the way : der ardu sendet brav mit 115200 baud, die paar prozent 
fehler scheinen die usart nicht zu stören.

von Jochen (Gast)


Lesenswert?

Gibt es einen Grund Doll, warum du dich nicht an die Netiquette hältst?

---

Wichtige Regeln - erst lesen, dann posten!

- Groß- und Kleinschreibung verwenden)

von r_u_d_i (Gast)


Lesenswert?

Reiner D. schrieb:
> nun noch ein tcp_listener in vb geschrieben, dann sollte ne telemetrie
> übner wlan möglich sein. bin gespannt, welche datengeschwindigkeit ich
> bei tcp oder udp hinkriege.

erhoff dir nicht allzu viel - das packetweise schaufeln von uart zu wifi 
und wifi zu uart dauert leider mit den at befehlen; direkt 
programmierung ( luna ide / xtensa ide )sieht es anders aus.

lg
;-)

von Reiner D. (dollreiner)


Lesenswert?

netiquette ? soll ich ne krawatte anziehen vor dem losschicken von nem 
post ?

-------------

also : es funktioniert gut.

der esp kriegt folgende ini im konstruktor seiner klasse :
1
AT+CIPSTART="TCP", "192.168.4.1",1
2
AT+CIPMODE=1
3
AT+CIPSEND

dann werden in einer methode in der main die daten (es sind 6 byte 
meßwerte) geschickt, einfach die bytes direkt mit 115200 baud an den 
uart zum esp.

meine main zykelt mit 100hz, das scheint problemlos zu reichen mit tcp, 
man könnte wohl mit udp noch ein wenig optimieren.

auf rechnerseite verbindet der pc problemlos mit dhcp übers wlan auf den 
esp, und die daten werden hier von einem "tcp-listener" in vb empfangen, 
mit der methode readbyte des getstream-objekts kann byte für byte 
transparent gelesen werden.

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.