···
www.simsso.de

MX-05V und MX-FS-03V - Arduino

Arduino Funkmodul

Der MX-05V (Empfänger) empfängt z. B. auf der Frequenz 433MHz die Daten des MX-FS-03V (Sender), der in der linken Abbildung oben links zu sehen ist. Zur Verwendung kann die Virtual Wire Library eingesetzt werden. Verschiedene Beipspielsketche im Internet bereiten Probleme bei der Übertragung von anderen Datentypen (z. B. int, double, etc.), die in Strings konvertiert wurden, weshalb ich eine eigene, wiederverwendbare sendString() Funktion geschrieben habe.

Die Reichweite wird auf diversen Website mit über 150m angegeben, wobei diese nur mit Antennen und niedrigen bps Raten (1000 - 2000 bits per second) erreicht werden kann. Ohne Antenne beträgt die Reichweite einige Meter. Zusätzlich kann die maximale Distanz durch eine hohe Spannung am Sender ausgereizt werden. Diese muss im Bereich zwischen 3,5 und 12 Volt liegen.
  • Empfänger Genauigkeit: -105dB
  • Übertragungsgeschwindigkeit: variabel einstellbar

Die Reichweite hängt von folgenden Faktoren ab:

  • von der Antennenqualität (standardmäßig sehr schlecht, Anlöten von Verlängerungen empfohlen)
  • am Sender angelegte Spannung (je höher, desto größer die Reichweite)
  • von der Anzahl an übertragenen Bits pro Sekunde (je weniger desto größer die Reichweite

Video Tutorial


Beispiel

Verkabelung
Sender Arduino Funktion
VCC 3,5 - 12 Volt positive Versorgungsspannung
ATAD 12 serial data Schnittstelle
GND GND Masse (0 Volt Potential)
Empfänger Arduino Funktion
VCC 5V positive Versorgungsspannung
DATA 12 serial data Schnittstelle
GND GND Masse (0 Volt Potential)
Code (Sender)
// library
#include <VirtualWire.h>

void setup() 
{
  Serial.begin(9600); 

  // virtual wire
  vw_set_tx_pin(12); // pin
  vw_setup(8000); // bps
}

void loop()
{
  sendString("message", true); 
  delay(100); 
}

void sendString(String message, bool wait)
{
  byte messageLength = message.length() + 1; 

  // convert string to char array
  char charBuffer[messageLength]; 
  message.toCharArray(charBuffer, messageLength);

  vw_send((uint8_t *)charBuffer, messageLength); 

  if (wait) vw_wait_tx(); 

  Serial.println("sent: " + message); 
}
Code (Empfänger)
// library
#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message

void setup()
{
  Serial.begin(9600);
  Serial.println("device is ready...");

  vw_set_rx_pin(12);
  vw_setup(8000); // bps
  vw_rx_start();
}

void loop()
{
  if (vw_get_message(message, &messageLength)) // non-blocking
  {
    Serial.print("received: ");
    for (int i = 0; i < messageLength; i++)
    {
      Serial.write(message[i]);
    }
    Serial.println();
  }
}


Modellflugzeug Höhenmesser



Loading... © Timo Denk 2024
Feedback

Feedback