Steuerbare Webcam - Wie funktionierts? |
||||||||||||||||||||||||||||||||||||||||||
|
Wie funktioniert die steuerbare Webcam und was braucht man hierzu? Und nicht zu vergessen: Was kostet der Spaß? Diese Fragen sollen hier kurz angerissen werden....
Die Wirkungsweise soll anhand der Struktur erläutert werden. Das System besteht aus folgenden Komponenten:
Die Kamera ist ein fertig aufgebautes Modul, welches man direkt an die Videokarte anschließen kann. Der Microcontroller hat die Aufgabe, den Schrittmotor anzusteuern. Hierzu erhält er über eine serielle Verbindung zum PC die Steuerbefehle vom HTML-Server. Man kann jedoch auch mit der installierten Software auf dem Board den Motor über ein Terminalprogramm ansteuern. Doch dazu später mehr. Auf dem PC läuft der HTML-Server (remcam), welcher die Befehle vom Client (Browser) entgegen nimmt und an das Controllerboard weitergibt (Steuerbefehle). Ist der Befehl ausgeführt worden übergibt er dem Client die neue darzustellende Webseite. Der Videostream wird mittels Webcam32 erzeugt mit der sogenannten PUSH-Technologie. Wir haben diese Software gekauft, eine kostenlose Variante haben wir nicht gefunden. Man benötigt noch eine Internet (IP) -Adresse über die die Kommunikation läuft. Da bei den meisten Providern sich diese Adresse bei der Einwahl ändert (dynamische IP-Vergabe), muss man dafür Sorge tragen, dass man über einen DDNS-Provider eine quasistatische IP erhält. Der Zugriff erfolgt somit immer über eine DNS z.B. www.myaccount.dyndns.org. Der Router muss dafür sorgen, dass der DDNS-Provider immer die aktuell zugewiesen IP erhält. Wir erläutern die Einstellungen an Hand unseres Systems später genauer. In unserem Fall ist also der PC in ein Ethernet-Netzwerk integriert über den auch der Internetzugang (DSL-Flatrate!) erfolgt. Es versteht sich wahrscheinlich selbstredend, das solch ein Projekt schlecht mit einem Modemzugang realisiert werden kann. Wie man erkennen kann, ist der Aufwand schon beträchtig und auch wenn man alles selbst aufbaut ist der preisliche Aufwand nicht zu unterschätzen (ganz zu schweigen vom zeitlichen Aufwand!!). Es ist jedoch hervorragend geeignet, um sich mal ein wenig mit Microcontrollern und mit der Wirkungsweise des Steuerns übers Internet zu beschäftigen.
|
||||||||||||||||||||||||||||||||||||||||||
|
Die verwendete Kamera ist ein fertiges Modul, welches folgende Eigenschaften besitzt: - Komplette PAL-Farbkamera mit hoher Auflösung (628 H x 582 V = 365 496 Pixel, 340 TV-Linien) - Kleinste Abmessungen, geringe Leistungsaufnahme und sehr gute Bildqualität - Standart-Videoausgang 75Ohm, direkter Anschluss an Videokarte oder Monitor möglich - geringe Zusatzbeschaltung notwendig Technische Daten: - Betriebsspannung 5 VDC · Stromaufnahme 10 mA · Abm. (L x B x T) 22 x 22 x 26 mm - Linse mit IR-Filter: Öffnungswinkel FOV 51º x 43º · Brennweite f=6 mm, Blende F=1,6 mm · Automatischer Schwarz/Weiß-Abgleich
Das Datenblatt findet man hier. Das Modul kann über www.conrad.de bezogen werden (Bestell-Nr. 150026 - 62). Der Preis liegt bei ca. 55€.
Erste Erfahrungen zeigen, daß die Kamera ein wirklich gutes Bild liefert, sie jedoch große Probleme hat, wenn Gegenlicht auf das Modul trifft. Der automatische Abgleich ist auch relativ träge. Wir haben noch ein Graufilter (Sonnenschutzfolie) vor die Kamera gesetzt, um das Gegenlichtproblem ein wenig zu lindern.
|
||||||||||||||||||||||||||||||||||||||||||
|
Hier verwendet man am besten einen alten ausgeschlachteten bipolar Steppermotor. Ich hatte Glück und konnte für einen € aus der Wühlkiste bei Conrad 2 Stück mit nach Hause nehmen. Um den mechanischen Aufwand so gering wie möglich zu halten, ist es günstig einen Motor mit einer hohen Schrittrate zu wählen, so kann man den Drehteller direkt antreiben und benötigt kein zusätzliches Getriebe. Der Motor hat folgende Daten - Typ PM42L-048 Minebea (z.B. aus einem alten Fax oder Kopierer) - Schritte/Winkel: 48/7,5° - Spannung 24V - Strangstrom 600mA @24V Der Motor läuft auch noch problemlos bei kleineren Spannungen, bringt natürlich dann nicht das volle Drehmoment. Der Phasenstrom sollte unter 500mA liegen. Dann ist es relativ einfach, diesen über ein Transistorarray ULN2803A anzusteuern. Eine hervorragende Seite (allerdings in englisch) rund um den Schrittmotor habe ich hier gefunden.
|
||||||||||||||||||||||||||||||||||||||||||
|
Der Einstieg für mich in die Welt der Microcontroller erfolgte mit dem Flashboard der Zeitschrift Elektor. Ist seinerzeit erschienen 12/2001 und wurde ergänzt mit einem wirklich guten Basiskurs für µ-Controller (1/2002-5/2002). Der verwendete Controller ist ein 8051-Derivat von Atmel. Hierfür gibt es reichlich Software fürs Programmieren (Assembler, Compiler z.B. ReadS51 etc.). Die Platine und die Bauelemente können bei www.geist-electronic.de bestellt werden (Kosten: Platine 18,28€ Best. Nr. EPS010208-1; Bauteile ca. 25€ Best. Nr. 011201-1BT). Die Teileliste gibt es hier. Da die darauf installierte Software nicht allzu groß ist, kann man das Projekt noch etwas preislich zurechtstutzen. Den externen RAM 62256 (IC 4) kann in diesem Fall weggelassen werden. Die Stecker K3/K8 brauchen wir auch nicht. Dafür kommt noch das Transistorarray ULN2803A hinzu und eine gewöhnliche Chinchbuchse für die Leiterplattenmontage. Den Stromlaufplan für die Erweiterung der Platine um den Motor anzusteuern gibt es hier. Die Buchse schaltet man in das Videosignal der Kamera damit die elektrische Verbindung (Kabel) auch mal getrennt werden kann. Die Spannung für die Kamera greift man an K6 (+5V) und K7 (GND) ab. Für den Referenzpunkt (Nulllage) braucht man noch einen Schalter. Ich habe statt eines Mikroschalters eine Gabellichtschranke H22B3 verwendet. Eine Lasche fährt in die Gabel und unterbricht den Lichtstrahl der LED und ruft somit einen Schaltvorgang aus. Noch ein altes Steckernetzteil für 12-15VDC/500mA hervorgekramt und fertig ist die Hardware der Kamerasteuerung.
Verwendet wurde der Port P1.0 bis P1.3 für die Ansteuerung der Phasen des Motors (Ausgänge) und der Port 1.4 zum Einlesen des Referenzpunktes.
Zur Software: Sie wurde in C geschrieben (bin kein Profi!!). Das Hauptprogramm gibt es hier. Die Kommunikation läuft über die serielle Schnittstelle (UART). Die Steuerkommandos die übergeben werden vom HTML-Server (remcam) sind: SYNC-BYTE KOORDINATE1 KOORDINATE2 --> Beispiel 255 128 0 (Sync-Byte ist immer 255, Koordinaten 0..255) Remcam erwartet ein "Acknowledge"-Signal zurück. In diesem Fall wird ein "A" zurückgegeben, damit der Server weis, dass der Befehl ordnungsgemäß ausgeführt wurde. Mit einem Monitorprogramm/Terminal (z.B. HEXTERM von WINDOWS 3.1) kann man den Motor auch von Hand steuern, wobei folgende Steuercodes gelten:
Wenn die Software soweit läuft, dass man den Motor über das Terminal steuern kann, geht es zum nächsten Schritt, der Anbindung an den PC mit dem HTML-Server (remcam)
|
||||||||||||||||||||||||||||||||||||||||||
|
Die Kommunikation vom Webbrowser zum Steuern der Kamera läuft über einen HTML-Server. Keine Angst hört sich schwieriger an als es ist (solange man ihn nicht selber programmieren muss!). Als ich seinerzeit an die Realisierung meines Projektes ging fand ich im Web eine interessante Seite, welche den Aufbau einer steuerbaren Kamera gut beschrieb. Leider ist sie derzeit offline und nicht mehr verfügbar. Von dort konnte man seinerzeit auch den kleinen HTML-Server (remcam.exe) zum Steuern der Webcam downloaden. Ich hoffe ich verletze hier nicht die Urheberrechte wenn ich das Programm zu download anbiete (Mrs Cesco bitte ansonsten bei melden!). Die zip-Datei enthält die Orignal-Files die ich seinerzeit downgeloaded habe sowie die Verzeichnisse so wie die Anwendung es erfordert. Die Datei JavaCam.class ist von Webcam32.
Die Inbetriebnahme ist an sich nicht schwierig. Zuerst das remcam.ini-File angeschaut und angepaßt:
Für mein Projekt habe ich nur die horizontale Einstellmöglichkeit verwendet. Man muss nun die HTML-Seiten noch seinen Bedürfnissen anpassen. Ein paar html-Kenntnisse sind von Vorteil. Die Steuerung läuft über ein sogenanntes Formular, welches in locnomap.htm eingebunden ist. Hier der HTML-Code für das Einstellen eines beliebigen Drehwinkels und die Auswahl einer Voreinstellung eines Drehwinkels.
Dies
entspricht einer Verknüpfung eines Bildes (z.B. einem Pfeil nach rechts)
mit dem Link http://...
|
||||||||||||||||||||||||||||||||||||||||||
|
Was man nun noch benötigt ist eine Software, welche die Videobilder ins Netz transferiert ("streamt"). Wir haben uns für Webcam32 entschieden, zwar nicht kostenlos, dafür bekommt man aber jede Menge Funktionen geboten. Wir brauchen speziell die Möglichkeit, via "Java Server Push" die Streams ins Netz zu stellen. Was sich dahinter verbirgt kann man z.B. bei http://www.webcam-center.de nachlesen, genauso wie webcam32 zu konfigurieren ist. Die wichtigsten Einstellungen jedoch auch noch mal hier:
Preferences:
|
||||||||||||||||||||||||||||||||||||||||||
|
In unserem Fall übernimmt der Hardware-Router
(SMC Barricade kompatibel) das uploaden der aktuellen IP zum DDNS-
Provider. Webcam32 besitzt ebenfalls die Möglichkeit die IP-Adresse zu
aktualisieren (d.h. es wird die html-Datei (auf welche der Stream
laufen soll) auf dem FTP-server mit der aktuellen IP "versorgt".
Leider liegen hier keine Erfahrungen vor.
Nun noch die in remcam.zip enthaltenen html-Dateien angepasst und das Frame (stream-frame.htm, locnomap.htm und wc32push.htm) auf denFTP-Homepage-Server gelegt und dann ist es fast fertig das Projekt... |
||||||||||||||||||||||||||||||||||||||||||
|
Nun muss noch der Router eingestellt werden und es gilt sich eine quasistatische IP zu beschaffen. Das geht wie folgt:
Wir gehen von einem SMC Barricade Router aus. Wie es sich mit anderen Routern verhält, fehlt leider die Vergleichsmöglichkeit. Aber an Hand dessen soll ja das Wirkprinzip erläutert werden. Hier wieder die wichtigsten Einstellungen:
Wir haben uns als DDNS-Provider www.DynDns.org ausgesucht. Dieser bietet einen kostenlosen Dynamic-DNS-Service. Einen Zugang anmelden und anschließend unter http://www.dyndns.org/services/dyndns/ einen Host anlegen der im Router hinterlegt wird (wie eben beschrieben). Wie der Zugriff über die Webseiten erfolgt, ist bereits beim html-Server beschrieben worden.
Kleiner Tipp am Rande: auf diesem Wege kann man auch seinen privaten FTP und HTML-Server einrichten und betreiben. Einfach den kostenlosen JANA-SERVER downloaden....aber das ist schon ein wenig "Off Topic".
|
||||||||||||||||||||||||||||||||||||||||||
|
Eine kleine Webcam zu betreiben und die Bilder über den FTP-Transfer ins WWW zu stellen, bringt heute niemanden mehr ins Schwitzen. Die Kamera dabei auch noch steuerbar zu machen, bedarf wie gezeigt wurde eines weitaus höheren Aufwandes
Unser fertiges Gerät gibt es hier zu bestaunen. Und wie es funktioniert sieht man hier....
Also: viel Spass beim Selbermachen, und lasst es mich wissen wenn es auch bei Euch funktioniert (oder noch nicht)! |
||||||||||||||||||||||||||||||||||||||||||
|
- Diese Seite ist Bestandteil des privaten Wetterservice Mühlanger (c) 2003 CaRei - Stand 06.04.2003 |