|
DAS 39,- € FUNKNETZ Project
Was ist das Funknetz Projekt ? Eigentlich entstand die Idee aus folgender Aufgabenstellung. Ich wollte ganz einfach auf kostengünstiger Weise mit meinem PC diverse Geräte im Haus steuern und dies von jedem Punkt der Erde aus (vorrausgesetzt es gibt irgendwie ein Anschluss ans WEB).
Zuerst musste die Hardware dafür gesucht werden. Immer unter der Vorraussetzung das es
billig bleibt. Da fand ich bei unserem PROmarkt das Funksteckdosen Set von REV
Solch ein Set kostet 15,- €. Davon habe ich mir dann gleich 2 Stück gekauft. Somit
hat man für 30,- € gleich 6 Funksteckdosen und 2 Fernbedienungen. Für solch ein Preis kann man
so etwas einfach nicht selber bauen. Nun hiess es nur noch wie ich mein PC dazu bekomme mit
den Steckdosen zusammen zu arbeiten.Es musste also eine Schnittstelle (Interface) her. Ich habe mich für die gute alte serielle (RS232) Schnittstelle entschieden. Diese ist an jedem älteren PC vorhanden und verträgt sich wunderbar mit selbstgebauter externer Elektronik. Wenn an neueren PC's keine COM-Schnittstelle mehr vorhanden sein sollte, so kann man sich für ca. 20,- € eine USB Adapter zulegen. Alles was wir nun noch so benötigen wird im nächsten Kapitel genauer beschrieben. Wie sieht die Hardware aus ? Eigentlich ziehmlich einfach. Zuerst schauen wir uns einmal eine Fernbedienung aus unserem Set genauer an. Darin befindet sich ein PT2260RC4 Chip.
Dies ist ein Transmitterbaustein der extra
für Funkfernbedienungen entwickelt wurde. Dieser Baustein hat 8 Adressleitungen (A0 - A7) welche
jedoch Tristate angesteuert werden. Somit hat man 3 ^ 8 Adressen zur Auswahl. Desweiteren besitzt
der Baustein 4 Datenleitungen. Genutzt werden aber bei diesem System nur 2. Nun ist doch ganz klar
das wir eine Fernbedienung nehmen und unsere Elektronik dort hinzu bauen, denn billiger können wir
diese Transmittereinheit nicht nachbauen. Zudem bei HF Technik die meissten Probleme aufgetreten wären
(Sender - Empfänger abstimmung). Für sowas hat man ja meisst keine Messgeräte zur Hand.
Zuerst müssen wir uns überlegen was wir vom PC an der Fernbedienung ansteuern wollen. Das wären
zu einem die 8 Adressleitungen und die 4 Datenleitungen. Obwohl ja nur 2 genutzt werden kann es ja
nicht schaden wenn wir die anderen beiden Datenleitungen auch nutzen. Auf der Fernbedienung wurden nun
alle Anschlüsse angelötet. Desweiteren mussten einige Bauteile entfernt werden, da diese unsere Schaltung
fehlerhaft beeinflussen würde. Zu einem war das ein 10 Kohm Wiederstand an A7 und 2 Wiederstände a 10 Kohm
die an D0 und D1 angeschlossen waren. Diese 3 Wiederstände wurden einfach ausgelötet. Neben den Adress und
Datenleitungen wurden dann noch 2 Leitungen angelötet für die Spannungsversorgung (12 V). Somit gehen nun
14 Leitungen zu unserer Fernbedienungsplatiene.
Wie sieht nun unser Interface aus? Damit wir unseren PT2260RC4 Tristatetechnisch ansteuern können habe ich
mich für einen ATMEL 8-Bit RISC Microkontroler entschieden. Der ATmega 8 besitzt schön viele Ports die man
als Input oder Output programmieren und zudem auch in den Tristat zustand vesetzen kann. Desweiteren
brauch der ATmega8 keine externe Taktversorgung, denn man kann den internen Taktgenerator (8 MHz) einschalten.
Somit wird unser Interface schön klein und vor allem billig. Die serielle Schnittstelle wird ganz einfach an den ATmega8 ran geführt. Wir brauchen nur 2 Leitungen. Einmal Masse (PIN 5) und Daten TX (PIN 3). Diese werden über einen Wiederstand (4,7 K) und einer ZDiode (5,1V) an einen Port von unserem ATmega8 geführt. Durch diese Schaltung werden die +12 V auf +5V abgesenkt. Die Adressleitungen gehen 1:1 auf den Port D des Atmel und die Datenleitungen auf den Port B. Die LED habe ich nur aus kontrollzwecken mit eingebaut. Diese kann normalerweise auch weg gelassen werden. Hier nun der Schaltplan, die Fernbedienungsseite habe ich aber nur Schematisch dargestellt, da es ja nur auf den PT2260RC4 ankommt. ![]() ![]() So sieht es komplett aus Atmelprogrammierung Dies ist eigentlich ziehmlich einfach. Auf das Programm will ich hier an dieser Stelle nicht weiter eingehen. Zum beschreiben des Atmels benutze ich das Programm PonyProg (http://www.lancos.com/prog.html). Dort findet man auch einfache Schaltungen um ein Programmer zu bauen falls keiner vorhanden sein sollte. Um den Atmel nun zu programmieren erstellt ihr eine Textdatei die ihr in xxxx.hex umbenennt. Dort hinein kopiert ihr folgendes:
Das brennt ihr nun auf euren Atmel. Ist dies geschehen müssen noch diverse Security Bits gesetzt werden. Hier mal die Einstellungen die ihr tätigen müsst. ![]() Nachdem nun auch die Security Bits auf den Atmel geschrieben wurden ist dieser voll einsetzbar. Durch diese Bits wurde z.B. auch die interne Taktgenerierung (8MHz) eingeschaltet. Wer wehr über diese Atmels erfahren will sollte mal die Herstellerseite http://www.atmel.com besuchen. Dort gibt es alles was man benötigt (Datenblätter, Compiler ect...). Nun ist der schwierigste Teil erledigt. Was nun folgt ist eine reine Softwaregeschichte. Infos zum Protokoll der COM Schnittstelle Wie aus der Schaltung oben ersichtlich ist, ist es eine reine Einwegkommunikation. Es wird also von dem Interface keine Antwort erwartet. Die Kommunikation läuft mit 9600 Bit/s bei 1 Startbit, 8 Datenbits und einem Stopbit. Es werden 5 Bytes gesenden. 1 Byte Header 3 Byte Daten 1 Checkbyte Das sieht dann so aus: 23 91 11 01 9D Zum Header, der Header besteht aus 0x23 und dient nur dazu dem Interface zu sagen das die nun folgendenen Daten für ihn bestimmt sind. Der nun folgende Datenteil ist etwas komplezierter gestaltet. Dazu müsste man mehr über die Arbeitsweise des Atmel erfahren. Soviel sei dazu nur gesagt: 1. Byte ist der DDRD Wert für den Atmel (A0 - A7 für den PT2260RC4) 2. Byte ist der PORTD Wert für den Atmel (A0 - A7 für den PT2260RC4) 3. Byte ist der PORTB Wert für den Atmel (D0 - D3 für den PT2260RC4) 91 11 01 würde also A0 und A4 auf High setzen, A7 auf Low und A1 A2 A3 A5 A6 auf Tristate. Das 3. Byte (01) setzt dann D0 auf High. D1 - D3 liegen dann auf Low. Das bewirkt das die Fernbedienung die 1 auf Kanal 1 auf OFF setzt. Zu guter letzt das Checkbyte. Das Checkbyte errechnet sich wiefolgt, man nimmt den Wert 0x3F und XOR't alle folgenden 4 Bytes mit diesem Wert. Das Ergebniss ist dann das Checkbyte. Das Checkbyte dient dazu um die Kommunikation zwischen PC <-> Interface sicherer zu gestalten. Dies alles ist zwar schön und gut für ein Programmierer, jedoch der normale Endanwender kann mit solchen Daten wenig anfangen. Deshalb habe ich auch ein Frontend entwickelt für Windows. dazu mehr im nächsten Kapitel. Server Client Software für Windows Mit den oben beschriebenen techn. Daten von der Schnittstelle, sollte eigentlich ein jeder der programmieren kann in der lage sein, sich selbst eine Anwendung zu programmieren. Ich habe dies auch getan. Meine Software besteht aus 2 teilen. Eine Server und einem Client Packet. Ich wollte ja ein Programm haben um meine Steckdosen Weltweit bedienen zu können. Server
Zum Server gibt es eigentlich nicht viel zu sagen. Zuerst editiert man die server.ini Datei. Dort trägt man die
Werte für den Comport ein und auf welchem Port dieser Server lauschen soll. Ich benutze immer Port 99. Sucht euch
einfach einen der 32 000 Ports aus. Der Server wird praktisch auf dem Rechner gestartet wo sich unser Interface befindet. Nach dem start lauscht nun unser Server auf den von uns gewältem Port ob Daten für ihn kommen. Übertragen werden unsere bekannten 5 Bytes. Als Antwort sendet unser Server ein OK + die 5 Bytes in ASCII Hexwerte zum Client zurück. Zuvor jedoch sendet der Server die empfangenen 5 Bytes tranparent zum Comport. Sogesehen ist dieser Server ziehmlich dumm. Aber mehr machen soll er ja auch nicht. Client
Das ist nun eigentlich das Herzstück des Softwarepacketes. Die Clientsoftware wird auf dem Rechner installiert,
von dem man aus steuern will. Auch hier gibt es eine ini Datei (client.ini) welche man vorher editieren kann. Dort
kann man z.B. statt Kanal 01 auch Namen verteilen. z.B. Wohnstube, Arbeitszimmer, Halle 03 ..... usw.
Auch die 1..3 auf der Fernbedienung bekommen da Namen z.B. Deckenfluter, Stereoanlage, Fernseher .... usw. Auch Port und
IP können dort eingetragen werden, jedoch kann man diese wärend des betriebes ständig ändern bzw. anpassen. Ist ja auch
logisch, denn die meisten User haben keine feste statische IP sondern eine dynamische (DSL Flatrate). So kann man dann
die Adresse von dyndns.org ect. eintragen.Was macht nun die Clientsoft ? Diese erstellt unseren 5 Byte Code. Je nachdem welcher Kanal eingestellt wurde und welche Taste betätigt wird, wird der Datenteil generiert. Diese 5 Byte sendet unsere Clientsoftware dann über das Ethernet raus. Wenn der Server dann antwortet, wird die Antwort in einem kleinen Textfeld angezeigt. Bleibt das Feld leer, so gibt es kein Server auf der anderen Seite. Der Webserver
Um unser Funknetz nun noch kompatibler zu machen, habe ich einen Webserver erstellt. Mit diesem ist es nun
möglich mit einem ganz normalen Standartbrowser (mit Javascript) unser Funksystem zu steuern. Den Webserver startet
man ganz normal unter Windows. Nach dem start kann man von überall aus mit einem Browser drauf zugreifen. Will
man es am eigenen Rechner testem, gibt man als Link einfach http://localhost/index.htm ein oder http://127.0.0.1/index.htm . Sollte man den Port
geändert haben, so muss dieser mit einem Doppelpunkt hinter der IP eingegeben werden. Angenommen wir nutzen wieder
unseren Port 99, dann lautet die Webadresse http://127.0.0.1:99/index.htm . In der server.ini Datei könnt ihr auch wieder
einige Variablen ändern. Diesmal ist auch eine daten.ini hinzu gekommen. In dieser Datei wird der aktuelle
Zustand der Steckdosen gespeichert. Dieser wird auf der Webseite ja beim Schalten angezeigt. Bei jedem Klick auf
einen Button wird die Seite neu aufgerufen. Dabei wird der Schaltprozess dem Server übergeben, demzufolge wird bei
jedem Klick die Webseite neu aufgebaut.
Der Praxistest Das System arbeitet einwandfrei. Da mein Rechner zu hause eigentlich immer in betrieb ist (Serverbetrieb) und meine DSL-Flatrate eh bezahlt ist, sind vom Betrieb her keine zusätzl. Kosten entstanden. Es ist schön wenn man von unterwegs einfach mal die Weihnachtsbeleuchtung zu hause einschalten kann oder andere Geräte verwalten kann. Desweiteren habe ich das Programm so umgeschrieben das es nun auch Zeitaufträge steuert. So steuert dieses System mein kompl. Haushalt. Das Aquarium, die Kaffeemaschiene, die Standheizung im Auto und andere Sachen. Das mit der Standheizung im Auto ging auch ziehmlich einfach. Dabei musste eine Funksteckdose her halten. Da das Auto immer in der nähe des hauses geparkt wird, kann der Rechner diese Heizung wunderbar verwalten. Es ist einfach herrlich wenn man morgens mit Kaffeeduft aufsteht und sich danach ins warme Auto setzt. Downloads Download Server Software Download Webserver Software Da die Programme in Visual Basic 6 erstellt wurden, kann es vorkommen, das noch einige Datein dazu installiert werden müssen. Sollten die Programme also mit einer Fehlermeldung starten, so installiert noch dies folgende Packet dazu. Download VB6 Runtime Software e-mail: mister_crd@gmx.de |