Arduino und das 433MHz Band nutzen um eine Funkverbindung zwischen 2 Arduinos herzustellen. Datenübertragung zum Schalten einer LED.

Das 433MHz Band wird seit Jahren für Funkverbindungen verwendet, beispielsweise Funksteckdosen oder Garagenöffner, teilweise Wetterstationen und andere Geräte verwenden diese Frequenz um miteinander zu kommunizieren. Im Gegensatz zum 2.4 GHz und dem NRF24L01 ist die Kommunikation mit den 433MHz Modulen super einfach. Die Module haben in der Regel nur 3 (Receiver 4) Pins und sind einfach anzusteuern. Das bringt uns die Möglichkeit eine Verbindung herzustellen ohne viel Aufwand zu betreiben.

Die gängigen und beliebtesten Module sind keine Transceiver, sie können also nicht durch im Code vorgenommene Änderungen Senden und Empfangen gleichzeitig. Dies macht uns die Verkabelung und Programmierung einfach. Im gegensatz zu dem NRF24L01 kriegen wir auch keine kalten Füße wenn es um das Thema “legal” geht. Die Nutzung dieser Module ohne zusätzliche Verstärker ist komplett legal.

Was wir hier vorhaben:

  • Wir programmieren den Sender > Bringen dem Sender einen Code bei, den er regelmäßig übertragen soll
  • Wir programmieren den Empfänger > Bringen dem Empfänger bei den Code zu Empfangen und eine Aktion damit durchzuführen.

Was brauchen wir :

  • 2x Arduino Uno oder Nano
  • 1x 433 MHz Sender (Antenne optional)
  • 1x 433 MHz Empfänger (Antenne optional)
  • 1x LED
  • 1x 220 Ohm Widerstand
  • (optional) Batterien inkl. Halterungen oder Powerbank

Verkabelung:

Verkabelung

Sender (LINKS):
VCC -> 5V des Arduino
GND -> GND des Arduino
DATA -> D10 des Arduino

Empfänger (RECHTS):
VCC -> 5V des Arduino
GND -> GND des Arduino
DATA -> D2 des Arduino
LED + -> D5 des Arduino
LED- -> über Widerstand an GND des Arduino

Der Empfänger hat 2 DataPins, hierbei ist es egal welchen der Beiden ihr verwendet

Wir installieren die Library RCSwitch über Sketch > Bibliothek einbinden > Bibliotheken verwalten. Im Suchfeld suchen wir nach “RCSwitch” und installieren sie.

Code

Danach der Code für den Sender:

#include <RCSwitch.h> //Library
RCSwitch sender = RCSwitch(); //Definition

const int code = 2345; //Der Code den wir übermitteln wollen
const int senderpin = 10; //Der Pin an dem wir den DataPin des Transmitters angeschlossen haben

void setup() {
  sender.enableTransmit(senderpin); //Wir sagen dem Arduino wo wir senden, hier unser DataPin
}

void loop() {
  sender.send(code, 16); //Wir senden den Code mit 16 Bit
  delay(1000); //Arduino wartet nach dem Senden 1000ms
}

Und hier der Code für den Empfänger:

#include <RCSwitch.h> // Library
RCSwitch receiver = RCSwitch(); //Definition

const int led_pin = 5; // LED ist an Pin D5

void setup() {
  pinMode(led_pin, OUTPUT); // D5 ist ein OUTPUT
  receiver.enableReceive(0); // Empfänger hängt an D2, was der Interrupt Pin 0 ist, nicht verwirren lassen
}

void loop() {
  if (receiver.available()){ //wenn daten empfangen werden, dann:
    int code = receiver.getReceivedValue(); //code ist das was empfangen wird
    if (code == 2345){ // wenn der empfangene Code "2345" lautet dann:
      digitalWrite(led_pin, HIGH); // LED pin gibt Strom aus
      delay(150); // arduino wartet 150ms, solange bleibt pin D5 auf HIGH
      digitalWrite(led_pin, LOW); // LED pin gibt keinen Strom aus
      receiver.resetAvailable(); // Receiver geht wieder auf Empfang
    }
  }
}

Mit dieser Verbindung kann man auch größere Projekte umsetzen. Über einen Zeitraum hatte ich damit eine RGB-Leiste zuhause gesteuert, hierzu habe ich allerdings eine fertige 433MHz Fernbedienung verwendet, da der Arduino eine gewisse Bootzeit hat und ich ihn als Sender nicht 24/7 laufen lassen wollte.

Mehr zum RCSwitch in anderen Projekten.

Von geekduino

Kontakt: info@geekduino.de