Editing Archiv:SI2C

From Chaosdorf Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 15: Line 15:
== Hardware ==
== Hardware ==


Ein SI2C-Bus hat vier Leitungen: GND, VCC, SDA und SCL. SDA und SCL müssen sowohl 3.3V als auch 5V als High-Pegel akzeptieren und high impedance sein, sinnvollerweise werden dazu Optokoppler verwendet (spart auch direkt jegliche Probleme mit ungleichen GND-Pegeln).
Ein SI2C-Bus hat vier Leitungen: GND, VCC, SDA und SCL. SDA und SCL müssen sowohl 3.3V als auch 5V als High-Pegel akzeptieren und high impedance sein, slaveseitiges Schreiben auf den Bus ist nicht vorgesehen (und führt im Zweifelsfall zu Abstürzen irgendwelcher AVRs).


Für einen Client gibt es zwei Varianten, am Bus zu hängen:
VCC wird i.A. durch ein Kabel mit sehr geringem Querschnitt übertragen, d.h. für Geräte mit höherem Stromverbrauch wie Lampen empfiehlt sich dringend ein eigenes Netzteil. In diesem Fall sollte VCC nicht verwendet werden und SDA/SCL per Optokoppler auf GND schalten.


* Ohne eigenes Netzteil: VCC und GND kommen aus dem Bus. Es sollte damit gerechnet werden, dass VCC auf ~11V runtergehen kann, und am besten werden keine signifkanten Lasten betrieben. 7-Segment-Anzeigen und Relais sind aber kein Problem
Beispiel: [https://github.com/derf/dorfmap/blob/master/avrshift/avrshift.png avrshift Schaltplan].
* Mit eigenem Netzteil: GND aus dem Bus geht nur zum Eingang der Optokoppler, die restliche Schaltung bekommt VCC und GND aus ihrem Netzteil. Der Bus-VCC wird nicht verwendet
 
Beispiel für die Variante mit eigenem Netzteil: [https://github.com/chaosdorf/dorfmap/blob/master/client/avrshift/avrshift.png avrshift Schaltplan]. Bei Aufbau ohne Netzteil kommt VCC (SUPPLY-1) aus dem Bus
und es ist GND == GPIOGND.


=== Ratings ===
=== Ratings ===
Line 67: Line 63:


== Kabel ==
== Kabel ==
[[File:SI2C-Doku.png|thumb|right|400x200px|Kabelwege]]


{| class="wikitable"
{| class="wikitable"
! Bus !! Kabel
! Bus !! Kabel
|-
|-
| feedback1 || [[Schleuse]] an {{H|feedback}} --(( violettes RJ45 ))-- Kabelkanal oberhalb [[Printer/HP2100]] --(( Flachbandkabel entlang Kabelkanal ))-- [[Treppe]]
| feedback1 || [[Schleuse]] an {{H|feedback}} --(( violettes RJ45 ))-- Kabelkanal oberhalb [[Printer/CLC1160]] --(( Flachbandkabel entlang Kabelkanal ))-- [[Treppe]]
|-
| feedback1 || Repeater [[Nomspace]] --(( Flachbandkabel ))-- [[Maschinenraum]]
|-
|-
| donationprint1 || [[Schleuse]] an {{H|donationprint}} --(( Flachbandkabel ))-- [[Laptop Lounge]]
| donationprint1 || [[Schleuse]] an {{H|donationprint}} --(( Flachbandkabel ))-- [[Laptop Lounge]]
Line 108: Line 100:


{| class="wikitable"
{| class="wikitable"
! Bus !! ID !! Firmware !! rev !! Ort !! Funktion
! Bus !! ID !! Firmware rev !! Funktion
|-
| feedback1 || <tt>0002</tt> || avrshift || 0.04-42-g1a373d3 || Hackcenter Kabelkanal || 12V sink
|-
| feedback1 || <tt>0004</tt> || charwrite-legacy || 0.04-106-g544d694 || <s>Hackcenter</s> || <s>4x7segment (links)</s>
|-
| feedback1 || <tt>0005</tt> || charwrite-legacy || 0.04-106-g544d694 || <s>Hackcenter</s> || <s>4x7segment (rechts)</s>
|-
|-
| feedback1 || <tt>0006</tt> || avrmf || 0.05-28-g5f8445e || <s>Schaufenster</s> || <s>5V source (5 digital, 3 pwm) + Repeater</s>
| feedback1 || <tt>0002</tt> || 0.04-42-g1a373d3 || avrshift (serial in, parallel 12V out als current sink)
|-
|-
| feedback1 || <tt>0007</tt> || avrshift || 0.05-38-g7b9a4e3 || Lounge Kabelkanal || 12V sink
| feedback1 || <tt>0004</tt> || 0.04-106-g544d694 || 7segment Hackcenter (8 Ziffern, links)
|-
|-
| feedback1 || <tt>0008</tt> || blinkencontrol || 0.05-47-g7ce9480 SDASCL_MIXUP || Hackcenter Regal || RGB-LED-Streifen
| feedback1 || <tt>0005</tt> || 0.04-106-g544d694 || 7segment Hackcenter (8 Ziffern, rechts)
|-
|-
| feedback1 || <tt>0009</tt> || avrshift || 0.05-69-gcc36007 || Hackcenter Regal || 5V source -> 12V sink -> LED-Streifen im Regal
| feedback1 || <tt>0006</tt> || 0.05-28-g5f8445e || avrmf mit parallel 5V out (5 digital, 3 pwm)
|-
|-
| feedback1 || <tt>000a</tt> || avrmf || 0.06-44-g7757c9b || Nomspace || 12V out (6 digital, 3 pwm) + Repeater
| feedback1 || <tt>0007</tt> || 0.05-38-g7b9a4e3 || avrshift (serial in, parallel 12V out als current sink)
|-
|-
| feedback1 || <tt>000c</tt> || avrpwm || 0.07-2-g3fff051  || Treppe || 12V out (9 digital, 4 pwm)
| feedback1 || <tt>0008</tt> || 0.05-47-g7ce9480 SDASCL_MIXUP || blinkencontrol (RGB)
|-
|-
| feedback1 || <tt>000d</tt> || avrpwm || 0.08-2-g3a8deec || Maschinenraum || 12V out (9 digital, 4 pwm)
| feedback1 || <tt>0009</tt> || 0.05-69-gcc36007 || avrshift (serial in, parallel 12V out zu Regal-LEDs)
|-
|-
| feedback1 || <tt>000e</tt> || avrpwm || 1.0.2-4-ga5c3047 || Hackcenter || 12V out (9 digital, 4 pwm)
| feedback1 || <tt>000a</tt> || 0.06-44-g7757c9b || avrmf nomspace (12V out, 6 digital, 3 pwm)
|-
|-
| feedback1 || <tt>000f</tt> || avrmf || 1.0.2-12-gc323689 || Schaufenster || 12V out (7 digital, 4 pwm) + Repeater
| feedback1 || <tt>000c</tt> || 0.07-2-g3fff051  || avrpwm Treppe (12V out, 9 digital, 4 pwm)
|-
|-
| feedback1 || <tt>0010</tt> || charwrite || 1.0.2-17-g188905a || Maschinenraum || 6x7segment
| tbd || <tt>000d</tt> || 0.08 || avrpwm TODO (12V out, 9 digital, 4 pwm)
|-
|-
| feedback1 || <tt>0011</tt> || charwrite || 1.0.2-17-g188905a || Küche || 6x7segment
| donationprint1 || <tt>0000</tt> || 0.04-42-g1a373d3 || avrshift (serial in, parallel 12V out als current sink)
|-
|-
| feedback1 || <tt>0012</tt> || avrpwm || 1.0.2-37-gef59205 || Hackcenter Regal || 12V out (9 digital, 4 pwm)
| donationprint2 || <tt>0001</tt> || 0.04-110-gfa20b4e || blinkencontrol (RGB)
|-
|-
| feedback1 || <tt>0013</tt> || charwrite || 1.0.2-38-gabb5185 || Hackcenter || 6x7segment
| donationprint2 || <tt>0003</tt> || 0.04-50-gf6641aa || 7segment Lounge (4 Ziffern)
|-
|-
| donationprint1 || <tt>0000</tt> || avrshift || 0.04-42-g1a373d3 || Lounge || 12V out
| tbd || <tt>000b</tt> || 0.06-269-gb6eb78b || avrmf (5V out, 2 digital, 3 pwm)
|-
| donationprint2 || <tt>0001</tt> || blinkencontrol || 0.04-110-gfa20b4e || Lounge || RGB-LED-Streifen
|-
| donationprint2 || <tt>0003</tt> || charwrite-legacy || 0.04-50-gf6641aa || Lounge || 4x7segment
|-
|-
|}
|}
Aktuell gibt es die folgenden Arten von Geräten
=== Master ===
==== Raspberry Pi ====
Ein RasPi kann direkt über zwei GPIO-Pins (+ Ground) als Bus Master angeschlossen werden. Der Bus kann dann mittels [https://github.com/chaosdorf/dorfmap/tree/master/si2c-bitwrite si2c-bitwrite], [https://github.com/chaosdorf/dorfmap/tree/master/si2c-bytewrite si2c-bytewrite] oder [https://github.com/chaosdorf/dorfmap/tree/master/si2c-charwrite si2c-charwrite] (abhängig von der Art des Zielgeräts) bespielt werden.
Die Programme erwarten jeweils die Pin-Nummer des SDA-Pins als erstes und die des SCL-Pins als zweites, also z.B. "si2c-bitwrite 8 11" für gpio8 und gpio11. Die Nummern beziehen sich auf das sysfs (<tt>/sys/class/gpio</tt>), die Pins müssen dort schon als Outputs exportiert sein. si2c-charwrite nimmt zusätzlich die Zieladresse (hi und lo) als drittes und viertes Argument.
Die eigentlichen Daten (inklusive Adresse für bitwrite/bytewrite) werden auf STDIN entgegengenommen. Ein Bit/Byte/String (alles in ASCII) pro Zeile, bei "push" oder EOF wird übertragen. Eine Payload von FE ED CA FE an einen Byte-orientierten Client mit Adresse 000a an GPIO-Pins 8 und 11 wäre dann z.B. <tt>echo "254\n237\n202\n254\n0\n10\n" | si2c-bytewrite 8 11</tt>
=== Client ===
==== avrshift ATTiny2313A ====
Addressierbares Schieberegister. Nimmt Bits entgegen und ordnet sie den digitalen Ausgängen (i.A. 5V oder 12V) zu.
==== avrpwm ATTiny2313A ====
Addressierbares Schieberegister++. Ordnet einen Teil der Eingabe binär (bitweise) den digitalen Ausgängen zu und hat dann noch drei bis vier Bytes für Analog-Ausgänge (8bit-PWM.)
==== avrmf ATTiny2313A ====
avrshift/avrpwm mit Repeater. Hat allerdings zwei Ausgänge weniger, die stattdessen SDA und SCL galvanisch getrennt weiterreichen.
==== blinkencontrol ATTiny2313A ====
Wird direkt mit Animationssequenzen gefüttert, Details siehe [[Blinkencontrol]].
==== 7segment ATTiny2313A ====
Steuert vier 7-Segment-Displays. Empfängt 32 Byte an Daten und legt diese direkt auf die Segmente, Zeichen müssen also schon vorher auf Bytes umgerechnet werden. Es werden immer nacheinander Bytes 1-4, 5-8, 9-12, … angezeigt (d.h. die Position auf dem Display ist byteposition % 4).
==== avr-rs232 ATTiny2313A ====
Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.
==== avr-rs232 Arduino ====
Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.
Hat keine galvanische Trennung zum Bus, sollte also nur von einem Laptop ohne angeschlossenes Netzteil benutzt werden.
== Platinen ==
Der Großteil der im Dorf verbauten Platinen ist handgeklöppelt auf Lochraster, inzwischen gibt es aber auch fertige PCBs zum Bestücken.
=== avrmf ===
[[File:avrmf-smd-top.jpg|thumb|right|400x200px|avrmf (obere Seite)]]
[[File:avrmf-smd-bot.jpg|thumb|right|400x200px|avrmf (untere Seite)]]
Kann für avrshift/avrpwm/avrmf genutzt werden, bei Verwendung als Repeater werden die beiden ULN2803-Beinchen oben Links (bei den als avrmf SDA/SCL gelabelten Kontakten) abgeknipst und durch SI2C-Kabel ersetzt.
Serviervorschlag:
* 100nF 0805 auf C2
* 10k 0805 auf R3
* 1k 0805 auf R1, R2, R4, R5
* 0805 LEDs: grün auf PWR, gelb oder rot auf ACT (Pluspol zeigt zum Label, Minuspol zum ULN2803)
* ICs und Wannenstecker wie angegeben
** Die beiden KB817 können auch durch einen KB827, TLV827 o.ä. ersetzt werden
* 330nF oder 1µF auf C1
Please note that all contributions to Chaosdorf Wiki are considered to be released under the Attribution 3.0 Unported (see Chaosdorf Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)