freebus-rf interface board

  • eagle schematics und layout sind im SVN unter hardware/controller/atmega168p_4te_rf
  • firmware fur ein Gateway im SVN unter software/avr/app-8-in und app-8-out
    Zusätzlich zur Gateway Funktion läuft noch app-8-in oder app-8-out darauf!.
  • Das Draht-zu-Funk Interface ist eine Erweiterung des AVR 4TE controllerboards.
  • Einen "RF only" Controller kann man durch weglassen der EIB Scnittstelle daraus machen.
    dann hat man auch genug pins für 8 I/O lines und zusätzlich I2C

Hier mal ein Foto eines freebus-rf interface boards.

Und hier das Schaltbild.

Eagle Dateien sind im SVN.

Das freebus-rf interface board basiert auf dem AVR 4TE controllerboard. Letzteres wurde um ein fertig erhältliches Funkmodul erweitert. Das Funkmodul ist das RFM23B (in der 868MHz Version) von hoperf.com. Das ist eine Variante des RFM22B, mit auf 13 dBm begrenzter Sendeleistung, das entspricht 20 mW (milliwatt) . 25 mW ist der gesetzlich zulässige Maximalwert. Das RFM22B kann mit 20 dBm (100 mW) senden, was nicht erlaubt ist. Also liegt man mit dem RFM23B auf der sicheren Seite. Im Folgenden bezeichne ich das RFM22B kurz mit RFM (Radio Frequency Module).

Systemtakt

Das RFM ist mit dem AVR über die SPI Schnittstelle verbunden. Ferner liefert es den Takt für den AVR. Der AVR hat also, wenn das RFM bestückt ist, keinen eigenen Quarz. Das RFM hat einen 30MHz Quarzoszillator. Über einen einstellbaren internen Teiler liefert das RFM einen 10MHz Takt für den AVR, der dort über den XTAL1 pin eingespeist wird. Die AVR fuses werden auf "externer Takt" eingestellt. In dieser Betriebsart steht der XTAL2 pin als Port pin zur Verfügung. Er ist mit dem Eingang SDN (shutdown) des RFM verbunden. Der AVR kann damit den RFM quasi abschalten. Dies feature wird nicht benutzt, weil damit auch der Takt für den AVR abgeschaltet würde.

ohne Funk geht auch

Man kann auf derselben Platine auch einen ganz normalen freebus controller aufbauen. Dann lässt man das RFM und R1 weg und bestückt den Quarz (Q2, C10, C11). In diesem Fall wird der AVR mit 8MHz getaktet. Die verschiedenen Taktfrequenzen (mit RFM / ohne RFM) sind in der firmware berücksichtigt.

nur Funk

Schliesslich kann man auch eine rf-only Version bestücken. Dazu lässt man die Teile für die EIB Schnittstelle weg. Und man muss sich überlegen, wie man die Stromversorgung macht. Man kann z.B. den Spannungswandler drin lassen, D2 bestücken, L2 durch einen 12 Ohm Widerstand ersetzen, und EIB+/EIB- an eine Gleichspannung von 12...32 Volt anschliessen. Man kann auch direkt mit 3,3Volt an VCC gehen. Batteriebetrieb ist mit diesem board allerdings nicht richtig möglich, weil noch nicht klar ist, wie man den AVR nach einem shutdown des RFM wieder startet. Ausserdem geht Batteriebetrieb sowieso nur für Busteilnehmer, die nur senden können.

der Controller

Der AVR ist ein ATMEGA 328p. Für normale Applikationen würde auch der ATMEGA 168p reichen. Ein Betrieb mit bootloader ist jedoch nur mit dem ATMEGA 328p möglich. Die *.hex files im downloadbereich sind generell für den ATMEGA 328p compiliert. Es ist nicht sicher, ob sie auch auf dem ATMEGA 168p funktionieren. Wer also den ATMEGA 168p verwenden will, muss selbst compilieren.

Stückliste

Die 3 rechten Spalten geben die Bestückungsvarianten an.
TP-RF Interface, Draht- und Funk
TP freebus ohne Funk
RF nur Funk
X Bauteil(e) bestücken
*?* bei Bedarf ("nur Funk" mit Spannungswandler, in diesem Fall kann L2 durch einen 12 Ohm Widerstand ersetzt werden)

Kennung Bezeichnung Wert Reichelt Best. Nr. TP-RF TP RF
C1, C2, C3 SMD Kondensator 1206 100n X7R-G1206 100n X X X
C4, C6 Keramikkondenstaor RM5 100n X7R-5 100n X X
C5 Keramikkondenstaor RM5 100n X7R-5 100n X X X
C7 Elko radial 100µ/16V RAD 100/16 X X X
C8 Elko radial 100µ/63V RAD 100/63 X X ?
C9 Keramikkondensator RM2,5 470p NPO-2,5 470P X X ?
C10, C11 Keramikkondensator RM2,5 33p KERKO 33P X
C12 Keramikkondensator 47p KERKO 47P X X
D1 Si-Diode 1N4148 1N 4148 X X
D2 Si-Diode 1N4148 1N 4148 X X ?
D3 Zenerdiode 0,5W BZX79C8V2 ZF 8,2 X X
D4 Schottky Diode BAT46 BAT 46 X X
D6 Schottky Diode BAT46 BAT 46 X X ?
D7 Überspannungsschutz-Diode SMAJ40A X X ?
IC1 Microcontroller ATMEGA328P-20P X X X
IC2 Funkmodul RFM23B-868-S1 X X
IC3 Spannungswandler MC34063AP MC 34063 A X X ?
JP1 Stiftleiste RM2,5 gerade 1X10 SL 1X40G 2,54 X X X
JP3 Stiftleiste RM2,5 gerade 2X3 SL 2X40G 2,54 X X X
L1 Festinduktivität 220µH SMCC 220µ X X ?
L2 Festinduktivität 150mH L-11P 150M X X ?
LED1 LED 3mm rot LED 3MM 2MA RT X X X
Q1 Transistor PNP BC557B BC 557B X X
Q2 Quarz HV49U 8 MHz 8,000-HC49U-S X
Q3 Transistor PNP BC640 BC 640 X X
Q4 FET BS170 BS 170 X X
R1 Widerstand 1/4W 10k 1/4W 10K X X
R2, R3 Widerstand 1/4W 10k 1/4W 10K X X X
R4, R7 Widerstand 1/4W 10k 1/4W 10K X X
R5 Widerstand 1/4W 120k 1/4W 120K X X
R6, R16 Widerstand 1/4W 100k 1/4W 100K X X
R8 Widerstand 1/4W 2R2 1/4W 2,2 X X ?
R9 Widerstand 1/4W 1% 3K6 METALL 3,60K X X ?
R10 Widerstand 1/4W 12K 1/4W 12K X X
R11 Widerstand 1/4W 5K6 1/4W 5,6K X X
R12 Widerstand 1/4W 100R 1/4W 100 X X
R13 Widerstand 1/4W 12R 1/4W 12 X X
R14 Widerstand 1/4W 1% 2K2 METALL 2,20K X X ?
R15 Widerstand 1/4W 1K 1/4W 1K X X X
R17 Widerstand 1/4W 220K 1/4W 220K X X
S1 Kurzhubtaster 6x6x4,3 TASTER 3301 X X X
SV1 Wannenstecker ML20 WSL 20G X X X
X2 SMB Print Einbaubuchse SMB EB2-L174 X X

D7, IC1, IC2 gibt es nicht bei Reichelt.

D7 gibt's bei Krieger Elektro (oldcoolman)
IC1 z.B. bei shop.myavr.de
IC2 z.B. bei www.octamex.de

Wahlweise können 1N4148 durch BAT46 ersetzt werden (dann hat man nur 1 Sorte Dioden).

Applikationen

Auf jeder der 3 Varianten kann eine Applikation laufen. Normalerweise funktioniert derselbe Quelltext mit allen 3 Varianten, es muss jeweils nur die richtige lib eingebunden werden. Ja, sogar auf dem interface, also der Schnittstelle zwischen Draht und Funk (man kann auch "gateway" oder "access point" dazu sagen), kann zusätzlich z.B. noch ein out8 oder in8 laufen.

Antennenanschluss

über SMB Buchse. Die Buchse ist vollständig im 4TE Gehäuse, zugänlich über ein zu bohrendes Loch in der mittleren "Stufe" des Gehäuses.
Der SMB Stecker verdeckt evtl. 1 oder 2 Schraubklemmen-Löcher, beim Anschliessen der Schraubklemmen muss er gezogen werden.

 U = SMB Buchse
 ! = SMB Stecker
 o = Schraubklemmenloch wie üblich

__
  |
  o
  | !
  -- -
    U |
      |
      ---------
               |
               |
               |
               |

Antenne

Als Antenne kommt z.B. Aurel GP868 in Frage (Conrad 190123), ca. 30€, man kann sich sowas aus ein paar Drähten auch selbst bauen.
Oder man baut sich einen Koaxdipol aus einem Stück RG213 Kabel (s.u.). Für das Interface sollte man schon eine solche gute Antenne verwenden, für die übrigen RF Geräte reicht dann ein ca 8cm langer Draht. Als endgültige Lösung stelle ich mir eine gedruckte Antenne vor. Aber selbst Hager z.B. verwendet ein Stück Draht.

Meine Antenne


Sie ist einfach zu bauen. Man nehme ein 162mm langes Stück RG213 Kabel. Entferne an beiden Enden 25mm von der äußeren Isolierung. Die Abschirmung muss entflochten und auseinandergefaltet werden, damit man auch den Innenleiter abisolieren kann. Der Innenleiter muss 24mm abisoliert werden. Nun wird beidseitig der Schirm mit dem Innenleiter verlötet. Schirmgeflecht entsprechend kürzen.
In der Mitte entfernt man ca 10mm von der Isolierung, und trennt die Abschirmung auf, so dass eine Lücke von ca. 5mm entsteht. Auf einer Seite wird jetzt die Abschirmung der Zuleitung angelötet, auf der anderen Seite der Innenleiter. Als Zuleitung nimmt man am besten RG174-U, weil das zu den SMA / SMB Steckern passt.

Belegung der ATMEGA328P (evtl ATMEGA168P (A)) pins

PIN               FUNKTION
---               --------
PB0/ICP1/CLKO     ICP1   EIB_IN  (input capture)
PB1/OC1A          OC1A   CTRL    (PWM direkt mit timer1 machbar?)
PB2/OC1B/SS       SS     RFM22.NSEL
PB3/OC2A/MOSI     MOSI   RFM22.SDI
PB4/MISO          MISO   RFM22.SDO
PB5/SCK           SCK    RFM22.SCK
PB6/XTAL1         XTAL1  clock in von RFM22, Quarz wenn ohne RFM22
PB7/XTAL2         XTAL2  RFM22.SDN bzw. Quarz wenn ohne RFM22

PC0/ADC0                 IO1
PC1/ADC1                 IO2
PC2/ADC2                 IO3
PC3/ADC3                 IO4
PC4/ADC4/SDA             IO5/SDA   entweder 8 I/O lines oder 6 I/O + I2C
PC5/ADC5/SCL             IO6/SCL

PD0/RXD           RXD    RXD/RES3
PD1/TXD           TXD    TXD/RES4
PD2/INT0          INT0   frei
PD3/INT1          INT1   RFM22.NIRQ
PD4/XCK/T0        PD4    PROG
PD5/T1/OC0B       OC0B   EIB_OUT
PD6/AIN0/OC0A     PD6    IO7
PD7/AIN1          PD7    IO8

Einschränkung gegenüber 4TE AVR controller

  • SDA/SCL nicht mehr gesondert verfügbar
  • RES1/RES2 (reserve I/O) gibts nicht mehr.

Benutzung der AVR Hardware-Resourcen

  • Timer0
    timing für freebus (Draht)
    Output Compare register und pins für EIB_OUT
  • Timer1
    Timer und PWM für die App.
    Evtl zusätzlich Input Capture von EIB_IN.
    (flanke an EIB_IN speichert wert des timer1. Daraus kann man den genauen Zeitpunkt der Flanke rekonstruieren, trotz interrupt latency)
  • Timer2
    timing für RF.
  • INT0
    frei
  • INT1
    Interrupts vom RFM22
  • SPI Schnittstelle (MOSI, MISO, SCK, SS)
    bedient den RFM22

atmega168p_4te_rf.jpg (131.9 kB) tuxbow, 05/18/2011 09:11 am

atmega168p_4te_rf_sch2.png (77.2 kB) tuxbow, 05/18/2011 10:04 am

atmega168p_4te_rf_sch.png (31.7 kB) tuxbow, 05/18/2011 10:35 am

koaxdipol_r.jpg (95.5 kB) tuxbow, 05/18/2011 06:20 pm