Last Updated on 16. Oktober 2026 by sfambachLink-Status: OK
Ich brauchte eine Fernsteuerung und fand dieses interessante Board mit Empfänger für unter 5€. Mal schauen, was es so kann.
Fakten
Joystickboard
| Beschreibung | Wert |
| Arbeitsspannung | 3V – 5,3V |
| Arbeitsstrom | 42mA (max) |
| Controller | ATmega8A |
| Onboard-Sender | RF 315 / 433 MHz |
| Transferrate | 2000bps |
| Reichweite bei 5V | bis zu 150m |
| Akku-Buchse | 2,54mm pitch |

Empfangsmodul
RF 315 / 433 MHz (wahrscheinlich RFM83C)
| Beschreibung | Wert |
| Betriebsspannung: | 3V – 5.3V |
| Arbeitsstrom | 2mA |
| Arbeitsfrequenz: | 433 MHz |
| Empfindlichkeit | -110db |
| Transferrate | 2000bps |
| Ansteuerung | VirtualWire Bibliothek |
Anwendungsbereiche
- Ferngesteuertes Spielzeug
- Steuereinheit
Ansichten

OPEN-SMART Fernbedienung Vorderseite 
OPEN-SMART Fernbedienung Rückseite 
OPEN-SMART Fernbedienung Empfänger Vorderseite 
OPEN-SMART Fernbedienung Empfänger Rückseite
Programmierung
Bibliotheken
https://www.airspayce.com/mikem/arduino/VirtualWire/Link-Status: OK
Fernsteuerungstest
Es gibt von OPEN-SMART ein Fahrzeug und die entsprechenden ProgrammdateienLink-Status: OK dafür. Die Codestellen für den Empfänger habe ich ihnen entnommen und die Fernsteuerung unangetastet gelassen. Der Code geht davon aus, dass der Empfänger am Port A3 angeschlossen ist und über den Arduino mit Strom versorgt wird.

Quellcode OpenSmartWirelessJoystickTest.ino (GitHubLink-Status: OK)
/** Test the Open-Smart Wireless Joystick
* Receiver program
* Autor: S. Fambach
* Visit if you want: http://www.fambach.net
* GPL v2
*/
#include <String.h>
#include "VirtualWire.h"
int RF_RX_PIN = A3;
void(* resetFunc) (void) = 0; //software reset when the RF receiver can not respond
const char* TEMPLATE_OUTPUT = "RAW : %s -> X: %4.0d | Y: %4.0d | Button: %s";
char outputText[50];
//Remote control code macro
#define BUTTON_UP 1
#define BUTTON_RIGHT 2
#define BUTTON_DOWN 3
#define BUTTON_LEFT 4
#define BUTTON_JOY 8
#define XY_TOLERANCE 30
#define X0 510 //Initial value of X-asix of the Joystick
#define Y0 510 //Initial value of Y-asix of the Joystick
#define SPEED_STEPS 20
uint8_t speed0 = 100;//Initial value of speed
#define BIN1 3
#define BIN2 5
#define PWMB 6
#define AIN1 9
#define AIN2 10
#define PWMA 11
uint8_t buf[VW_MAX_MESSAGE_LEN]; // buffer array for data recieve over serial port
uint8_t buflen = VW_MAX_MESSAGE_LEN;
void setup() {
Serial.begin(115200);
Serial.println("Setup A3 Pin for Transmission");
vw_set_rx_pin(RF_RX_PIN); // Setup receive pin.
Serial.println("Setup Transmission speed to 2000");
vw_setup(2000); // Transmission speed in bits per second.
Serial.println("Start receiving");
vw_rx_start(); // Start the PLL receiver.
}
uint8_t command;
#define CAR_STOP 0
#define CAR_FORWARD 1
#define CAR_BACK 2
uint8_t car_status = CAR_STOP;
uint8_t new_status = car_status;
int msToWait = 2000;
int storedTime = millis() + msToWait;
void loop() {
if (vw_get_message(buf, &buflen)) // non-blocking I/O
{
command = decode();
Serial.print("\n");
storedTime = millis() + msToWait; // reset timeout
}
if(storedTime < millis() ){
Serial.println("Nothing received since 2 Seconds");
storedTime = millis() + msToWait; // reset timeout
}
}
uint8_t decode()
{
String raw;
int x, y;
int xh, xl, yh, yl;
uint8_t z;
uint8_t button;
uint8_t i = 0;
// extract raw data
raw.reserve(10);
for(int i = 0; i < buflen ; i++){
raw += String(buf[i],HEX);
raw += String(" ");
}
if ((buf[0] != 0x7E) || (buf[4] != 0xEF))
{
resetFunc();//software reset
return 0;
}
// split data
x = buf[1] << 2 ;
y = buf[2] << 2 ;
button = buf[3] ;
// get special buttons
String butText = "";
switch (button)
{
case 1: command = BUTTON_UP; butText="K1";break;
case 2: command = BUTTON_RIGHT; butText="K2";break;
case 3: command = BUTTON_DOWN;butText="K3";break;
case 4: command = BUTTON_LEFT; butText="K4";break;
case 8: command = BUTTON_JOY; butText="Joy";break;
default: butText = button;
}
sprintf(outputText, TEMPLATE_OUTPUT , raw.c_str(),x,y,butText.c_str());
Serial.println(outputText);
clearBufferArray();
return command;
}
void clearBufferArray() // function to clear buffer array
{
for (int i = 0; i < VW_MAX_MESSAGE_LEN; i++)
{
buf[i] = 0; // clear all index of array with 0
}
}

21.11.2021 Code des Testprogramms nochmal modifiziert
Es werden jetzt bei der Initialisierung Ausgaben gemacht, was gerade ansteht. Auch wird jetzt alle 2 Sekunden, wenn keine Nachricht empfangen wurde, ein Vermerk in die Console geschrieben.
Probleme
RF Verbindung unzuverlässig
Am Anfang hatte ich das Problem, dass die Verbindung nicht besonders zuverlässig war. Knopfdrücke wurden nicht übermittelt und die Werte des Joysticks waren sehr digital.
Finger auf der Antenne
Das Hauptproblem ist, die Fernbedienung ist so gebaut, dass man automatisch auf die Antenne greift, wenn man sie anfasst. Die Antenne habe ich mit Tesa abgeklebt, brachte aber nicht viel. Das Beste ist, die Berührungen zu vermeiden. Evtl. könnte man hier überlegen, eine externe Antenne anzubringen.
Mehr Power
Ich hatte die Fernsteuerung vorher mit 3,7V betrieben (LIPO). Testweise habe ich sie mal über einen Arduino mit 5V versorgt. Die Übertragung scheint danach besser zu sein.
Einspielen
Es scheint so, als müssten Sender und Empfänger sich immer erst etwas einpegeln. So ist nach dem Start die Verbindung schlecht, wird aber immer besser. (Hier bin ich mir nicht mehr so sicher, seitdem ich die Finger von der Antenne lasse, scheint das kein Problem mehr zu sein)
Fazit
Eine sehr günstige Fernbedienung mit allem, was man braucht. Ein zusätzlicher Vorteil ist, dass man nur einen Pin benötigt, um den Empfänger zu betreiben.
Die Antenne ist nicht sonderlich gut angebracht, auch wäre hier eine externe sicherlich besser. Ein Spannungsregler, um die Fernbedienung auch mit 7,2 Volt betreiben zu können, wäre praktisch, da 5 Volt LIPOs nicht die Regel sind. Mit 4 AA Akkus komme ich jedoch auch so hin.
Den Schaltplan und ein Testprogramm musste ich beim Händler anfordern, das steht noch aus, evtl. gibt es hier noch neue Informationen.
Verwandte Beiträge
- Pan Tilt mit JoystickLink-Status: OK
- RC Auto mit PS2 ControllerLink-Status: OK
- Funduino JOYSTICK V1.ALink-Status: OK
- Sunfounder nRF24 FernbedienungLink-Status: Unbekannt
- Arduino PS2 Controller Platine GrundlagenLink-Status: OK
Quellen
https://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/Link-Status: OK
http://stefanfrings.de/avr_tools/Link-Status: OK
http://www.openplatform.cc/Link-Status: Unbekannt
https://www.airspayce.com/mikem/arduino/VirtualWire/Link-Status: OK
AliExpress LinkLink-Status: OK
https://drive.google.com/drive/folders/165f_72hYv0BfzqsM-8aNZV_CUyNK8v6mLink-Status: OK
https://drive.google.com/drive/folders/1erXeRAHAdsv7dMubP0oy1Bkq4knRVDn3Link-Status: OK
https://drive.google.com/drive/folders/0B6uNNXJ2z4CxcnZMSm5HSDNXRUU?resourcekey=0-wW8HTtbuL_QSBysGdtgFEQLink-Status: OK
| Datum | Änderung | Autor |
|---|---|---|
| 16.10.2026 | Beispielcode als Code-Block eingefügt (Einbettung über gist-it.appspot.com funktionierte nicht mehr) | sfambach |
| 03.10.2026 | Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik Log-Liste eingefügt | sfambach |
| 29.06.2019 | Beitrag erstellt | sfambach |
Moin,
mir ist dein Versuchsaufbau noch nicht ganz klar, haste einen link zum Chinaauto. Ist das die gleiche FB?
Gruß
Stefan
https://de.aliexpress.com/item/32864937005.html?spm=a2g0s.9042311.0.0.27424c4dS5Afaf
Ich habe den Empfänger mit meinem Uno verbunden und wollte mit der FB ein Signal übertragen
Moin Siegfried, ok das ist ja das gleich Teil.
Ich habe mal den Code und meine Hardware ausgepackt und auch nochmal getestet. Habe den Code nun auch mit der VirtualWire Lib in github hochgeladen:
https://github.com/sfambach/arduino/blob/master/projects/OpenSmartWirelessJoystickTest/
Sonst wüsste ich nur noch triviale Geschichten wie:
Kabel vertauscht
Analoge ports fangen mit A0 an, A3 ist somit der 4. Analoge Port.
Die Antenne am Sender darf man nicht berühren sonst gehts nicht (oben und unten). Isolierband hilft nicht 🙂
Sender eingeschaltet grüne LED leuchtet.
Ich versorge meinen Sender mit einem 3,7V Lipo oben an den Programmierpins gnd/vin
Das hast du sicherlich schon alles überprüft sonst fällt mir aber leider nichts mehr ein.
Deinen Post von heute morgen musste ich erst freigeben weil ein Link enthalten war, ist zu meinem schutz sonst werde ich zugespamt von Russischen Pornoseiten ;). Den zweiten habe ich mal gelöscht ich hoffe das war ok.
Gruß
Stefan
Hallo Stefan, ok ich werde morgen noch einmal de Code nutzen. Kabel ( es ist ja nur ein Signalkabel) hab ich sicher an den Arduino angeschlossen. Die led auf dem Joystick ist auch an. Akku 3,7 v auch richtig angeschlossen.
Mein Empfänger hat keine Anzeige, aber ich habe ein Oszi und kann zumindest beim betätigen des Joystick keine Reaktion an der Datenleitung feststellen.
Der chinaverkäufer hat auch keine Idee und deshalb hab ich mir noch einen neuen Joystick bestellt.
Siegfried
Hallo Stefan, habe Deinen Test heute bei meiner Fernsteuerung nachgestellt, aber ich bekomme keine Reaktion auf den Monitor. Ich vermute, der Sender arbeitet nicht bzw. der Chip ist defekt.
Ich habe mir vom Chinamann so ein Auto mit Joystickfernbedienung gekauft und kann leider die FB nicht nutzen.
Gibt es noch andere Testmöglichkeiten?
Mit freundlichen Grüßen