Forum: Mikrocontroller und Digitale Elektronik Anbindung eines Embedded Web-Servers mittels RS232 an einen PC


von Frank S. (dux)


Lesenswert?

Hallo Community,

wie der Betreff schon sagt bräuchte ich Hilfe bei meinem Vorhaben einen 
Embedded Web-Server mit Hilfe eines einfachen 
Seriellen-Schnittstellenkabel an einen PC (Windows 7) zu verbinden. 
Verzeiht mir im Voraus sachliche und formale Fehler, korrigiert mich 
aber bitte!

Grobe Übersicht:

[Hardware[Web-Server]]-->[RS232]-->[PC[Explorer]]

Genaueres zum Embedded Web-Server:

Das Projekt befindet sich noch in der Anfangsphase. Auf Seiten der 
Embedded Hardware gibt es ja unzählige Hilfestellungen und Projekte im 
Netz. Da nur sehr sehr wenig Ressourcen (schätzungsweise 10k ROM, 1k 
RAM, vielleicht auch das doppelte) zur Verfügung stehen und die 
Anforderungen auch sehr gering sind, möchte ich jedoch keinen "komplett" 
fertigen Webserver verwenden. Folgende Idee möchte ich in den nächsten 
Tagen/Wochen/Monaten umsetzen:

[HTTP-Server]+[TCP/IP Stack/Sockets]+[PPP, SLIP scheint ja nicht mehr 
verwendet zu werden]

Nun zur eigentlichen Frage:

Sollte der Netzzugang über PPP realisiert werden stellt sich für mich 
die Frage, mit welchen Aufwand ich meine HTML-Seite im Explorer des 
Rechners darstellen kann.
Versucht habe ich schon einen Modem-Adapter mit entsprechend 
ausgewählten COM-Port und IP-Einstellungen (Versuch Rechner und µC in 
selben IP-Bereich zu bekommen) unter den Netzwerkeinstellungen zu 
erstellen. Bringt mir das überhaupt etwas? Habe auch schon einmal daran 
gedacht einen Daemon auf dem Rechner mit einzubringen. Leider zerstört 
dieser meine Vorstellung von "Kabel rein und einfach IP im Explorer 
eingeben" etwas (wobei diesen Adapter einzurichten ja auch nicht 
schneller geht).

Hoffe ich konnte mein Anliegen rüber bringen. Offen wäre ich für 
Vorschläge jeglicher Art die mich auf einen Lösungsansatz bringen 
könnten. Die Struktur µC-->Seriell-->PC muss jedoch erhalten bleiben, es 
ist nicht möglich einen Wandler oder sonstiges einzusetzen.

Mit Freundlichen Grüßen, Dux

von Frank S. (dux)


Lesenswert?

Hmm, hoffe das Thema richtig eingeordnet zu haben.

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

Warum muss es seriell sein? Weil Deine Hardware sonst zu kompliziert 
wird? Nein! Oben siehst Du einen kompletten Webserver in einem einzigen 
Chip für 3.40€ netto mit Ethernet. Das kannst Du einfach an das 
vorhandene Netzwerk anklemmen, und gut ist. Ohne noch mühsam einen 
PPP-Zugang in Windows per Hand einzurichten.

Denke mal drüber nach.

fchk

PS: Und wenn nicht Ethernet, dann wenigstens USB. Kaum ein neuer PC hat 
überhaupt noch eine serielle Schnittstelle. Über USB könntest Du zB 
einen RNDIS-Adapter implementieren, der beim Anstecken gleich ein neues 
Netzwerkinterface einrichtet. Da müsste der Benutzer auch weiter nichts 
machen.

fchk

: Bearbeitet durch User
von Zac Hobson (Gast)


Lesenswert?

Der Ansatz mit der seriellen Schnittstelle ist gut. Ich hab auch schon 
so ein Projekt durchgezogen. Am besten setzt man gleich beim http:// 
protokoll auf und vergisst den Rest. Also "GET...... ", "POST......" als 
ASCII Stream, das geht sehr gut.

von Zac Hobson (Gast)


Lesenswert?

>PS: Und wenn nicht Ethernet, dann wenigstens USB. Kaum ein neuer PC hat
überhaupt noch eine serielle Schnittstelle. Über USB könntest Du zB
einen RNDIS-Adapter implementieren, der beim Anstecken gleich ein neues
Netzwerkinterface einrichtet. Da müsste der Benutzer auch weiter nichts
machen.

Vergiss den USB Mist. Viel zu limitiert. Seriell wird bleiben. Dann eben 
mit einem USB-to-Serial dazwischen.

von Uschi (Gast)


Lesenswert?

> Nein! Oben siehst Du einen kompletten Webserver in einem einzigen
> Chip für 3.40€ netto mit Ethernet.

Das kannst du hier nicht bringen, denn auf dem Board ist ein PIC. Hier 
darfst Du nur Lösungen mit AVR oder ARM präsentieren, sonst schreien 
sofort alle los ...

von Frank K. (fchk)


Lesenswert?

Zac Hobson schrieb:

> Vergiss den USB Mist. Viel zu limitiert. Seriell wird bleiben. Dann eben
> mit einem USB-to-Serial dazwischen.

Was limitiert Dich bei USB?

fchk

von Frank S. (dux)


Lesenswert?

Warum das alles ?

Der Einsatz ist recht einfach zu erklären: Die vorhandene Hardware kann 
nicht erweitert werden ( liegt auch an der großen Anzahl). Zudem wird 
wie bereits vermutet ein seriell zu USB kabel verwendet,  welchs dann 
einfach ein com port simuliert. Diese kabel sind vorhanden und werden 
bereits für andere Kommunikationen zum uC verwendet.

von Frank S. (dux)


Lesenswert?

Zac Hobson schrieb:
> Der Ansatz mit der seriellen Schnittstelle ist gut. Ich hab auch schon
> so ein Projekt durchgezogen. Am besten setzt man gleich beim http://
> protokoll auf und vergisst den Rest. Also "GET...... ", "POST......" als
> ASCII Stream, das geht sehr gut.

Dh Http Protokoll, dann gleich über Schnittstelle raus und folglich ein 
Daemon auf dem Rechner?

von Zac Hobson (Gast)


Lesenswert?

Das http:// protokoll ist unmittelbar Serial tauglich. Auf dem PC 
benoetigt man dann einen Serial-zu-Socket konverter, oder prozess.

Und auf dem Controller benoetigt man dann einen http Server, der die GET 
und POST anfragen beantwortet. Das schafft man in ein paar kilobyte 
Code.

Die Seiten, resp die Antworten sind zu einem gewissen Teil statisch, zu 
einem Teil dynamisch. Man sollte sich im klaren sein, dass man nur eine 
minimalversion eines PHP Servers implementieren kann. Per Javascript 
kann man die benoetigte Rechenleistung auf den PC verlagern. Dh man 
uebertraegt Integerwerte eines ADC und macht die Skalierung per 
Javascript auf dem PC im Browser.

von Karl H. (kbuchegg)


Lesenswert?

Zac Hobson schrieb:

> Man sollte sich im klaren sein, dass man nur eine
> minimalversion eines PHP Servers implementieren kann.

Das hängt zwar vom Controller ab. Allerdings ist der auf dem µC laufende 
Web-Server sowieso eine derrtige Spezialversion, dass man auch ohne PHP 
auskommt.

> Per Javascript
> kann man die benoetigte Rechenleistung auf den PC verlagern. Dh man
> uebertraegt Integerwerte eines ADC und macht die Skalierung per
> Javascript auf dem PC im Browser.

Die 3 Zeilen für die Skalierung kann der µC ruhig noch mitmachen. Die 
sind sicher nicht das große Problem.

von Frank S. (dux)


Lesenswert?

Danke dir Zac Hobson, so werde ich das zunächst angehen.

Bin weiterhin für Vorschläge offen, hab mal irgendwo gelesen, dass man 
unter Linux dem COM-Port einfach eine IP Adresse geben kann. Bei Win XP 
gibt es wohl auch Möglichkeiten in diese Richtung.

Gruß Dux

von holger (Gast)


Lesenswert?

>Habe auch schon einmal daran
>gedacht einen Daemon auf dem Rechner mit einzubringen. Leider zerstört
>dieser meine Vorstellung von "Kabel rein und einfach IP im Explorer
>eingeben" etwas (wobei diesen Adapter einzurichten ja auch nicht
>schneller geht).

Woher soll der Explorer wissen an welchem COM Port deine
Schaltung hängt?

Woher soll der Daemon wissen an welchem COM Port deine
Schaltung hängt?

Plug and Play kriegt man das wohl kaum hin.

von Zac Hobson (Gast)


Lesenswert?

Irgend eine Sorte Interpreter sollte man trotzdem vorsehen. Man muss zB 
die Kommandozeilen Parameter GET.......?XXXX=jhhsd&YYYY=khkjhs& 
....auswerten.

von Frank S. (dux)


Lesenswert?

holger schrieb:
> Woher soll der Explorer wissen an welchem COM Port deine
> Schaltung hängt?

Kann und soll er ja nicht wissen. Irgendwie müsste der COM Port dann 
halt eine IP haben, hat ja bei Modems früher auch funktioniert ( kennen 
mich da nicht aus)


holger schrieb:
> Woher soll der Daemon wissen an welchem COM Port deine
> Schaltung hängt?

Das werde ich mit einem socket Server dann hin bekommen.

von Karl H. (kbuchegg)


Lesenswert?

Frank Schmid schrieb:
> holger schrieb:
>> Woher soll der Explorer wissen an welchem COM Port deine
>> Schaltung hängt?
>
> Kann und soll er ja nicht wissen. Irgendwie müsste der COM Port dann
> halt eine IP haben, hat ja bei Modems früher auch funktioniert ( kennen
> mich da nicht aus)

Ein COM Port hat keine IP Adresse.
Eine serielle Schnittstelle ist etwas komplett anderes als eine 
Netzwerkanbindung.

Was aber nicht heißt, dass es da nicht auch noch Möglichkeiten gibt.
Im Prinzip kann man eine virtuell Netzwerkkarte installieren, die daher 
logischerweise eine IP Adresse hat, und die ihre Daten über die Serielle 
loswird bzw. empfängt. Gegenüber dem System tritt so ein Gebilde damit 
als Netzwerkgerät auf, gegenüber der Umwelt als Serielle Schnittstelle.

von Frank S. (dux)


Lesenswert?

Karl Heinz schrieb:
> Ein COM Port hat keine IP Adresse.
> Eine serielle Schnittstelle ist etwas komplett anderes als eine
> Netzwerkanbindung.

Es wurde nichts anderes behauptet.

Karl Heinz schrieb:
> Was aber nicht heißt, dass es da nicht auch noch Möglichkeiten gibt.
> Im Prinzip kann man eine virtuell Netzwerkkarte installieren, die daher
> logischerweise eine IP Adresse hat, und die ihre Daten über die Serielle
> loswird bzw. empfängt. Gegenüber dem System tritt so ein Gebilde damit
> als Netzwerkgerät auf, gegenüber der Umwelt als Serielle Schnittstelle.

Einen Modem Adapter ist ja im Prinzip nichts anderes. Praktisch habe ich 
auch schon einen erstellt, jedoch bezweifle ich dass ich ihn für meine 
Zwecke "missbrauchen kann". Zwar kennt der meine COM-Schnittstelle, PPP 
und auch IP4/6 Einstellungen, aber so eine "Wählverbindung" macht halt 
Dinge auf die ich Serverseitig nicht reagieren kann. (Vll ist der 
Wählvorgang aber auch egal)

von Zac Hobson (Gast)


Lesenswert?

>holger schrieb:
>> Woher soll der Daemon wissen an welchem COM Port deine
>> Schaltung hängt?

Der Deamon testet die paar freien Comports und belegt den passenden.

>Irgendwie müsste der COM Port dann halt eine IP haben, hat ja bei Modems früher 
auch funktioniert.

Es ist die IP des Rechners, und den Port, den man ihm zuweist. Man kann 
ihm dann default zB 12345 geben, und das beim Broser auch einstellen :

http://localhost:12345/index.html

von Helge A. (besupreme)


Lesenswert?

Ohumpf da gab es einen Trick. Das server.exe von win2kpro hatte ich 
früher schon auf win95 zum laufen gebracht als Alternative zu trumpet 
winsock. Damit ließ sich "irgendwie" eine Anbindung weiterer Rechner 
über serielle Leitungen bewerkstelligen. Also ähnlich wie unter Unixen. 
Damit hatte das Haus dann 4 internetfähige Rechner an einem ISDN 
Steckkartenmodem. Alle Rechner haben sich auch untereinander gesehen und 
hatten eigene IP-Adressen.

Auch wenn Microsoft 
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/protocol_slip.mspx?mfr=true 
sagt, das ginge nicht. Das muß immer noch funktionieren.

von Zac Hobson (Gast)


Lesenswert?

Jeder Rechner hat sowieso eine eingen IP, sonst geht das Netzwerk gar 
nicht. Eben. Ich wuerde Slip sein lassen. Es gibt http-GET Anfragen an 
den emebedded Server, und die muss man beantworten, den Rest braucht man 
nicht.

So einen Demon, der TCP/IP auf Serell wandelt ist nicht so schwierig, 
solange man beachtet eine Anfrage, resp eine Antwort pro IP Packet zu 
verwenden. Der Demon muss das Protokoll verstehen und warten bis die 
Meldung komplett ist.

von Dieter (Gast)


Lesenswert?

"Oben siehst Du einen kompletten Webserver in einem einzigen
Chip für 3.40€ netto mit Ethernet."

Wo kann man diesen Webserver mit dem PIC18F67 bekommen?

von Frank K. (fchk)


Lesenswert?

Dieter schrieb:
> "Oben siehst Du einen kompletten Webserver in einem einzigen
> Chip für 3.40€ netto mit Ethernet."
>
> Wo kann man diesen Webserver mit dem PIC18F67 bekommen?

Eigenbau.

fchk

von Davis (Gast)


Lesenswert?

Frank K. schrieb:

> Dieter schrieb:
>> "Oben siehst Du einen kompletten Webserver in einem einzigen
>> Chip für 3.40€ netto mit Ethernet."
>>
>> Wo kann man diesen Webserver mit dem PIC18F67 bekommen?
>
> Eigenbau.
>
> fchk

Hast du das Design veröffentlicht und kannst einen Link posten?

von Frank K. (fchk)


Lesenswert?

Davis schrieb:

>>> Wo kann man diesen Webserver mit dem PIC18F67 bekommen?

> Hast du das Design veröffentlicht und kannst einen Link posten?

Schau Dir entweder bei Microchip das hier an
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en028217

oder bei Olimex das hier
https://www.olimex.com/Products/PIC/Proto/PIC-P67J60/

Da findest Du alle erforderlichen Infos. Die Demoboards haben natürlich 
noch weitere Peripherie, aber da kannst Du weglassen, was Du nicht 
brauchst.

fchk

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.