Um Drahtlos Daten von einem Arduino zum anderen zu senden, bieten sich die kleinen RF 433mhz Chips an. Diese sind günstig, funktionieren gut und lassen sich leicht mit Ardublock Programmieren. Sie eignen sich für kleine Datenverbindungen mit einem Abstand von wenigen Metern. Die beiden Module können mit kleinen Antennen ausgestattet werden, wodurch die Reichweite erhöht wird. Da es einen Sender und einen Empfänger gibt, ist klar dass das Senden nur ein "Richtung" Funktioniert, ähnlich wie bei einer IR Fernbedienung.
Anschluss der RF Platini an den Arduino
Sender und Empfänger bekommen jeweils VCC und GND. Der Data Pin des Senders kann frei gewählt werden, ich habe hier PIN 10 verwendet. Der Empfänger muss an einen der beiden Interrupt Pins angeschlossen werden, ich habe den PIN 2 verwendet.
Programmierung des RF Senders
Das"include" und das RCSwitsch" bliebt immer gleich, egal ob Sender oder Empfänger, mit diesen beiden Zeilen wird das RF Modul im Arduino bereitgestellt.
Nun folgt im Setup Teil das "enableTransmit (10)", mit diesm Code wird der PIN definiert an dem der Sender angeschlossen ist, hier der PIN 10.
Nun kann über den Code "mySwitsch.send" eine Zahl gesendet werden. Je nachdem ob der digitale Eingang 2 oder 3 HIGH ist wird eine 1 oder eine 0 gesendet. Die Zahl 24 hat nichts mit der zu senden Zahl zu tun und muss nach dem Komma, so stehen bleiben.
Um eine Variable zu senden muss in die Klammer der Name einer Variable eingefügt werden. Hier die Variable "value" die den Wert eines Analogen Eingangs enthält.
Programmierung des RF Empfängers
Über den Code "mySwitsch.enableReceive(0)", wird der PIN des Empfängers definiert. Die Zahl steht aber nicht direkt für den digitalen PIN sondern für die Nummer des Interrupt PIN. Interrupt PIN 0 = digitaler PIN 2, Interrupt PIN 1 = digitaler PIN 3. Ich verwende hier also den digitalen PIN 2 für den Empfänger. Über den Code "mySwitsch.getReceivedValue", wird die Empfange Zahl in die Variable "value" geschrieben. Mit dieser Variablen kannst du nun weiter programmieren.
Wird die Zahl 1 oder 0 Empfangen, wie aus dem ersten Senderbeispiel, eine LED an PIN 5 ein- oder ausgeschaltet. Hier an einem analogen PIN ohne Widerstand.
Hier wird die LED gedimmt, mit dem Wert des Poti aus dem zweiten Senderbeispiel.
Achtung! unter umständen ist es nötig den "myswitch" zu resetten, das ist dann wichtig, wenn der Wert nicht mehr übermittelt wird. Dann muss über eine "undnicht" Bedingungen abgefragt werden ob "keine" 0 ist, und nur dann darf die Variable übernommen werden. Um nun eine 0 zu generieren, zum Beispiel bei einem analogen Signal, muss -1 gerechnet werden. Dabei muss beachtet werden dass sich eine RF 433 Verbindung nicht zum übertragen von schnellen Verbindungen geigend ist, zumindest nicht mit Ardublock.
Texte für kopieren und einfügen:
- Sender und Empfänger
- Code für globalen Bereich
- #include <RCSwitch.h>
- RCSwitch mySwitch = RCSwitch();
- Code für globalen Bereich
- Sender
- Setup
- mySwitch.enableTransmit(10);
- Loop
- Zahl (1) senden
- mySwitch.send(1, 24);
- Zahl (0) senden
- mySwitch.send(0, 24);
- Variable senden
- mySwitch.send(value, 24);
- Zahl (1) senden
- Setup
- Empfänger
- Setup
- mySwitch.enableReceive(0);
- Loop
- int value = mySwitch.getReceivedValue();
- int value = mySwitch.getReceivedValue(); mySwitch.resetAvailable();
- Setup