Forum: Mikrocontroller und Digitale Elektronik Funkübertragung 433mhz | Arduino


von holmes (Gast)


Lesenswert?

Hallo, ich hab folgendes Problem. Ich möchte eine Variable über die 
VirtualWire Library von einem Arduino zu einem anderen verschicken. Mit 
den beiden Sketches unten kann ich nur einen String übertragen. Muss ich 
also eine int oder float variable in einen String konvertieren (wenn ja, 
wie?) oder gibt es auch eine andere Möglichkeit.


Sketch Sender:
-----------------------
// 433 Mhz-Sender angeschlossen an PIN 7

#include <VirtualWire.h>

#undef int
#undef abs
#undef double
#undef float
#undef round

void setup()
{
    vw_set_ptt_inverted(true);      // Required for RF Link module
    vw_setup(2000);                 // Bits per sec
    vw_set_tx_pin(7);               // pin 7 is used as the transmit 
data
}

void loop()
{
    const char *msg = "Testnachricht";       // this is your message to 
send

   vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();                             // Wait for message to 
finish
   delay(200);
}










Sketch Empfänger:
-----------------------
// 433 Mhz-Empfänger angeschlossen an PIN 7

#include <VirtualWire.h>

#undef int
#undef abs
#undef double
#undef float
#undef round

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

    vw_set_ptt_inverted(true);  // Required for RX Link Module
    vw_setup(2000);             // Bits per sec
    vw_set_rx_pin(7);           // We will be receiving on pin 7
    vw_rx_start();              // Start the receiver
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // check to see if anything has 
been received
    {
    int i;
     // Message with a good checksum received.

    for (i = 0; i < buflen; i++)
    {
        Serial.print((char)buf[i]);                     // the received 
data is stored in buffer
        }
    Serial.println("");
     }



     /*
     ReserveCode
     for (i = 0; i < buflen; i++)
        {
        Serial.print((char)buf[i]);                     // the received 
data is stored in buffer
        }
      Serial.println("");
       }
     */

}

von Harald W. (wilhelms)


Lesenswert?

holmes schrieb:

> Hallo, ich hab folgendes Problem.

Nämlich einen Sender für 433 Millihertz zu finden. :-)

von holmes (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> holmes schrieb:
>
>> Hallo, ich hab folgendes Problem.
>
> Nämlich einen Sender für 433 Millihertz zu finden. :-)


Hey, ich komm grad nicht mit. Wo hab ich den 433 Milliherz geschrieben?

von Mitleser (Gast)


Lesenswert?

holmes schrieb:
> Hey, ich komm grad nicht mit. Wo hab ich den 433 Milliherz geschrieben?

holmes schrieb:
> Funkübertragung 433mhz | Arduino
                  ^^^^^^

von Mitleser2 (Gast)


Lesenswert?

Millihertz wird aber mHz geschrieben. Keine Ahnung, wie man bei mhz auf 
Millihertz kommen kann. Bitte keine falschen Hinweise.

von Martin R. (kiku)


Lesenswert?

Hallo,

du könntest die binären Daten der Variablen direkt übertragen. Z.B. für 
eine Variable "float x" bekommst du mittels &x die Adresse an der die 
Daten stehen und mittels "sizeof(x)" die Anzahl der Bytes. Zum 
Hin/Her-Kopieren der Daten kannst die Funktiom memcpy verwenden.

von Wolfgang (Gast)


Lesenswert?

holmes schrieb:
> Hey, ich komm grad nicht mit. Wo hab ich den 433 Milliherz geschrieben?

Nur im Titel.

Der Sender dürfte auch gar nicht das Problem sein, eher die passende 
Antenne.

Die VirtualWire Library ist übrigens ersetzt durch die RadioHead 
Library. In den Datenpaketen kannst du übertragen, was du möchtest - 
auch Speicherbereiche in Binärform.

von Forist (Gast)


Lesenswert?

Mitleser2 schrieb:
> Millihertz wird aber mHz geschrieben. Keine Ahnung, wie man bei mhz auf
> Millihertz kommen kann. Bitte keine falschen Hinweise.

Warum bitte sollte bei "mhz" die Zuordnung zu "MHz" naheliegender als 
die zu "mHz" sein. Solch eine Angabe sollte schon gerne etwas genauer 
als auf einen Faktor 1000000000 sein.

von Mitleser2 (Gast)


Lesenswert?

Forist schrieb:
> Mitleser2 schrieb:
>> Millihertz wird aber mHz geschrieben. Keine Ahnung, wie man bei mhz auf
>> Millihertz kommen kann. Bitte keine falschen Hinweise.
>
> Warum bitte sollte bei "mhz" die Zuordnung zu "MHz" naheliegender als
> die zu "mHz" sein. Solch eine Angabe sollte schon gerne etwas genauer
> als auf einen Faktor 1000000000 sein.

. weil die Shift-Taste entweder komplett klemmt, oder gar nicht.
. weil es keine Funkmodule 433mHz gibt
. weil es niemanden jemals gegeben hat, der mhz geschrieben hat und 
damit Millihertz meinte (außer denen, die Klugscheißen, ohne selbst zu 
wissen wie man mHz schreibt)

von Forist (Gast)


Lesenswert?

Mitleser2 schrieb:
> . weil die Shift-Taste entweder komplett klemmt, oder gar nicht.

Tut sie offensichtlich nicht, oder wo vermutest du bei "Funkübertragung 
433mhz | Arduino" einen Totalklemmer?

von holmes (Gast)


Lesenswert?

Hey, vielen dank für die schnelle Hilfe. Ich werd das mal mit der 
RadioHead Library versuchen. Ich hoffe ich finde da einen passenden 
Beispiel-Code. Und das mit den 433 mhz - tut mir echt leid. Ich hab mich 
da einfach vertippt. Ich meinte natürlich MHz.

LG

von Stefan F. (Gast)


Lesenswert?

> tut mir echt leid. Ich hab mich da einfach vertippt.
> Ich meinte natürlich MHz.

Lass dich nicht veräppeln, das war zu 99,99999999% allen klar. Wer hier 
wegen Rechtschreibung herum meckert, sollte besser Deutschlehrer werden 
und dieses Forum den Menschen überlassen, die an Technik Spass haben.

Ok, wer jetzt sowohl an Technik als auch an Deutsch Spass hat mag da 
anderer Meinung sein.

von Forist (Gast)


Lesenswert?

Stefan Us schrieb:
> Lass dich nicht veräppeln, das war zu 99,99999999% allen klar.

Spätesten bei D (Deka-) und d (dezi) schwindet die Anzahl der 9en ;-)

Wenn man unter QRSS sucht, findet man übrigens Datenübertragungen mit 
einer typischen Bitfrequenz in der Größenordnung von 30mHz ...

von Harald W. (wilhelms)


Lesenswert?

Stefan Us schrieb:

> Wer hier wegen Rechtschreibung herum meckert,

Hier geht es nicht um Rechtschreibung, sondern um einen
sinnentstellenden Fehler. Als Techniker sollte man sich
eine klare, für alle verständliche Sprache angewöhnen.

von BirgerT (Gast)


Lesenswert?

SCNR..

..deutsche Sprache ist ja auch keine Technikersprache..
- Sonnenblumenöl
- Rapsöl
- Olivenöl

- Salatöl?
- Babyöl??
- Motoröl

..und angenommen, man will eine Schraube aus dem Material Holz - ist das 
dann eine Holzschraube?

Und was ein Techniker ist, der liest das "mhz" vllt. schon gar nicht 
mehr, weil "Funk" und "433" schon ausreichen für die Entscheidung "Schau 
ich rein oder nicht.."

von Ulrich F. (Gast)


Lesenswert?

Ach....
Auf Tippfehlern rum zu hacken ist schwach.
Sind sie sinnentstellend, kann man nachfragen, oder den Thread/Beitrag 
ignorieren.

Wenn aus dem Kontext hervorgeht, was gemeint ist, dann ist es die 
neurotische Fehlanpassung "Pingeliger Perfektionismus" welche mal wieder 
aus dem Ruder läuft.
Nobody is perfect!
(und selbst der nicht zu 100%)

Wenn sich Leser und Schreiber etwas Mühe geben ist eine fachliche 
Diskussion, trotz kleiner Fehler, möglich.

Und überhaupt: Korrekturen sind hier im Forum nur sehr begrenzt möglich.
Also ist das ein Geschrei über gewesenes, unabwendbares....

Tipp:
Wenn jemand einen Bock schießt, und es Kröten für ihn zu schlucken gibt, 
dann muss man die Kröten nicht noch unbedingt vorher in Dreck wälzen.

von Joachim B. (jar)


Lesenswert?

holmes schrieb:
> Muss ich
> also eine int oder float variable in einen String konvertieren (wenn ja,
> wie?) oder gibt es auch eine andere Möglichkeit.

wer hindert dich itoa ftoa dtoa zu nutzen?

int2ascii
float2ascci
double2ascii
oder sprintf zu nutzen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.