Control - Receiver
Wie programmieren wir das Steuersystem für unsere Yacht?
6/1/20262 min lesen


Fragst du dich, wie man einen Empfänger für ein ferngesteuertes Projekt baut? Dann bist du hier genau richtig. In diesem Artikel beschreibe ich Lösungen, die getestet wurden und zuverlässig funktionieren.
Wie beim Sender verwenden wir das NRF24L01‑Modul mit externer Antenne. Es benötigt zwar mehr Energie, bietet dafür aber eine deutlich größere Reichweite. Bei RC‑Segelbooten möchten wir in der Regel Ruder, Großsegel und Fock steuern. Wenn wir uns für eine Einachs‑Segelsteuerung entscheiden, verwenden wir je nach Größe der Yacht entweder ein SG90‑ oder MG90S‑Servo. Für deutlich größere Modelle sind stärkere Mechanismen erforderlich. Da dieses Setup mehr Energie verbraucht und zwei Servos benötigt werden, ist außerdem ein DC‑DC‑Wandler notwendig, um die Spannung zu regulieren – zum Beispiel ein LM2596. Das gesamte System wird von einem Arduino Nano gesteuert:https://store.arduino.cc/products/arduino-nano.
In unserem Shop bieten wir fertige PCB‑Platten an, mit denen sich diese Komponenten einfach montieren lassen. Das erleichtert den Aufbau und reduziert den Platzbedarf im Rumpf: https://rcsailing.eu/plytka-pcb-jacht.
Es ist auch möglich, deutlich günstigere chinesische Arduino‑kompatible Boards zu verwenden, jedoch sollte man beachten, dass einige davon fehlerhaft sein können.
Unten findest du den Code, der auf den Mikrocontroller geladen werden muss, damit der Empfänger funktioniert. Natürlich arbeitet dieses Programm zusammen mit dem Sender‑Code, der im vorherigen Artikel beschrieben wurde.
Die wichtigsten Punkte sind:
The most important things are:
die Bibliotheken einbinden,
die CE‑ und CSN‑Pins korrekt definieren,
dieselbe Adresse wie im Sender verwenden,
die richtigen Variablentypen nutzen,
den Empfänger in den Empfangsmodus versetzen: radio.startListening.
Beim Testen des Programms lohnt es sich, zunächst nur eine Variable zu übertragen. Schließe einen einzelnen Potentiometer an den Sender an und kommentiere eine der Variablen im Code aus.
Wenn du Fragen hast, kontaktiere uns.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define CE_PIN 9
#define CSN_PIN 10
Servo servo1;
Servo servo2;
const byte thisSlaveAddress[5] = "00001";
RF24 radio(CE_PIN, CSN_PIN);
struct Data{
int16_t x;
int16_t y;
};
Data SERVOS;
bool newData = false;
int16_t xData=0;
int16_t yData=0;
//===========
void setup() {
servo1.attach(2);
servo2.attach(4);
Serial.begin(9600);
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.openReadingPipe(0, thisSlaveAddress);
radio.startListening();
}
//=============
void loop() {
getData();
showData();
}
//==============
void getData() {
if ( radio.available() ) {
radio.read( &SERVOS, sizeof(SERVOS) );
newData = true;
}
}
void showData()
{
if (newData == true)
{
//Serial.print("Data received ");
xData = SERVOS.x;
yData = SERVOS.y;
Serial.println(xData);
Serial.println(yData);
servo1.write(xData);
servo2.write(yData);
newData = false;
}
}
RC sailing
We invite you to connect with us on social media or by email or phone
Contact
+48 788 619 201
© 2024. All rights reserved.
