Last Updated on 16. October 2026 by SuffocationLink status: OK
Ich brauchte eine Fernsteuerung und fand dieses interessante Board mit Empfänger für unter 5€. Mal schauen, was es so kann.
Facts
Joystick board
| Description | Worth |
| Arbeitsspannung | 3V – 5,3V |
| Arbeitsstrom | 42mA (max) |
| Controller | ATmega8A |
| Onboard-Sender | RF 315 / 433 MHz |
| Transferrate | 2000 bps |
| Reichweite bei 5V | up to 150m |
| Battery socket | 2.54mm pitch |

Receiver module
RF 315 / 433 MHz (wahrscheinlich RFM83C)
| Description | Worth |
| Betriebsspannung: | 3V – 5.3V |
| Arbeitsstrom | 2 milliamp |
| Arbeitsfrequenz: | 433 MHz |
| Sensitivity | -110 dB |
| Transferrate | 2000 bps |
| Control | VirtualWire Library |
Areas of application
- Remote-controlled toy
- Control unit
Views

OPEN-SMART Remote Control Front 
OPEN-SMART Remote Control Back 
OPEN-SMART Fernbedienung Empfänger Vorderseite 
OPEN-SMART Fernbedienung Empfänger Rückseite
Programming
Libraries
https://www.airspayce.com/mikem/arduino/VirtualWire/Link status: OK
Remote control test
There is a vehicle from OPEN-SMART and the corresponding Program filesLink 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.

Source code 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 Test program code modified again
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.
Problems
Unreliable RF connection
In the beginning, I had the problem that the connection wasn't particularly reliable. Button presses weren't transmitted and the joystick values were very digital.
Finger on the aerial
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.
More 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.
Play in
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)
Conclusion
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.
I had to request the circuit diagram and a test program from the dealer, that is still pending, possibly there will be new information here.
Related Posts
- Pan Tilt with joystickLink status: OK
- RC car with PS2 controllerLink status: OK
- Funduino JOYSTICK V1.ALink status: OK
- Sunfounder nRF24 Remote ControlLink status: OK
- Arduino PS2 Controller Board FundamentalsLink status: OK
Sources
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: Unknown
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: Unknown
| Date | Change | Author |
|---|---|---|
| 16.10.2026 | Beispielcode als Code-Block eingefügt (Einbettung über gist-it.appspot.com funktionierte nicht mehr) | Suffocation |
| 03.10.2026 | Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik Log-Liste eingefügt | Suffocation |
| 29.06.2019 | Post created | Suffocation |
Hello,
I'm not quite clear on your setup yet, do you have a link to the China car? Is it the same FB?
Hello
Stefan
https://de.aliexpress.com/item/32864937005.html?spm=a2g0s.9042311.0.0.27424c4dS5Afaf
I have connected the receiver to my Uno and wanted to transmit a signal with the remote control.
Hi Siegfried, ok that's the same part.
I've unpacked the code and my hardware and tested them again. I've now also uploaded the code with the VirtualWire lib to GitHub:
https://github.com/sfambach/arduino/blob/master/projects/OpenSmartWirelessJoystickTest/
Otherwise, I'd only know trivial stories like:
Cables swapped
Analogue ports start with A0, making A3 the 4th analogue port.
You mustn't touch the aerial on the transmitter, otherwise it won't work (top and bottom). Electrical tape won't help 🙂
Sender powered on, green LED lit.
I am supplying my transmitter with a 3.7V LiPo via the GND/VIN programming pins.
You've surely checked all of that already, otherwise, I unfortunately can't think of anything else.
I had to approve your post from this morning because it contained a link. It's for my own protection, otherwise I get spammed by Russian porn sites ;). I've deleted the second one, I hope that was okay.
Hello
Stefan
Hello Stefan, ok I'll use the code again tomorrow. The cable (it's only a signal cable) is definitely connected to the Arduino. The LED on the joystick is also on. The 3.7v battery is also connected correctly.
My receiver has no display, but I have an oscilloscope and can't detect any reaction on the data line, at least when actuating the joystick.
The Chinese seller also has no idea, which is why I ordered a new joystick.
Siegfried
Hello Stefan, I tried your test on my remote control today, but I'm not getting any reaction on the monitor. I suspect the transmitter isn't working or the chip is faulty.
I bought a car from a Chinese seller with a joystick remote control, and unfortunately, I can't use the remote.
Are there any other testing options?
Yours sincerely