Sterowanie - odbiornik
Jak zaprogramować sterowanie dla naszego jachtu?
5/16/20262 min czytać


Zastanawiasz się jak wykonać odbiornik dla swojego zdalnie sterowanego projektu? Dobrze trafiłeś! W tym blogu opiszę sprawdzone i pewne rozwiązania.
Podobnie jak w przypadku nadajnika, wykorzystujemy moduł NRF24L01 w wersji z dodatkową anteną. Wymaga on więcej mocy natomiast rekompensuje to zwiększonym zasięgiem. W przypadku jachtów zdalnie sterowanych chcemy najczęściej kontrolować ster, grota i foka. Jeśli zdecydujemy się na kontrolę żagli jednym silnikiem. Wtedy potrzebujemy jedynie dwóch servomechanizmów, możemy wykorzystać SG90 lub MG90S w zależności od rozmiaru jachtu. W przypadku znacząco większych konstrukcji należy zaopatrzyć się w odpowiednie silniejsze mechanizmy. W związku z wykorzystaniem odbiornika wyższej mocy, oraz dwóch silników, potrzebna jest również przetwornica DC-DC stabilizująca napięcie na przykład LM2596. Całość koordynowana jest przez mikrokontroler Arduino Nano: https://store.arduino.cc/products/arduino-nano.
W naszym sklepie oferujemy gotowe płytki PCB do montażu wymienionych podzespołów co ułatwi pracę oraz zmniejszy ilość potrzebnego w kadłubie miejsca https://rcsailing.eu/plytka-pcb-jacht.
Możliwe jest zastosowanie dużo tańszych chińskich zamienników Arduino, należy się jednak liczyć z tym, że niektóre przychodzą wadliwe.
Poniżej zamieszczony został kod, który należy wgrać na mikrokontroler aby zapewnić działanie odbiornika. Program działa oczywiście w połączeniu z programem nadajnika opisanym w poprzednim artykule.
Najważniejsze jest:
zamieszczenie bibliotek
poprawne zdefiniowanie pinów CE i CSN
ustawienie tego samego adresu co w nadajniku
wykorzystanie poprawnego typu zmiennych
ustawienie radia w tryb odbiornika "radio.startListening"
W trakcie testowania programu warto jest zacząć od jednej przesyłania jednej zmiennej. Do wejścia nadajnika podłączamy jeden potencjometr, a w kodach programów komentujemy jedną ze zmiennych.
W razie pytań zapraszamy do kontaktu.
#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
Zapraszamy na social media oraz do kontaktu mailowego lub telefonicznego
kontakt
+48 788 619 201
© 2024. All rights reserved.
