Пульт управления RC лодкой с двухканальной связью NRF24L01- Chat GPT

Передатчик:

// SimpleTxAckPayload - the master or the transmitter 06.02.2024

#include <Adafruit_GFX.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// ILI9341
#include <Adafruit_ILI9341.h> // Hardware-specific library for ILI9341 240x320
#include <Adafruit_ST7789.h>  // Hardware-specific library for ST7789

// Some ready-made 16-bit ('565') color settings:
#define ST77XX_BLACK 0x0000       ///<   0,   0,   0
#define ST77XX_NAVY 0x000F        ///<   0,   0, 123
#define ST77XX_DARKGREEN 0x03E0   ///<   0, 125,   0
#define ST77XX_DARKCYAN 0x03EF    ///<   0, 125, 123
#define ST77XX_MAROON 0x7800      ///< 123,   0,   0
#define ST77XX_PURPLE 0x780F      ///< 123,   0, 123
#define ST77XX_OLIVE 0x7BE0       ///< 123, 125,   0
#define ST77XX_LIGHTGREY 0xC618   ///< 198, 195, 198
#define ST77XX_DARKGREY 0x7BEF    ///< 123, 125, 123
#define ST77XX_BLUE 0x001F        ///<   0,   0, 255
#define ST77XX_GREEN 0x07E0       ///<   0, 255,   0
#define ST77XX_CYAN 0x07FF        ///<   0, 255, 255
#define ST77XX_RED 0xF800         ///< 255,   0,   0
#define ST77XX_MAGENTA 0xF81F     ///< 255,   0, 255
#define ST77XX_YELLOW 0xFFE0      ///< 255, 255,   0
#define ST77XX_WHITE 0xFFFF       ///< 255, 255, 255
#define ST77XX_ORANGE 0xFD20      ///< 255, 165,   0
#define ST77XX_GREENYELLOW 0xAFE5 ///< 173, 255,  41
#define ST77XX_PINK 0xFC18        ///< 255, 130, 198

#if ( defined(ARDUINO_NANO_RP2040_CONNECT) || defined(ARDUINO_RASPBERRY_PI_PICO) || defined(ARDUINO_ADAFRUIT_FEATHER_RP2040) || \
      defined(ARDUINO_GENERIC_RP2040) ||defined(ARDUINO_RASPBERRY_PI_PICO_W) )

// замаркировать если используем наоборот
#define SPI01             // Дисплей на SPIO1, NRF24L01 на SPI0 (выбор между SPI0 и SPI1)
#if defined(SPI01)        // для RP2040 SPI1
#define TFT_CS        13  // GP13 - CS              (hard - 13)
#define TFT_RST       10  // GP14 - RESET           (10)  
#define TFT_DC        11  // GP15 - A0              (11)  
#define TFT_MISO      12  // GP12 - MISO (MISO, RX) (hard - 12)
#define TFT_MOSI      15  // GP11 - SDA  (MOSI, TX) (hard - 15)
#define TFT_SCLK      14  // GP10 - SCK             (hard - 14)
#else                     // для RP2040 SPI0
#define TFT_CS        17  //5   // GP5 - CS               (hard - 17)
#define TFT_RST       20  //6   // GP6 - RESET
#define TFT_DC        21  //7   // GP7 - A0
#define TFT_MISO      16  //4   // GP4 - MISO (MISO, RX)  (hard - 16)
#define TFT_MOSI      19  //3   // GP3 - SDA  (MOSI, TX)  (hard - 19)
#define TFT_SCLK      18  //2   // GP2 - SCK              (hard - 18)
#endif



// SPI definitions and macros то NRF24L01
#if defined(SPI01)
#define CE_pin    21 //7
#define RST_pin   20 // не используется
#define CS_pin    17 //5
#define MOSI_pin  19 //3
#define MISO_pin  16 //4
#define SCK_pin   18 //2
#else
#define CE_pin    11 //15
#define RST_pin   10 // не используется
#define CS_pin    13
#define MOSI_pin  15 //11
#define MISO_pin  12
#define SCK_pin   14 //10
#endif
#include "api/HardwareSPI.h"
#endif

//hard SPI01 для RP2040
Adafruit_ILI9341 tft = Adafruit_ILI9341(&SPI1, TFT_DC, TFT_CS, TFT_RST); //via hard SPI1 old LIB


const byte SlaveAddress[5] = {'R', 'x', 'A', 'A', 'A'};

RF24 radio(CE_pin, CS_pin);

char dataToSend[10] = "Message 0";
char txNum = '0';
int ackData[2] = {-1, -1}; // to hold the two values coming from the slave
bool newData = false;

unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 1000; // send once per second

//===============

void setup() {

    Serial.begin(115200);
    delay(5000);
    Serial.println(F("Source File /mnt/sdb1/SGT-Prog/Arduino/ForumDemos/nRF24Tutorial/SimpleTxAckPayload.ino"));
    Serial.println("SimpleTxAckPayload Starting");

    radio.begin();
    radio.setDataRate( RF24_250KBPS );

    radio.enableAckPayload();

    radio.setRetries(5,5); // delay, count
                           // 5 gives a 1500 µsec delay which is needed for a 32 byte ackPayload
    radio.openWritingPipe(SlaveAddress);
}

//=============

void loop() {

    currentMillis = millis();
    if (currentMillis - prevMillis >= txIntervalMillis) {
        send();
    }
    showData();
}

//================

void send() {

    bool rslt;
    rslt = radio.write( &dataToSend, sizeof(dataToSend) );
        // Always use sizeof() as it gives the size as the number of bytes.
        // For example if dataToSend was an int sizeof() would correctly return 2

    Serial.print("Data Sent ");
    Serial.print(dataToSend);
    if (rslt) {
        if ( radio.isAckPayloadAvailable() ) {
            radio.read(&ackData, sizeof(ackData));
            newData = true;
        }
        else {
            Serial.println("  Acknowledge but no data ");
        }
        updateMessage();
    }
    else {
        Serial.println("  Tx failed");
    }

    prevMillis = millis();
 }


//=================

void showData() {
    if (newData == true) {
        Serial.print("  Acknowledge data ");
        Serial.print(ackData[0]);
        Serial.print(", ");
        Serial.println(ackData[1]);
        Serial.println();
        newData = false;
    }
}

//================

void updateMessage() {
        // so you can see that new data is being sent
    txNum += 1;
    if (txNum > '9') {
        txNum = '0';
    }
    dataToSend[8] = txNum;
}

RP2040, модули за три копейки, как-то всё таки работает, значит дело в модулях?

Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Acknowledge data 108, -4001

Data Sent Message 2  Acknowledge data 107, -4002

Data Sent Message 3  Tx failed
Data Sent Message 3  Acknowledge data 106, -4003

Data Sent Message 4  Tx failed
Data Sent Message 4  Tx failed
Data Sent Message 4  Tx failed
Data Sent Message 4  Acknowledge data 104, -4005

Data Sent Message 5  Acknowledge data 103, -4006

Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Tx failed
Data Sent Message 6  Acknowledge data 102, -4007

Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Tx failed
Data Sent Message 7  Acknowledge data 101, -4008

Data Sent Message 8  Tx failed
Data Sent Message 8  Acknowledge data 100, -4009

Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Tx failed
Data Sent Message 9  Acknowledge data 104, -4005

Data Sent Message 0  Tx failed
Data Sent Message 0  Acknowledge data 103, -4006

Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed
Data Sent Message 1  Tx failed

нашёл расположение антенн одна относительно другой, при разносе пакеты не пропадают, модули разныеЮ на одном антенна на печатной плате, на другом штыревая, видимо тут собака порылась…

Data Sent Message 7  Acknowledge data 101, -4008

Data Sent Message 8  Tx failed
Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Acknowledge data 102, -4007

Data Sent Message 6  Acknowledge data 101, -4008

Data Sent Message 7  Acknowledge data 100, -4009

Data Sent Message 8  Acknowledge data 109, -4000

Data Sent Message 9  Acknowledge data 108, -4001

Data Sent Message 0  Acknowledge data 107, -4002

Data Sent Message 1  Acknowledge data 106, -4003

Data Sent Message 2  Acknowledge data 105, -4004

Data Sent Message 3  Acknowledge data 104, -4005

Data Sent Message 4  Acknowledge data 103, -4006

Data Sent Message 5  Tx failed
Data Sent Message 5  Tx failed
Data Sent Message 5  Tx failed
Data Sent Message 5  Tx faile

Отличная статья о модулях RC 430 мегагерц пусть повисит тут