Forum: Mikrocontroller und Digitale Elektronik ESP8266-01 Datenübertragen.


von Mark J. (mark_j)


Lesenswert?

Zuerst mal ein Herzliches Hallo

ich hätte eine frage an euch ich beschäftige mich seit  kurzem mit  dem 
WLANmodul ESP8266 bin derzeit  soweit das es sich in mein Wlan einloggt 
und auch erreichbar ist. aber ich habe irgendwo einen Gedankenknopf
ich habe  auf einen  Kontroller einen Webserver laufen der über eine 
Lankarte gut funkt. aber  irgendwie ist  mir noch nicht klar  wie ich 
den  über das Wlan bekommen soll. Ich verwende derzeit  Softwareserial 
ich weiss  das es  nicht schnell ist aber derzeit geht es nicht anders.
und da ist  ein Browseraufruf sehr sehr langsam.
Wer  hat  soweit mit dem  Modul Erfahrunmg und kann mir sagen ob auch 
komplexere  Webseiten über das Modul zubekommen sind und wo ich ansetzen 
muss um das hinzubekommen. Da ich ja lernen will ist es nicht notwendig 
mir da einen Code zu schreiben ich möchte  nur  Wissen  ist es  möglich 
und geht das  nur mit den AT befehlen oder reicht es mit den AT 
befehlen die TCP verbindung zu öffnen. Beim Lan modul ist es so das ich 
der  Daten Stream über  die SPI schnittstelle läuft wo ich mich um den 
Datenstream so nicht kümmern muss wie ist das beim WLANmodul ? und kann 
man den Webserver  so belassen wie  er  derzeit über LANmodul läuft oder 
muss ich den  dann komplett umschreiben. Wäre super wenn mir wer dazu 
Infos geben könnte
ob das Modul für solche Anwendungen geeignet ist.
Sage  jetzt  schon vielen Dank für eure hilfe und Infos
MFG
Mark

von Max H. (hartl192)


Lesenswert?

Mark J. schrieb:
> Da ich ja lernen will ist es nicht notwendig
> mir da einen Code zu schreiben ich möchte  nur  Wissen  ist es  möglich
> und geht das  nur mit den AT befehlen oder reicht es mit den AT
> befehlen die TCP verbindung zu öffnen
Bei mir läuft es ungefähr so ab:
1) Mit AT+CWJAP ins WLAN einloggen
2) Mit AT+CIPSERVER den Server starten
3) Warten bis das http-Request kommt
4) http-Request auswerten
5) Mit AT+CIPSEND antworten
6) Mit AT+CIPCLOSE die Verbindung beenden
7) GOTO 3)

Falls es dir weiterhilft: Ich habe hier einen Webserver für einen PIC24 
in C der die AT+Befehle verwendet gepostet: 
Beitrag "Einfacher Webserver mit PIC24 + ESP8266"

von Mark J. (mark_j)


Lesenswert?

Max H. schrieb:
> Mark J. schrieb:
>> Da ich ja lernen will ist es nicht notwendig
>> mir da einen Code zu schreiben ich möchte  nur  Wissen  ist es  möglich
>> und geht das  nur mit den AT befehlen oder reicht es mit den AT
>> befehlen die TCP verbindung zu öffnen
> Bei mir läuft es ungefähr so ab:
> 1) Mit AT+CWJAP ins WLAN einloggen
> 2) Mit AT+CIPSERVER den Server starten
> 3) Warten bis das http-Request kommt
> 4) http-Request auswerten
> 5) Mit AT+CIPSEND antworten
> 6) Mit AT+CIPCLOSE die Verbindung beenden
> 7) GOTO 3)
>
> Falls es dir weiterhilft: Ich habe hier einen Webserver für einen PIC24
> in C der die AT+Befehle verwendet gepostet:
> Beitrag "Einfacher Webserver mit PIC24 + ESP8266"

Hallo Max

Danke für deine Info die At Commandos das  alles hab ich schon soweit 
intus das  ich es verstehe und ich den beitrag von dir hab ich sehr 
interessiert schon gelesen :-)
ich hab eine  Atmega prozessor. was mir kopfzerbrechen macht ist  die 
UART schnittstelle und ich hab iwo gelsene das es  da  eine zeilen 
beschränkung gibt mit den Zeichen pro Zeile. ich möchte mir halt  sparen 
den Webserver  neu zu schreiben da es  doch schon sehr komplex ist mit 
zeit  Steuerung Temp Regelung Ip Adressen vergabe Anzeige von zuständen 
der Schalter. und diese konstrukt würde ich gerne so über  die 
Schnittstelle jagen. aber  der  zündente funke fehlt da noch. um das 
Wlanmodul so zu implementieren das ich in einem einfachen Schritt die 
Website vom Kontroller  über  das  modul bekomme so wie es eben über 
LAn geht da hab ich eine Webserver Lib eine Ethernet  Lib und eine SPI 
Lib die das  alles händelt. das Thema Wlan gepaart mit UART ist für mich 
neuland. danke das  du deinen Code so zur verfügung stellst. ich werde 
mir das  nun näher  anshen  man lernt  ja  nicht aus und man will ja 
lernen :-)  LG Mark

von Max H. (hartl192)


Lesenswert?

Mark J. schrieb:
> und ich hab iwo gelsene das es  da  eine zeilen
> beschränkung gibt mit den Zeichen pro Zeile
Falls du das meinst: In der at_v0.20 (die neueste dessen Sources ich 
habe) ist die Lände der Nachricht pro AT+CIPSEND auf 2048 beschränkt. 
Das kann man aber recht einfach lösen, ungefähr so:
1
void sendLongData(cahr *data, int length, int id)
2
{
3
  int tx_counter = 0;
4
  for( ; tx_counter < length; tx_counter += 2048)
5
  {
6
    int send_lenght = length > (tx_counter + 2048) ? 2048 : length - tx_counter;
7
    sendData(data + tx_counter, send_lenght, id);
8
  }
9
}
10
11
// Sends up to 2048 character long data by using AT+CIPSEND
12
sendData(cahr *data, int length, int id)
13
{
14
 ...
15
}

von Mark J. (mark_j)


Lesenswert?

Max H. schrieb:
> Mark J. schrieb:
>> und ich hab iwo gelsene das es  da  eine zeilen
>> beschränkung gibt mit den Zeichen pro Zeile
> Falls du das meinst: In der at_v0.20 (die neueste dessen Sources ich
> habe) ist die Lände der Nachricht pro AT+CIPSEND auf 2048 beschränkt.
> Das kann man aber recht einfach lösen, ungefähr so:
>
1
> void sendLongData(cahr *data, int length, int id)
2
> {
3
>   int tx_counter = 0;
4
>   for( ; tx_counter < length; tx_counter += 2048)
5
>   {
6
>     int send_lenght = length > (tx_counter + 2048) ? 2048 : length - 
7
> tx_counter;
8
>     sendData(data + tx_counter, send_lenght, id);
9
>   }
10
> }
11
> 
12
> // Sends up to 2048 character long data by using AT+CIPSEND
13
> sendData(cahr *data, int length, int id)
14
> {
15
>  ...
16
> }
17
>


Hy Max das  kommt schon so hin was ich mir vorstlle jetzt  wäre  noch 
meine Frage wie gesagt hab da denn fertigen Webserver der mit 
Server.Print alles bereit stellt muss ich das dann alles mit AT 
Kommandos machen ? oder  kann ich dennoch weiter alles mit Server.Print 
machen.
Sprich ich möchte nicht den Webserver  über dieses Kommando AT+CIPSERVER 
starten sondern nur am Wlan das TCP und die UART Schnittstelle 
aktivieren. sollte  ich etwas unverständlich schreiben bitte gleich 
sagen :-) Prinzipiell  sind mir schon vielle dinge Bewusst und auh 
verständlich aber  auch noch sehr vieles unklar  da  ich mich mit dem 
Thema Microkonntroller  erst  seit  kurzem beschäftige ich will halt 
nicht nur  abkupfern sondern  alles verstehen daher  versuche ich alles 
selbst zu schreiben aber  manchmal raucht  halt der kopf da ich in beide 
richtungen gerade lerne  HW und SW  kenne mich zwar  elektronisch aus 
aber  alle Bauteile kann man nicht wissen und Datenblätter  liefern mir 
zwar  die  Info was mit dem oder dem Bauteil möglich ist aber  die 
grenze  wird  dann aufgezeigt wenn man es in ein Projekt implementieren 
will.
ich sage vielen vielen Dank das  du dir  die  Zeit nimmst  mir da  Infos 
zugeben über das Wlanmodul das  so wie ich es jetzt mal testen konnte ja 
durchaus gut läuft und sich wunderbar  in eine Wlan umgebung intgerieren 
lässt. ich muss heruasfinden wo die  grenzen von dem modul liegen da  in 
weiterer Folge nicht nur der  WEbserver  über  die  Schnistelle laufen 
soll sondern auch eine Camera mit LiveStream. was ich bisher 
Programmiert habe und das freut mich läuft sehr stabil.

von Max H. (hartl192)


Lesenswert?

Mark J. schrieb:
> Server.Print alles bereit stellt muss ich das dann alles mit AT
> Kommandos machen ? oder  kann ich dennoch weiter alles mit Server.Print
> machen.
Um die AT+Befehle wirst du nicht herumkommen*, du kannst sie aber wenn 
du willst alle in der Server Klasse verstecken.

> Sprich ich möchte nicht den Webserver  über dieses Kommando AT+CIPSERVER
> starten sondern nur am Wlan das TCP und die UART Schnittstelle
> aktivieren.
Das verstehe ich jetzt nicht genau. Der AT+CIPSERVER Befehlt ist genau 
der vom Hersteller eingebaute Weg um den TCP-Server zu starten*, wie 
hättest du ihn gern gestartet?


* Außer du flashst eine alternative Firmware.

von Mark J. (mark_j)


Lesenswert?

Max H. schrieb:
> Mark J. schrieb:
>> Server.Print alles bereit stellt muss ich das dann alles mit AT
>> Kommandos machen ? oder  kann ich dennoch weiter alles mit Server.Print
>> machen.
> Um die AT+Befehle wirst du nicht herumkommen*, du kannst sie aber wenn
> du willst alle in der Server Klasse verstecken.
>
>> Sprich ich möchte nicht den Webserver  über dieses Kommando AT+CIPSERVER
>> starten sondern nur am Wlan das TCP und die UART Schnittstelle
>> aktivieren.
> Das verstehe ich jetzt nicht genau. Der AT+CIPSERVER Befehlt ist genau
> der vom Hersteller eingebaute Weg um den TCP-Server zu starten*, wie
> hättest du ihn gern gestartet?
>
>
> * Außer du flashst eine alternative Firmware.

Hallo Max

:-) das wusste ich das  man mit AT+clipserver  den Server  startet ich 
habe  gehofft das ich das  umgehen kann :-)
Meine Überlegung lag eher darin alle Schnittstellen zu öffnen sprich TCP 
und UART und den Webserver so zu ändern das  er  nicht über  die SPI 
schnittstelle geht  sondern über  die  UART. Ich hab es ja fast 
befürchtet das  du mir das  sagst das  ich über  die AT kommandos nicht 
hinweg komme zumindest  nicht beim 01 modul bei anderen hab ich ja mehr 
pins zur verfügung und kann auch SPI nutzen wenn ich es richtig gelesen 
habe. ich könnte  noch I2C nehmen aber  ob das was  bringt ?
wie meinst  du das  die  AT  kommandos in der  Serverklasse verstecken ? 
ich habe ja folgendes Problem ich habe schon die fertigen Pläne für die 
Platine und das  Programm läuft dann auf einen Xmega256 A3BU
derzeit läuft es auf einen Atmega328 warum 328 weil ich mir damit selbst 
ein Eval Board gebaut habe was  ja Grundsätzlich nicht schwer  ist  wenn 
man Datenbätter  versteht :-) . Deine Infos sind sehr sehr hilfreich 
wenn auch nicht zufriedenstellend in dem Sinn das  meine Überlegungen 
über  den Haufen geworfen werden :-)  Mit  der  Lanschnittstelle ging es 
so einfach ggggg aber okay wenn diese Problem gelöst  ist  dann wieder 
sehr viel gelernt was  ja auch gut ist :-) Das  Wlanmodul wird mich 
jetzt  auch wieder  so lange  Beschäftigen wie die Zeitsteuerung wo ich 
lange gebraucht habe einen Weg zufinden wie ich es steuern wollte ich 
suche immer den für mich einfachsten Weg :-)
DANKE nochmal

von Max H. (hartl192)


Lesenswert?

Mark J. schrieb:
> Ich hab es ja fast
> befürchtet das  du mir das  sagst das  ich über  die AT kommandos nicht
> hinweg komme zumindest  nicht beim 01 modul bei anderen hab ich ja mehr
> pins zur verfügung und kann auch SPI nutzen wenn ich es richtig gelesen
> habe.
Das nützt dir aber auch nur wenn sich das ESP in SPI Modus exakt gleich 
wie dein Aktuelles SPI Modul verhält. Welches SPI Modul verwendest du 
eigentlich?
> wie meinst  du das  die  AT  kommandos in der  Serverklasse verstecken ?
Die Server.Print Methode wird interne wahrscheinlich irgendetwas mit SPI 
machen. Wenn du eine eigene Server Klasse mit Methoden, die die 
AT+Befehle verwenden und sich nach außen gleich verhalten, schreibst 
wird der Rest der Programmes nicht merken, dass Server.print jetzt mit 
den AT+Befehle arbeitet. Die AT+Befehle wurden also sozusagen vor dem 
Rest des Programmes versteckt.

von Mark J. (mark_j)


Lesenswert?

Max H. schrieb:
> Mark J. schrieb:
>> Ich hab es ja fast
>> befürchtet das  du mir das  sagst das  ich über  die AT kommandos nicht
>> hinweg komme zumindest  nicht beim 01 modul bei anderen hab ich ja mehr
>> pins zur verfügung und kann auch SPI nutzen wenn ich es richtig gelesen
>> habe.
> Das nützt dir aber auch nur wenn sich das ESP in SPI Modus exakt gleich
> wie dein Aktuelles SPI Modul verhält. Welches SPI Modul verwendest du
> eigentlich?
>> wie meinst  du das  die  AT  kommandos in der  Serverklasse verstecken ?
> Die Server.Print Methode wird interne wahrscheinlich irgendetwas mit SPI
> machen. Wenn du eine eigene Server Klasse mit Methoden, die die
> AT+Befehle verwenden und sich nach außen gleich verhalten, schreibst
> wird der Rest der Programmes nicht merken, dass Server.print jetzt mit
> den AT+Befehle arbeitet. Die AT+Befehle wurden also sozusagen vor dem
> Rest des Programmes versteckt.

Ich verwende ein Wiznet WS5100 Modul mit SPI. Das  ist mir Bewusst das 
ich das  Wlan auch so hinbiegen muss das es sich wie mein Jetziges modul 
verhält.
Laut ESP Forum gibt es angeblich sowas das  sich das  modul dann so 
verhält.

Aber der andere Ansatz gefällt mir gut hat Charme :-) das könnte die 
lösung sein :-).
Wie bist du mit dem modul zufrieden ?
Das was  du mir sagst sind dinge die mir auf SW seite noch fehlen hier 
zu wissen wie man da ansetzen muss um das  zu lösen .

von Max H. (hartl192)


Lesenswert?

Mark J. schrieb:
> Wie bist du mit dem modul zufrieden ?
Das Modul gefällt mir zum "rumspielen" ganz gut, wirkliche Erfahrungen 
konnte ich noch keine Sammeln, da ich noch kein fertiges Projekt habe. 
Das mit dem PIC24 Webserver habe ich aber schon lange aufgegeben um 
programmiere den ESP8266 stand-alone.

von Mark J. (mark_j)


Lesenswert?

Max H. schrieb:
> Mark J. schrieb:
>> Wie bist du mit dem modul zufrieden ?
> Das Modul gefällt mir zum "rumspielen" ganz gut, wirkliche Erfahrungen
> konnte ich noch keine Sammeln, da ich noch kein fertiges Projekt habe.
> Das mit dem PIC24 Webserver habe ich aber schon lange aufgegeben um
> programmiere den ESP8266 stand-alone.

Das  habe  ich gelesen dass das  geht  und ist auch interessant für 
kleine Anwendungen. ich habe ein Projekt wo wir das Modul einsetzen 
wollen weil es  von der  grösse her  sehr gut in das  Gehäuse reinpasst 
und Grundsätzlich von dem was es kann auch reicht. Hab auch gelesen wenn 
man es ordentlich mit strom versorgt soll es ganz gut gehen. die Tests 
werden es zeigen. Wobei ich da ich aus der  Netzwerk Technik komme mir 
Persönlich eigentlich Kabel lieber ist. Aber da Flexibilität angesagt 
ist ist das WLAN Modul besser.

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.