AVR Ethersex: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 34: | Zeile 34: | ||
Folgende AVR Controllerpins sind auf Sub-D Stecker (25 polig), Wago Kabelklemmen und 10 polige Wannenstecker herausgeführt und damit von außen zugänglich: | Folgende AVR Controllerpins sind auf Sub-D Stecker (25 polig), Wago Kabelklemmen und 10 polige Wannenstecker herausgeführt und damit von außen zugänglich: | ||
{|border="0" width="100%" cellpadding="15" | |||
|width="33%" valign="top"| | |||
|+'''''25 poliger Sub-D Stecker''''' | {| cellspacing="0" border="1" width="100%" | ||
|+'''''25 poliger Sub-D Stecker J3''''' | |||
|- | |- | ||
!style="background-color:#DDDDFF;" width="50%"|Pin an J3 | !style="background-color:#DDDDFF;" width="50%"|Pin an J3 | ||
Zeile 91: | Zeile 92: | ||
|25 ||GND | |25 ||GND | ||
|} | |} | ||
|width="33%" valign="top"| | |||
{| cellspacing="0" border="1" width="100%" | |||
|+'''''10 poliger Wannenstecker''''' | |+'''''10 poliger Wannenstecker EXT''''' | ||
|- | |- | ||
!style="background-color:#DDDDFF;" width="50%"|Pin an | !style="background-color:#DDDDFF;" width="50%"|Pin an EXT | ||
!style="background-color:#DDDDFF;" width="50%"|Funktion | !style="background-color:#DDDDFF;" width="50%"|Funktion | ||
|- | |- | ||
Zeile 112: | Zeile 112: | ||
|6 ||PD7 (OC2) | |6 ||PD7 (OC2) | ||
|- | |- | ||
|7 || | |7 ||PB0 (XCK/T0) | ||
|- | |- | ||
|8 ||PB3 (OC0/AIN1) | |8 ||PB3 (OC0/AIN1) | ||
Zeile 120: | Zeile 120: | ||
|10 ||5V | |10 ||5V | ||
|} | |} | ||
{| cellspacing="0" border="1" width="100%" | |||
|+'''''10 poliger Wannenstecker ISP''''' | |||
|- | |||
!style="background-color:#DDDDFF;" width="50%"|Pin an ISP | |||
!style="background-color:#DDDDFF;" width="50%"|Funktion | |||
|- | |||
|1 ||PB5(MOSI) | |||
|- | |||
|2 ||5V | |||
|- | |||
|3 ||NC | |||
|- | |||
|4 ||NC | |||
|- | |||
|5 ||RESET | |||
|- | |||
|6 ||GND) | |||
|- | |||
|7 ||PB7 (SCK) | |||
|- | |||
|8 ||GND | |||
|- | |||
|9 ||PB6 (MISO) | |||
|- | |||
|10 ||GND | |||
|} | |||
|valign="top"| | |||
{| cellspacing="0" border="1" width="100%" | |||
|+'''''Kabelklemmen''''' | |||
|- | |||
!style="background-color:#DDDDFF;" width="50%"|Klemme | |||
!style="background-color:#DDDDFF;" width="50%"|Funktion | |||
|- | |||
|5V ||5V | |||
|- | |||
|GND ||GND | |||
|- | |||
|ADC4 ||PA7 (ADC7) | |||
|- | |||
|ADC3 ||PA6 (ADC6) | |||
|- | |||
|5V ||5V | |||
|- | |||
|GND ||GND | |||
|- | |||
|ADC2 ||PA5 (ADC5) | |||
|- | |||
|ADC1 ||PA4 (ADC4) | |||
|- | |||
|GND ||GND | |||
|- | |||
|AREF ||(ADC Referenz Spannung) | |||
|} | |||
|} | |||
Zeile 151: | Zeile 208: | ||
SPI-Schnittstelle (MOSI/MISO/SCK): Netzwerkchip des Net-IO und RFM12-Modul | SPI-Schnittstelle (MOSI/MISO/SCK): Netzwerkchip des Net-IO und RFM12-Modul | ||
PD5: Chipselect RFM12 (nSel) | PD5: Chipselect RFM12 (nSel) | ||
PC0: LED RFM12 TX | |||
PC1: LED RFM12 RX | |||
PD3 (Ext. Interrupt INT1): Interrupt RFM12 (nIRQ) | PD3 (Ext. Interrupt INT1): Interrupt RFM12 (nIRQ) | ||
PD2 (Ext. Interrupt INT0): ASK Sense Interrupt RFM12 () | PD2 (Ext. Interrupt INT0): ASK Sense Interrupt RFM12 () | ||
Zeile 211: | Zeile 270: | ||
| |-Ethernet (ENC28J60) support | | |-Ethernet (ENC28J60) support | ||
| | |-MAC address: Die selbe wie auf dem AVR NET-IO abgedruckt ist | | | |-MAC address: Die selbe wie auf dem AVR NET-IO abgedruckt ist | ||
| | |-Etherrape IP address: Gewünschte IP-Adresse: '''''IP_NETIO'''' | | | |-Etherrape IP address: Gewünschte IP-Adresse: '''''IP_NETIO''''' | ||
| | |-Netmask: 255.255.255.0 | | | |-Netmask: 255.255.255.0 | ||
| |-Default gateway: IP-Adresse des Routers (nötig für Zeitsynchronisierung mit Zeitserver im Internet) | | |-Default gateway: IP-Adresse des Routers (nötig für Zeitsynchronisierung mit Zeitserver im Internet) | ||
Zeile 267: | Zeile 326: | ||
PD6 INPUT LOW Taster_3 | PD6 INPUT LOW Taster_3 | ||
PD4 INPUT LOW Taster_4 | PD4 INPUT LOW Taster_4 | ||
{{Hinweis|Mit Hilfe des Parameters ''' | {{Hinweis|Mit Hilfe des Parameters '''When active?''' können LOW- und HIGH- aktive Ein- und Ausgänge definiert werden.}} | ||
Zum Speichern des Named Pin Files: STRG-O und mit ENTER bestätigen | Zum Speichern des Named Pin Files: STRG-O und mit ENTER bestätigen | ||
Zum Beenden des Editors: STRG-X | Zum Beenden des Editors: STRG-X | ||
Zeile 273: | Zeile 332: | ||
Nach dem Aktivieren aller gewünschter Optionen, das Konfigprogramm mit Exit verlassen und die Änderungen abspeichern. | Nach dem Aktivieren aller gewünschter Optionen, das Konfigprogramm mit Exit verlassen und die Änderungen abspeichern. | ||
Zum Schluss muss ethersex noch mitgeteilt werden, an welchen Pins die RFM12 Chip Select und Interrupt's angeschlossen sind: | Zum Schluss muss ethersex noch mitgeteilt werden, an welchen Pins die RFM12 Status LED's, RFM12 Chip Select und Interrupt's angeschlossen sind: | ||
gedit ~/Dokumente/ethersex/pinning/hardware/netio.m4 | gedit ~/Dokumente/ethersex/pinning/hardware/netio.m4 | ||
Den folgenden Bereich evtl. anpassen: | Den folgenden Bereich evtl. anpassen: | ||
ifdef(`conf_STATUSLED_TX', `dnl | |||
pin(STATUSLED_TX, PB1, OUTPUT) | |||
')dnl | |||
ifdef(`conf_STATUSLED_RX', `dnl | |||
pin(STATUSLED_RX, PB0, OUTPUT) | |||
')dnl | |||
ifdef(`conf_RFM12', `dnl | ifdef(`conf_RFM12', `dnl | ||
/* port the rfm12 module CS is attached to */ | |||
pin(SPI_CS_RFM12, PD5) | |||
RFM12_USE_INT(1) | |||
RFM12_USE_INT(1) | |||
RFM12_ASK_SENSE_USE_INT(0) | |||
/* port the LEDS for rfm12 txrx attached to */ | |||
pin(RFM12_TX_PIN, STATUSLED_TX) | |||
pin(RFM12_RX_PIN, STATUSLED_RX) | |||
') | ') | ||
Zeile 295: | Zeile 366: | ||
avrdude -c '''''<PROGRAMMER>''''' -P '''''<PORT>''''' -p atmega644 -U ethersex.hex | avrdude -c '''''<PROGRAMMER>''''' -P '''''<PORT>''''' -p atmega644 -U ethersex.hex | ||
{{Hinweis|Die beiden Parameter '''''<PROGRAMMER>''''' und '''''<PORT>''''' wie unter [[AVR_Programmer|Programmer]] beschrieben einsetzen.}} | {{Hinweis|Die beiden Parameter '''''<PROGRAMMER>''''' und '''''<PORT>''''' wie unter [[AVR_Programmer|Programmer]] beschrieben einsetzen.}} | ||
Es besteht auch eine komfortablere Möglichkeit, als jedesmal die lange AVRDude Befehlzeile einzutippen: | |||
gedit config.mk | |||
Folgende Zeilen einfügen (die AVRDude-Zeile exakt wie die obige funktionierende Zeile einsetzen): | |||
download: ethersex.hex | |||
avrdude -c '''''<PROGRAMMER>''''' -P '''''<PORT>''''' -p atmega644 -U ethersex.hex | |||
{{Achtung|Vor '''avrdude''' '''MUSS''' unbedingt ein TAB-Zeichen (keine Leerzeichen) eingegeben werden. Ansonsten kommt es zu Fehlermeldungen}} | |||
'''Übertragen von Ethersex:''' | |||
make download | |||
==Funktionstest== | ==Funktionstest== | ||
Zeile 321: | Zeile 404: | ||
===ECMD Interface=== | ===ECMD Interface=== | ||
Ethersex bietet neben der Weboberfläche auch eine sehr leistungsfähige Kommandozeile. Diese ist via Telnet Protokoll auf Port 2701 erreichbar. | Ethersex bietet neben der Weboberfläche auch eine sehr leistungsfähige Kommandozeile (Ethersex Command). Diese steht je nach Konfiguration lokal via serieller Schnittstelle und/oder via Netzwerk auf Port 2701 zur Verfügung. | ||
====ECMD via Serielle Schnittstelle==== | |||
Net-Io via seriellem Kabel mit PC verbinden. | |||
Terminalverbindung (z.B. Hyperterm) mit folgenden Einstellungen öffnen: | |||
Baudrate: 115200 | |||
Databits: 8 | |||
Stopbits: 1 | |||
Parity: None | |||
Flow control: None | |||
Eine Auflistung aller Befehle erscheint mit Hilfe des Befehls | |||
help | |||
Ausgang einschalten: | |||
pin set Steckdose_1 on | |||
Ausgang ausschalten | |||
pin set Steckdose_2 off | |||
Eine komplette Befehlsübersicht siehe: http://ethersex.de/index.php/Ecmd_Reference | |||
====ECMD via Netzwerk==== | |||
Diese ist via Telnet Protokoll auf Port 2701 erreichbar. | |||
* Linux: | * Linux: | ||
telnet '''''IP_NETIO'''' 2701 | telnet '''''IP_NETIO''''' 2701 | ||
*Windows: Putty [[Debian_OpenSSH|(siehe auch hier)]] | *Windows: Putty [[Debian_OpenSSH|(siehe auch hier)]] | ||
Protocol: Telnet | Protocol: Telnet | ||
Zeile 341: | Zeile 447: | ||
==Control6 Script auf dem Net-IO== | ==Control6 Script auf dem Net-IO== | ||
Mit Control6 bietet Ethersex eine leistungsfähige Scriptsprache, mit deren Hilfe Steuerungsaufgaben relativ einfach realisierbar sind. | |||
===Ausgänge beim Start setzen=== | |||
Standardmäßig sind beim Einstalten von Ethersex sämtliche Ausgänge ausgeschaltet. Sollen bereits einige Ausgänge beim Start eingeschalten sein, so kann dies mittels folgendem sehr einfachen Control6 Script realisiert werden: | |||
gedit ~/Dokumente/ethersex/control6/control6.src | |||
{{Hinweis| | |||
* Standardmäßig wird bereits ein auskommentiertes Beispielscript mitgeliefert, das Teile einer Heizungssteuerung enthält. | |||
* Zeilen, die mit '''''dnl''''' beginnen sind Kommentare}} | |||
Folgende Zeilen im Bereich zwischen '''CONTROL_START''' und '''CONTROL_END''' einfügen: | |||
<code> | |||
ON STARTUP DO | |||
PIN_SET(Steckdose_1); | |||
PIN_SET(Steckdose_2); | |||
END | |||
</code> | |||
Das Script speichern und den Editor beenden. | |||
Ethersex neu compilieren und zum Net-IO übertragen. | |||
===Taster steuern Ausgänge=== | |||
Mit Hilfe der Weboberfläche bzw. per ECMD-Befehlen können die Ausgänge bereits geschalten werden. Die 4 Taster sind allerdings noch funktionslos. Um durch Tastendruck die zugehörige Steckdose zu aktivieren, muss noch die Logik dafür eingebaut werden. Dies geschieht durch ein relativ simples Control6 Script. | Mit Hilfe der Weboberfläche bzw. per ECMD-Befehlen können die Ausgänge bereits geschalten werden. Die 4 Taster sind allerdings noch funktionslos. Um durch Tastendruck die zugehörige Steckdose zu aktivieren, muss noch die Logik dafür eingebaut werden. Dies geschieht durch ein relativ simples Control6 Script. | ||
gedit ~/ethersex/control6/control6.src | gedit ~/Dokumente/ethersex/control6/control6.src | ||
{{Hinweis| | {{Hinweis| | ||
* Standardmäßig wird bereits ein auskommentiertes Beispielscript mitgeliefert, das Teile einer Heizungssteuerung enthält. | * Standardmäßig wird bereits ein auskommentiertes Beispielscript mitgeliefert, das Teile einer Heizungssteuerung enthält. | ||
Zeile 348: | Zeile 475: | ||
Folgende Zeilen im Bereich zwischen '''CONTROL_START''' und '''CONTROL_END''' einfügen: | Folgende Zeilen im Bereich zwischen '''CONTROL_START''' und '''CONTROL_END''' einfügen: | ||
<code> | <code> | ||
CONTROL_START | |||
CLOCK_USED; | CLOCK_USED; | ||
Zeile 383: | Zeile 511: | ||
THREAD_START(Taster_3); | THREAD_START(Taster_3); | ||
THREAD_START(Taster_4); | THREAD_START(Taster_4); | ||
END </code> | END | ||
CONTROL_END </code> | |||
Das Script speichern und den Editor beenden. | Das Script speichern und den Editor beenden. | ||
Zeile 395: | Zeile 524: | ||
echo "pin set Reed_2 on"|netcat -q 1 192.168.0.90 2701 | echo "pin set Reed_2 on"|netcat -q 1 192.168.0.90 2701 | ||
Dieser Befehl kann bequem in Linux-Scripten eingebunden werden, die z.B. via CRON-Daemon zu bestimmten Zeiten gestartet werden. | Dieser Befehl kann bequem in Linux-Scripten eingebunden werden, die z.B. via CRON-Daemon zu bestimmten Zeiten gestartet werden. | ||
Aktuelle Version vom 2. Mai 2010, 16:43 Uhr
Allgemeines zu Ethersex
Auszug aus dem Ethersex-Wiki (http://www.ethersex.de): Ethersex ist eine universelle Plattform um Mikrocontroller per IP-Protokoll anzusprechen und stellt eine solide Basis für eigene Entwicklungen dar. Ethersex wurde im August 2007 von stesie als alternative Firmware für fd0s Etherrape ins Leben gerufen. Namensgebend war seinerzeit die Erweiterung um IPv6-Unterstützung. Seither hat sich jedoch viel getan, sodass inzwischen nicht mehr nur die Etherrape-Hardware als Plattform unterstützt wird, sondern auch diverse andere Atmega Hardware Projekte. Der Code ist inzwischen weitgehend stabil und wird auch im professionellen Umfeld eingesetzt.
Hier nur einige Features, die mit Ethersex genutzt werden können (vollständige Featureliste siehe Ethersex-Wiki): - Bootloader um via Netzwerk neue Software aufzuspielen - Webinterface - Telnet Interface - Ansteuerung von Funksteckdosen - Ein- Ausgangsporterweiterungen via 74HC165 bzw. 74HC595 CMOS-Schieberegister - SD-Kartenansteuerung als Datenlogger - Auslesen von One-Wire Temperatursensoren (DS1820) - usw.
Lauffähig ist Ethersex auf folgenden AVR/Ethernetboards:
- Etherrape: http://www.ethersex.de/index.php/Etherrape
- AVR Webmodul: http://www.ethersex.de/index.php/AVR_Webmodul
- AVR Net-IO: http://www.ethersex.de/index.php/AVR-NET-IO
- einige weitere
Pollin AVR Net-IO
Pollin bietet ein recht funktionelles und preiswertes AVR- Board incl. Ethernetschnittstelle sowohl als Bausatz (ca 20€) als auch als Fertiggerät (ca 28€) an.
- Bausatz: http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze/Diverse/Bausatz_AVR_NET_IO.html
- Fertiggerät: http://www.pollin.de/shop/dt/NjI5OTgxOTk-/Bausaetze/Diverse/AVR_NET_IO_Fertigmodul.html
Die meisten Ein-Ausgangspins sind über einen 25 poligen SUB-D Stecker und einen Wannenstecker (EXT) herausgeführt. Desweiteren ist eine RJ45-Netzwerkbuchse und eine 9 polige SUB-D Buchse (Serielle Schnittstelle) vorhanden. Zu guter Letzt ist noch ein 10 poliger Wannenstecker (ISP) vorhanden, um den Mikrocontroller zu programmieren.
Aufgrund dieser Ausstattung eignet sich das AVR Net-IO ideal, sowohl um in die Ethersex Programmierung einzusteigen (Experimentierplattform) als auch um damit eigene Projekte zu realisieren.
Einziger kleiner Makel des Boards: Es ist "nur" mit einem ATMega32 Controller ausgestattet, der nur 32Kb Flash bietet. Damit ist das Flash bereits beinahe vollständig mit einer Ethersex-Basis-Version ausgelastet. Dieser Controller kann gegen den pinkompatiblen ATMega644 ersetzt werden. Damit können dann zahrlreiche weitere Ethersex Module - wie z.B. Ansteuereung von Funksteckdosen, genutzt werden.
Bedienungsanleitung incl. Schaltplan AVR Net-IO: http://www.pollin.de/shop/downloads/D810073B.PDF
Folgende AVR Controllerpins sind auf Sub-D Stecker (25 polig), Wago Kabelklemmen und 10 polige Wannenstecker herausgeführt und damit von außen zugänglich:
|
|
|
Beschreibung Beispielprojekt
Im folgenden wird die Konfiguration für eine per Netzwerk und Webbrowser ansteuerbare Steckdosenleiste beschrieben, die auch Funksteckdosen schalten kann. Mit dem standardmäßig verbauten ATMega32 können nur Basisfunktionen von Ethersex genutzt werden, da dieser nur 32KB Flashspeicher bietet. Für umfangreichere Projekte ist ein ATMega644 empfehlensert und für folgende Konfiguration Voraussetzung.
Zum Einsatz kommen:
- 4 Leistungsrelais, die 230V Steckdosen schalten können
- 2 Reed Relais zum Schalten kleiner Spannungen bzw. potentialfreies Schalten
- 4 Taster zum schalten der 4 Steckdosen an der Frontplatte der Steckdosenleiste
- 1 RFM12-Funkmodul zum Schalten von Funksteckdosen (weitere Hinweise zu Funksteckdosen siehe hier: [1])
Hardware
Für die Netzwerksteckdose wird eine Lochrasterplatine verwendet, die die Relais trägt. Die Relais werden von einem 8-fach Treiberbaustein ULN2803 angesteuert, der auch die Freilaufdioden für die Relais beinhaltet. Desweiteren kommt ein Schaltregler (LM2575-5T) zum Einsatz, der die exerne 12 Spannungsversorgung (Schaltregler Steckernetzteil) für die Relais in 5V für das Net-IO und RFM12 Funkmodul umsetzt. Da die Steckdose rund um die Uhr läuft, wird ein deutlich effizienterer Schaltregler anstatt eines 5V Festspannungsreglers verwendet. Über Flachbandkabel wird die Schnittstelle zum AVR-Net-IO und zu den Tastern und LED's am Gehäusedeckel hergestellt.
Im Beispiel wird folgendes Setup verwendet:
PC4: Steckdose_1 PC5: Steckdose_2 PC6: Steckdose_3 PC7: Steckdose_4 PC2: Reed_1 PC3: Reed_2l PB0: Taster_1 PD7: Taster_2 PD6: Taster_3 PD4: Taster_4 SPI-Schnittstelle (MOSI/MISO/SCK): Netzwerkchip des Net-IO und RFM12-Modul PD5: Chipselect RFM12 (nSel) PC0: LED RFM12 TX PC1: LED RFM12 RX PD3 (Ext. Interrupt INT1): Interrupt RFM12 (nIRQ) PD2 (Ext. Interrupt INT0): ASK Sense Interrupt RFM12 ()
Hinweis: | |
Für RFM12 Interrupt und ASK Sense Interrupt müssen externe Interrupt Pins (INT0/INT1/INT2) verwendet werden. Die Steckdosen und Taster können relativ frei über die I/O Ports verteilt werden. |
Fuses schreiben
Nachdem der ATMega32 des AVR Net-Io durch einen ATMega644 ersetzt wurde, müssen noch die Fuses angepasst werden. Dies ist nötig, um den AVR zu konfigurieren. Weitere Details zu den AVR Fuses → siehe auch hier. Folgende Fuses werden benötigt: BODLEVEL=4,3V, OCDEN=1, JTAGEN=1, SPIEN=0, WDTON=1, EESAVE=0, BOOTSZ=4096 Words, BOOTRST=1, CKDIV8=1, CKOUT=1, Ext. Crystal Oscillator (16k CK + 65ms)
avrdude -c <PROGRAMMER> -P <PORT> -p ATMega644 -U efuse:w:0xFC:m -U lfuse:w:0xFF:m -U hfuse:w:0xD1:m
Ethersex Software
Voraussetzungen
Ethersex kann ohne größeren Aufwand nur mit Linux compiliert werden. Es gibt eine Möglichkeit mit cygwin und WinAVR Ethersex unter Windows zu compilieren, die hier aber nicht näher besprochen werden soll. Für Windows-User gibt es aber eine spezielle Linux Live-CD (http://ethersex.de/index.php/Live_CD), die sämtliche Software und Compiler bereits enthält, ohne ein Linux installieren zu müssen.
Voraussetzungen:
- Linux mit Programmierumgebung AVR-gcc - Eclipse nicht nötig
- Linux Live-CD: http://www.ethersex.de/index.php/Live_CD
Ethersex Download
Terminalfenster öffnen und ins persönliche Dokumenteverzeichnis wechseln:
cd Dokumente
Download mittels git Versionsverwaltungstool (dabei wird ein Unterverzeichnis ethersex angelegt):
git clone git://github.com/ethersex/ethersex.git
Ethersex konfigurieren
Ins Ethersex-Verzeichnis wechseln:
cd ~/Dokumente/ethersex
Konfigurationstool starten (Die jeweilige Konfiguration wird gespeichert, sodass auch sequentiell Optionen ausprobiert werden können, und beim nächsten Aufruf nicht erneut alle Optionen einzustellen sind):
make menuconfig
Folgendes graphisches Konfigurationsprogramm wird angezeigt:
- Standardkonfiguration auswählen:
- Load a Default Configuration
- Im folgenden Menü mit der Space-Taste den Eintrag Pollin AVR Net-IO auswählen
- Analog dazu folgende Optionen aktivieren:
|-General Setup | |-Target MCU:ATmega644 | |-Enable Debugging | |-control6 scripts |-Network | |-Hostname: beliebig - z.B. Steckdose | |-Ethernet (ENC28J60) support | | |-MAC address: Die selbe wie auf dem AVR NET-IO abgedruckt ist | | |-Etherrape IP address: Gewünschte IP-Adresse: IP_NETIO | | |-Netmask: 255.255.255.0 | |-Default gateway: IP-Adresse des Routers (nötig für Zeitsynchronisierung mit Zeitserver im Internet) | |-TCP Support | |-UDP Support | |-ICMP Support | |-DNS-Support (bei Bedarf) | | |-DNS Server IP address: IP-Adresse des Routers (nötig für Zeitsynchronisierung mit Zeitserver im Internet) |- I/O | |-I/O abstraction model (Port I/O): Full Featured | |-Named and logic state I/O | |-RFM12 ASK | | |-RFM12 ASK send | | | |-Verwendete Funksteckdosensystem(e) auswählen (z.B. Tevion) | | |-RFM12 ASK external filter: Nötig für RFM12 ASK sensing | | |-RFM12 ASK sensing: Bei Bedarf; ermöglicht den Code von Funkfernbedienungen anzuzeigen | | |-Debugging ASK sensing: Falls ASK sensing aktiviert wurde, sollte diese Option aktiviert werden |-Applications | |-System Clock Support | | |-Synchronize using NTP protocol | | |-Adjust Clock to NTP Clock Signal | | | |-Ntp-Server: IP-Adresse des NTP-Servers (z.B. lokal im Netzwerk, falls NTP-Server installiert). | | | | Default, falls DNS aktiviert: pool.ntp.org / falls DNS nicht aktiviert: 213.133.123.125)
Nachdem alle Optionen ausgewählt wurden, kann folgendermaßen bestimmt werden, welche Webseiten im Webserver verfügbar sind:
|-General Setup | |-VFS (Virtual File System) support | | |-VFS File Inlining | | | |-Inline configuration Page | | | |-Inline RFM12 | | | |-Inline IO (Bei Bedarf. Bietet Zugriff auf sämtliche Controller IO-Ports) | | | |-Inline Named Pin
Nun können noch sog. Named Pins definiert werden. Damit ist es möglich, Ein- und Ausgänge mit einem selbstsprechenden Namen wie z.B. Steckdose_1 verwendet werden, anstatt PC4 (Port C / Pin4).
|- I/O | |-Edit named Pin configuration
Dadurch öffnet sich der Texteditor Nano, mit dessen Hilfe das Named Pins File editiert werden kann. Standardmäßig sieht diese folgendermaßen aus:
# PIN | IN/OUT | When active? | Name #-----+--------+--------------+---------------- PA0 OUTPUT HIGH p1 PA1 OUTPUT HIGH p2 PA2 OUTPUT HIGH p3 PA3 OUTPUT HIGH p4
Für das Beispiel sieht dies z.B. folgendermaßen aus:
# PIN | IN/OUT | When active? | Name #-----+--------+--------------+---------------- PC4 OUTPUT HIGH Steckdose_1 PC5 OUTPUT HIGH Steckdose_2 PC6 OUTPUT HIGH Steckdose_3 PC7 OUTPUT HIGH Steckdose_4 PC2 OUTPUT HIGH Reed_1 PC3 OUTPUT HIGH Reed_2 PB0 INPUT LOW Taster_1 PD7 INPUT LOW Taster_2 PD6 INPUT LOW Taster_3 PD4 INPUT LOW Taster_4
Hinweis: | |
Mit Hilfe des Parameters When active? können LOW- und HIGH- aktive Ein- und Ausgänge definiert werden. |
Zum Speichern des Named Pin Files: STRG-O und mit ENTER bestätigen Zum Beenden des Editors: STRG-X
Nach dem Aktivieren aller gewünschter Optionen, das Konfigprogramm mit Exit verlassen und die Änderungen abspeichern.
Zum Schluss muss ethersex noch mitgeteilt werden, an welchen Pins die RFM12 Status LED's, RFM12 Chip Select und Interrupt's angeschlossen sind:
gedit ~/Dokumente/ethersex/pinning/hardware/netio.m4
Den folgenden Bereich evtl. anpassen:
ifdef(`conf_STATUSLED_TX', `dnl pin(STATUSLED_TX, PB1, OUTPUT) ')dnl ifdef(`conf_STATUSLED_RX', `dnl pin(STATUSLED_RX, PB0, OUTPUT) ')dnl ifdef(`conf_RFM12', `dnl /* port the rfm12 module CS is attached to */ pin(SPI_CS_RFM12, PD5) RFM12_USE_INT(1) RFM12_ASK_SENSE_USE_INT(0) /* port the LEDS for rfm12 txrx attached to */ pin(RFM12_TX_PIN, STATUSLED_TX) pin(RFM12_RX_PIN, STATUSLED_RX) ')
Ethersex kompilieren
Evtl. vorhandene alte, während der Compilierung angelegt Files/Objectfiles werden entfernt:
make fullclean
Ethersex neu kompilieren:
make
Ethersex auf Net-IO übertragen
Nach dem erfolgreichen compilieren liegt im ethersex-Verzeichnis das HEX-File ethersex.hex dieses wie unter Programmer beschrieben auf den AVR-Controller des AVR Net-IO übertragen.
avrdude -c <PROGRAMMER> -P <PORT> -p atmega644 -U ethersex.hex
Hinweis: | |
Die beiden Parameter <PROGRAMMER> und <PORT> wie unter Programmer beschrieben einsetzen. |
Es besteht auch eine komfortablere Möglichkeit, als jedesmal die lange AVRDude Befehlzeile einzutippen:
gedit config.mk
Folgende Zeilen einfügen (die AVRDude-Zeile exakt wie die obige funktionierende Zeile einsetzen):
download: ethersex.hex avrdude -c <PROGRAMMER> -P <PORT> -p atmega644 -U ethersex.hex
Achtung: | |
Vor avrdude MUSS unbedingt ein TAB-Zeichen (keine Leerzeichen) eingegeben werden. Ansonsten kommt es zu Fehlermeldungen |
Übertragen von Ethersex:
make download
Funktionstest
Webinterface
Webbrowser öffnen und http://IP_NETIO eingeben.
- Die ethersex Weboerfläche sollte erscheinen:
- Auf den Link named outputs klicken. Die Seite zum Schalten der Relais sollte erscheinen:
- Auf den Link RFM12 ASK klicken. Die Seite zum Schalten von Funksteckdosen sollte erscheinen (z.B. fürs Tevion System):
- Zum Anlernen der Tevion-Funksteckdose, die Taste lernen an der Funksteckdose drücken und halten. Anschließend den gewünschten Button LEARN in der Weboberfläche anklicken. Nun sollte die entsprechende Funksteckdose mittels Buttons ON/OFF geschaltet werden können. Mit den Buttons UP/DOWN können dimmbare Tevion-Funksteckdosen (muss die verwendetete Steckdose unterstützen) gedimmt werden.
- Mit Button Back zurück zur Mainpage.
- Auf den Link Configure ethersex here klicken. Die Ethersex Konfigurationsseite erscheint:
ECMD Interface
Ethersex bietet neben der Weboberfläche auch eine sehr leistungsfähige Kommandozeile (Ethersex Command). Diese steht je nach Konfiguration lokal via serieller Schnittstelle und/oder via Netzwerk auf Port 2701 zur Verfügung.
ECMD via Serielle Schnittstelle
Net-Io via seriellem Kabel mit PC verbinden. Terminalverbindung (z.B. Hyperterm) mit folgenden Einstellungen öffnen:
Baudrate: 115200 Databits: 8 Stopbits: 1 Parity: None Flow control: None
Eine Auflistung aller Befehle erscheint mit Hilfe des Befehls
help
Ausgang einschalten:
pin set Steckdose_1 on
Ausgang ausschalten
pin set Steckdose_2 off
Eine komplette Befehlsübersicht siehe: http://ethersex.de/index.php/Ecmd_Reference
ECMD via Netzwerk
Diese ist via Telnet Protokoll auf Port 2701 erreichbar.
- Linux:
telnet IP_NETIO 2701
- Windows: Putty (siehe auch hier)
Protocol: Telnet Port: 2701 Im Bereich Terminal die Option Implicit CR in every LF aktivieren. Ethersex quittiert jede neue Zeile nur mit Linefeed (LF). Damit jede neue Zeile am Zeilenanfang beginnt, muss diese Option in Putty aktiviert werden.
Mit Hilfe des Buttons Open die Verbindung zum Net-IO herstellen Eine Auflistung aller Befehle erscheint mit Hilfe des Befehls
help
Ausgang einschalten:
pin set Steckdose_1 on
Ausgang ausschalten
pin set Steckdose_2 off
Eine komplette Befehlsübersicht siehe: http://ethersex.de/index.php/Ecmd_Reference
Control6 Script auf dem Net-IO
Mit Control6 bietet Ethersex eine leistungsfähige Scriptsprache, mit deren Hilfe Steuerungsaufgaben relativ einfach realisierbar sind.
Ausgänge beim Start setzen
Standardmäßig sind beim Einstalten von Ethersex sämtliche Ausgänge ausgeschaltet. Sollen bereits einige Ausgänge beim Start eingeschalten sein, so kann dies mittels folgendem sehr einfachen Control6 Script realisiert werden:
gedit ~/Dokumente/ethersex/control6/control6.src
Hinweis: | |
|
Folgende Zeilen im Bereich zwischen CONTROL_START und CONTROL_END einfügen:
ON STARTUP DO
PIN_SET(Steckdose_1);
PIN_SET(Steckdose_2);
END
Das Script speichern und den Editor beenden.
Ethersex neu compilieren und zum Net-IO übertragen.
Taster steuern Ausgänge
Mit Hilfe der Weboberfläche bzw. per ECMD-Befehlen können die Ausgänge bereits geschalten werden. Die 4 Taster sind allerdings noch funktionslos. Um durch Tastendruck die zugehörige Steckdose zu aktivieren, muss noch die Logik dafür eingebaut werden. Dies geschieht durch ein relativ simples Control6 Script.
gedit ~/Dokumente/ethersex/control6/control6.src
Hinweis: | |
|
Folgende Zeilen im Bereich zwischen CONTROL_START und CONTROL_END einfügen:
CONTROL_START
CLOCK_USED;
THREAD(Taster_1)
ON PIN_FALLING(Taster_1) DO
PIN_TOGGLE(Steckdose_1);
WAIT(1);
END
THREAD_END(Taster_1)
THREAD(Taster_2)
ON PIN_FALLING(Taster_2) DO
PIN_TOGGLE(Steckdose_2);
WAIT(1);
END
THREAD_END(Taster_2)
THREAD(Taster_3)
ON PIN_FALLING(Taster_3) DO
PIN_TOGGLE(Steckdose_3);
WAIT(1);
END
THREAD_END(Taster_3)
THREAD(Taster_4)
ON PIN_FALLING(Taster_4) DO
PIN_TOGGLE(Steckdose_4);
WAIT(1);
END
THREAD_END(Taster_4)
ON STARTUP DO
THREAD_START(Taster_1);
THREAD_START(Taster_2);
THREAD_START(Taster_3);
THREAD_START(Taster_4);
END
CONTROL_END
Das Script speichern und den Editor beenden.
Ethersex neu compilieren und zum Net-IO übertragen.
Einbindung in Linux-Scripte
Mit Hilfe des ECMD-Interfaces ist es möglich, automatisch Steueraufgaben von einem im Nezwerk laufenden Linux-PC oder -Server uauszuführen. Dazu kommt das Tool netcat zum Einsatz. Mittels folgendem Befehl kann ein Steuerkommando an Ethersex übermittelt werden, ohne eine Telnetverbindung aufbauen zu müssen:
echo "ECMD-Befehl" | netcat -q 1 IP_NETIO 2701
z.B. Reed-Relais 2 einschalten:
echo "pin set Reed_2 on"|netcat -q 1 192.168.0.90 2701
Dieser Befehl kann bequem in Linux-Scripten eingebunden werden, die z.B. via CRON-Daemon zu bestimmten Zeiten gestartet werden.
Optimierung Windows Zugriff
Beim Zugriff auf das Webinterface mittels Windows fällt ein deutlich langsamers Ansprechverhalten als unter Linux auf. Dies liegt daran, dass Ethersex TCP/IP Pakete versendet, die weniger Nutzdaten enthält, als in ein Paket passen würde. Windows wartet in so einem Fall 200ms bis es mit einem ACK antwortet. Ethersex wiederum wartet auf ein positives ACK, bis es das nächste Paket sendet. Dies führt zu den deutlichen Verzögerungen gegenüber Linux, das ankommende Pakete sofort mit einem ACK beantwortet. Man kann aber auch Windows das selbe Verhalten wie Linux beibringen. Dazu sind zwei Registrierungseinträger erforderlich:
- Regedit öffnen
- Schlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<GUID> auswählen. <GUID> GUID ist dabei die GUID der Netzwerkkarte (erkennt man am einfachsten an der IP).
- TcpAckFrequency (Typ DWORD) = 1 setzen
- TcpDelAckTicks (Typ DWORD) = 0 setzen
Hinweis: | |
Die beiden Schlüssel vom Typ DWORD evtl. neu anlegen, falls diese noch nicht existieren sollten |