Hinweis: Das hier beschriebene Verfahren musste auf Basis der Arduino IDE 1.0.5 angewandt werden.
Mit der 1.6.1er Version kann man das Beispiel ohne Modifikation (Abgesehen vom PIN) kompillieren. Weiter getestet habe ich es aber nicht. Sollte das jemand tun, würde ich mich über ein Nachricht freuen.
Achtung: Es wurde auf Basis eines Arduino UNOs als ISP gemacht. Mit einem Leonardo klappt es nicht, andere habe ich nicht getestet!

 

Benötigte Bauteile:
# Bezeichnung ~Preis
1 ATMEL ATtiny85 (Alternativ ATtiny 45) 1,00 €
1 Elektrolytkondensator 10uF 0,04 €
1 IC-Sockel 28 Polig (Optional) 0,10 €
1 433 MHz Transmitter 2 €
    ~ 1,20 €

 

Benötigte Werkzeuge:
# Bezeichnung
1 Breadboard und Steckverbinder oder Lötkolben und Lochrasterplatine
1 Arduino UNO
1 Netzteil 5V - 12V DC

 

  1. Als erstes benötigt ihr die RC-Switch Library. Ihr bekommt sie hier. Kopiert die Dateien in den Arduino\libraries Ordner.
  2. Kopiert die ATtiny Files wie in diesem Tutorial beschrieben.
  3. Als nächstes öffnet die "SendDemo" der RC-Switch Library (unter Datei-> Beispiele -> RCSwitch).
  4. Da der Attiny die Serial Library nicht unterstützt, müsst ihr diese Passage aus dem Beispiel entfernen.
    Serial.begin(9600);
  5. Definiert den Sende Pin z.B. als Pin 3
     mySwitch.enableTransmit(3);

Der komplette Beispielcode sieht so aus:

/*
  Example for different sending methods
  
  http://code.google.com/p/rc-switch/
  
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  
  // Transmitter is connected to Arduino Pin #10  <-- Stimmt nicht mehr fuer ATtiny
  mySwitch.enableTransmit(3);

  // Optional set pulse length.
  // mySwitch.setPulseLength(320);
  
  // Optional set protocol (default is 1, will work for most outlets)
  // mySwitch.setProtocol(2);
  
  // Optional set number of transmission repetitions.
  // mySwitch.setRepeatTransmit(15);
  
}

void loop() {

  /* See Example: TypeA_WithDIPSwitches */
  mySwitch.switchOn("10101", "10000");
  delay(1000);
  mySwitch.switchOn("10101", "10000");
  delay(1000);

  delay(5000);
}

6. Wählt im Tools Menü das richtige Board. In meinem Fall Ein ATTiny85 ohne externen Quarz

7. Uploadet das Programm mit Hilfe des Arduino ISPs (wie im o.g. Tutorial beschrieben) auf den ATtiny.
Solltet ihr die folgende Fehlermeldung bekommen, müsst ihr winavr aktualisieren.

c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o:(.init9+0x0): relocation truncated to fit: R_AVR_13_PCREL against symbol `main' defined in .text.main section in core.a(main.cpp.o)
c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o:(.init9+0x2): relocation truncated to fit: R_AVR_13_PCREL against symbol `exit' defined in .fini9 section in c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_exit.o)
RCSwitch\RCSwitch.cpp.o: In function `RCSwitch::receiveProtocol1(unsigned int)':
c:\arduino-1.0.5\libraries\RCSwitch/RCSwitch.cpp:645: relocation truncated to fit: R_AVR_13_PCREL against symbol `__udivmodhi4' defined in .text.libgcc section in c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_udivmodhi4.o)
c:\arduino-1.0.5\libraries\RCSwitch/RCSwitch.cpp:646: relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsi3' defined in .text.libgcc section in c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_mulsi3.o)
c:\arduino-1.0.5\libraries\RCSwitch/RCSwitch.cpp:646: relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text.fplib section in c:/arduino-1.0.5/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25\libm.a(mulsf3.o)
core.a(main.cpp.o): In function `main':
c:\arduino-1.0.5\hardware\arduino\cores\arduino/main.cpp:11: relocation truncated to fit: R_AVR_13_PCREL against symbol `setup' defined in .text.setup section in SendDemo.cpp.o
c:\arduino-1.0.5\hardware\arduino\cores\arduino/main.cpp:14: relocation truncated to fit: R_AVR_13_PCREL against symbol `loop' defined in .text.loop section in SendDemo.cpp.o
c:\arduino-1.0.5\hardware\arduino\cores\arduino/main.cpp:15: relocation truncated to fit: R_AVR_13_PCREL against undefined symbol `serialEventRun()'

Dazu besorgt euch hier die neuste Version von winavr und installiert sie z.B. in C:\WinAVR-20100110

Als nächstes kopiert alle Ordner aus C:\WinAVR-20100110\avr nach C:\arduino-1.0.5\hardware\tools\avr\avr und ersetzt die dortigen.

 

8. Nun müsst ihr nur noch den ATtiny an den Transmitter und die Energieversorgung anschließen:

 

Wenn alles geklappt hat, müsste der ATTiny nun mit dem Sende-Modul eine Funksteckdose anschalten.