Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zdalne sterowanie na arduino + nrf24l01

02 Mar 2016 19:36 2637 10
  • Poziom 15  
    Witam
    Naszło mnie niedawno żeby zrobić zdalne sterowanie z użyciem arduino. Założenia jak najwięcej kanałów i zasięg ok 50m. Sterowanie za pomocą 3 joyistyki, kilka przełączników i 2 potencjometr.
    No to tak z założenia 2.4ghz. Moduł nadawczy miałby być z arduino nano/uno klony i nrf24l01, a moduł odbiorczy to arduino nano/pro mini klon i znowu nrf24l01. Problem pojawił się przy programowaniu. Nie wiem jak napisać do tego program do odbierania i przetwarzania sygnału.
  • BotlandBotland
  • Poziom 25  
    A konkretnie to z czym masz problem bo po zainstalowaniu biblioteki masz przykłady które powinny być pomocne.
  • BotlandBotland
  • Poziom 9  
    Wydaje mi się ze najlepszym rozwiązaniem jest zrobienie własnego formatu "ramki" czyli wysyłanie stringa z jednego nrf do drugiego dekodowanie i działanie według parametrów.
    Np : 512_512_512_999_999
  • Poziom 15  
    ostatnio poprosiłem ,,kolegę'' żeby mi wysłał swój pogram do odbiornika i nadajnika na nrf24l01 chyba na 3 kanały. Zaraz go wstawię jak się dowiem jak.

    Dodano po 8 [minuty]:

    Nadajnik




    Code:


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

    #define CE_PIN   9
    #define CSN_PIN 10
    #define JOYSTICK_X A0
    #define JOYSTICK_Y A1
    #define JOYSTICK_Z A2
    #define BUTTON_1 6
    #define BUTTON_2 7
    #define BUTTON_3 8



    const uint64_t pipe = 0xE8E8F0F0E1LL;



    RF24 radio(CE_PIN, CSN_PIN);

    int joystick[6]; 
    //int button[3];


    void setup() 
    {
      Serial.begin(9600);
      radio.begin();
      radio.setDataRate(RF24_250KBPS);
      radio.openWritingPipe(pipe);
      radio.startListening();

    }


    void loop() 
    {
      joystick[0] = analogRead(JOYSTICK_X);
      joystick[1] = analogRead(JOYSTICK_Y);
      joystick[2] = analogRead(JOYSTICK_Z);
      joystick[3] = digitalRead(BUTTON_1);
      joystick[4] = digitalRead(BUTTON_2);
      joystick[5] = digitalRead(BUTTON_3);
     
      radio.stopListening();
     bool ok  = radio.write( joystick, sizeof(joystick) );
     delay(1);
    // bool ok1 = radio.write( button, sizeof(button) );
      radio.startListening();
     
     

    }
  • Poziom 9  
    Nie wiem po czym wiem po czym wnioskujesz ze używane są 3 kanały ??
  • Poziom 13  
    Czy macie może gotowy kod do nadajnika i odbiornika 2 kanałowego włącz/wyłącz ?
  • Poziom 15  
    Mam 3 kanałowy pwm tylko ale mogę napisać.
  • Poziom 13  
    A dużo to roboty byłoby ? Jeśli możesz to wrzuć na forum z opisem wyjść i wejść, bo dużo ludzi potrzebuje czegoś takiego.
    Może być nawet więcej kanałów.
  • Poziom 11  
    Mam działający kod na NRF24L01+ pod STM32F0/F4 i NXP LPC-1114, jakbyś potrzebował go to daj znać
  • Poziom 23  
    To udostepnij na F0 bo ciekaw jestem jak to wyglada, moze odratuje wtedy auto zdalnie sterowane dla dzieciakow ;)

    Ten kod od kolegi rcnitros jest ok i pozwala na wyslanie 6 kanalow.
    Mozna z nich wszystkich poprostu nie korzystac.
    Moze kod odbiornika tez kolega udostepni?