Hallo, ich würde jetzt gerne mal auf Erfahrungswerte einiger User zurückgreifen. Ich hab schon öfters mit einem ENC28J60 rumgespielt in Verbindung mit Mega8 und 16. Nun möchte ich gerne mal einen Webserver zusammenstellen, der html-, css- und js-Dateien in normaler Geschwindigkeit bereitstellt und man nicht auf jede Kleinigkeit warten muss. Muss es da schon 100 Mbit sein oder reichen da noch 10 Mbit? Muss es da schon ein ARM Cortex sein oder reicht ein AVR? Es soll keine Highend-Anwendung werden. Ich will nur erstmal vom UART Parameter (Baud, Parity, Databits, ...) einstellen und natürlich IP und so. Und als Protokoll noch Modbus implementieren, das läuft auch schon auf einem AVR.
Mathias O. schrieb: > Muss es da schon 100 Mbit sein oder reichen da noch 10 Mbit? Das kommt drauf an, wie umfangreich du die HTML Seiten gestaltest. Um ein paar Texte in einem Fomular auf einer HTML Seite anzuzeigen bist du HTML-Textmässig klein unterwegs. Dann braucht es auch keine riesige Bandbreite. Ob ein Benutzer 3 Zehntel Sekunden warten muss oder doch 4 Zehntel, kann er nicht unterscheiden. Wenn du natürlich deine Seiten mit Grafiken spickst, dann sieht das wieder anders aus. > Muss es da > schon ein ARM Cortex sein oder reicht ein AVR? Dein Hauptproblem wird eher sein: Wo kommen die auszuliefernden HTML Seiten samt Zubehör wie CSS File und/oder Grafiken eigentlich her? Das muss ja alles irgendwo gespeichert sein. Da wirds dann auf einem Mega16 ganz schnell ganz eng. Je umfangreicher deine Seiten, desto schneller.
Mathias O. schrieb: > Muss es da schon 100 Mbit sein Na wie viele tausend Kunden greifen denn drauf zu ? Mathias O. schrieb: > Ich will nur erstmal vom UART > Parameter (Baud, Parity, Databits, ...) einstellen Ich würde mir über den Stromverbrauch Gedanken machen, wenn das Ding dauernd laufen soll, vielleicht ein RPi ?
Auf jede Kleinigkeit wirst du rechnerisch nicht warten müssen, nur mindestens 1s/1,25MB bei 10Mbps. Es hängt also davon ab welche Datenmenge du ausliefern möchtest. Allerdings ist Durchsatz nicht alles. Gehen wir mal davon aus, dass du nur eine CPU in deinem Projekt hast. Dann passiert nicht wirklich gleichzeitig, sondern wird durch Puffer zeitlich entzerrt. Einfach gesagt je mehr gleichzeitig stattfinden soll, desto länger dauert es. Solltest du nur einen Messwert hübsch anzeigen wollen, dann überleg dir einen geschickten Softwareaufbau. Erstmal alles statische ausliefern. Per AJAX nur noch dynamische Kleinigkeiten übertragen und den rest im Browser. Wenn du allerdings noch groß auf dem µc rumrechnen möchtest dann wird deine Latenz schlimmer werden. Das ganze gilt für einen Client. Bei mehreren wird's wild. Warten ist relativ.
:
Bearbeitet durch User
Karl H. schrieb: > Da wirds dann auf einem Mega16 > ganz schnell ganz eng. Also entweder einen ext. Flash dazu oder gleich nen Cortex M3? MaWin schrieb: > Na wie viele tausend Kunden greifen denn drauf zu ? Naja immer nur einer, eben um Einstellungen vorzunehmen. Beim Modbus maximal 2. MaWin schrieb: > Ich würde mir über den Stromverbrauch Gedanken machen, wenn das Ding > dauernd laufen soll, vielleicht ein RPi ? Da würde ich mir eher Gedanken machen um meinen Kühlschrank, Staubsauger oder Fernseher. Und ich brauch kein HDMI, CSI oder MMC-Slot. Also werde ich dann eher beim ENC bleiben. So ein Durchsatz und riesige Datenmengen werden es nun nicht werden. Wie gesagt, das wird erstmal ein kleines Projekt werden, sozusagen eine private Machbarkeitsstudie - was ist möglich.
Karl H. schrieb: > Da wirds dann auf einem Mega16 > ganz schnell ganz eng. Ich bin mir jetzt gar nicht mal so sicher, ob ein Mega16 da überhaupt reicht. Auf dem AVR-NetIO ist jedenfalls ein Mega32 verbaut und wenn ich so zurückdenke, dann geht da der Radig-Server gerade noch so lala drauf. Wahnsinnig viel Platz bleibt da nicht übrig.
:
Bearbeitet durch User
Ja das denk ich auch. Es hat gerade mal der TCP, IP, ARP, ICMP und UDP Platz gehabt bei mir. Eigentlich könnte ich auch nen Mega1280 oder Mega2560 nehmen.
Mathias O. schrieb: > Nun möchte ich gerne mal einen Webserver zusammenstellen, der html-, > css- und js-Dateien in normaler Geschwindigkeit bereitstellt und man > nicht auf jede Kleinigkeit warten muss. hört sich fast schon nach einer RIA an ;) für was soll das JS denn sein? AJAX? willst du vielleicht auch noch Werte in Datenbanken verwalten, und eventuell den traffic per (self signed) SSL verschlüsseln? warum sich dann mit einem kleinen µC das leben schwer machen - nimm einen dicken mit mehr dampf, mit OS und entsprechender Software. ein RPi z.b.
Mit Datenbanken hat das recht wenig zutun. Und SSL brauch ich auch nicht. Es soll lediglich erstmal ein Gateway werden für Modbus-TCP auf RTU. Und ein RPi ist dafür zu oversized.
Mathias O. schrieb: > Und ich brauch kein HDMI, CSI oder MMC-Slot. Dann benutze sie nicht. > Also werde ich dann eher beim ENC bleiben. So ein Durchsatz und riesige > Datenmengen werden es nun nicht werden. Wie gesagt, das wird erstmal ein > kleines Projekt werden, sozusagen eine private Machbarkeitsstudie - was > ist möglich. Die Frage ist halt, ob's dir da mehr um's Basteln an sich geht oder ob das Ergebnis im Vordergrund steht. In letzterem Fall würde ich nicht mit AVR und ENC anfangen, sondern auf was Linux-basiertes setzen.
Hallo. Ein RPi ist aber fast schön günstiger als ein mega + ethernet frontend. Und etwas mehr Leistung hat er auch. Martin
Ich würde wie Martin auch den neuen Quadcore Raspberry pi empfehlen und einen Apache-Server darauf einrichten.
Hier wurde bereits mehrfach auf das Thema Grafiken eingegangen, deren Dateivolumen ja naturgemäß etwas größer ausfällt. Die meisten technischen Grafiken lassen sich genau so gut als Vektorgrafik statt Pixelgrafik darstellen (Diagramme, "Messgeräte", Icons ...) - also in dem Zusammenhang möchte ich auf den Gebrauch von SVG verweisen, welches wesentlich sparsamer ausfällt (XML-Text)! Habe gerade eine Rollladen-Steuerung per Arduino Uno und Handy-App in Arbeit, was bestimmt als Webserver grenzwertig ist. Durch den konsequenten Einsatz von SVG und sogar deren weitere Zelegung in sich wiederholende Bestandteile (XML-Header, einzelne grafische Elemente) und Zusammenbau per Javascript im Browser, kann ich nun mit 6 verschiedenen Icons arbeiten (davon sogar eines blinkend), ohne dass die Verbindung (ein etwas holpriges Gemisch aus LAN, PLC und WLAN) merklich stockt ... lohnt sich!
Rolf M. schrieb: > Die Frage ist halt, ob's dir da mehr um's Basteln an sich geht oder ob > das Ergebnis im Vordergrund steht. In letzterem Fall würde ich nicht mit > AVR und ENC anfangen, sondern auf was Linux-basiertes setzen. Natürlich geht mir auch ums basteln. Hab ich ja bis jetzt auch gemacht. Aber das Ergebnis steht natürlich auch im Vordergrund, warum sollte ich sonst was machen. Martin schrieb: > Ein RPi ist aber fast schön günstiger als ein mega + ethernet frontend. > Und etwas mehr Leistung hat er auch. Die Rechnung würde ich gerne mal sehen. Einen ENC auf Breakout-Board hab ich schon längst hier und den großen AVR muss ich nur noch besorgen. Adapterplatine kostet auch nicht die Welt. min schrieb: > Ich würde wie Martin auch den neuen Quadcore Raspberry pi empfehlen und > einen Apache-Server darauf einrichten. Mir ist schon klar, wie ich das mit einem RPi lösen kann. Da weiß ich auch, dass es funktioniert. Und extra Linux am laufen haben, nur um die Datenpakete durchzureichen und das ganze über ne kleine Weboberfläche einstellen zu können, ist schon übertrieben.
Frank E. schrieb: > Hier wurde bereits mehrfach auf das Thema Grafiken eingegangen Grafiken? Eigentlich nicht. Aber trotzdem danke für deinen Beitrag.
ich habe schon ein Projekt gemacht mit Cortex M3 + MODBUS Gateway MODBUS RTU und MODBUS RTU over TCP over TCP ist ja nur das RTU ohne CRC mit anderem header ohne IP schnickschnak geht das in 10-15k flash locker rein ein M3 reicht dafür locker. der ENJ sollte das auch schaffen für webseiten wolltest du beim IP stack aufpassen. viele IP stacks können keine segmentierung( uIP... ) der LwIP 1.4.1 kann das schon recht gut( sliding window ) er sendet dann mehrere Pakete raus ohne auf die ACKs zu warten das steigert die Datenrate deutlich. so sind auch mehere kB webseite in gefühlt 0sek übertragen
Ein Webserver auf einem STM32F107 mit einer STE100P-PHY (100 MBit), ist subjektiv in der Geschwindigkeit bei der Auslieferung statischer Inhalte nicht von einem x86/rPi-basierten zu unterscheiden. Das gleiche gilt fuer die Kombination LPC1768 und LAN8720-PHY. Oder wenns von TI sein soll: LM3S96 oder TM4C1294 mit integrierter PHY. Das Gefrickel mit einem ENC28J60 wuerde ich mir nicht antun. Und die Leistungsaufnahme duerfte wohl auch geringer sein.
min schrieb: > Ich würde wie Martin auch den neuen Quadcore Raspberry pi empfehlen und > einen Apache-Server darauf einrichten. Nen Pi und darauf auch noch den fetten Apache? Wenn dann eher etwas Richtung nginx, sprich einen schlankeren Webserver. Gibt da aber auch noch bessere Alternativen. Aber ganz ehrlich, es gibt guten Webspace mit dem man seine Seite umsonst bzw. fast umsonst hosten kann (z.B. Uberspace 12€ min. im Jahr sind Peanuts), da würde ich eher so etwas nehmen und meine Daten über z.B. eine REST API übertragen und die Nutzer auf einen performant angebundenen Server zugreifen zu lassen. Mit einem AVR und ENC usw. würde ich da gar nicht anfangen zu frickeln, höchstens noch mit einem Pi oder sonst was mit Linux, die paar Euro machen den Braten auch nicht mehr fett.
Ich habe mal einen LM3S6911 (Cortex M3) mit lwIp und einen PIC18F67J60 mit dem Microchip-Stack getestet. Der PIC war viel flüssiger zu bedienen. Zudem ist der PIC18F67J60 die mit Abstand kleinste, billigste und auch einfachste Möglichkeit, einen Ethernet-Knoten zu realisieren. Das ist nachher nämlich eine Ein-Chip-Lösung, wo nur ein 25 MHz-Quarz, ein paar passive Bauteile und noch ein Spannungsregler dazu kommen. Weniger Hardware-Aufwand geht einfach nicht. Und die Software gibts fertig von Microchip. fchk
min schrieb: > Ich würde wie Martin auch den neuen Quadcore Raspberry pi > empfehlen und einen Apache-Server darauf einrichten. Apache? Möglicherweise. Quadcore? Wohl kaum. Meine Empfehlung wäre ein Raspi B+ (wenn das Netzwerk wired sein soll) oder A+ mit WLAN-Dongle. Kostenmäßig und stromverbrauchsmäßig ist das etwa die gleiche Liga wie ein fetter ATmega + ENC28J60 + externer Flash. Allerdings ist es wesentlich angenehmer im Operating. Man hat nicht nur einen vollständigen(!) und sehr gut getesteten(!) TCP-Stack, man kann auch einen richtigen Webserver drauf laufen lassen. Ob das nachher nginx, lighttpd oder Apache wird, ist erstmal egal. Außerdem kann man das Doc-Root in ein richtiges Filesystem legen und man kann die SD-Karte auch mal an einen PC stecken und da die Daten drauf spielen. Das heißt wenn man nicht ohnehin die Möglichkeit benutzen will, daß der Raspi Daten per NFS oder SMB exportiert. Oder daß man per FTP oder SSH drauf zugreift. Obiges natürlich alles unter der Maßgabe, daß es darum geht einen funktionierenden Webserver zu haben. Wenn natürlich der Weg das Ziel ist, dann kann man auch rumbasteln. Wobei sich mir nicht erschließt, was man großartig lernt wenn man einen TCP-Stack und einen HTTP-Server aus dritter Hand zusammenklebt.
7856ujtzuitzu schrieb: > ch habe schon ein Projekt gemacht mit Cortex M3 + MODBUS Gateway > MODBUS RTU und MODBUS RTU over TCP > over TCP ist ja nur das RTU ohne CRC mit anderem header > ohne IP schnickschnak geht das in 10-15k flash locker rein Vielen Dank. Endlich jemand der versteht was ich vorhab. Quasi das was es von Wachendorff, Phoenix, Weidmüller, ..., schon gibt. Horst schrieb: > Aber ganz ehrlich, es gibt guten Webspace mit dem man seine Seite > umsonst bzw. fast umsonst hosten kann (z.B. Uberspace 12€ min. im Jahr > sind Peanuts), da würde ich eher so etwas nehmen und meine Daten über > z.B. eine REST API übertragen und die Nutzer auf einen performant > angebundenen Server zugreifen zu lassen. Ähm ja. Soll, dass jetzt ernst gemeint sein? Ich denke mal nicht. Ich glaube, so mache Leute würde auch extra einen PRi nehmen, nur um ne Kaffenmaschine einzuschalten.
Mathias O. schrieb: > Ich glaube, so mache Leute würde auch extra einen PRi nehmen, nur um ne > Kaffenmaschine einzuschalten. Nicht nötig. Handys und das Hyper Text Coffee Pot Control Protocol sind das einzig wahre! https://en.m.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol Hat sogar ne Caffé erweiterung! (dieser Beitrag ist nicht ernst gemeint)
Ich würde Dir auch etwas Linux basiertes empfehlen, wie dem Raspberry Pi. Falls es doch ein AVR Mikrocontroller sein soll, schau Dir mal das CrumbX1-NET Modul an.
> Ähm ja. Soll, dass jetzt ernst gemeint sein? Ich denke mal nicht.
Klar meint er das ernst. Und ich finde den Vorschlag keinesfall blöd.
Du wirst sehen, dass dein Mikrocontroller sehr bald von Hackern
heimgesucht wird, sobald er im Internet hängt. Mit so wenig Speicher ein
System sicher zu machen, ist eine echte Herausforderung.
Hingegen ist es in Enterprise völlig normal, einen Apache Server nebst
PHP zwischen Internet und Backend zu schalten. Das schafft (wenn man es
richtig macht) Sicherheit und trennt die die funktionalen Layer der
Anwendung sauber.
Warum um Himmels willen, sollte ich mein Modbus ans Internet anschließen. Das ist wenn ein paar Ebenen höher. Das ist ne reine Sensor-/Aktorebene. Wie in der Industrie auch.
Davon bin ich einfach ausgegangen, weil das gerade massiv in Mode ist. Wenn du es nicht tust: gut so. Finde ich vernünftig.
Wenn es unbedingt ein uC sein muss aber du nicht gerade Lust hast dich mit TCP/IP auf der Ebene einzelner Bytes herumzuschlagen, würde ich dir auch die WIZNET Module statt ENC28J60 empfehlen. Da gibts auch günstige Breakouts auf ebay und der ganze Netzwerkstack ist erledigt. Dazu noch ein mittelgroßer Atmega mit SD Karte und FAT und fertig ist der Webserver. Da gibts auch von der Arduino Seite Unmengen fertiger Beispiele. Wenn es auch WLAN sein darf, gibts ja die spottbilligen ESP8266 Module mit unzähligen Beispielen für Webserver. Sogar billiger als die ENC/Atmega Kombi. Ansonsten würde ich aber Linux empfehlen. Dort hat man einen wirklich etablierten und gewarteten Netzwerkstack und fertige Server. Auch Sachen wie Crypto (HTTPS, SSH, VPN ...) und IPv6, Fremdwörter für die vorherigen Lösungen, sind problemlos mit ein paar Zeilen konfiguriert. Dazu gibt es zum Thema Linux + Netzwerk wirklich für jedes Problemchen unzählige Lösungen im Netz. Wenn RPI in Größe/Stromverbrauch/Gefühl zu wirklich 'groß' ist, gäbe es noch unzählige Module auf Basis von Routerchips und OpenWRT. Häufig auch gleich mit eingebautem WLAN. Was die Kosten angeht stellen sich bei Hobbyprojekten immer die Fragen: Ist der Weg das Ziel? Ist einem die eigene Arbeitszeit irgendetwas wert (und sei es nur die Abwägung zwischen Familie und Basteltisch)?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.