DinusExperience: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Zbus ( ein rs485 netzwerk mit ip ))
(Zbus ( ein rs485 netzwerk mit ip ))
Zeile 160: Zeile 160:
  
 
== '''Zbus ( ein rs485 netzwerk mit ip''' ) ==
 
== '''Zbus ( ein rs485 netzwerk mit ip''' ) ==
 +
 +
verlagert nach http://www.ethersex.de/index.php/RS232_und_RS485_Netz_mit_Zbus_protocol
  
 
Wichtig - erst diese Seite lesen: http://www.ethersex.de/index.php/Network_Bridges
 
Wichtig - erst diese Seite lesen: http://www.ethersex.de/index.php/Network_Bridges

Version vom 1. September 2009, 12:30 Uhr

Ziel dieses Projekts

  • mal mit avr's anfangen und verstehen und die "closed software" von pollin durch "open source software" ersetzen

AVR hardware umgebung

  • Programmer: Atmel Evaluations-Board Version 2.0.1 ist fuer avrdude ein pony seriell also: -c ponyser
  • Hier ist ein ponyser programmer zu finden aehnlich wie oben: [ponyser programmer]
  • avr-net-io
  • atmega644
  • geliefert von [http://www.pollin.de]

Software umgebung

Hilfe

  • Die Community ist hier zu finden,
  • dort ist folgendes mitgeteilt/besprochen worden:

Problem mit ponyprog auf dem Atmel Evaluations-Board in Verbindung mit einem usb-rs232 konverter

  • baudrate /dev/ttyUSB0 auf 9600 8N1
avrdude -p m644 -c ponyser -P /dev/ttyUSB0 -t  (avrdude in terminal mode)
  • verbindung mit dem atmega644, kann fuse bits lesen usw. (zb. r lf gibt das low fuse aus sehe manual avrdude)
  • aber avrdude bleibt beim Versuch mit /dev/ttyUSB0 als interface zu flaschen haengen
  • ersatz durch ein kabel an /dev/ttyS0
  • baudrate /dev/ttyS0 auf 9600 8N1
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U flash:w:ethersex.hex -v
  • laeuft dann problemlos durch
  • Das usb-rs232 interface funktioniert jedoch mit der usart vom board tadellos.

Fuse bits

avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xE7:m -U hfuse:w:0xDC:m -U efuse:w:0xFF:m
  • folgende fuse bits sind es bei mir geworden fuer atmega32:
  • lfuse BF
  • hfuse CA
avrdude -p m32 -c ponyser -P /dev/ttyS0 -U lfuse:w:0xBF:m -U hfuse:w:0xCA:m

ecmd interface via rs232/ USART

  • wenn in menuconfig unter general > Enable (serial line) Debugging NICHT aktiviert ist, jedoch unter I/O support > usart ecmnd interface aktiviert ist wird die baudrate 19200 verwendet:
screen /dev/ttyUSB0 19200 8N1
  • wenn in menuconfig unter General > Enable (Serial Line) Debugging aktiviert ist und unter I/O support > Usart ecmd interface NICHT wird die baudrate 115200 verwendet: (Quarz > 16Mhz, kein teensy usw.)
screen /dev/ttyUSB0 115200 8N1
  • wenn eine baurate von 19200 oder 115200 nicht passt, weil zB. anderer Quarz oder AVR, dann kann die baudrate in: /protocols/ecmd/via_usart/ecmd_usart.h bzw. /core/debug.h auf den gewuenschten Wert eingestellt werden.

ecmd interface via i2c

  • In hauptmenu --> protocols --> i2c aktivieren da erscheinen dann i2c address und i2c buffer len

Man schreibt sein kommando 0 terminiert rein und lieszt dann das ergebnis wieder aus

Ein einfaches interface fuer den PC das unterstutz wird durch linux ab vers. 2.6.21

besteht aus 2 wiederstanden und ein diode.

 http://www.hifi-remote.com/jp1/simple/index.shtml

module in linux laden met:

 modprobe i2c-parport type=7

(wird noch erganzt)

Port I/O und Ecmd

  • der atmega644 hat 4 ports PA PB PC PD
  • PORTNUM ist dann PA=0 PB=1 PC=2 PD=3
  • das Beispiel gibt dann die werten von port PA aus:
io get port 0

um das ddr register von port 3 zu lesen:

die werten werden in hex als zb 0x00 ausgegeben

io get ddr 3 

um das ddr register zu setzen:

hier soll kein 0x prefix mitgegeben worden (so ff und kein 0xff)

io set ddr 3 ff

Named Pins und Ecmd

sehe http://www.ethersex.de/index.php/Named_PIN

  • macht das steuern uebers http einfach und schoen (wenn http server im menuconfig aktiviert ist).
  • in /core/portio/config gibts du pins symbolische namen. Zum Beispiel:
PD7 OUTPUT HIGH Verstaerker

dann kannst du mit ecmnd

 pin set Verstaerker on

an das Ethersex senden, um den pin PD7 zu aktivieren

pin set Verstaerker off

schaltet den Verstaerker, bzw. pin PD7, wieder aus

EcmdScript

Ist stark in entwicklung.

Mit EcmdScript kann mann den ethersex als ein SPS (PLC) einsetzen.

Eine Speicherprogrammierbare Steuerung (SPS, engl. Programmable Logic Controller, PLC) ist eine Baugruppe, die zur Steuerung oder Regelung einer Maschine oder Anlage eingesetzt wird

english : http://en.wikipedia.org/wiki/Programmable_Logic_Controller

deutsch : http://de.wikipedia.org/wiki/Programmable_Logic_Controller

Beschreibung http://www.ethersex.de/index.php/ECMDScript

Achte auf spaces EcmdScript ist da kritisch.

Wenn ein ecmd space(s) hat bei if dan es ein alias geben z.b. $get_heizung = pin get Heizung

if ( $get_heizung eq off ) then echo es ist warm genug

Textvergleiche sind: eq und ne

  • VARIABLEN

Standard sind da 4 VARIABLEN nahme: 1 2 3 4

Nur zahlen. Nahmen geht nicht.

Das Anzahl ist zu aendern in

 Applications  --->
  [*] ECMD (Etherrape Control Interface) support  ---> 
    [*] ECMD Scripting  --->
        (4)   Maximum number of variables 

Alias eingeben

 Applications  --->
  [*] ECMD (Etherrape Control Interface) support  ---> 
    [*] ECMD Scripting  --->
      [*] Alias Command Names  --->

Fuer Named Pins

zb.ein alias eingeben (wenn nicht mit make menuconfig dann mit ein editor in protocols/ecmd/alias_defs.m4)

alias_ifdef(NAMED_PIN_SUPPORT)
  alias("Heizung", "pin get Heizung")
alias_endif()

einfuegen

Netzwerk-Einstellung aendern

zB. mit:

ip 10.0.0.180

wird die ip geaendert

netmask 255.255.0.0

aendert die netmask

gw 10.0.0.222

das gateway

und dann ein

reset

eingeben, um die aenderungen zu uebernehmen.

Yport ( ethernet rs232 converter )

verlagert nach http://ethersex.de/index.php/YPort

Zbus ( ein rs485 netzwerk mit ip )

verlagert nach http://www.ethersex.de/index.php/RS232_und_RS485_Netz_mit_Zbus_protocol

Wichtig - erst diese Seite lesen: http://www.ethersex.de/index.php/Network_Bridges

Hier findet man die Anschlussbelegung von atmega8 mit atmega644 per MAX485 http://www.ethersex.de/index.php/Bild:Zbus.pdf

Aufbau von einem rs485 netzwerk: http://archive.chipcenter.com/embapps/emba062.htm

Bild 1 unten gibt einen richtigen Aufbau wieder.

Dort kann man am ende des Artikel auch als pdf downloaden. Die bilder der HTML Version sind deutlicher als die der PDF-Version.

Protokoll siehe: http://www.ethersex.de/index.php/ZBus_Protokoll

Den PC als Host siehe: http://www.ethersex.de/index.php/ZBus_Serial_Host

PC als Host node am Zbus einsetzen:
Ein PC_Host Adapter kann so aussehen:
- Ist auch als universal rs232-rs485 Konverter einzusetzen
- Hat zwei rs485 Kanälen
- Das umschalten zwischen empfangen und senden ist Baudratenunabhaengig.
- Verkraftet eine Baudrate bis 115200.
- Mit den Steckverbinder kann man jedes Kabel anschliessen ohne zu loeten.
- Die Leds leuchten nur auf wenn etwas ampfangen oder gesendet wird.
- Kein Hardware handshake.
- J4 ist um bei kürzeren Leitungen 5V weiterzuleiten, sodass kein Extra Spannungsumwandler bei dem Node nötig ist.
- Mit 2 extra Jumper kann auch ein RS422 eingestellt werden media:Zbus_node_PoZbus_RS232_RS485_RS422.png

Zbus node PC PoZbus.png Schaltplan PC am Zbus (aka) universal rs232 extender (ohne hardware handshaking)

P1010069.jpg P1010070.jpg Bastel Bilder von PC an Zbus (aka) rs232 extender

P1010073.jpg 232.png

485.png 2576T.png

Bastel Bild nach 40m kabel mit schaltplaene die darauf stecken

Die rs232 und rs485 sind getrennt nach aussen gefuehrt. Somit kan man es als entwicklungsboard einsetzen und ein avr-net-io ohne aenderung an die zbus haengen.


Beispiel node mit atmega8

Zbus node PoE.png

Zbus node mit atemaga8

Um den PC das Zbus bei zu bringen geh zu:
~/ethersex/contrib/zbus-serial-host und gebe
 make
ein, damit wird zbus-serial-host gebaut.
Wie normal hat man unter Linux mit rechten zu tun.
Wenn man als user nun :
 ./zbus-serial-host 

versucht aus zu fuehren kommt: ./zbus-serial-host: Couldn't open tun device

 su

und dein password abgeben fuer root und als root weiter machen. jetzt als root:

 ./zbus-serial-host -h

ausfuehren. Dann soll folgende ausgabe kommen:

-h --help      Print this help and exit
-r --baudrate  set baudrate
-a --address   adds of the interface in the form 192.168.8.1/24
-d --device    set the ttyS* interface to use
-m --mtu       set mtu
-u --up        call this command, when the interface is up

Annahme du willst ein baudrate von 19200 an /dev/ttyS0 mit ip=10.0.1.22 und netmask 255.255.255.0 Dann gibt man folgendes ein:

 ./zbus-serial-host -r 19200 -d /dev/ttyS0 -a 10.0.1.22/24

Mit

 ifconfig

soll zbus jetzt auftauchen als netz interface. ausgabe soll sowass sein:

 zbus0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
           inet addr:10.0.1.22  P-t-P:10.0.1.22  Mask:255.255.255.0
           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:174  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:500 
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Das zbus0 interface ist wie ein gewohnliches internetz interface. (zb eth0) Alle Zbus ethersexen sollen eine IP in 10.0.1.x haben. Annahme: den PC hat als ip 10.0.0.188 Mit eingabe von:

 ip route add 10.0.1.0/24 via 10.0.0.188

sollten alle ethersexe erreichbar sein die an Zbus angeschlossen sind und richtig mit Zbus kompiliert sind.Das bedeutet auch das alles was an Zbus haengt mit die gleiche baudrate laufen muss.

LCD ausgabe

sehe http://www.ethersex.de/index.php/LCD

wissenswert bei make menuconfig

  • irc-client

zu erreichen mit >Applications>irc-client(Experimental)

geb dort ein existierende irc ip nummer ab zb fuer ethersex mit das host command in ein terminal

host irc.freenode.net

dan werden die ip nummer ausgegeben.

waehle ein und gebe das ip ein bei: server ip

channel ( zb ethersex ist ok)

Nickname is total frei :)

Bei Applications ECMD (Etherrape Control Interface) support aktivieren.
Bei Applications>ECMD (Etherrape Control Interface) support>IRC (EXPERIMENTAL) aktivieren.


  • netstat (soll mann aktivieren ist gefahrlos nur als danke schoen an die coders von ethersex)

einstellen mit >Applications>Systemclock support und dann da

date+time aktivieren
cron deamon (static jobs) aktivieren

zuruck nach

Applications>netstat client aktivieren

alles ist da schon richtig eingegeben (nichts aendern)

alle werden dan in http://www.ethersex.de/~habo/stat/ gelistet nur mit zeit und mac

ETHERSEX HOWTO

Ist noch baustelle!

Hier werden alle links eingefuegt die meiner meinung nach information behalten die auch in ein HOWTO sein sollte.

Sind alle links zu : http://www.ethersex.de/index.php/Spezial:Alle_Seiten

Wo auch noch ein menge andere documentation zu finden ist.


DIE UNGEAHNTE MOEGLICHKEITEN VON ETHERSEX

 http://www.ethersex.de/index.php/Feature_Liste

HARDWARE

Direkt durch den software unterstuetzte hardware:

 http://www.ethersex.de/index.php/Unterstützte_Hardware

SOFTWARE

Ein komplette Entwicklungs umgebung (sogar ohne installierung) mit :

 http://www.ethersex.de/index.php/Live_CD

Voraussetzung an software:

 http://www.ethersex.de/index.php/Voraussetzungen

Download:

 http://www.ethersex.de/index.php/Download

git howto :

 http://www.ethersex.de/index.php/Git_HowTo

step by step zum software :

 http://www.ethersex.de/index.php/Kategorie:StepByStep

SOFTWARE PROTOCOLS IN ETHERSEX

ecmd  : if enabled in menuconfig

 http://www.ethersex.de/index.php/ECMD
 http://www.ethersex.de/index.php/Ecmd_Reference
 http://www.ethersex.de/index.php/ECMD_Protocols
 http://www.ethersex.de/index.php/Ethersex_Ecmd_Erstellen
 http://www.ethersex.de/index.php/AliasCmd

COMMUNITY

Hier ist hilfe zu finden :

 http://www.ethersex.de/index.php/Community

HARDWARE ANBINDUNG

  • in menuconfig unterstuetzte hardware.

lcd :

 http://www.ethersex.de/index.php/LCD

rfm12 : senden und empfangen von ip ueber 433 Mhz (wireless netz) :

 http://www.ethersex.de/index.php/BitfehlerASK
 http://www.ethersex.de/index.php/RFM12
 http://www.ethersex.de/index.php/RFM12_ASK
   TevionFunksteckdosen, welche über eine 'Anlern-Taste' auf den gesendeten Haus- und Gerätecode
   programmiert  werden können :
 http://www.ethersex.de/index.php/HowToRFM12_ASK
 http://www.ethersex.de/index.php/RS485_Converter
 http://www.ethersex.de/index.php/Hardware-Rayofhope

I2C  :Der I2C-Bus (Inter Integrated Circuit) ist ein einfacher Zweidraht-Bus.

 http://www.ethersex.de/index.php/I2C
 http://www.ethersex.de/index.php/I2C_Bootloader

camera Dc3840 : webcam

 http://www.ethersex.de/index.php/DC3840_Camera
 http://www.ethersex.de/index.php/HTTPD

one wire : 1-wire Temperatursensoren mit ECMD auflisten und abfragen

 http://www.ethersex.de/index.php/Dallas_1-wire_Bus

stella light :

 http://www.ethersex.de/index.php/Stella_Light
 http://www.ethersex.de/index.php/Ecmd_speed_protocol

kty : Temperaturen mit dem ATmega messen

 http://www.ethersex.de/index.php/Temperaturmessung_mit_KTY
  • software aktivieren fuer neue hardware (nicht in menuconfig) :
 http://www.ethersex.de/index.php/Ethersex_Hardware_hinzufügen

PORT STEUERUNG

  • Pins :
 http://www.ethersex.de/index.php/Pins_in_Ethersex_definieren
  • Yport : ethernetz zu rs232 konverter
 http://www.ethersex.de/index.php/YPort

NETZWERK AUFBAU

 lesen bevor man Zbus oder rfm12 einsetzt
 http://www.ethersex.de/index.php/Network_Bridges
  • Zbus :

ip netzwerk ueber rs485

 http://www.ethersex.de/index.php/ZBus
 http://www.ethersex.de/index.php/ZBus_Bootloader
 http://www.ethersex.de/index.php/ZBus_Protokoll
 http://www.ethersex.de/index.php/ZBus_Serial_Host
  • rfm12 :

senden und empfangen von ip ueber 433 Mhz (wireless netz) :

 http://www.ethersex.de/index.php/RFM12
 http://www.ethersex.de/index.php/RFM12_ASK
   TevionFunksteckdosen, welche über eine 'Anlern-Taste' auf den gesendeten Haus- und Gerätecode
   programmiert  werden können :
 http://www.ethersex.de/index.php/HowToRFM12_ASK
 http://www.ethersex.de/index.php/Funk2Duo