Click here to load reader

Busverkehr mit Linux · 2012. 3. 16. · Uwe Berger; CLT2012 2 Busverkehr unter Linux Uwe Berger Beruf: Softwareentwickler (PPS-Systeme) Linux seit ca. 1995 Freizeit: Hard- und Softwarespielereien

  • View
    1

  • Download
    0

Embed Size (px)

Text of Busverkehr mit Linux · 2012. 3. 16. · Uwe Berger; CLT2012 2 Busverkehr unter Linux Uwe Berger...

  • Busverkehr mit Linux

    Uwe Berger, 2012

    Bild: mick/Lumix

  • Uwe Berger; CLT2012 2

    Busverkehr unter Linux

    Uwe Berger● Beruf: Softwareentwickler (PPS-Systeme)● Linux seit ca. 1995● Freizeit: Hard- und Softwarespielereien● Brandenburger Linux User Group e.V. (BraLUG)● Brandenburger Linux Infotag (BLIT)

    → 9.BLIT am 03.11.2012 in Potsdam

  • Uwe Berger; CLT2012 3

    Busverkehr unter Linux

    ...schon gewusst?● Grüner Tee sollte:

    ● mit 70°C heißem Wasser aufgegossen werden...● ...und idealerweise 90 Sekunden ziehen!

    Bildquellen: http://www.tee-nf.de; http://www.depot-online.com

  • Uwe Berger; CLT2012 4

    Busverkehr unter Linux

    Inhalt● Messen, Steuern, Regeln● Datenbus allgemein● 1-Wire-Bus● I2C-Bus● 1-Wire vs. I2C● Informationsquellen

  • Uwe Berger; CLT2012 5

    Busverkehr unter Linux

    Messen, Steuern, Regeln

  • Uwe Berger; CLT2012 6

    Busverkehr unter Linux

    Messen, Steuern, Regeln

    RegelstreckeRegelstrecke

    ReglerRegler

    StelleinrichtungStelleinrichtung MesseinrichtungMesseinrichtung

    Störgrößen

    Sollgröße

    Istgröße

    RegelgrößeStellgröße

    Steuergröße

  • Uwe Berger; CLT2012 7

    Busverkehr unter Linux

    ...Teekochen...

    Bildquellen: http://elektrohandel-roll.de; http://www.naturwarenhaus.de; http:\\www.shopwahl.de; http://notebooksohnebetriebssystem.com

    Wassertemperatur

    elektr. Spannung

    elektr. Leistung

    gemessene Temperatur

    Kochrezept: 70°C

    Umgebungstemperatur etc.

  • Uwe Berger; CLT2012 8

    Busverkehr unter Linux

    ...und worüber unterhalten wir uns?

    Bildquellen: http://elektrohandel-roll.de; http://www.naturwarenhaus.de; http:\\www.shopwahl.de; http://notebooksohnebetriebssystem.com

    Wassertemperatur

    elektr. Spannung

    elektr. Leistung

    gemessene Temperatur

    Kochrezept: 70°C

    Umgebungstemperatur etc.

  • Uwe Berger; CLT2012 9

    Busverkehr unter Linux

    Datenbus

  • Uwe Berger; CLT2012 10

    Busverkehr unter Linux

    Datenbus (allgemein)● „Bus“ ist eine Abkürzung(!): Binary Unit System● System zur Datenübertragung zwischen mehreren Teil-

    nehmern über einen gemeinsamen Übertragungsweg● Datenübertragung findet immer zwischen dem Master

    und einem Slave direkt statt

    Master Slave Slave Slave Slave

  • Uwe Berger; CLT2012 11

    Busverkehr unter Linux

    Datenbus (Begriffe)● paralleler oder serieller Bus● uni- oder bidirektionale Datenrichtung● Simplex, Halbduplex, Vollduplex● synchrone oder asynchrone Datenübertragung● Singlemaster- und/oder Multimaster-Modus● Übertragungsprotokoll:

    ● zeitliche Definition der Datenübertragung● Hierarchie/Adressierung der Busteilnehmer● Datenformate, Datenfolge, Checksummen● etc.

  • Uwe Berger; CLT2012 12

    Busverkehr unter Linux

    1-Wire-Bus

  • Uwe Berger; CLT2012 13

    Busverkehr unter Linux

    1-Wire● Firma Maxim (früher Dallas Semiconductor Corp.)● Maxim hat diverse US-Patente auf 1-Wire-Technologie

    ● es ist z.B. nicht erwünscht 1-Wire-Slaves „in Software zu bauen“ [1]

    ● 1-Wire-Master-Implementierungen sind kein Problem (→ Internet)

    ● deshalb kommen die wesentlichen Hardwarekomponen-ten von Maxim...

    [1] upps, nicht jeder hält sich daran...: https://github.com/smurfix/owslave

  • Uwe Berger; CLT2012 14

    Busverkehr unter Linux

    1-Wire (Merkmale)● 1-Wire-, One-Wire-, Eindraht-Bus:

    ● eine Datenleitung● zusätzlich eine Masseleitung● optional eine Stromversorgungsleitung

    ● serieller, asynchroner und bidirektionaler Datenbus● Halbduplex-Betrieb● Singlemaster● eineindeutige Slaveadressen (64Bit; davon 8Bit Check-

    summe)● Datenübertragung erfolgt in 64-Bit-Blöcken

  • Uwe Berger; CLT2012 15

    Busverkehr unter Linux

    1-Wire (Stromversorgung)● Stromversorgung der Slaves erfolgt parasitär über einen

    internen Speicherkondensator● bei inaktiver Kommunikation wird Kondensator aufgeladen● bei aktiver Kommunikation versorgt Kondensator IC mit

    Strom● reicht dies nicht → zusätzliche Stromversorgungsleitung

    möglich

  • Uwe Berger; CLT2012 16

    Busverkehr unter Linux

    1-Wire (intern)

    1-Wire-Master

    1-Wire-Slave

    Vcc I/OGND

    1-Wire-Slave

    1-Wire-SlaveBlockschalt-

    bild

    Datenüber-tragung (Beispiel)

    Bildquelle: http://de.wikipedia.org/wiki/1-Wire

  • Uwe Berger; CLT2012 17

    Busverkehr unter Linux

    1-Wire (Slaves)● nur ICs der Firma Maxim:

    ● Speicher● Temperatursensoren und -schalter● ADC● RTC● Batterieüberwachung● Seriennummern-ROMs● elektronische Schalter

    ● verfügbare 1-Wire-Baugruppen basieren auf Maxim-ICs

  • Uwe Berger; CLT2012 18

    Busverkehr unter Linux

    1-Wire (Master → Linux-PC)● Überblick z.B.:

    http://owfs.org/index.php?page=bus-masters● diverse Adapter für:

    ● serielle Schnittstelle● USB● Ethernet● I2C

    ● für Bastler interessant...:http://owfs.org/index.php?page=com-ds9097-passive

  • Uwe Berger; CLT2012 19

    Busverkehr unter Linux

    1-Wire (mit Linux)● Digitemp (http://www.digitemp.com/)

    ● kommt ohne Kernelmodule o.ä. aus● unterstützt nur wenige 1-Wire-ICs● Versionen für Linux und Windows

    ● Owfs (http://owfs.org/)● basiert auf FUSE (Filesystem in Userspace)● mehrere „Geschmacksrichtungen“: owfs, owhttpd,

    owserver, owftp● es werden sehr viele 1-Wire-ICs unterstützt● Fake-Mode

  • Uwe Berger; CLT2012 20

    Busverkehr unter Linux

    1-Wire → Demo

    Bildquellen: http://shop.wiregate.de; http://www.we-shop.eu

  • Uwe Berger; CLT2012 21

    Busverkehr unter Linux

    I2C-Bus

  • Uwe Berger; CLT2012 22

    Busverkehr unter Linux

    I2C● Standard der Firma Philips Semiconducters (heute NXP)● ursprünglich für die interne Datenübertragung zwischen

    Gerätebaugruppen konzipiert● mittlerweile weit verbreiteter Industriestandard für Steue-

    rungs- und Überwachungslösungen● einige Bussysteme anderer Hersteller setzen auf den

    I2C-Standard auf (z.B. Intel SMBus)● Logo ist markenrechtlich geschützt, deshalb

    auch Bezeichnung TWI (Two-Wire-Interface)zu finden

    ©NXP

  • Uwe Berger; CLT2012 23

    Busverkehr unter Linux

    I2C (Merkmale)● I2C (Inter Intergrated Circuit); TWI (Two-Wire-Interface);

    „Zweidraht-Bus“:● eine Datenleitung (SDA)● eine Taktleitung (SCL)● eine Masse- und eine Stromversorgungsleitung

    ● serieller, synchroner und bidirektionaler Datenbus● Halbduplex-Betrieb● Multimaster möglich● Slaveadressen 7 Bit lang und vom Hersteller festgelegt● Datenübertragung byteweise

  • Uwe Berger; CLT2012 24

    Busverkehr unter Linux

    I2C (intern)

    I2C-Master

    I2C-Slave

    I2C-Slave

    I2C-Slave

    Vcc

    SDAGND

    SCL

    SDA

    SCL

    Blockschalt-bild

    Datenüber-tragung (allgm.)

    SCL

    SDA

    Start 7 B

    it

    Adres

    sR/W AC

    KNA

    CK8 Bit

    Daten Sto

    p

    Datenüber-tragung (Bsp. Write)

  • Uwe Berger; CLT2012 25

    Busverkehr unter Linux

    I2C (Slaves)● eine nahezu unerschöpfliche Auswahl von den ver-

    schiedensten Hersteller:● Sensoren, ADC/DAC● Speicher● (elektronische) Schalter, Portexpander● Treiber (z.B. für Anzeigen)● RTC● …

    ● komplexe Spezialkomponenten und Baugruppen (z.B. für Audio- und Videogeräte)

    ● diverse Selbstbauprojekte

  • Uwe Berger; CLT2012 26

    Busverkehr unter Linux

    I2C (Master → Linux-PC)● Grundlage Kernel-Modul i2cdev● diverse kommerzielle Lösungen (z.B. als USB-Dongle)● diverse Selbstbauprojekte z.B.:

    ● für Parallel-Port (Kernel-Modul i2cparport)● für USB-Port: i2c-tiny-usb

    (http://www.harbaum.org/till/i2c_tiny_usb/index.shtml; Kernel-Modul i2ctinyusb)

    ● ...und nicht zu vergessen: viele Mainboards haben be-reits einen Busmaster/I2C-Bus „onboard“...

  • Uwe Berger; CLT2012 27

    Busverkehr unter Linux

    I2C (mit Linux)● I2C-Tools (http://www.lm-sensors.org/wiki/I2CTools)

    ● i2cdetect l● i2cdetect ● i2cset    ● i2cget   

    ● lm-sensor (http://www.lm-sensors.org)● sensorsdetect● sensors● darauf aufsetzend z.B.:

    ● xsensor● GrellM● sensors-applet

  • Uwe Berger; CLT2012 28

    Busverkehr unter Linux

    I2C in C

    #include  /* open, read, write, close */#include  /* I2CFunktionen (ioctl) */#include  /* ioctl */...

    int  file;unsigned char buffer[2];...

    file = open("/dev/i2c2", O_RDWR); /* Device oeffnen */ioctl(file, I2C_SLAVE, 0x49); /* SlaveAdresse setzen

    */buffer[0] = 0x00; /* Sendepuffer fuellen */write(file, buffer, 1); /* 1 Byte senden */read(file, buffer, 2); /* 2 Byte lesen */close(file); /* Device schliessen */...

  • Uwe Berger; CLT2012 29

    Busverkehr unter Linux

    I2C in Tcl...● Tcl-Erweiterung tcl_i2c

    http://bralug.de/wiki/BLIT2008-Board_mit_i2c-tiny-usb-Firmware#I.C2.B2C_in_Tcl

    set device  /dev/i2c2set adr_saa1064 0x38set adr_lm75 0x49...

    set temp [i2c read $device $adr_lm75 0x00 w]puts $temp...

    i2c write $device $adr_saa1064 [list 0x00 0x77 0xFF 0xFF 0xFF 0xFF]...

  • Uwe Berger; CLT2012 30

    Busverkehr unter Linux

    I2C → Demo

    (siehe auch: http://bralug.de/wiki/BLIT2008-Board_mit_i2c-tiny-usb-Firmware)

  • Uwe Berger; CLT2012 31

    Busverkehr unter Linux

    I2C → Vergleich und Anwendung

  • Uwe Berger; CLT2012 32

    Busverkehr unter Linux

    1-Wire vs. I2CKriterium 1-Wire I2C

    Leitungslängen bis ca. 300m nur wenige MeterLeitungsanzahl 2 (plus eventuell eine Strom-

    versorgungsleitung)4

    Übertragungsge-schwindigkeit

    Standard: bis 16,3k bpsOverdrive: bis 142k bps

    Standard: bis 100k bpsFast: bis 400k bpsHigh-Speed: bis 3,4M bps

    max. Anzahl Sla-ves

    theoretisch 256 bei 7-Bit-Adressen: 127

    verfügbare unter-schiedl.Slaves

    gering (Maxim ist praktisch Monopolist)

    sehr hoch (viele Hersteller, vie-le Anwendungsgebiete)

    Empfehlung Weitläufige Bussysteme mit vielen Slaves und wo die Übertragungsgeschwindigkeit keine große Rolle spielt.

    Bussysteme zwischen Bau-gruppen eines Gerätes und dort wo ausgefallene Slave-funktionalität benötigt wird.

  • Uwe Berger; CLT2012 33

    Busverkehr unter Linux

    Projekt „Temperaturaufzeichnung“● Langzeitaufzeichnung von Innen- und Außentemperatur● Hardware:

    ● 1-Wire → DS9490R, 2xDS18S20● Mini-PC auf ARM-Basis (zweckentfremdete NAS Seagate

    Dockstar)● Software:

    ● Debian-Linux● owfs● SQLite● gnuplot● ein Tcl-Script

  • Uwe Berger; CLT2012 34

    Busverkehr unter Linux

    Projekt „Nixie-Uhr“● eine Uhr mit Synchronisation via DCF77-Zeitnormal und

    Temperaturanzeige● Hardware:

    ● Atmel MCU plus diverser weiterer ICs● I2C-Modul DCF77-Empfänger (Eigenentwicklung)● I2C-IC LM75 (Temperatursensor)

    ● Software:● kein Linux... ;-)

  • Uwe Berger; CLT2012 35

    Busverkehr unter Linux

    Informationsquellen● http://www.maxim-ic.com/an_prodline2.cfm/prodline/21● http://owfs.org● http://www.digitemp.com/● http://www.i2c-bus.org● http://www.harbaum.org/till/i2c_tiny_usb/index.shtml● http://bralug.de/wiki/BLIT2008Board● http://www.lm-sensors.org/wiki/I2CTools● http://www.mikrocontroller.net

  • Uwe Berger; CLT2012 36

    Busverkehr unter Linux

    …Kaffee bitte nur mit ca. 92°C heißem Wasser aufgießen...

    Danke für die Aufmerksamkeit!

    Bildquelle: http://www.wolfredo.de

    Folie 1Folie 2Folie 3Folie 4Folie 5Folie 6Folie 7Folie 8Folie 9Folie 10Folie 11Folie 12Folie 13Folie 14Folie 15Folie 16Folie 17Folie 18Folie 19Folie 20Folie 21Folie 22Folie 23Folie 24Folie 25Folie 26Folie 27Folie 28Folie 29Folie 30Folie 31Folie 32Folie 33Folie 34Folie 35Folie 36