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.

Kommentare  

#11 Oly 2017-03-10 10:51
Hallo zusammen,

habe den Scatch für das empfangen von Daten auf einen Attiny über AduinoasISP gespielt. Die Übertragung klappte einwandfrei, nur der Attiny empfängt nichts. Das senden ist kein Problem und funktioniert einwandfrei.
Kann mir jemand Tips geben was ich kontrollieren kann? Habe auch schon in vielen Foren gelesen das die RCSWITCH Liberaly das nicht unterstützt, ist das richtig? Wenn ja, kann mir jemand sagen was ich anstelle nutzen kann um ein ganz simples Signal zu empfangen und zu senden über 433 MHZ?

Gruß
#12 Bernhard 2017-03-19 12:02
Hallo Zusammen,

Einige von euch hatten ja auch das Problem, das der ATTiny mit dem FS1000A nicht sendet.
Ich konnte das Problem beheben, indem ich ich statt der hier angegebenen URL fuer den Boardmanager diese verwendet habe:
http://drazzy.com/package_drazzy.com_index.json

Bietet nebenbei noch einige mehr Einstellungen, aber damit laeuft nun der FS1000A sauber.

VG,
Bernhard