Forum: PC-Programmierung Mikrocontroller über serielle Schnittstelle im Internet sichtbar machen


von chris (Gast)


Lesenswert?

Hallo Zusammen,

folgendes Problem:

1. Ein Mikrocontroller ist über eine serielle Schnittstelle mit einem PC 
verbunden
2. Der PC ist mit dem Internet verbunden
3. von irgendwo auf der Welt soll der Mikrocontroller über einen 
Webbrowser angesprochen werden

Hat jemand eine Idee, wie man dieses Problem am besten löst? Im Moment 
schwebt mir ein Java-Webserver mit RXTX vor.

von Rolf M. (rmagnus)


Lesenswert?

chris schrieb:
> Hat jemand eine Idee, wie man dieses Problem am besten löst?

Apache auf dem PC installieren, dann ein kleines CGI-Skript basteln, das 
aus den Daten des µC eine Webseite bastelt.

von chris (Gast)


Lesenswert?

Danke für die Antwort. Mit CGI kenne ich mich nicht aus. Wie spricht man 
dann die serielle Schnittstelle an?

Meine erste Idee war, anstatt APACHE einen kleine Java-Server zu 
schreiben. Das ist seit Java 1.6 ziemlich einfach.
Dann ist mir eingefallen, dass ich den Mikrocontroller unter anderem mit 
einem Schieberegler steuern will. Das scheint mit Java-Applets zu gehen.

von Sebastian (Gast)


Lesenswert?

So wie hier: http://d116.com/ace/
Siehe insbesondere den Link "Linux SLIP server".

von chris (Gast)


Lesenswert?

Faszinierendes Projekt. Danke :-)

Mit SLIP werden( wenn ich es richtig verstanden habe ) die Daten einfach 
vom Ethernet auf die serielle Schnittstelle geleitet.
Das Problem ist dann, dass man den TCP/IP Stack im Mikrocontroller 
implementieren muss. Der PC arbeitet dann eigentlich nur als großer 
Ethernet/RS232 Konverter.
Mein Ziel wäre eher in folgender Art: Ein Webserver auf dem PC stellt 
ein Serielles Terminal in einem Browser dar. Der Vorteil dann: im 
Mikrocontroller muss quasi kein Protokoll implementiert werden.

von bingo (Gast)


Lesenswert?


von Imon (Gast)


Lesenswert?

chris schrieb:
> Danke für die Antwort. Mit CGI kenne ich mich nicht aus. Wie spricht man
> dann die serielle Schnittstelle an?

Stark Vereinfacht:
ein CGI ist nicht anderes als ein Programm/script etc. deiner Wahl was 
von denn Webserver gerufen wird. Seine Parameter Erhalt das Programm 
über die commandline seine Ausgabe nach stdout wird an den Browser durch 
gereicht.

Du kannst also ein Stateless Programm in einer Sprache deiner Wahl 
schrieben das über die Serielle Schnittstelle mit denn Mikrocontroller 
Kommuniziert.Es bleibt in diesen fall also dir überlassen wie du den µC 
ansprichst, vielleicht mit ein C Programm, shellscript, Perl je nach 
persönlichen Geschmack.

Generell ich denke wenn du nur ein µC in das Internet über ein PC 
bringen willst, solltest du vielleicht von so einen Fetten Webserver wie 
Apache absehen, wenn nicht so wie so schon eine Instanz wegen andere 
Sachen am Start ist. Ich Persönlich finde das Lighttpd mit seiner CGI 
und FastCGI Schnittstelle, schneller aufzusetzen und leichter zu Warten 
ist. Außerdem läuft auf den Ding yahoo, scheint also auch was die 
Perfomens angeht nicht Grund verkehrt zu sein.
Außerdem solltest du dir die Frage stellen, was macht der PC sonst noch 
?
wenn er nur denn µC ans Netz anschließen soll dann, würde ich auch 
dessen Berechtigung in zweifel Ziehen. Es gibt auch embedded Systems mit 
Webserver, CGI und Serielle Schnittstelle, sogar auf AVR Basis oder ARM9 
mit Linux, Lighttpd und eben CGI.Egal was auch immer So ein PC ist ein 
ganz schönner Stromfresser ( ja auch die ATOM CPUs) und das was du in 
die Anschaffung von so ein Bord steckst das hast du bereits nach 1 Jahr 
an Strom kosten gespart.

von chris (Gast)


Lesenswert?

>Ich Persönlich finde das Lighttpd mit seiner CGI
>und FastCGI Schnittstelle, schneller aufzusetzen und leichter zu Warten
>ist. Außerdem läuft auf den Ding yahoo, scheint also auch was die
>Perfomens angeht nicht Grund verkehrt zu sein.
Das hört sich gut an, ich werde mal in diese Richtung weiter suchen.

Wenn das mit dem CGI funktioniert, bleibt immer noch die Frage mit mit 
einer geeigneten Oberfläche im Webbrowser. Ein HTML-Scribt ist ja eher 
etwas statisches und muss, damit es seinen Inhalt ändert, nachgeladen 
werden. Soweit ich weiß, kann man im Scribt einen Timer setzen, damit 
sich dieses automatisch nachlädt. Leider geht das nur im 
Sekundenbereich, so dass keine flüssige Bedienung möglich ist.

>Außerdem solltest du dir die Frage stellen, was macht der PC sonst noch
?
Es muss leider der PC sein, dieser existiert schon.

@bingo
>Da führt Dich das hier sicher schneller zum Ziel ...
>http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetz...
>http://shop.ulrichradig.de/Projekte/AVR-Webmodul/

Nein, es führt überhaupt nicht zu meinem Ziel, Besserwisser.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

oder:

XPORT und Port-Weiterleitung im Router.
Der XPORT läuft direkt am RS232.

VG,
/th.

von Tommy S. (tommys)


Lesenswert?

Hallo,

> Ein HTML-Scribt ist ja eher etwas statisches und muss,
> damit es seinen Inhalt ändert, nachgeladen werden.

Stichwort: AJAX, das loest Deine Probleme.

Ich habe so etwas aehnliches schonmal gebaut, um eine Webcam aus dem 
Browser raus zu drehen (Webserver -> Microcontroller -> Schrittmotor), 
das war relativ simpel. Die Einarbeitung in AJAX ist nicht wahnsinnig 
schwierig, die serverseitigen Scripts mit CGI sehr einfach - also alles 
in allem kein Problem.

Viele Gruesse,
TommyS

von bingo (Gast)


Lesenswert?

@chris:

Dein 1. Post sah so aus, als ob Du nur den µC ans Netz bringen willst, 
dass der PC ein "muss" ist, ging daraus nicht hervor. Da ist ein kleiner 
Platinen-Webserver einfacher und stromsparender als ein PC dazwischen.

Daraus gleich einen "Besserwisser" zu machen, ist schlichtweg unhöflich.

von Helmut L. (helmi1)


Lesenswert?

Das kannst du ganz einfach mit COM2TCP machen.

http://www.astrogeeks.com/AstroGeeks/COM2TCP/download.html

Damit kannst du ganze einfach eine Serielle Verbindung ueber das 
Internet fortfuehren.

von chris (Gast)


Lesenswert?

>Stichwort: AJAX, das loest Deine Probleme.

Hmm, sieht so aus, als wenn AJAX dafür geeignet wäre. Allerdings scheint 
mir der Einarbeitungsaufwand nicht ganz so klein:
http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29

>http://www.astrogeeks.com/AstroGeeks/COM2TCP/download.html
Das sieht auch nicht schlecht aus, hat aber leider auf beiden Seiten 
eine RS232. Es ist auch "closed source", was mir bei WEB-Sachen immer 
das ungute Gefühl des "Heimtelefonierens" gibt.

Kennt jemand "processing" ?
Das lässt sich ziemlich einfach programmieren, z.B. Datenserver:
http://www.processing.org/reference/libraries/net/Server.html

Die serielle Schnittstelle ist auch einfach anzusprechen:
http://processing.org/reference/libraries/serial/Serial.html

Mir scheint fast, das könnte der einfachste Weg sein.

von Stulle (Gast)


Lesenswert?


von ein_bisher_nicht_beteiligter (Gast)


Lesenswert?

PHP geht genauso für sowas.

von Rolf M. (rmagnus)


Lesenswert?

chris schrieb:
> Mein Ziel wäre eher in folgender Art: Ein Webserver auf dem PC stellt
> ein Serielles Terminal in einem Browser dar.

Das sollte z.B. mit shellinabox sehr einfach sein.
http://code.google.com/p/shellinabox/

von chris (Gast)


Lesenswert?

Vielen Dank für Eure Antworten, da ist ja doch einiges an Material 
zusammen gekommen, was ich mir noch genauer ansehen muss.

@bingo
>Da führt Dich das hier sicher schneller zum Ziel ...
>Daraus gleich einen "Besserwisser" zu machen, ist schlichtweg unhöflich.
Entschuldigung. Ich war einfach etwas verärgert, weil ich mir doch extra 
so Mühe gegeben habe, die Frage möglichst genau zu formulieren.

von Oliver (Gast)


Lesenswert?

Hallo, ich weiß dass der thread schon sehr alt ist, aber ich habe eine 
ziemlich einfache lösung
Wie bereits erwähnt gibt es Ja TCP2COM, was nur auf dem server pc 
installiert sein und ausgeführt werden muss.
Auf dem Client pc kann man sich dann mithilfe einer Portfreigabe/Im 
Lokalen Netzwerk/über hamachi/irgendwie anders mit Einem Ganz normalen 
TCP client verbinden und die Befehle eingeben, etc jenachdem
MfG, Oliver

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.