Skocz do zawartości

Nadajnik i odbiornik do samochodu RC na module nRF24L01


ak95

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

Link do komentarza
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

Link do komentarza
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 🙂.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.