Comunicación inalámbrica a través de 433 MHz con Arduino
FunduinoÚltima actualización el
Daten drahtlos zwischen zwei Arduinos übertragen
Das 433-MHz-Funksender-Modul
1 / 2
Programmcode – 433-MHz-Funksender
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
mySwitch.enableTransmit(10); // Der Sender wird an Pin 10 angeschlossen
}
void loop() {
mySwitch.send(1234, 24); // Der 433-MHz-Sender versendet die Dezimalzahl "1234"
delay(1000); // Eine Sekunde Pause, danach startet der Sketch von vorne
}Das 433-MHz-Funkempfänger-Modul
1 / 2
Programmcode – 433-MHz-Funkempfänger
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup()
{
Serial.begin(9600);
mySwitch.enableReceive(0); // Empfänger ist an Interrupt-Pin "0" - das ist am UNO der Pin 2
}
void loop() {
if (mySwitch.available()) // Wenn ein Code empfangen wird...
{
int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
if (value == 0) // Wenn die empfangenen Daten "0" sind, wird "Unbekannter Code" angezeigt.
{
Serial.println("Unbekannter Code");
}
else // Wenn der empfangene Code brauchbar ist, wird er hier an den Serial Monitor gesendet.
{
Serial.print("Empfangen: ");
Serial.println( value );
}
mySwitch.resetAvailable(); // Hier wird der Empfänger "resettet"
}
}Erweiterung: Signale zwischen zwei Mikrocontrollern übertragen
1 / 2
Programmcode – Funksender mit Taster
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int taster = 7; // Das Wort "taster" steht jetzt für den Wert 7.
int tasterstatus = 0; // Unter dieser Variable wird gespeichert, ob der Taster gedrückt ist oder nicht.
void setup() // Hier beginnt das Setup.
{
mySwitch.enableTransmit(10); // Der Sender wird an Pin 10 angeschlossen
pinMode(taster, INPUT); // Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
}
void loop()
{ // Mit dieser Klammer wird der Loop-Teil geöffnet.
tasterstatus = digitalRead(taster); // Hier wird Pin 7 ausgelesen (Befehl: digitalRead).
if (tasterstatus == HIGH) // Verarbeitung: Wenn der Taster gedrückt ist (das Spannungssignal ist hoch)...
{ // Programmabschnitt des IF-Befehls öffnen.
mySwitch.send(5678, 24); // Der 433-MHz-Sender versendet die Dezimalzahl "5678"
delay(50); // 50 Millisekunden Pause
} // Programmabschnitt des IF-Befehls schließen.
else // ...ansonsten...
{ // Programmabschnitt des else-Befehls öffnen.
mySwitch.send(1234, 24); // Der 433-MHz-Sender versendet die Dezimalzahl "1234"
} // Programmabschnitt des else-Befehls schließen.
} // Mit dieser letzten Klammer wird der Loop-Teil geschlossen.Programmcode – Funkempfänger mit LED
#include <RCSwitch.h>
int LED = 12;
RCSwitch mySwitch = RCSwitch();
void setup()
{
Serial.begin(9600);
mySwitch.enableReceive(0); // Empfänger ist an Interrupt-Pin "0" - das ist am UNO der Pin 2
pinMode(LED, OUTPUT); // Der Pin mit der LED (Pin 12) ist jetzt ein Ausgang.
}
void loop() {
if (mySwitch.available()) // Wenn ein Code empfangen wird...
{
int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
if (value == 0) // Wenn die empfangenen Daten "0" sind, wird "Unbekannter Code" angezeigt.
{
Serial.println("Unbekannter Code");
}
else // Wenn der empfangene Code brauchbar ist, wird er hier an den Serial Monitor gesendet.
{
Serial.print("Empfangen: ");
Serial.println( value );
if (value == 5678) // Verarbeitung: Wenn der Arduino die Zahl "5678" empfängt, dann...
{ // Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LED, HIGH); // ...soll die LED leuchten
delay(500); // und zwar für 0,5 Sekunden (500 Millisekunden).
digitalWrite(LED, LOW); // Danach soll die LED aus sein.
} // Programmabschnitt des IF-Befehls schließen.
}
mySwitch.resetAvailable(); // Hier wird der Empfänger "resettet"
}
}Erweiterung: Messwerte per Funk übertragen
1 / 2
Programmcode – Funksender mit Temperatursensor
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int TMP36 = A0; // Der Sensor wird am analogen Pin A0 angeschlossen. Wir nennen den Pin ab jetzt "TMP36".
int sensorwert; // Erstellen einer Variablen für den Sensorwert.
int temperatur = 0; // Unter der Variablen "temperatur" wird später der Temperaturwert abgespeichert.
void setup() // Hier beginnt das Setup.
{
mySwitch.enableTransmit(10); // Der Sender wird an Pin 10 angeschlossen
}
void loop()
{ // Mit dieser Klammer wird der Loop-Teil geöffnet.
sensorwert = analogRead(TMP36); // Auslesen des Sensorwertes.
temperatur = map(sensorwert, 0, 410, -50, 150); // Umwandeln des Sensorwertes mit Hilfe des "map"-Befehls.
mySwitch.send(temperatur, 24); // Der 433-MHz-Sender versendet die Temperatur als Dezimalzahl.
delay(1000); // Eine Sekunde Pause.
} // Mit dieser letzten Klammer wird der Loop-Teil geschlossen.Programmcode – Funkempfänger mit Warn-LED
#include <RCSwitch.h>
int LED = 12;
RCSwitch mySwitch = RCSwitch();
void setup()
{
Serial.begin(9600);
mySwitch.enableReceive(0); // Empfänger ist an Interrupt-Pin "0" - das ist am UNO der Pin 2
pinMode(LED, OUTPUT); // Der Pin mit der LED (Pin 12) ist jetzt ein Ausgang.
}
void loop() {
if (mySwitch.available()) // Wenn ein Code empfangen wird...
{
int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
Serial.print("Temperatur: ");
Serial.println( value );
if (value >= 25) // Verarbeitung: Wenn die Temperatur 25 °C oder mehr beträgt...
{ // Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LED, HIGH); // ...soll die LED leuchten
} // Programmabschnitt des IF-Befehls schließen.
else // ...ansonsten...
{ // Programmabschnitt des else-Befehls öffnen.
digitalWrite(LED, LOW); // ...soll die LED aus sein.
} // Programmabschnitt des else-Befehls schließen.
mySwitch.resetAvailable(); // Hier wird der Empfänger "resettet"
}
}Calificar la guía