AVR Ethersex Vernetzung: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 106: Zeile 106:
  # PIN | IN/OUT | When active? | Name
  # PIN | IN/OUT | When active? | Name
  #-----+--------+--------------+----------------
  #-----+--------+--------------+----------------
  PC7 OUTPUT HIGH LED_1
  PC7   OUTPUT   HIGH           LED_1
  PC6 OUTPUT HIGH LED_2
  PC6   OUTPUT   HIGH           LED_2
  PC5 OUTPUT HIGH LED_3
  PC5   OUTPUT   HIGH           LED_3
  PC4 OUTPUT HIGH LED_4
  PC4   OUTPUT   HIGH           LED_4
  PC3    INPUT    LOW            Taster_1
  PC3    INPUT    LOW            Taster_1
  PC2    INPUT    LOW            Taster_2
  PC2    INPUT    LOW            Taster_2

Version vom 25. April 2010, 07:10 Uhr

Einleitung

Ethersex bietet verschiedene Möglichkeiten an, um einen Netzwerkzugriff zu realisieren. An erster Stelle ist da der bereits im AVR NET-IO Kapitel beschriebene Weg via Ethernet. Es ist aber nicht immer an der gewünschten Stelle eine Netzwerkverbindung vorhanden. Es besteht auch häufig die Anforderung nur wenige Sensoren oder Aktoren anzubinden. In diesem Falle ist nicht zwingend ein AVR NET-IO erforderlich. Es kann mit einem "kleineren" AVR Controller eine Verbindung zum Master Ethersex-Modul aufgebaut werden, das dann am Netzwerk hängt. Die Vernetzung zwischen einem (oder mehreren) Slaves und dem Master kann über mehrere Wege erfolgen. Folgende Möglichkeiten der Vernetzung bestehen:

im Folgenden wird die Vernetzung via Ethernet und RFM12 Funkmodulen näher beschrieben


Vernetzung via Ethernet

Für die Vernetzung via Ethernet sind keine besonderen Voraussetzungen erforderlich. Lediglich zwei (oder mehr) AVR-Controller mit Ethernet Interface (z.B. AVR Net-IO's) werden benötigt. Wenn auf dem Slave-Ethersex Modul keine Weboberfläche erforderlich ist, reicht auf diesem ein ATMega32-Controller aus. Das Setup von beiden Ethersex-Modulen sollte analog derer in AVR_Etherse beschriebenen vorgenommen werden. Die IP-Adressen und MAC-Adressen müssen einmalig im Netzwerk gewählt werden.

Kommunikation der beiden Ethersex-Module siehe unten.


Vernetzung via RFM12-Funkmodule

Mittels RFM12 Funkmodulen besteht eine sehr zuverlässige und äusserst flexible Möglichkeit der Vernetzung mehrer Ethersex Module. im Kapitel AVR_Ethersex wurde bereits ein RFM12 Funkmodul verwendet, um Funksteckdosen anzusteuern. Es besteht die Möglichkeit das RFM Funkmodul zur Vernetzung und zur Ansteuerung von Funksteckdosen parallel zu nutzen. Um Vernetzung zu ermöglichen, muss lediglich die Konfiguration von Ethersex erweitert werden.

Verdrahtung Master

Siehe hier


Verdrahtung Slave

Der Slave besteht hier aus einem ATMega32, 4 Tastern, 4 LED's und das RFM12 Funkmodul. Ethersex Slave.png


Konfiguration Master

Für das RFM12 Netzwerk muss ein eigenes, separates Subnet verwendet werden. Z.B. AVR Net-IO Ethernet: 192.168.0.x, RFM12 Subnet: 192.168.5.x. Das Master AVR Net-IO fungiert als Router fürs RFM12-Netz.

cd ~/Dokumente/ethersex
make menuconfig

Folgende Einstellungen zusätzlich vornehmen:

|-Network
|   |-IP over RFM12 (FSK Transmitter)
|   |   |-RFM12 Frequency: 433,92MHz
|   |   |-RFM12 Baudrate: 19200
|   |   |-IP Adress:192.168.5.1
|   |   |-RFM12 ARP-Proxy
|   |-Enable IP Forwarding

Neu compilieren und auf die Zielhardware übertragen.


Konfiguration Slave

Für den Slave wird ein eigenes Ethersex-Verzeichnis verwendet.

cd ~/Dokumente
git clone git://github.com/ethersex/ethersex.git ethersex_slave
cd ethersex_slave
make menuconfig

Folgende Einstellungen vornehmen:

|-Load a default configuration
|   |-RFM12 Standalone
|-General Setup
|   |-Target MCU: ATMega32
|   |-MCU Frequency: 16000000
|   |-Hardware/Periphery Class: Other
|   |-Teensy Build deaktivieren
|   |-Control6 Scripts
|-Network
|   |-IP over RFM12 (FSK Transmitter)
|   |   |-RFM12 Frequency: 433,92MHz
|   |   |-RFM12 Baudrate: 19200
|   |   |-IP Adress:192.168.5.2
|   |-Default Gateway: 192.168.5.1
|   |-TCP Support
|   |-UDP Support 
|   |-ICMP Support
|-I/O
|   |-I/O abstraction model: Full-featured
|   |-Named and logic state I/O
|-Protocols
|   |-ECMD
|   |   |-TCP/Telnet
|   |   |-Send via TCP
|-General Setup
|   |-Status LEDs
|   |   |-Status LED Transmitted
|   |   |   |-RFM12 TX
|   |   |-Status LED Transmitted
|   |   |   |-RFM12 RX

Pinning anpassen:

gedit pinning/other.m4

Folgende Zeilen 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, SPI_CS_HARDWARE)

  /* port the LEDS for rfm12 txrx attached to */
  pin(RFM12_TX_PIN, STATUSLED_TX)
  pin(RFM12_RX_PIN, STATUSLED_RX)

  RFM12_USE_INT(1)
  RFM12_ASK_SENSE_USE_INT(0)
')

Named Pins anpassen:

gedit pinning/named_pins/default

Folgende Zeilen einfügen:

# PIN | IN/OUT | When active? | Name
#-----+--------+--------------+----------------
PC7    OUTPUT   HIGH           LED_1
PC6    OUTPUT   HIGH           LED_2
PC5    OUTPUT   HIGH           LED_3
PC4    OUTPUT   HIGH           LED_4
PC3    INPUT    LOW            Taster_1
PC2    INPUT    LOW            Taster_2
PC1    INPUT    LOW            Taster_3
PC0    INPUT    LOW            Taster_4

Neu compilieren und auf die Zielhardware übertragen.


Kommunikation

Control6 Scripte könen verwendet werden, um Daten zwischen den beiden Ethersex Modulen auszutauschen. Mit dem Befehl ESEND können beliebige ECMD Befehle an eine beliebige IP-Adresse gesendet werden.

ESEND(Ziel_IP,"ECMD-Befehl\n");

Mit Hilfe der 4Taster am Slave sollen die 4 Steckdosen am Master Net-IO geschalten werden.

CONTROL_START
  CLOCK_USED;
  THREAD(Taster_1)
     ON PIN_FALLING(Taster_1) DO
        ESEND(192.168.5.1,"pin toggle Steckdose_1\n");
        WAIT(1);
     END   
  THREAD_END(Taster_1)

  THREAD(Taster_2)
     ON PIN_FALLING(Taster_2) DO
        ESEND(192.168.5.1,"pin toggle Steckdose_2\n");
        WAIT(1);
     END   
  THREAD_END(Taster_2)

  THREAD(Taster_3)
     ON PIN_FALLING(Taster_3) DO
        ESEND(192.168.5.1,"pin toggle Steckdose_3\n");
        WAIT(1);
     END   
  THREAD_END(Taster_3)

  THREAD(Taster_4)
     ON PIN_FALLING(Taster_4) DO
        ESEND(192.168.5.1,"pin toggle Steckdose_4\n");
        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