Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Tutorial 37: 433 MHz Sender & Empfänger

Posted on 22. Dezember 20172. Mai 2023 by Stefan Draeger

In diesem Tutorial möchte ich den 433MHz Funksender & Empfänger erläutern.

433 MHz Sender (oben) und Empfänger (unten).
433 MHz Sender (oben) und Empfänger (unten).

Ich hatte bereits ein Set mit einer Fernbedienung im Tutorial Arduino Lektion 34: 433MHz Funksender erläuter. Jedoch war der Sender eine Fernbedienung. In diesem Tutorial wird der Sender durch einen Microcontroller gesteuert.

  • Technische Daten
    • Sender
    • Empfänger
  • Schaltplan
    • Sender
    • Empfänger
    • Drahtantenne
  • Quellcode
    • Sender
    • Empfänger
  • Reichweite

Technische Daten

Sender

  • Abmaße – 19 mm x 19 mm
  • Betriebsspannung – 3,5V bis 12V
  • Sendeleistung – 10 mW
  • Reichweite – 20 m bis 200 m (je nach Umgebung und Spannung)
  • Betriebsart – AM
  • Empfangsfrequenz – 433 MHz

Empfänger

  • Abmaße – 30 mm x 14,7 mm
  • Betriebsspannung – 5V
  • Empfängerempfindlichkeit –  -105 dB
  • Sendefrequenz – 433,92 MHz

Schaltplan

Sender

Der Sender verfügt über 3 Anschlüsse welche mit dem Arduino UNO wie folgt verbunden werden.

SenderArduino UNO
 GND Ground
 VCC 5V
 Data digitaler PIN 9
 
433MHz Sender auf Steckplatine, verbunden mit einem Arduino UNO.
433MHz Sender auf Steckplatine, verbunden mit einem Arduino UNO.

Empfänger

Der Empfänger verfügt über 4 PINs, von denen „nur“ 3 mit dem Arduino wie folgt verbunden werden.

SenderArduino UNO
 GND Ground
 VCC 5V
 Data* digitaler PIN 2
*   In diesem beispiel verwende ich den PIN neben dem GND PIN des Empfängers.
433MHz Empfänger auf Steckplatine, verbunden mit einem Arduino UNO.
433MHz Empfänger auf Steckplatine, verbunden mit einem Arduino UNO.

Drahtantenne

Der Sender und Empfänger verfügt jeweils über einen Lötpunkt zum Anschluss einer Drahtantenne, welche man selber ganz leicht erzeugen kann.

Wickelantenne für das 433MHz, 4 Kanal Funkmodul
Dieses Video auf YouTube ansehen.
433Mhz Funksender / Empfänger mit Wickelantenne
433Mhz Funksender / Empfänger mit Wickelantenne

Quellcode

Für den nachfolgenden Quellcode wird die Bibliothek RCSwitch benötigt, diese kann vom GitHub Repository  https://github.com/sui77/rc-switch geladen werden.

Zuerst fangen wir mit einem einfachen Beispiel an. Es soll „nur“ eine Dezimalzahl gesendet und empfangen werden. Dazu benötigt man jeweils einmal den Sender und Empfänger und zwei Mikrocontroller.
Ich nutze in diesem Beispiel zweimal den Arduino UNO.

Aufbau, einfache Schaltung 433MHz Sender & Empfänger am Arduino UNO.
Aufbau, einfache Schaltung 433MHz Sender & Empfänger am Arduino UNO.

Sender

#include <RCSwitch.h>

RCSwitch rcSwitch = RCSwitch(); 

void setup() {
  // Sendemodul an dem digitalen PIN 9 angeschlossen.
  rcSwitch.enableTransmit(10);
}
void loop() {
  // Senden der Zeichenkette "Hallo Welt!"
  rcSwitch.send(9876,24);
  //Pause von 1sek.
  delay(1000);
}

Empfänger

#include <RCSwitch.h>

RCSwitch rcSwitch = RCSwitch();

void setup() {
  Serial.begin(9600); //Begin der seriellen Kommunikation mit 9600 baud.
  // Empfängermodul ist am digitalen PIN 2 angeschlossen
  // dies ist der Interrupt-Pin "0".
  rcSwitch.enableReceive(0);
}

void loop() {
  if (rcSwitch.available()){ //Wenn Daten verfügbar sind.
    //Ausgabe des aktuellen Zeitstempels (seitdem der Arduino gestartet wurde).
    Serial.print("[");
    Serial.print(millis());
    Serial.print("] - ");
    //Ausgabe des gelesenen Wertes
    Serial.println( rcSwitch.getReceivedValue() );
    
    //Zurücksetzen des Empfängers.
    rcSwitch.resetAvailable();
  }
}

Das Senden einer einfachen Dezimalzahl ist mit der Funktion rcSwitch.send(Zahl, Bitlänge) ziemlich einfach. Anders sieht es aus wenn man eine Zeichenkette senden möchte, hier muss man die Zeichenkette zuerst in einzelne Charakter zerlegen und diese wiederum in Bytecode darstellen.

Reichweite

Die Reichweite des Senders und Empfängers ist mit 20 m bis 200 m angegeben, jedoch fließen hier folgende Faktoren mit ein:

  • Spannung,
  • Temperatur,
  • Störungsquellen (andere Funkstationen),
  • u. v. a. m.

Ich habe nun auf freiem Feld den Abstand gemessen.
Folgende mögliche Störungsquellen waren gegeben:

  • Handy,
  • Strommast (ca. 115 m entfernt),
  • Siedlung (ca. 250 m entfernt),
  • Temperatur  5 °C

Der Sender bzw. der Arduino UNO am Sendemodul wurde mit einer 9V Blockbatterie betrieben, der Empfänger wurde mit einer Powerbank betrieben, beide Geräte befanden sich jeweils in einem Kunststoffgehäuse.

Es wurde eine maximale Reichweite von 23 m erreicht.

18 thoughts on “Arduino Tutorial 37: 433 MHz Sender & Empfänger”

  1. Hardy Neuwald sagt:
    9. August 2018 um 09:46 Uhr

    Hallo,

    ich habe Ihren Blog entdeckt und interessiere mich als Hobbybastler sehr für Elektronik. Toll Ihre Seite!
    Ich habe vor mir eine Zeitmessanlage mit 3 Laserlichtschranken die per Funk oder Wlan kommunizieren zu bauen. Ich bin Trainer einer Jugendfußballmannschaft.
    Wäre es für Sie vorstellbar, da Sie sich bestimmt viel besser in der Programmierung auskennen, mir unter die Arme zu greifen?
    Die Abweichung des Messergebnisses sollte natürlich sehr gering sein (1/100 vlt)
    Welchen Weg würden Sie gehen?
    1.) Drei Sender mit Arduino /LS/866MHzSender und 1 Arduino mit Display/Taster/866MHzEmpfänger zum Auswerten?
    2.) Oder das ganze per Wlan mit z.B.: NodeMCU
    3.) Oder Variante 1 mit 433MHz-Technik (soll aber wohl sehr störanfällig sein.

    Die Anlage soll drinnen wie draußen verwendet werden können. Stromnetzunabhängig sein und extrem genau sein.

    Würde mich über ein kleines Feedback sehr freuen.

    LG Hardy aus Teltow/Berlin.

    Antworten
    1. Stefan Draeger sagt:
      9. August 2018 um 10:41 Uhr

      Hi,

      danke für Ihr Lob.
      Ich würde Ihnen empfehlen auf WLAN zu wechseln denn dieses hat eine größere Reichweite und vorallem die Möglichkeiten sind deutlich höher.
      Für Ihr Vorhaben würde ich sogar noch etwas weiter gehen:
      1. Laser Lichtschranken (https://draeger-it.blog/arduino-lektion-41-ky-008-laser-pointer-sender-empfaenger/)
      2. SD Card Shield mit Uhr (RealtimeClock) (https://draeger-it.blog/wemos-d1-mini-shield-sd-card-shield-mit-realtimeclock/)
      2. Als Sender für die Lichtschranken -> Wemos D1 mini (https://draeger-it.blog/wemos-d1-mini-uebersicht/)
      3. Als Empfänger zum Daten sammeln auch ein Wemos D1 mini
      4. Ein Handy / Tablet zum darstellen einer Webseite
      5. 2x Powerbank mit min 5000 mAh für den Betrieb der Microcontroller

      Die Laser Lichtschranke wird mit dem Wemos D1 mini verbunden und sendet beim Auftreten einer Aktion (Lichtstrahl durchbrochen) ein Signal an den zweiten Wemos D1 mini welcher dann einen Zeitstempel aufnimmt.
      Des Weiteren ist eine kleine Webseite auf dem Wemos D1 mini enthalten welche eine Schaltfläche enthält um den Start durchzuführen (hier könnte man überlegen mit einem zusätzlichen Akustischen Signal zu arbeiten).
      Nachdem Start wird der Sprinter / Läufer irgendwann die Lichtschranke durchqueren und das zweite Signal wird genutzt um die Zeitdifferenz für die Strecke zu berechnen und auf einer SD Karte abzuspeichern und / oder aber auf der Webseite in einer Tabelle darzustellen.

      Mit freundlichen Grüßen,

      Stefan Draeger

      Antworten
      1. Peter Rauscher sagt:
        11. Dezember 2020 um 18:55 Uhr

        Schönen Abend, ich bin neu in der Welt der Microcontroller und habe mir ein Elegoo Starterset gekauft. Einmal zum Probieren. Was ich mir vorstelle wäre folgende Anwendung: Temperaturmessung meines Swimmingpool (Wasser), etwa 5 Meter entfernt Lufttemperatur, Feuchtigkeits und Luftdruckmessung. Das ganze soll in meinem Wohnzimmer (ca 35 m vom Pool entfernt) angezeigt werden. Was würden Sie raten?

        Beste Grüße
        Peter Rauscher

        Antworten
        1. Stefan Draeger sagt:
          11. Dezember 2020 um 21:27 Uhr

          Hallo Peter,

          ich würde hier einen Temperatursensor DS18B20 empfehlen, diesen Sensor gibt es in einem gegossenen Gehäuse mit einem langen Anschlußkabel, dazu würde ich den DHT22 für die außentemperatur und die rel. Luftfeuchtigkeit empfehlen (oder etwas günstiger aber etwas ungenauer den DHT11), für die Messung des Luftdrucks würde ich den BME280 empfehlen. Die Übertragung könnte per Wifi oder LAN Kabel erfolgen. Auch dafür gibt es passende Module für den Arduino UNO R3. Einfacher würde es natürlich mit einem ESP32 gehen da dieser gleich eine WiFi Schnittstelle und auch genügend GPIOs für die Sensoren bietet.
          Die Programmierung würde in beiden Fällen über die Arduino IDE funktionieren. Ein weiterer Vorteil beim ESP32 ist das dieser auch über ESP Easy konfiguriert werden kann und somit eine recht umfangreiche Programmierung entfällt.

          Gruß,

          Stefan Draeger

          Antworten
  2. Joseph Gustin sagt:
    6. Juni 2019 um 10:27 Uhr

    Hello from United States. I just got my arduino motherboard and am going to make EMP…do you have a tutorial in English?

    Antworten
    1. Stefan Draeger sagt:
      7. Juni 2019 um 14:25 Uhr

      Hello,

      thanks for your interessting, but at this time i don’t write tutorials in english.
      My english is not so good.

      Thanks and Best Regards,

      Stefan Draeger

      Antworten
  3. Tobias Ullrich sagt:
    13. Juli 2019 um 21:17 Uhr

    Huhu, für weitere Distanzen habe ich ein kleines Step-Up Modul womit ich die Senderplatine mit 12V versorge bzw. auch den Pro Mini.

    Dies sind aber „Sendestationen“ die ich nicht lange am Stück in Betrieb habe, weil die 18650 sonst auch nicht ewig halten würde, bzw. öffter geladen werden müssten.

    Antworten
  4. Tina Koller sagt:
    25. August 2019 um 19:30 Uhr

    Hallo!
    Das Tutorial ist toll und verständlich, vielen Dank dafür! Leider bin ich kurz vorm Verzweifeln, liegt aber vermutlich an meinen eigenen beschränkten Kenntnissen…
    Ich möchte zwei Arduino Nano (Nachbau von elegoo, ATmega328) miteinander sprechen lassen. Ziel ist es, eine Fernsteuerung für ein Kostüm zu bauen (soll später Servos und LEDs fernsteuern) – also einer ist der Sender und einer der Empfänger. Ich habe exakt die gleichen Funkmodule wie im Tutorial und das Testprogramm eingebunden, aber mein Empfänger bekommt einfach keine Daten. Das Modul hab ich auch schon getauscht, weil ich fünf davon habe, also ein Defekt sollte ausgeschlossen sein ^^
    Ich habe auch schon Drahtantennen angelötet und die Module liegen nur wenige Zentimeter nebeneinander, an der Reichweite kann es nicht liegen.
    Ich vermute, es liegt an den falschen Pinnummern, nur kenne ich mich nie aus, welche Nummerierung hier gilt.
    Was muss bei rcSwitch.enableReceive(pin) für ein Wert rein, wenn der Empfänger am digitalen Pin 2 angeschlossen ist beim Nano?
    Der Sender wiederum ist am anderen Arduino Nano am digitalen Pin D5 angeschlossen… was für eine Nummer muss hier rein?
    Müssen die Pins evtl. explizit als OUTPUT definiert werden, weil das ist nicht im Programm enthalten?
    Ich habe jetzt schon so viele Kombinationen durchprobiert, ich bin echt ratlos…

    Um eine Anwort wäre ich sehr, sehr dankbar, da das ganze Kostümprojekt auf den Einsatz einer Fernbedienung angewiesen ist.

    Antworten
  5. Gerhard Pingel sagt:
    14. April 2020 um 20:43 Uhr

    Hallo und guten Abend,
    ich bin im 74. Lebensjahr und habe mir zuhaus die Bewässerungssteuerung im Garten mit den Sonoff-Platinen (WLAN-gesteuerte Relais – eWeLink) aufgebaut. Da es nicht immer praktisch ist, mit dem Handx im Garten zu hantieren, wollte ich gern die Steuerung auch über die RF-Bridge mit einer Fernbedienung 433,92 MHz bedienen können. Die mir zugeschickten FB’s kann man zwar clonen, aber – mit welchem Code / von welcher FB?
    Frage: Kann man diese kleinen FB’s (4 Tasten) gezielt mit Arduino oder anderweitig programmieren? Und welchen Code stellt man dann am besten ein?

    Antworten
    1. Stefan Draeger sagt:
      15. April 2020 um 08:38 Uhr

      Hallo Gerhard,

      man müsste zunächst die Fernbedienungen auslesen und dann könnte man diese ggf. in die vorhandene Schaltung einbauen.

      Jedoch habe ich bisher wenig mit den Sonoff Geräten gemacht.

      Gruß,

      Stefan Draeger

      Antworten
  6. martin sagt:
    21. Januar 2021 um 19:42 Uhr

    Hallo ersten super tolle Seite.

    Da hätt ich eine Frage, wäre es möglich mittels 433 mhz Sender und Empfänger zu eruieren wie weit sie von einander entfernt sind? Würd was suchen was mir im cm bereich auch durch die wand anzeigt wie weit sie von einander entfernt sind.

    Antworten
    1. Stefan Draeger sagt:
      21. Januar 2021 um 20:08 Uhr

      Hi,

      leider gibt es nicht die Möglichkeit das mit einem 433Mhz Sender / Empfänger zu lösen. Eventuell kannst du dieses mit einem iBeacon über Bluetooth 4.2 (BLE) lösen. Jedoch ist dieses gerade im Gebäude sehr ungenau.

      Gruß,

      Stefan

      Antworten
  7. Sebastian sagt:
    16. Februar 2021 um 17:17 Uhr

    Servus,
    Super informative und übersichtliche Seite!
    Ich möchte mein erstes Microcontroller-Projekt angreifen.
    Und zwar möchte ich die Temperaturen zweier Pufferspeicher mithilfe von zwei DS18B20 abfragen, und die Temperaturen aus dem Keller per Funk mit einem Arduino in das 1. EG senden und auf einem Arduino auf ein LCD-Display ausgeben.
    Meinen Sie, ich kann die Funkübertragung mit einem solchen 433 MHz Model realisieren, oder würden sie mir eine bessere Alternative vorschlagen?
    Bin sehr dankbar für alle Tips!
    Besten Dank im voraus!
    Grüße
    Sebastian

    Antworten
    1. Stefan Draeger sagt:
      16. Februar 2021 um 20:13 Uhr

      Hi Sebastian,

      hier würde ich ein Microcontroller vom Typ ESPx (also ESP8266 oder ESP32) verwenden dieser kann durch die WiFi Schnittstelle in ein ggf. bestehendes Netzwerk eingebunden werden und somit können die Daten an beliebige Orte angezeigt werden.

      Ein 433 MHz Sender schafft nicht wirklich eine gute Leistung und vor allem nicht durch Wände oder Stahlbetondecken.

      Gruß,

      Stefan Draeger

      Antworten
  8. Jörg sagt:
    16. Juni 2021 um 14:17 Uhr

    Hallo, habe für einen ersten Test Sender und Empfänger am selben Arduino.
    Hast du einen Tipp woran es liegen könnte wenn ich jede Sekunde sende nur alle ~3-4 Minuten einen Wert emfange?
    Danke und Grüße
    Jörg

    Antworten
    1. schneeer sagt:
      2. Juli 2021 um 22:44 Uhr

      Hi,
      ich würde glatt weg behaupten, dein Arduino hat in dem Moment gar keine Zeit zum Empfangen, da er ja seinen Loop abarbeitet und mit dem Senden beschäftigt ist.
      Der kann kein Multitasking.

      Antworten
  9. Fietje Costrau sagt:
    3. August 2024 um 12:47 Uhr

    hallo allerseits, ich habe jetzt schon sehr viel ausprobiert und bei mir funktioniert es immer noch nicht.
    ich hab als Sender einen Arduino Nano ESP 32 mit dem Pin D3 verwendet und als Empfänger den Arduino UNO R3 SMD mi dem Pin 2. kann mir jemand helfen? Ich glaube das Problem liegt am Empfänger da dort keiner meiner print Methoden aufgeführt wird(beim Sender schon).

    Antworten
  10. Pingback: Smarthome ohne Spionage: ESP32 und Shelly i4 DC als drahtlose Steuerung für dein Zuhause - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}