Control - transmitter NRF24L01
Wie programmierst du das Steuersystem der Yacht? Wir haben Arduino Nano und das NRF24L01‑Modul verwendet. Wir teilen den Sendercode für ein RC‑Yachtmodell mit zwei Servomotoren.
5/11/20262 min lesen


Wir bei RC Sailing haben uns für den bekannten Arduino Nano entschieden – sowohl auf der Sender‑/Controller‑Seite als auch auf der Yacht‑/Empfängerseite.
Natürlich spricht nichts dagegen, andere Mikrocontroller wie ESP32, Raspberry Pi Pico, STM32 und viele weitere zu verwenden.
Um mit der Programmierung von ferngesteuerten Modellen zu beginnen, benötigen wir eine Entwicklungsumgebung. In unserem Fall ist das die Arduino IDE, die kostenlos auf der Herstellerseite heruntergeladen werden kann: arduino.cc/en/software/
Nach dem Öffnen des Programms erstellen wir einen neuen Sketch, der so aufgebaut sein sollte wie im Titelbild gezeigt. Entsprechend den Beschreibungen im Bild tragen wir den Code an den richtigen Stellen ein – entweder den Code, der einmalig ausgeführt werden soll, oder den Code, der in einer Schleife laufen soll.
Zusätzlich müssen wir vor void setup die Bibliotheken einbinden, die wir verwenden möchten. In unserem Fall sind das auf jeden Fall die NRF24L01.h‑ und RF24.h‑Bibliotheken. Sie enthalten vordefinierte Funktionen und Einstellungen für das von uns gewählte Funkmodul.
Zu Beginn müssen wir außerdem festlegen, welche Pins des Mikrocontrollers für welche Signale zuständig sind.
Im untenstehenden Code definieren wir die Pins D9 und D10 als CE und CSN, die für den Betrieb des Funkmoduls entscheidend sind. Eine ausführlichere Erklärung findest du im Blog, der dem NRF24L01 gewidmet ist.
Wir definieren außerdem die Kommunikationsadresse zwischen Sender und Empfänger – jeder beliebige String ist möglich, solange er auf beiden Seiten identisch ist.
Zusätzlich legen wir zwei analoge Eingänge fest, mit denen wir das Signal eines Joysticks oder Potentiometers in einen nutzbaren Zahlenwert zur Steuerung der Yacht umwandeln können.
Der folgende Code ist für die Senderseite bestimmt; der Empfänger wird im nächsten Artikel besprochen.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
const byte slaveAddress[5] = "00001";
const byte JoyX = A1;
const byte JoyY = A2;
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
struct Data
{
int16_t x;
int16_t y;
};
Data dataToSend;
void setup() {
Serial.begin(9600);
Serial.println("SimpleTx Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.setRetries(3,5); // delay, count //radio.setRetries(3,5); // delay, count
radio.openWritingPipe(slaveAddress);
radio.stopListening();
}
void loop() {
send();
}
void send()
{
bool rslt;
int16_t Val1=map(analogRead(JoyX),0, 1023, 0, 120);
int16_t Val2=map(analogRead(JoyY),0, 1023, 0, 180);
dataToSend.x = Val1;
dataToSend.y = Val2;
rslt = radio.write( &dataToSend, sizeof(dataToSend) );
Serial.print("Joy X : ");
Serial.println(dataToSend.x);
Serial.print("Joy Y : ");
Serial.println(dataToSend.y);
if (rslt)
{
Serial.println(" Acknowledge received");
}
else
{
Serial.println(" Tx failed");
}
}
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.
