Hallo zusammen,
mein erster Beitrag und mein erstes richtiges Projekt mit dem Arduino
Und zwar habe ich vor, per Funk ein Relai anzusteuern, welches die Zimmerbeleuchtung anschaltet (nicht elegant aber ein Anfang...)
Dazu habe ich mir folgende Komponenten bei Watterott bestellt:
RF-Sender: http://www.watterott.com/de/RF-Link-Sender-434MHz
RF-Empfänger: http://www.watterott.com/de/RF-Link-2400bps-Empfaenger-434MHz
Verkabelung erfolgte nach dem Schaltplan: https://www.sparkfun.com/datasheets/RF/KLP_Walkthrough.pdf
Zum Test wird ein Arduino Duemilanove (A) und Arduino UNO (B) ein verwendet:
Der Testaufbau sieht wie folgt aus: Arduino A soll bei Knopfdruck Arduino B die LED anschalten.
Die Kommunikation zwischen den Geräten funktioniert soweit. Nur habe ich das Problem, dass die LED pulsiert und bei Knopfdruck ausgeht. (GIF Animation)
Irgendwie habe ich das Gefühl, dass es sich um die RX/TX Signale in die LED(Pin 8 ) einschleichen, denn wenn ich die Baudrate umstelle pulsiert die LED schneller/langsamer.
Könnt Ihr mir vielleicht weiterhelfen, habe ich einen Fehler gemacht? Anbei der Code:
Sender:
// 26. Maerz 2013 RF 433MHZ SENDER - BamXP
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
Serial.println("Arduino startet...");
// RF Modul Einstellungen
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_set_tx_pin(3);
Serial.println("RF Verbindung gestartet");
// Anschluesse definieren
pinMode(8, INPUT);
digitalWrite(8, HIGH);
}
void loop()
{
char *msg;
if(digitalRead(8) == LOW){
char *msg = "1";
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);}
}
Empfänger:
// 26. Maerz 2013 RF 433MHZ EMPFAENGER - BamXP
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
Serial.println("Arduino startet...");
// RF Modul Einstellungen
vw_setup(2000);
vw_set_rx_pin(3);
vw_rx_start();
Serial.println("RF Verbindung gestartet");
// Anschluesse definieren
pinMode(8, OUTPUT); // LED
}
void loop()
{
// Ausgang AUS
digitalWrite(8, LOW);
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("Empfangen: ");
for (i = 0; i < buflen; i++)
{
Serial.print(buf[i]);
if(buf[i] == '1'){digitalWrite(8, HIGH); }
Serial.print(" ");
}
Serial.println("");
digitalWrite(13, false);
}
}
Der Code stammt aus dem Sparkfun Example http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/General/RFASK_Example_Code.pde
Danke schonmal und einen schönen Abend
Benni