Sterowanie - nadajnik
Jak zaprogramować sterowanie dla swojego jachtu?
5/11/20262 min read


W RC sailing postawiliśmy na dobrze wszystkim znane Arduino w wersji Nano. Zarówno po stronie pilota-nadajnika jak i jachtu-odbiornika.
Nic nie stoi jednak na przeszkodzie aby zastosować inne mikrokontrolery takie jak ESP32, Raspberry Pico, STM32 i wiele innych.
Aby rozpocząć przygodę z programowaniem zdalnie sterowanych modeli potrzebne nam jest środowisko programistyczne. W naszym przypadku Arduino IDE dostępne do pobrania za darmo ze strony producenta: arduino.cc/en/software
Po otworzeniu programu należy utworzyć nowy szkic, który powinien wyglądać tak jak na zdjęciu tytułowym. Zgodnie z opisami ze zdjęcia w odpowiednie miejsca wpisujemy kod, który chcemy żeby mikroprocesor wykonał raz lub który ma wykonywać się w pętli.
Ponadto, przed "void setup" należy załączyć biblioteki, które chcemy wykorzystać, w naszym przypadku na pewno będzie to biblioteka NRF24L01.h i RF24.h. Zawierają one predefiniowane funkcje i ustawienia związane z wybranym przez nas modułem radiowym.
Na początku trzeba również zdefiniować, które piny mikrokontrolera odpowiadają za jakie sygnały.
W przypadku niżej zamieszczonego kodu definiujemy pin D9 i D10 jako CE i CSN co jest kluczowe w kwestii działania modułu radiowego, dokładniejsze omówienie na blogu poświęconym NRF24L01.
Definiujemy również adres komunikacji między nadajnikiem i odbiornikiem, dowolny ciąg, byleby taki sam po stronie nadajnika i odbiornika.
Definiujemy również dwa wejścia analogowe dzięki którym przetworzymy sygnał z joysticka/potencjometru na użyteczną wartość liczbową aby sterować jachtem.
Podany niżej kod odpowiada za stronę nadajnika, odbiornik został omówiony w następnym artykule.
#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
Zapraszamy na social media oraz do kontaktu mailowego lub telefonicznego
Contact
+48 788 619 201
© 2024. All rights reserved.
