Forum: Mikrocontroller und Digitale Elektronik ATmega via LAN / Telnet ansprechen?


von AVRli (Gast)


Lesenswert?

Hallo,

ich habe ein Projekt mit einem ATmega328 realisiert. Dieser gibt Daten 
an einen UART aus. Um die Flexibilität zu erhöhen wäre es super wenn ich 
die Daten von einem x beliebigen PC im Home LAN abfragen könnte.

Man findet im Internet jede Menge LAN Module, welches wäre für mein 
Vorhaben geeignet, auf was muß man achten?

WLAN wäre auch cool, muß aber nicht unbedingt sein!

Ich programmiere vorzugsweise in C.

Grüße AVRli...

von Max D. (max_d)


Lesenswert?

WLAN mit esp8266 wäre mindestens eine Überlegung wert.

von Klaus W. (mfgkw)


Lesenswert?

Was willst du dann über telnet machen?
- Programme aufrufen: wird kaum gehen mangels Programmen
- Dateien auflisten, holen, speichern: wird kaum gehen mangels 
Dateisystem

Letztlich musst du einen Socket anbieten und sowohl alle Schichten 
darunter schaffen als auch eine Art Kommandointerpreter mit ein paar 
internen Kommanos, die du brauchst.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ich selber setze AVRs zusammen mit dem Wiznet812MJ ein. Das Ding kostet 
um die 20 EUR bei Watterott.

AVR-Software (TCP-Verbindung zum AVR als Server) findest Du zum Beispiel 
hier:

   Remote IRMP

Im Artikel wird zwar ein Arduino-Ethernet-Modul verwendet, aber es wird 
keine Arduino-Software benutzt, sondern das Ding klassisch mit dem 
ATmel-Studio programmiert. Ich selber war einfach zu faul, das 
Wiznet-Modul an den AVR zu löten und habe deshalb das komplette Modul 
genommen. Die Software läuft aber genauso mit ATmega328 + Wiznet812MJ in 
einer eigenen Schaltung.

: Bearbeitet durch Moderator
von AVRli (Gast)


Lesenswert?

Max D. schrieb:
> WLAN mit esp8266 wäre mindestens eine Überlegung wert.

Habe es gefunden, allerdings ist mir die Funktion noch nicht klar. Wie 
die Verbindung zum PC dann die ser2wlan Daten auswerten/einlesen kann.



Klaus Wachtler schrieb:
> Was willst du dann über telnet machen?

Der ATmega sammelt gerade Daten von Sensoren, diese möchte ich gern 
flexibel über das Netzwerk abfragen. Telnet erschien mir hier als 
geeignet. Gerne auch was, was besser geeignet ist.



Frank M. schrieb:
> Ich selber setze AVRs zusammen mit dem Wiznet812MJ ein. Das Ding
> kostet um die 20 EUR bei Watterott.

Ja das wäre nicht schlecht! Das wäre dann der Chip ENC28J60?
Weiter habe ich noch das Modul W5100 gesehen, welches ist nun das, mit 
dem man den wenigsten Ärger hat.



Die Vor und Nachteile der jeweiligen ist mir noch etwas unklar.

Danke für Eure Hilfe, AVRli...

von Georg G. (df2au)


Lesenswert?

AVRli schrieb:
> Telnet erschien mir hier als geeignet.

UDP dürfte ausreichend und deutlich einfacher zu implementieren sein.

> Ja das wäre nicht schlecht! Das wäre dann der Chip ENC28J60?
Geht auch, Software findest du als Gerüst u.a. unter "Radig Webserver".

> Weiter habe ich noch das Modul W5100 gesehen, welches ist nun das, mit
> dem man den wenigsten Ärger hat.

Auch eine gute Wahl, für Dich vermutlich besser, da das IP Protokoll 
bereits eingebaut ist. Da Du aber noch ganz am Anfang stehst, wirst Du 
dir erst einmal 3 Monate lang die Ohren brechen, so oder so. Viel Spaß!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

AVRli schrieb:
> Frank M. schrieb:
>> Ich selber setze AVRs zusammen mit dem Wiznet812MJ ein. Das Ding
>> kostet um die 20 EUR bei Watterott.
>
> Ja das wäre nicht schlecht! Das wäre dann der Chip ENC28J60?

Nein, der ENC28J60 ist nur ein Physical Transmitter. Du bräuchtest dann 
noch einen TCP-Stack auf dem AVR.

> Weiter habe ich noch das Modul W5100 gesehen, welches ist nun das, mit
> dem man den wenigsten Ärger hat.

Das Wiznet812MJ-Modul benutzt genau den W5100. Der hat den TCP- und 
UDP-Stack im Chip. Daher ist dieses Modul mit extrem wenig AVR-Software 
direkt lauffähig.

> Die Vor und Nachteile der jeweiligen ist mir noch etwas unklar.

Siehe oben. Es gibt zwar auch TCP-Stacks für den AVR (z.B. 
Radig-Webserver) in Verbindung mit dem ENC28J60, aber ehrlich gesagt, 
würde ich mir den nicht antun. Der Stack verbrät natürlich auch noch 
eine Menge Flash auf dem ATmega.

Eine simple SPI-Verbindung zum Wiznet812MJ ist da wesentlich einfacher.
Du könntest auch das Wiznet 820io

        http://www.watterott.com/de/WIZ820io

nehmen. Der benutzt den W5200-Chip. Die Software für den 5100er ist 
leicht auf den 5200er aufzubohren. Der Charme am WIZ820io ist, dass das 
Board wesentlich kleiner ist als das Wiz812MJ, welches noch zusätzlich 
eine parallele Anschlussmöglichkeit bietet - was man aber nicht braucht.

Die Anpassung der 5100er-AVR-Software (siehe Artikel) auf den 5200er 
habe ich auch schon durchgeführt. Müsste ich mal bei Gelegenheit 
hochladen....

: Bearbeitet durch Moderator
von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

AVRli schrieb:

> ich habe ein Projekt mit einem ATmega328 realisiert. Dieser gibt Daten
> an einen UART aus. Um die Flexibilität zu erhöhen wäre es super wenn ich
> die Daten von einem x beliebigen PC im Home LAN abfragen könnte.

Ich habe mir solche kleinen Module gebaut. In dem einzigen Chip auf der 
Platine ist quasi eine verbesserte Version des ENC28J60 drin, dazu 
Flash, RAM und sonstige Peripherie, und ein Prozessor (PIC18). Das ist 
mit Abstand die einfachste, kleinste und billigste Möglichkeit, einen 
Ethernet-Knoten zu bauen. Der Chip kostet irgendwas um die 3.50€, die 
restlichen Bauteile liegen im Cent-Bereich, und das teuerste daran ist 
die Ethernet-Buchse mit Übertrager. Software gibt bei Microchip zum 
Download.

fchk

von AVRli (Gast)


Lesenswert?

Ich habe es geahnt, ihr kennt das sicher, nun kribbelt es hier wie 
verrückt in den Fingern, das möchte ich doch gerne umsetzen!

Würde mich nun, nachdem was ihr mir hier geantwortet habt und was ich 
darauf hin im Netz gefunden habe, für das W1500 entscheiden.

WLAN ist ganz toll nur ziehe ich Draht erst mal vor. Wichtig ist das die 
Daten generell im LAN erreichbar werden.

Habe ich es nun richtig interpretiert?
Im W5100 ist ein Hardware TCP/IP Stack drin und man muß sich nun "nur 
noch" um die eigentliche Verbindung kümmern? Es ist maximal eine 
Verbindung möglich.

Ist es im Prinzip dann so möglich das der PC eine Verbindung (Was?) zum 
ATmega über den W5100 aufbaut. Der ATmega weiß dann ob eine Verbindung 
besteht und wenn ja überträgt er die Daten nicht über den UART sondern 
über den W5100?

Oder kann man auf das LAN die Daten einfach abschicken, würde aber 
unnötigen Traffic erzeugen, wenn man keinen Abnehmer hat. ;-/

Welches ist die "zuverlässigste" lib für den W5100, was würdet ihr mir 
hier empfehlen?

ATmega 328 mit C ist derzeit in Benutzung.


Grüße AVRli...

von Arduinoquäler (Gast)


Lesenswert?

AVRli schrieb:
> Es ist maximal eine Verbindung möglich.

Beim W5100 sind maximal vier Verbindungen gleichzeitig möglich.

von Christian K. (the_kirsch)


Lesenswert?

Schau dir das OSI-Modell an.
http://de.wikipedia.org/wiki/OSI-Modell


Der W5100 übernimmt alles bis einschließlich Schicht 4.
Alles drüber gehört zur Anwendung und da must du dich selber drum 
kümmern. Gibt aber Bibliotheken für den W5100.


Ein ENC28J60 z. B. hätte nur Schicht 1 und 2 gemacht.

: Bearbeitet durch User
von Arduinoquäler (Gast)


Lesenswert?

Christian K. schrieb:
> Gibt aber Bibliotheken für den W5100.

Das Wort Bibliothek(en) halte ich bei einem Sammelsurium
von Sourcen, die man mühsam an seine eigenen Bedürfnisse
anpassen muss, für stark übertrieben.

Wenn man natürlich konsequent auf der Arduino-Schiene
bleibt dann mag das Wort Bibliothek gerade noch legitim
sein.

Es wird einem also nichts (nicht viel) geschenkt.

von spess53 (Gast)


Lesenswert?

Hi

>Das Wort Bibliothek(en) halte ich bei einem Sammelsurium
>von Sourcen, die man mühsam an seine eigenen Bedürfnisse
>anpassen muss, für stark übertrieben.

Na übertreibe man nicht. W5100 und W5200 benutze ich sogar unter 
Assembler. Für den W5100 gibt es von Wiznet Sourcen für AVR. In denen 
habe ich mich auch als notorischer Assemblerprogrammierer problemlos 
zurecht gefunden. Wer das nicht kann sollte das Hobby wechseln.

MfG Spess

von Uwe (de0508)


Lesenswert?


von Arduinoquäler (Gast)


Lesenswert?

spess53 schrieb:
> Na übertreibe man nicht.

Wenn hier der nächste Korinthenkacker kommt und die Definition
von Bibliothek (für AVR etc) herausholt dann habe ich nicht
übertrieben.

von Stefan F. (Gast)


Lesenswert?

Der Wiznet Chip ist (egal ob mit oder ohne Library) ganz sicher viel 
einfacher zu programmieren, als ein einfacher Ethernet Controller, wie 
der EN28J60.

Noch einfacher sind jedoch die ESP Module (z.B. ESP-01), denn die 
funktionieren wie ein Modem. Der Mikrocontroller setzt einfach ein par 
AT-Befehle zur Konfiguration ab und wartet dann auf die reinkommenden 
Nachrichten.

Sowas müssten die Chinesen mal als verkabelte Variante anbieten, das 
fände ich toll.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Stefan Us schrieb:
> Noch einfacher sind jedoch die ESP Module (z.B. ESP-01), denn die
> funktionieren wie ein Modem. Der Mikrocontroller setzt einfach ein par
> AT-Befehle zur Konfiguration ab und wartet dann auf die reinkommenden
> Nachrichten.

Wenn sie denn funktionieren. Es gehört schon eine Menge Schweiß dazu, 
die ganzen Macken der ESP8266-Firmware per Software auszugleichen. Von 
"einfach" kann da keine Rede sein. Es ist ein harter Weg bis zum ersten 
Erfolgserlebnis.

> Sowas müssten die Chinesen mal als verkabelte Variante anbieten, das
> fände ich toll.

Das einzige, was daran "toll" ist, ist der Preis. Aber was 
Zuverlässigkeit (Busy-Problem), Reproduzierbarkeit (Meldungen sind 
uneinheitlich), Protokoll-Umsetzung (erhebliche Macken bei UDP), 
Versionstreue (ältere Firmware erwartet CR, neuere CRNL als 
Befehlstrenner, einige arbeiten mit 115200Bd, andere mit 57600Bd oder 
gar 9600Bd) angeht, sind die Module einfach nur Krampf.

Da hilft nur eine Spezialprogrammierung der Dinger (eigene Firmware) und 
Verzicht auf Nutzung der von irgendeinem Chinesen eingespielten 
Firmware. Von daher kann man das überhaupt nicht mehr als "einfach" 
bezeichnen.

von AVRli (Gast)


Lesenswert?

Arduinoquäler schrieb:
> Beim W5100 sind maximal vier Verbindungen gleichzeitig möglich.

Interessant! Was ist das Stichwort wie man die in der Software 
auseinander hält? Oder bekommt man davon nichts mit?


Christian K. schrieb:
> Der W5100 übernimmt alles bis einschließlich Schicht 4.
> Alles drüber gehört zur Anwendung und da must du dich selber drum
> kümmern. Gibt aber Bibliotheken für den W5100.

Danke für den anschaulichen Hinweis! Das ganze ist doch sehr komplex und 
ich habe die Ethernetanbindung von einem µC immer für ganz großen Voodoo 
Zauber gehalten!


Arduinoquäler schrieb:
> Wenn man natürlich konsequent auf der Arduino-Schiene
> bleibt dann mag das Wort Bibliothek gerade noch legitim
> sein.
>
> Es wird einem also nichts (nicht viel) geschenkt.

Ich nutze von Anfang an AVR-Studio und nun das ATMEL-Studio. Habe in ASM 
angefangen und bin dann auf C gegangen weil ich es übersichtlicher 
finde.

Ich möchte nicht's geschenkt haben, copy&paste ist kein "programmieren". 
Nur wenn es das Rad schon gibt, reicht es wenn man weiß wie man es 
dreht.


spess53 schrieb:
> W5100 und W5200 benutze ich sogar unter
> Assembler. Für den W5100 gibt es von Wiznet Sourcen für AVR.

Die habe ich mir auch mal angesehen! Auch einige Beispiele was man so 
anstellen kann, das war ein guter Hinweis!


>  Stefan Us schrieb:
> Der Wiznet Chip ist (egal ob mit oder ohne Library) ganz sicher viel
> einfacher zu programmieren, als ein einfacher Ethernet Controller,
> wie der EN28J60.
>
> Noch einfacher sind jedoch die ESP Module (z.B. ESP-01), denn die
> funktionieren wie ein Modem.

Ja bei Null möchte ich wirklich nicht anfangen, deshalb habe ich mir 
auch erlaubt die Frage mal zu stellen, doch ein auf Modem-Basis zur 
Verfügung gestellter Chip ist mir wieder zu abhängig von Dritten.

Ich werde mir den WIZnet W5100 ansehen. WLAN brauche ich derzeit nicht, 
ist sicher lustig aber in meinem Fall unnötig.


Grüße AVRli...

von Arduinoquäler (Gast)


Lesenswert?

AVRli schrieb:
> Interessant! Was ist das Stichwort wie man die in der Software
> auseinander hält? Oder bekommt man davon nichts mit?

Das ist einfach eine Frage der Kapazität des Chips.

Das Ethernet ist geduldig. TCP auch. Beim W5100 hat man sich
auf 4 Sockets geeinigt die gleichzeitig betrieben werden
können, in der einen oder anderen Richtung.

Also auf deine Frage zu kommen: "das Stichwort" heisst Sockets,
und die sind am Chip unabhängig voneinander benutzbar.

von spess53 (Gast)


Lesenswert?

Hi

>Interessant! Was ist das Stichwort wie man die in der Software
>auseinander hält? Oder bekommt man davon nichts mit?

Der W5100 hat vier (W5200/W5300/W5500 sogar acht) Sockets von denen 
jeder eine eigene Verbindung herstellen kann.

>Die habe ich mir auch mal angesehen! Auch einige Beispiele was man so
>anstellen kann, das war ein guter Hinweis!

Lies dir erst mal in Ruhe das Datenblatt durch. Da sind zu den einzelnen 
Funktionen ausreichend (Pseudo-)C Beispiele drin. Etwas Literatur über 
Ethernet kann auch nicht schaden.

MfG Spess

von AVRli (Gast)


Lesenswert?

Hi Leute,

ich habe mir das Datenblatt (W5100) angesehen und stolper gerade über 
die MAC Adresse. Ist das nicht eine fixe Adresse?

Kann man die auslesen oder ist es eine einstellbare?
Nur was würde man sich da "ausspinnen" ?

Bis hier hin irre interessant!

Grüße AVRli...

von Arduinoquäler (Gast)


Lesenswert?

AVRli schrieb:
> Kann man die auslesen oder ist es eine einstellbare?

ALles les- und schreibbar.

Beim W5100 ist das ein 6-Byte Register das zu zum Betreiben
des Chips mit einer "sinnvollen" Adresse belegen (beschreiben)
musst, sonst bist du nicht netzwerkfähig.

Ziemlich frei wählbar solange du nicht mit anderen MAC
Adressen in deinem Netzwerk kollidierst. Die genaue Syntax
kansst du in Wiki nachlesen, es gibt gewisse Dinge zu beachten.

von Frank K. (fchk)


Lesenswert?

AVRli schrieb:
> ich habe mir das Datenblatt (W5100) angesehen und stolper gerade über
> die MAC Adresse. Ist das nicht eine fixe Adresse?
>
> Kann man die auslesen oder ist es eine einstellbare?
> Nur was würde man sich da "ausspinnen" ?

Muttu kaufen. :-)

http://standards.ieee.org/develop/regauth/oui/public.html

Des weiteren solltest Du den IEEE 802.3 Standard kennen:

http://standards.ieee.org/about/get/802/802.3.html

Da findest Du auch mehr über den Aufbau der Mac Adressen, Uni/Multicast, 
Globally/Locally Assigned Numbers etc etc. Das ist die Primärquelle, 
also das Dokument, von dem alle anderen Leute abschreiben, mal mehr, mal 
weniger korrekt.

fchk

von Arduinoquäler (Gast)


Lesenswert?

Frank K. schrieb:
> Muttu kaufen. :-)

Nö. Wenn er in seinem privaten Netz spielen will kann er
machen was er will. Bis uaf ein paar wenige Konventionen.

Erst wenn er Geräte bauen und unter die Leute bringen will
dann wird's offizieller ....

von Christian K. (the_kirsch)


Lesenswert?

Es gibt eine Regel bei selbst ausgedachten MAC-Adressen, das 2. Bit (von 
Links gelesen) muss '1' sein.

Das erste Bit ist immer '0'. Eine '1' an dieser Stelle würde zu einer 
Multicast-MAC-Adresse führen.

Alle anderen Bits kannst du frei wählen, die MAC-Adresse darf halt nur 
einmal pro Netzwerk vorkommen.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

Macht doch kein Drama daraus. Einfach einen passenden Chip nehmen

http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en538613

Und die Sache ist gegessen.

MfG Spess

von Uwe (de0508)


Lesenswert?

Guten Tag,

wenn man sich dieses Kits annimmt, dann ist die MAC Adresse nach dem 
booten schon eingestellt:

*SPI-Netzwerkadapter Wiznet W5500*
http://www.ehajo.de/baus%C3%A4tze/bedrahtete-baus%C3%A4tze/spi-netzwerkadapter-wiznet-w5500.html

von Arduinoquäler (Gast)


Lesenswert?

Uwe S. schrieb:
> wenn man sich dieses Kits annimmt, dann ist die MAC Adresse nach dem
> booten schon eingestellt:

Also einfach alles stehen und liegen lassen und nichts anderes
kaufen als das. Denn da muss man dann einen Augenblick weniger
überlegen. Dass es noch viele andere Randbedingungen gibt spielt
keine Rolle. Hirn sparen, koste es was es wolle.

von AVRli (Gast)


Lesenswert?

Hi Leute,

hab ich hier ein Trubel ausgelöst? ;-) Sorry... da alles nur lokal 
genutzt wird, es ist MEIN HOBBY, ist das in meinen Augen alles total 
egal!

Ich möchte bei der ganzen Aktion einfach was lernen und mich daran 
erfreuen wenn mein Projekt ins LAN kommt. Mehr nicht aber auch nicht 
weniger. Ist doch super wenn man versteht was da passiert! Die Frage ist 
ja auch nur aufgekommen, weil es mich eben interessiert.

Habe eine allte ISA Steckkarte gefunden wo eine MAC Adresse drauf steht, 
mein Gott, neheme ich die, die ISA Karte ist ehh Schrott.

Jetzt kommt allerdings das allerbeste! Es geht voran, ich habe die 
ersten Sachen übertragen und sehe echt einen Datenaustausch. Coole 
Sache!

Unter der Oberfläche der FritzBox sehe ich das Modul zwar nicht, warum 
weiß ich noch nicht, spreche ich es mit PING oder dem Browser an, sehe 
ich Reaktion, was noch ausprogrammiert werden muss.

Ich danke Euch, der Weg war das Ziel!
Gruß AVRli...

von Arduinoquäler (Gast)


Lesenswert?

AVRli schrieb:
> Es geht voran, ich habe die
> ersten Sachen übertragen und sehe echt einen Datenaustausch.

Da hast du aber sehr schnell ein LAN-MOdul bekommen.  So schnell
mal von Donnerstag bis Samstag oder heute?

Das hast du uns bis jetzt vorenthalten .....
Oder hast du es schon gehabt bevor du die erste (scheinheilige)
Frage gestellt hast ...

von AVRli (Gast)


Lesenswert?

Arduinoquäler schrieb:
> Da hast du aber sehr schnell ein LAN-MOdul bekommen.  So schnell
> mal von Donnerstag bis Samstag oder heute?

Ich habe den Gedanken ansich schon eine ganze Weile, ich habe hier 
angefragt was ich nehmen sollte und als ich schrieb "es kribbelt in den 
Fingern" wußte ich was ich mir zutraue und was nicht.

Wiznet 5100! -> also Modul Fr. bestellt...

Do. Fr. Datenblatt "studiert", verstanden worum es geht und natürlich 
hier nochmal nachgefragt... das hast Du ja verfolgt... ;-)

Sa. Vormittag kam das Teil, seit dem bin ich am tüdeln...
Den ersten Datenaustausch hatte ich vor meinem letzten Post.

Bis nun meine Daten per Telnet zum PC kommen wird es noch etwas dauern, 
die Protokollschicht fehlt ganz.

Hast Du eine Idee warum das Modul nicht in der Liste der Fritzbox zu 
sehen ist? Muß man dafür ein "Vorstellungspaket" senden oder sowas?

Grüße AVRli...

von Arduinoquäler (Gast)


Lesenswert?

AVRli schrieb:
> Hast Du eine Idee warum das Modul nicht in der Liste der Fritzbox zu
> sehen ist? Muß man dafür ein "Vorstellungspaket" senden oder sowas?

Bei mir war es so dass erst ein Socket aktiv Daten ausgetaucht
haben musste bevor ich in meiner Fotzbox was gesehen habe.

Aber Ping sollte schon funktionieren bevor ein Socket aktiv ist.
Nein kann nicht sein, da Ping auch eine IP Adresse braucht. Also
ein Socket muss geöffnet und gültig konfiguriert sein. Dann
hängt es davon ab ob du UDP oder TCP machst. Offener UDP tut
noch nichts auf der Leitung, aber TCP macht ja handshake ...

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.