Ich brauche hilfe mit VirtualWire

Hallo,

ich möchte einen Text mit einem Arduino Nano und diesen Funksendern übertragen

Weiß jemand ein Bsp.?

Danke schonmal im voraus!

Lukas

In den Beispielen der VirtualWire findest du alles, eines für den Sender und eines für den Empfänger.

lwminecraft: ... ich möchte einen Text mit einem Arduino Nano und diesen Funksendern übertragen

Weiß jemand ein Bsp.?

Das mit den Beispielen wurde dir ja schon genannt. Aber dafür benötigst du 2 Arduino. Einen zum Senden, einen zum Empfang.

Hinweis: Die Hardware ist kein Arduino sondern ein chinesischer Nachbau. Zum Upload brauchst du einen CH350 Treiber.

Ich würde wenig Vertrauen einen Verkäufer geben der als Produktbeschreibung Fotos von verschiedenene NANO- Platienen (außer dem grünen Audioverstärker) in sein Angebot gibt. Grüße Uwe

Hallo,

denn Richtigen Treiber habe ich!

Ich habe auch ein Video dazu angesehen und denn selben code verwendet aber es hat nicht geklappt!

Lukas

Hallo,

ich habe auch zwei arduino nanos

Bei dem Code comt zwar "Setup" im serialen Monitor beim Empfänger aber weiter geht es nicht, und beim Sender kommt "send: message" im serialen Monitor.

Die bsps der VirtualWire libairy funktiuniren auch nicht, nur wenn ich beim Empfänger vor die if abfrage ein ! setze

Lukas

lwminecraft:
denn Richtigen Treiber habe ich!
Ich habe auch ein Video dazu angesehen und denn selben code verwendet aber es hat nicht geklappt!

Dieser ganze Video-Mist hilft uns und dir nicht weiter.

Von welchem Treiber sprichst du ?

Mach es so wie in den Beispielen der Library.

Poste deinen verwendeten Sketch und zeig uns dein Schaltbild.
Wie sollen wir sonnst sehen wo du Fehler machst.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Und bei vielen Usern, auch bei mir funktionieren die Beispiele, als machst du was falsch.

Ich habe auch ein Video dazu angesehen ...

Vergiss es... Der Mann kann ja noch nicht mal die Antennenlänge berechnen.

Übrigens, dein Sender ist schon ok.

Aber der Empfänger ist weniger gut. Sehr breitbandig. Interpretiert also Sendungen auf anderen Kanälen leicht als Nutzsignal.

combie: Übrigens, dein Sender ist schon ok.

Aber der Empfänger ist weniger gut. Sehr breitbandig. Interpretiert also Sendungen auf anderen Kanälen leicht als Nutzsignal.

Gut dass du es vorweg nimmst. Aber der TO sollte erst mal grundsätzlich die Kommunikation zum Laufen bringen.

Da hapert es ja noch und für einen Test mit geringster Reichweite sollte es reichen. ;)

Hallo,

ich verwende denn CH350 Treiber.

Hier ist der Sender Code,

// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	  // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_set_rx_pin(2);
    vw_setup(2000);	 // Bits per sec
}

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
}

Hier ist der Empfänger Code,

// receiver.pde
//
// Simple example of how to use VirtualWire to receive messages
// Implements a simplex (one-way) receiver with an Rx-B1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@airspayce.com)
// Copyright (C) 2008 Mike McCauley
// $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_set_rx_pin(2);
    vw_setup(2000);	 // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

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

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(13, true); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i], HEX);
	    Serial.print(" ");
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}

So habe ich sie verkabelt,

Sender


Empfänger

löte mal je einen starren Draht von 173mm an Sender und Empfänger

Nimm mal beim Sender diese Zeile:

vw_set_rx_pin(2);

raus.

Und es fehlt diese zeile:

vw_set_tx_pin(2);                  // TX Datenleitung (Pin)

An den Leds fehlen Vorwiderstände, hat mit dem Problem nichts zu tun aber damit kannst du den Ausgangspin killen.

Hallo,

nach dem ich

vw_set_rx_pin(2);

zu dem

vw_set_tx_pin(2);

gemacht habe hat es immer noch nicht funktionirt.

Dann habe ich das

if (vw_get_message(buf, &buflen)) // Non-blocking

zu dem gemacht

if (vw_get_message(buf, & buflen)) // Non-blocking

und dann ginges so wie im bsp! leider kamm nur der HEX code weiß da jemand etw. ?

Dann wollte ich eine LED mit 560Ohm Wiedewrstand an pin 13 anbringen am Sender, und ausversehen habe ich einen kurtschluss zwischen pin13 und GND gemacht, seit dem erkent mein PC denn arduino nicht mehr! Ist der kaputt?

leider kamm nur der HEX code weiß da jemand etw. ?

versuch es auf der Empfängerseite mal so:

#include <VirtualWire.h>
#define rx_Pin 2
char msg[5];

void setup()
{
    Serial.begin(9600);  // Debugging only
    Serial.println("setup Empfänger");
   
    // Initialise the IO and ISR
    vw_set_rx_pin(rx_Pin);
    vw_setup(2000); // Bits per sec
    vw_rx_start();       // Start the receiver PLL running
}

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

    if (vw_get_message(buf, & buflen)) // Non-blocking
    {
      digitalWrite(13, true); // Flash a light to show received good message
     
      for (byte i = 0; i < buflen; i++) {msg[i] = ((char) buf[i]);}      
   
      Serial.print("empfangen:   ");
      Serial.print(msg);
      Serial.println(" ");
  
      digitalWrite(13, false);
    
    }
}

Warum es mit “&buflen” nicht funktioniert, aber mit"& buflen", kann ich nicht sagen. Meines Wissens nach ist da kein Unterschied.

Das die Zeichen nur als HEX-Code kommen,liegt an der Formatierung deiner Ausgabezeile.

Und dass der Arduino bei einem Kurzschluss am Ausgangspin stirbt, ist sehr unwahrscheinlich.
Normal ist der Pin defekt, evtl. der Port, alles andere geht noch.
Da muss dann schon mehr passiert sein. Oder alles abstecken und dann noch mal testen.

Hallo,

ich schätze es liegt dran, das buflen eine variable ist und &bufflen nicht als variable buflen erkant wird.

Zum Arduino die Led leuchtet auf dem arduino etwas dunkler und wenn ich an irgend einem port eine Led anschliese und ihn an mache ist die andere fast aus und die externen leuchtet kauf. Ich habe probiert alles auszustecken eine weile liegen lassen und wieder probieren, aber immer noch keine Verbindung zwischen arduino und PC

lwminecraft:
ich schätze es liegt dran, das buflen eine variable ist und &bufflen nicht als variable buflen erkant wird.

Warum es bei dir nicht funktioniert, kann ich nicht sagen.

Da es aber in vielen Projekte, auch bei mir in mehreren Projekten so

if (vw_get_message(buf, &buflen)) {

funktioniert, sollte das nicht das Problem sein.
Kann es sein, dass du aktuell einen Schreibfehler reingebracht hast ?