برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

داده هایی در مورد برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

تبلیغات
آخرین نظرات

راه اندازی ماژول وایرلس nRF24L01 و سروموتور با اردوینو

ShahBaz | سه شنبه, ۲۷ مرداد ۱۳۹۴، ۱۱:۵۶ ق.ظ

 

 

 

دانلود آموزش فارسی  راه اندازی ماژول وایرلس NRF24L01

+کدهای گیرنده و فرستنده+کتابخانه+پاورپوینت توضیحات و شماتیک 

در قالب یک پروژه کاملا عملی

 
 
y...es posible controlar 4 servos con potenciometros con este modulo.... yo no puedo hacerlo ya realize los codigos de TX y RX y solo funciona para dos!!! tal vez mi codigo este malo... alguien podria ayudarme a solucionarlo? gracias dejo los dos codigod para que los vean.

TX 

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

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int potpin_1 = A0; 
int val_1; 
int potpin_2 = A1; 
int val_2;
int potpin_3= A2;
int val_3;
int potpin_4= A3;
int val_4;

void setup(void)
{
radio.begin();
radio.openWritingPipe(pipe); 
Serial.begin(9600);
}
void loop() 
{
val_1 = analogRead(potpin_1);
val_1 = map(val_1, 0, 1023, 0, 127);
msg[0] = val_1;
radio.write(msg, 1);
Serial.print("Valor Val_1:");
Serial.println(val_1);
delay(300);

val_2 = analogRead(potpin_2);
val_2 = map(val_2, 0, 1023, 128, 255);
msg[0] = val_2;
radio.write(msg, 1);
Serial.print("Valor Val_2:");
Serial.println(val_2);
delay(300);

val_3 = analogRead(potpin_3);
val_3 = map(val_3, 0, 1023, 0, 127);
msg[0] = val_3;
radio.write(msg, 1);
Serial.print("Valor Val_3:");
Serial.println(val_3);
delay(300);

val_4 = analogRead(potpin_4);
val_4 = map(val_4, 0, 1023, 0, 127);
msg[0] = val_4;
radio.write(msg, 1);
Serial.print("Valor Val_4:");
Serial.println(val_4);
delay(300);
}



RX

#include <SPI.h>
#include <RH_RF24.h> 
 
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int data; 
int pos1;
int pos2;
int pos3;
int pos4;
void setup()
{
servo1.attach(3); 
servo2.attach(7);
servo3.attach(5);
servo4.attach(6);
radio.begin();
radio.openReadingPipe(1,pipe); 
radio.startListening();
}
void loop()
{
if (radio.available())radio.read(msg, 1);
if (msg[0] <128 && msg[0] >-1)data = msg[0], pos1 = map(data, 10, 254, 7, 177),servo1.write(pos1);
if (msg[0] >127 && msg[0] <255)data = msg[0], pos2 = map(data, 10, 254, 9, 177),servo2.write(pos2);
if (msg[0] >127 && msg[0] <255)data = msg[0], pos3 = map(data, 10, 254, 9, 177),servo3.write(pos3);
if (msg[0] >127 && msg[0] <255)data = msg[0], pos4 = map(data, 10, 254, 9, 177),servo4.write(pos4);
}
 



 

nRF24L01 2.4GHz Radio/Wireless Transceivers How-To


Having two or more Arduinos be able to communicate with each other wirelessly over a distance opens lots of possibilities:
  • Remote sensors for temperature, pressure, alarms, much more
  • Robot control and monitoring from 50 feet to 2000 feet distances
  • Remote control and monitoring of nearby or neighborhood buildings
  • Autonomous vehicles of all kinds

These are a series of 2.4 GHz Radio modules that are all based on the Nordic Semiconductor nRF24L01+ chip. (Details) The Nordic nRF24L01+ integrates a complete 2.4GHz RF transceiver, RF synthesizer, and baseband logic including the Enhanced ShockBurst™ hardware protocol accelerator supporting a high-speed SPI interface for the application controller. The low-power short-range (200 feet or so)Transceiver is available on a board with Arduino interface and built-in Antenna for less than $3! See it here.

See: EXAMPLE SOFTWARE SKETCHES AT END OF PAGE:
See: NEW EXAMPLE: Radio link transmitting Joystick positions to a receive unit controlling X,Y Servos that follow the remote Joystick. Uses the RadioHead Library.
 

NOTE! Power Problems:

Many users have had trouble getting the nRF24L01 modules to work. Many times the problem is that the 3.3V Power to the module does not have enough current capability, or current surges cause problems. Here are suggestions:
  • Connect a .3.3 uF to 10 uF (MicroFarad) capacitor directly on the module from +3.3V to Gnd (Watch + and - !) [Some users say 10 uF or more..]
    • A separate 3.3V power supply (Maybe this one?)
    • A YourDuinoRobo1 Arduino compatible, which has an added 3.3V regulator (But maybe add a .1 uF capacitor on the radio module).
  • This is especially important if you are connecting the module with jumper wires.
  • If you design a printed circuit board that the module plugs into, add .1uf and 10uf capacitors close to the GND and 3.3V pins.
This is particularly noticeable when 3.3V power comes from a MEGA, Nano etc. that has only 50 ma of 3.3V power available. Newer boards like the YourDuinoRobo1 have 350 ma or more available and can run the high-power modules directly.
 

Range??

Range is very dependent on the situation and is much more with clear line of sight outdoors than indoors with effects of walls and materials. The usual distance quoted by different suppliers for the low-power version module with the single chip is 200 Feet or 100 Meters. This is for open space between units operating at 250KHz. Indoors the range will be less due to walls etc...

We suggest you test two units at your actual locations before making a decision. There are units with an Antenna Preamplifier for the receiver and transmitter power amplifier and external antenna. The range between that type unit and several low-power units will be better than between two low-power units. Every situation is a little different and difficult to get an exact number without actual tests.

Link to nRF24L01+ Data Sheet. You don't have to, but if you want to understand more about what you can do with this "little" radio, download the data sheet. In particular you may want to read pages 7-8-9 ( For Overview and Features), and page 39 (MultiCeiver, which allows 6 Arduinos to talk to a Primary Arduino in an organized manner). Fortunately the board-level products we have take care of many of the physical and electrical details and Antenna Impedance Matching etc., and this library takes care of lots of register initialization and operational details.

There are additional modules which add Transmitter power amplifiers and Receiver preamplifiers for longer distances.. up to 1 Km (3000 feet). See them all here. These modules use an external antenna which can be a simple directly-attached one or a cable-connected antenna with more gain or directivity. Here's what some of these look like:
nRF24L01-3.jpgnRF24L01-4.jpg

 

دانلود آموزش فارسی  راه اندازی ماژول وایرلس NRF24L01

+کدهای گیرنده و فرستنده+کتابخانه+پاورپوینت توضیحات و شماتیک 

در قالب یک پروژه کاملا عملی

 


On the left is the low-power version, with it's built-in zig-zag antenna. On the right you can see the pins sticking down (up in this photo) that connect to Arduino. Later we will show the pinout.

nRF24L01-LN-PA-2.jpgnRF24L01-LN-PA-1.jpg
Above is the version with Transmit Power amplifier and Receive Preamplifier. Our low-cost antenna is on the unit shown on the right. The same 8 pins connect to Arduino and the same software is used.

Here's a link to a Home-Brew antenna design:

These transceivers use the 2.4 GHz unlicensed band like many WiFi routers, some cordless phones etc.

Transceivers like these both send and receive data in 'packets' of several bytes at a time. There is built-in error correction and resending, and it is possible to have one unit communicate with up to 6 other similar units at the same time.

These amazing low-cost units have a lot of internal complexity but some talented people have written Arduino libraries that make them easy to us. We have other pages that show examples and point to the free software libraries you may need. They all use the same pinout as shown in the following diagram, which is a TOP VIEW (Correction!):
24L01Pinout-800.jpg

NRF24L012_BottomView.jpg
BOTTOM VIEW
Here's details of the Pinout and connections to Arduino (updated):

Signal

RF Module

COLOR

Arduino pin for

RF24 Library

Arduino pin for

Mirf Library

MEGA2560 pin

RF24 Library

Arduino Pin for

RH_NRF24

RadioHead Library

MEGA2560 Pin for

RH_NRF24

RadioHead Library

GND

1

Brown

GND *

GND

GND *

GND *

GND *

VCC

2

Red

3.3V *

3.3V

3.3V *

3.3V *

3.3V *

CE

3

Orange

9

8

9

8

8

CSN

4

Yellow

10

7

53

10

53

SCK

5

Green

13

13

52

13

52

MOSI

6

Blue

11

11

51

11

51

MISO

7

Violet

12

12

50

12

50

IRQ

8

Gray

2 *

 

per library

N/C

N/C

 
  • NOTE!! Most * problems with intermittent operation are because of electrical noise on the 3.3V Power supply. The MEGA is more of a problem with this. Solution: ADD bypass capacitors across GND and 3.3V ON the radio modules. One user said, "Just Solder a 100nF ceramic cap across the gnd and 3.3v pins direct on the nrf24l01+ modules!" Some have used a 1uF to 10uF capacitor.
  • NOTE: Pin 8 IRQ is Unused by most software, but the RF24 library has an example that utilizes it.

The COLOR is for optional color-coded flat cable such as THIS. We'll add some photos soon showing easiest ways to cable these...

NOTE: These units VCC connection must go to 3.3V not 5.0V, although the Arduino itself may run at 5.0V and the signals will be OK. The NRF24L01+ IC is a 3.3V device, but its I/O pins are 5 V tolerant , which makes it easier to interface to Arduino/YourDuino.
Arduino UNO and earlier versions have a 3.3V output that can run the low-power version of these modules (See Power Problems at the top of this page!), but the high-power versions must have a separate 3.3V supply. The YourDuinoRobo1 has a higher power 3.3V regulator and can be used to run the high-power Power Amplifier type module without a separate 3.3V regulator.
 

nRF24L01 SOFTWARE AND LIBRARIES:


We will show an example of transmit and receive software below, and there are many examples on the RF24 Library download page. You will need a library of software to run the nRF24L01 radios. There are lots of details but you can ignore many of them that the library will take care of.

Get Maniacbug's excellent RF24 Library:
Download it HERE: (Click "Download ZIP" on the lower right of the page)
Once you have downloaded the ZIP, you should see a folder called RF24-master.ZIP. Change the name of this file to just RF24.ZIP. Double click on the ZIP and you should see a non-ZIP folder also called 
RF24-master. Rename this to just RF24 as well.

Then see our page about installing libraries HERE:
When you have the library installed, you can run the examples below.
 

 

دانلود آموزش فارسی  راه اندازی ماژول وایرلس NRF24L01

+کدهای گیرنده و فرستنده+کتابخانه+پاورپوینت توضیحات و شماتیک 

در قالب یک پروژه کاملا عملی

 

More Information on these pages:

RF24 Library and Examples: Many good details and more features like error correction and Networking.
RF24 Network System information: A many-node network under development
ManiacBug's Blog entry and discussion of the Network
 

RadioHead: A very full-featured Library with support for may different radios, not just nRF24L01:

http://www.airspayce.com/mikem/arduino/RadioHead/index.html

Mirf Library Example: A simpler demonstration



 

EXAMPLE ARDUINO SKETCHES:


Example: Transmit the position of a Joystick X and Y with one nRF24L01 to another nRF24L01 that will receive and display the Joystick position.


There are two sketches that you can cut and paste into a blank Arduino IDE windows and then save. Upload one to the Arduino that has an nRF24L01 connected, and the joystick or Potentiometers connected. Upload the other into an Arduino with an nRf24L01.


YD_nRF24L01_Transmit_JoyStick
 
/* YourDuinoStarter Example: nRF24L01 Transmit Joystick values
 - WHAT IT DOES: Reads Analog values on A0, A1 and transmits
   them over a nRF24L01 Radio Link to another transceiver.
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   - 
   Analog Joystick or two 10K potentiometers:
   GND to Arduino GND
   VCC to Arduino +5V
   X Pot to Arduino A0
   Y Pot to Arduino A1
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  joystick[0] = analogRead(JOYSTICK_X);
  joystick[1] = analogRead(JOYSTICK_Y);
  
  radio.write( joystick, sizeof(joystick) );

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********


 


YD_nRF24L01_Receive_JoyStick
 

/* YourDuinoStarter Example: nRF24L01 Receive Joystick values

 - WHAT IT DOES: Receives data from another transceiver with
   2 Analog values from a Joystick or 2 Potentiometers
   Displays received values on Serial Monitor
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  delay(1000);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();;
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  if ( radio.available() )
  {
    // Read the data payload until we've received everything
    bool done = false;
    while (!done)
    {
      // Fetch the data payload
      done = radio.read( joystick, sizeof(joystick) );
      Serial.print("X = ");
      Serial.print(joystick[0]);
      Serial.print(" Y = ");      
      Serial.println(joystick[1]);
    }
  }
  else
  {    
      Serial.println("No radio available");
  }

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********




Another interesting example: Chat between radios:
https://github.com/stanleyseow/RF24/tree/master/examples



---------------------( COPY: Post for people having nRF24L01 Problems )---------------------

nRF24L01 Intermittent / No operation.

ALWAYS check 3.3V power. Many times intermittent operation is due to power supply regulation issues. Even though the average current may be less than 15ma, apparently there are quick transients when each transmit burst happens.
I used to have nRF24L01 problems. Worked one day / one minute, failed the next. Now I put a 1uf to 10uf capacitor right from GND to 3.3V pins on the modules, and things are MUCH better.

These modules are designed to plug into a baseboard that usually has significant bypass capacitors. If you have them on the end of jumper wires you need extra bypass capacitors.
Try it and let us know here!
-----------------( END COPY )----------------------

 

دانلود آموزش فارسی  راه اندازی ماژول وایرلس NRF24L01

+کدهای گیرنده و فرستنده+کتابخانه+پاورپوینت توضیحات و شماتیک 

در قالب یک پروژه کاملا عملی

 

 

 
 
 

Hit and miss transmissions fixed !!!

dadeeoh Jun 13, 2015

ARG! I meant to start a new discussion. How do you delete/edit a comment? Anyway ...

I spent a long night troubleshooting my hit and miss transmissions. My program takes one character from serial input and transmits it. If I typed fast, about half of the characters made it. I tried several capacitors and a couple of different power supplies to no avail.

Finally, I threw in a radio.powerUp() immediately before the radio.write. It fixed 99.9% of my problems. Adding a 3 millisecond delay between the powerUp and write fixed the other 0.1%.

None of the sample code I've looked at requires this. Is there a "Delay after powering up/before sending" setting I'm missing? Maybe it's still a power supply problem and this just works around the spike?

Here's what I ended up with ...

radio.powerUp();
delay(3);
writeSuccess = radio.write( incomingByte, sizeof(incomingByte) );

Thanks!

Disclaimer: My background is in programming ... I'm just learning about electronics.

 

No communication

bramwerbrouck Apr 22, 2015

Hi, I have 2 different modules both connected to an arduino Nano, one is a NRF24L01+PA+LNA SMA Antenna Wireless Transceiver communication module 2.4G 1100m, the other one is an Arduino NRF24L01+ 2.4GHz Wireless Transceiver Module, but I have no communication with each other, when I take 2 of the Arduino NRF24L01+ 2.4GHz Wireless modules, than I have communication... What's wrong here?
I use the sketch "YD_nRF24L01_Transmit_JoyStick" and "YD_nRF24L01_Receive_JoyStick"

 

Using this library for TI Launchpads

noobtechie Apr 8, 2015

Hi, I have a TI Tiva C Launchpad which uses Energia an Arduino fork. Is it possible to use the Mirf library with the Energia IDE?

 

If nRF24L01 not working

Uldis.s Mar 30, 2015

Hi!
I had a problem, when nRF24L01 not working. Tried to add cap between Vcc and GND, but still no succsess. So, I added another one 0.1uF between antenna and GND (see picture). In my board there is a empty pads, and it helps!

https://lh3.googleusercontent.com/-O_-IePs63yM/VRo3YwbylnI/AAAAAAAABHQ/_2gduPOBWRg/w958-h719-no/2015-03-31%2B08.53.18.jpg

 

Sending a String

Josu_Arduino Mar 26, 2015

Hi there! I´m new with the nRF24L01 transceivers and in my code I need to send a string from an Arduino to another one. I tried to change the radio.write( string, sizeof(string) ) but it didnt work at all. Can someone help me and expalin how does the radio.write function works? Thank you very much.

 

programming code not working

mistercrazyboy21 Jan 4, 2015

he, 
I just copied your joystick code and added the library in arduino but now the code doesn't compile because 'RF24 doesn't name a type'. 
thank you :D

 
RukLo Jun 24, 2015

hi, could you fix this problem?

RukLo Jun 24, 2015

hi, could you fix this problem?

 

Can you tell me how the ones listed in the link compair to this link?

Lee_lvd Nov 6, 2014

http://www.dx.com/p/nrf24l01-2-4ghz-wireless-transceiver-module-126467
I ordered these thinking they would be easy to use and finding they are not 802 wireless as I thought they were. I have learned a lot but I have not even powered the pair of these up so far.

 

Intermittent receive, improved capacitor fix

chrisc28 Oct 30, 2014

Like many, I was having issues with poor reception of packets. Thanks to this HowTo for finally cluing me into the cause. I tried a 0.1uF SMD ceramic cap soldered directly to the VCC/GND header pins of the nRF24L01+ module. This improved things slightly, at least letting me know I was on the right track. Increasing the value in increments, each increase showed further improvement, but I was still getting about 40% packet loss even at 47uF. I must have a particularly noisy power supply! So I decided to try a different approach than increasing the cap value even further. In fact, I decreased the cap to 10uF, but also connected VCC and GND from the radio module to the main board through a pair of 1 ohm resistors. This forms an RC filter, more effectively reducing noise entering the module than any reasonably-sized cap alone could. I'm happy to say reception is finally rock solid. I just joined to share this, and am not familiar with wiki editing, but perhaps this may be helpful enough to others that someone might consider adding it to the guide.

 

Can I plug the receiver into different pins?

barnettech Sep 20, 2014

I'm trying to get this to work with a Zumo Shield and the 9,10,11,12, and 13 pins are already taken on the Ardruino Uno Board, can I plug it instead into pins 1-5 ?

 
Josu_Arduino Mar 26, 2015

I dont know if you can do that. Can you change the pins which are already taken? That may be an option, I hope i had helped you

 

Best wireless routers

phanajan Apr 10, 2014

Best wireless routers 
[url=http://www.bestwirelessrouterrewiews.com]best wireless router[/url]

دانلود آموزش فارسی  راه اندازی ماژول وایرلس NRF24L01

+کدهای گیرنده و فرستنده+کتابخانه+پاورپوینت توضیحات و شماتیک 

در قالب یک پروژه کاملا عملی

 

 

نظرات  (۱)

با عرض سلام و خسته نباشید خدمت شما دوست ارزشمندم.مطالب سایت بسیار عالیه و انشالا در این مسیر موفق و پیروز باشید.
برای دسترسی به پروژه های ویدئویی آردوینو می تونید از سایت زیر استفاده بکنید:
www.iranarduino.com
با تشکر

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی