Skocz do zawartości
ak95

Nadajnik i odbiornik do samochodu RC na module nRF24L01

Pomocna odpowiedź

Mój projekt to nadajnik i odbiornik do np. samochodu RC. Oparty o arduino (w tym przypadku nano), moduł nRF24L01 i sterownik silnika (np. L293). Steruje jednym silnikiem DC oraz jednym serwem. Ma możliwość regulacji zakresu prędkości silnika, jak i zakresu serwa.

Uważam, iż projekt jest bardzo przydatny, gdyż sam zaczynając przygodę z komunikacją radiową na module nRF miałem spore problemy.

W szkicu arduino korzystam z bibliotek RF24 oraz standardowej Servo.

Odbiornik



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

//const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
const byte rxAddr[6] = "00001";


RF24 radio(7, 8); //pin CE i CS

short joystick[2]; 
bool stan12=0;
Servo myservo;  
int pos = 45;
int a=0;



void setup()
{
   myservo.attach(10);  // podlaczamy serwo do pinu 10

 radio.begin();
 radio.openReadingPipe(0,rxAddr);
 radio.startListening();

pinMode(5,OUTPUT); // pin do silnika
pinMode(6,OUTPUT); //pin do silnika
pinMode(9,OUTPUT); // pin PWM silnika
pinMode(10,OUTPUT); //pin do serwa


}
void loop()
{
 if ( radio.available() )
 {

   bool done = false;
   while (!done)
   {

   radio.read( joystick, sizeof(joystick) );

     a=joystick[0];
     pos=joystick[1];
     if(a>129)
     {
       digitalWrite(5,LOW);
       digitalWrite(6,HIGH);
             analogWrite(9,a);
     }

     else if(a<125)
     {       
       digitalWrite(5,HIGH);
       digitalWrite(6,LOW);
       analogWrite(9,255-a);
     }
     else
     {
       digitalWrite(5,LOW);
       digitalWrite(6,LOW);
     }

     myservo.write(pos);

   }
 }
 else
 {    
     Serial.println("No radio available"); delay(1000);
   }

}

Nadajnik



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


//const uint64_t pipe = 0xE8E8F0F0E1LL;
const byte rxAddr[6] = "00001";
RF24 radio(7, 8);

short joystick[2];

void setup()  
{

 radio.begin();
 radio.setRetries(15, 2);
 radio.openWritingPipe(rxAddr);  
 radio.stopListening();

 pinMode(A0,INPUT); //joystick do regulacji predkosci silnika
 pinMode(A1,INPUT); //joystick do regulacji skretu serwa
 pinMode(A2,INPUT); //potencjometr do regulacji zakresu predkosci silnika
 pinMode(A3,INPUT); //potencjometr do regulacji zakresu skretu serwa


}




void loop()
{



 short amax=map(analogRead(A2),0,1023,150,255);
 short posmax=map(analogRead(A3),0,1023,0,30);

 short a=map(analogRead(A0),0,1023,0,amax);
 short pos=map(analogRead(A1),0,1023,30-posmax,60+posmax);


joystick[0]=a;
joystick[1]=pos;

radio.write( joystick, sizeof(joystick) );

}


IMG_20150831_232312.thumb.jpg.177661ba2c8b8993d2947ce334bc678e.jpg

Udostępnij ten post


Link to post
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Jaki zasięg osiągnąłeś?

Ja zrobiłem nadajniczek na nrf wsadziłem do najtańszego pada i też sterowałem różnymi zabawkami. Ale zasięg to 4-5m o ile nic nie przysłoni. Mizeria

Udostępnij ten post


Link to post
Share on other sites

slawko_k, wczoraj zrobiłem podobny projekt z tym, że soft w Bascomie ze strony mcselec

Zasięg jaki uzyskałem w mieszkaniu przeszedł moje oczekiwania. Spokojnie wszystko działa przez 2 ściany żelbetonowe w bloku z sypialni do salonu. I to na modułach z antenami tymi na płytce 🙂 bez jakiejś specjalnej troski o orientację modułów względem siebie. Moduł nadawał na 0dB.

Pytanie czy lutowaliście kondensator na module na pinach zasilania. Trzeba do nich dolutować 4,7uF, ja dolutowałem ceramiczny 10uF bo akurat taki miałem pod ręką. Bez tego kondensatora ponoć są właśnie problemy, ja najpierw go dolutowałem i nie miałem żadnych problemów.

Ja robię dla mojego synka aparaturę na nich. Może jak skończę to wrzucę projekt na forum 🙂.

Udostępnij ten post


Link to post
Share on other sites

Ja korzystałem z jakiejś gotowej biblioteki pod arduino.

Nie ma tam chyba opcji żeby moc wybrać.

Działało to nie wnikałem.

Udostępnij ten post


Link to post
Share on other sites

Witam. Czy mógłbyś wrzucić schemat podłączenia nadajnika??

Nie bardzo rozumiem ta linijkę kodu "bool stan12=0"

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...