Stefanie: Dynamische Webseiten + Embedded Webserver

Hallo!
Bei meiner Diplomarbeit habe ich einen Atmega128 Microcontroller, der Sensordaten empfängt (einen pro Minute von ca. 6 verschiedenen Sensoren).
Ich möchte den zeitlichen Verlauf dieser Werte auf einer Webseite darstellen, der sich automatisch aktuallisieren soll. Bis jetzt habe ich ein kleines Betriebssystem mit einem Webserver.
Mit welcher Programmiersprache kann ich am besten eine solche Webseite programmieren? Was muß ich beachten?
Wissen Sie, wieviel Speicher (EEPROM, SRAM, Flash) für eine solche Aufgabe in etwa notwendig ist? Bzw. welchen externen Datenspeicher (SD-Card, CF-Card, Datenflash) am Besten ist?
Haben Sie ein paar Tipps, mit welchen Tutorials/Büchern man am Besten eine solche Seite programmieren kann?
Kann ich eine solche Seite schon einmal aus dem Computer entwickeln und simulieren?
Vielen herzlichen Dank!!!
Gruß, Stefanie

  1. Hallo Stefanie,

    Bei meiner Diplomarbeit habe ich einen Atmega128 Microcontroller, der Sensordaten empfängt (einen pro Minute von ca. 6 verschiedenen Sensoren).

    Also einen kompletten Mini-Webserver auf dem µC? Ich glaube, ich hab mal mit einem ähnlichen System experimentiert. Das war allerdings kein ATMega-Prozessor, sondern nur ein "kleiner" 8051-Clone, kann mich im Augenblick nicht an die Typenbezeichnung erinnern.

    Ich möchte den zeitlichen Verlauf dieser Werte auf einer Webseite darstellen, der sich automatisch aktuallisieren soll. Bis jetzt habe ich ein kleines Betriebssystem mit einem Webserver.

    In diesem Absatz stecken mehrere Informationen, die teilweise neue Fragen aufwerfen.
    Zeitlicher Verlauf: In welcher Form? Als fortlaufende Wertetabelle? Das wäre mit vertretbarem Aufwand zu machen. Oder als Diagramm? Dann müsstest du auf dem Mini-Webserver eine Grafik (z.B. GIF) erzeugen - sehr anspruchsvoll.
    Automatisch aktualisieren: Das ist eine Frage des verwendeten Browsers. Das HTTP-Protokoll selbst gibt dafür nichts her. Du kannst eventuell eine <meta refresh> Anweisung in der ausgelieferten Webseite unterbringen, dann hast du eine sehr große Chance, dass die Browser das verstehen und entsprechend reagieren.

    Mit welcher Programmiersprache kann ich am besten eine solche Webseite programmieren? Was muß ich beachten?

    Das Mini-System, das ich damals verwendet habe, war komplett in C (mit kleinen Teilen in Assembler) geschrieben und wurde mit einem passenden Compiler und einigen Beispielprojekten geliefert. Falls du neu in die C-Programmierung einsteigen müsstest, wäre das aber eine stramme Herausforderung.

    Wissen Sie, wieviel Speicher (EEPROM, SRAM, Flash) für eine solche Aufgabe in etwa notwendig ist?

    Vergiss das "Sie", das ist hier im Forum absolut unüblich (okay, wenn jemand Wert drauf legt)...
    Ich schätze mal, dass man mit 32k Festwertspeicher bei so einem µC schon sehr weit kommt. Eventuell noch ein Keks mit 8k RAM, damit wäre das System IMHO schon üppig ausgestattet (ich hab schon Minimalsysteme gesehen, die mit 8k EPROM und 1k RAM auskamen).
    Was die Art des Speichers angeht, würde ich EEPROM für den Programmspeicher empfehlen, ein SRAM (evtl. mit einer Lithiumbatterie gepuffert) als Datenspeicher. Falls du größere Datenmengen für längere Zeit speichern musst (Langzeitprotokoll), könnte man über Flash nachdenken. CF-Cards sind relativ einfach anzusteuern, da die CF-Schnittstelle weitgehend mit IDE identisch ist.

    Haben Sie ein paar Tipps, mit welchen Tutorials/Büchern man am Besten eine solche Seite programmieren kann?

    Leider nein. :(

    Kann ich eine solche Seite schon einmal aus dem Computer entwickeln und simulieren?

    Sicher. Die Webseite, die der µC später ausliefern soll, kannst du natürlich schon als statische HTML-Seite am PC entwerfen. Aber das ist wahrscheinlich der geringste Aufwand. Viel wichtiger ist, dass du für den µC ein lauffähiges Programm hinbekommst. Falls du da einen Compiler und vor allem einen Emulator hast, ist das eine große Hilfe. Dann kannst du das Zeug tatsächich am PC austesten und debuggen.

    Good luck,

    Martin

  2. Hallo,

    Bei meiner Diplomarbeit habe ich einen Atmega128 Microcontroller, der Sensordaten empfängt (einen pro Minute von ca. 6 verschiedenen Sensoren).

    Was kann man serverseitig mit diesen Daten machen? Was kann der Webserver?

    Ich möchte den zeitlichen Verlauf dieser Werte auf einer Webseite darstellen, der sich automatisch aktuallisieren soll. Bis jetzt habe ich ein kleines Betriebssystem mit einem Webserver.

    Ich kenne ein ansatzweise vergleichbares Szenario mit embedded Webserver in Messelektronik mit Sensoren.

    Dieses Geraet konnte spezielle Tags in HTML-Seiten verstehen und die Sensordaten serverseitig auswerten. Diese Daten wurden vom Server in HTML-Formulare (hidden-Felder) geschrieben und diese via JavaScript zeitgesteuert an einen anderen Webserver geschickt, der die Daten mittels PHP in eine XML-Datei schrieb (das war mein Vorschlag, um aus diesen XML-Daten mit XSL-Transformation eine Grafik im SVG-Format zu erzeugen).

    Die Abfrage des embedded Webservers (http://192.168.x.y) wurde in einem versteckten Frame realisiert, in welchem ein JavaScript-Code ueber setInterval() das genannte Formular verarbeitete und via POST an den anderen Webserver (ueber das Internet angebunden) mit der PHP-Steuerung schickte. Das grafische Ergebnis wurde wiederum in einem sichtbaren Frame dargestellt, der ebenfalls periodisch "refreshed" wurde. Das Konzept funktionierte durchaus brauchbar.

    In Deinem Umfeld waeren zunaechst die Moeglichkeiten dieses Webservers zu pruefen (eingebaute Sprache, wie kann man die Sensordaten weiterleiten usw.). Vorstellbar waere auch, dass das Geraet direkt mit einem PC verbunden ist (serielle Schnittstelle, ...) und die anfallenden Daten in ein bestimmtes Verzeichnis schreibt und der auf dem PC laufende Webserver ueber eine Sprache wie PHP und Co. die gespeicherten Daten dynamisch verarbeitet (Raster- oder Vektorgrafik generieren).

    MfG, Thomas