جستجو برای:
سبد خرید 0
  • Home
  • weblog
    • electronic
      • hardware
      • Integrated Circuit
      • microcontroller
      • knowledge base
      • PCB
      • book
    • power electronic
    • mechanics & aerospace
      • Exercise
      • CFD
    • computer
      • matlab
  • Courses
    • Power Engineering
    • Altium Designer
    • image processing
    • raspberry
  • shop
    • electronic
  • Cart
  • Payment
  • Contact US

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت

https://www.fairreplica.com fake rolex https://editreplica.com replica rolex www.salerolexcopies.com replica rolex https://fakerolex-watch.com fake breitling watches replica rolex watches stunwatches.com fake watches replica watches https://fakerolex-watches.net rolexreplica-watch.net https://rolexreplica-watch.com/ replica watches fake watches replica rolex replica rolex replica rolex

  • فقط تلگرام و واتس آپ : 09374187582
  • octacore.ir[at]gmail.com
perm_identity
سبد خرید 0
0
هشت هسته
  • Home
  • weblog
    • electronic
      • hardware
      • Integrated Circuit
      • microcontroller
      • knowledge base
      • PCB
      • book
    • power electronic
    • mechanics & aerospace
      • Exercise
      • CFD
    • computer
      • matlab
  • Courses
    • Power Engineering
    • Altium Designer
    • image processing
    • raspberry
  • shop
    • electronic
  • Cart
  • Payment
  • Contact US
ورود و ثبت نام

وبلاگ

هشت هسته > weblog > electronic > microcontroller > AVR > AVR Library > مدار فرستنده گیرنده رادیویی باماژول NRF24L01+ با کامپایلر کدویژن

مدار فرستنده گیرنده رادیویی باماژول NRF24L01+ با کامپایلر کدویژن

access_timeخرداد 14, 1398
perm_identity ارسال شده توسط مهدی
folder_open AVR ، AVR Library ، electronic
visibility 632 بازدید

 

 

در این قسمت با آموزش راه اندازی و برنامه نویسی ماژول رادیویی NRF24L01+ در خدمت شما هستیم.

این آموزش به زبان C و در کامپایلر codevision خواهد بود.

نویسنده آموزش : سید محمد روستا

این آموزش و کدهای آن به صورت open source توسط نویسنده آن منتشر شده است.

این ماژول تا برد 100 متر وماژول های تقویت شده دیگر از همین نوع  1 یا 2 کیلومتر یا بیشتر اطلاعات را انتقال میدن.

از این ماژول می توان به صورت بی سیم دیتا رو فرستاد و میتوان دستگاه ها رو به صورت بی سیم یا وایرلس کنترل کرد مانند درب برقی و ماشین ولامپ و هر نوع وسیله دیگه و ساخت بسیم ودیگر کاربردها را نیز مد نظر قرار داد.

شناخت nrf24l01+:

نحویه کار آن به این صورت است که فرستنده اطلاعات رو میفرسته وبعد گیرنده با دریافت اطلاعات وبرسی خطا ودرست بودن دیتا یک تصدیق نامه به فرستنده میفرستد.اگرتصدیق توسط فرستنده دریافت شد یعنی اینکه دیتا به درستی ارسال شد درغیر این صورت فرستنده با یه تایم تنظیمی دوباره دیتا رو میفرسته از این رو درست رسیدن دیتا به گیرنده مشخص میشه

 

http://dl.octacore.ir/octacore/avr/modules/nrf24l01_codevision/nrf1_octacore.ir.jpg

بررسی توابع مهم وکاربردی فرستنده و گیرنده:

1
void nrf24l01_init_to_ack_at_tx(byte size_crc,byte retransmit_delay,byte      retransmit_count,byte power_amplifier,character *name_address )

تابع ارسال پایلود با تصدیق که در این حالت اگر گیرنده دیتا را درست دریافت کرد یک تصدیق به فرستنده میفرستد  اگر تصدیق توسط فرستنده دریافت شد به این معنی است که دیتا به درستی توسط گیرنده دریافت شده است در غیر این صورت فرستنده دوباره دیتا را توسط زمان تنظیمی retransmit_delay  میفرستد. retransmit_max_count حداکثرشمارش ارسال مجدد که تعداد ارسال مجدد را تعیین میکند.که بعد از این تعداد ارسال مجدد تمام میشود ویک شارش به بسته های از دست رفته اضافه میشود اما دوباره توسط همین تابع ارسال مجدد به حالت اولیه برمیگردد .

1
2
3
4
),name_address=string(3_5)character نام یا آدرس فرستنده و کاراکتر پوچ نیز یک کاراکتر به حساب می آید //
retransmit_delay=(250*n(1_16))us,retransmit_count=(0_15)
 
void nrf24l01_init_no_ack_at_tx( byte power_amplifier,character *name_address )

 

function set nrf at mode transmit no_ack(at send data  speed no_ack fast of to_ack):

تابع ارسال پایلود بدون تصدیق که در این حالت سرعت بیشتر اما صحت دریافت دیتا مشخص نیس در این حالت دیگه فرستنده نیاز به دریافت تصدیق از طرف گیرنده نمی باشد.

 

1
nrf24l01_init_common_tx_rx( AIR_DATA_RATE_1_MBPS,90 ); تابع تنظیمات مشترک

 

input data size_air_data_rate ONE_MBPS(0) or TOW_MBPS(1) or 250(2)kbps and number_channel_ferquenc between 0 to 127

تعین کانال فرکانسی و میزان سرعت انتقال اطلاعات در هوا  هرچه دیتا ریت بیشتر صحت دیتا بیشتر رنج یا مسافت کمتر وبرعکس  .

 

1
2
nrf24l01_set_at_mode( TX ); تابع تنظیم مود ماژول در حالت فرستنده یا گیرنده بودن
input data mode==rx or tx  

 

در این تابع اگر مود گیرنده را تنظیم کنیم گیرنده به مود دریافت میفرود اما فرستنده در حالت ارسال پایلود یا دیتا ابتدا فعال وسپس غیره فعال میشود یا به مود استندبای یا مدریت توان میرود.

 

1
void nrf24l01_puts( character *string_tx  )

در این تابع می توان یک رشته  را توسط ماوژل فرستاد که داری حداکثر سایز 1_32 می تواند باشد که کاراکتر NULL یا پوچ یا 0 نیز باید برای انتهای رشته نیز به حساب آید

 

1
     void nrf24l01_putchar( character chara (

این تابع یک کاراکتریا یک بایت  را توسط ماژول میفرستد در واقع کاراکتر را تبدیل به رشته میکند و میفرستد.

1
void nrf24l01_putdata( void *data_tx , character type(

این تابع انواع داده ای زیر را توسط ماژول میفرستد

/****************************************************************

input type==’c’==character(byte_(0_255)) , ‘i’==signed inte , ‘f’==float

data_tx==character(byte_(0_255)) , number signed inte , number float

data_tx convert to character ascii and save

*****************************************************************/

 

1
void nrf24l01_init_number_pipe_rx(byte number_pipe,character *name_address_pipe(

این تابع مربوط به تنظیمات گیرنده است

/****************************************************************

 function know one pipe set at rx

( input number_pipe=(0_5 لوله ای که میخواهیم دیتا رو دریافت کند

 name_address=string(3_5)character  آدرس گیرنده لوله مورد نظر

 *****************************************************************/

1
character nrf24l01_gets( character *string_rx(

تابع دریافت رشته توسط ماژول واگر از تابع put_dataدر طرف فرستنده استفاده شد باید طول رشته را در طرف گیرنده  بخوانیم ودر خانیه آخر اگر کاراکتر c باشد کاراکتر و اگر i باشد عدد صحیح واگرf باشد عدد اعشاری می باشد.

 

1
character nrf24l01_getchar( void(

تابع دریافت کاراکتر توسط ماژول که کاراکتری را که به صورت رشته ای توسط تابع putchar ارسال شده است را می توان توسط تابع gets نیزدریافت کرد  

 

1
character nrf24l01_getdata( character *string_rx(

 

این تابع انواع داده ای زیر را دریافت می کند.می توان انواع دادهای زیر را توسط تابعgetsنیز دریافت کرد

/****************************************************************

 function recive string_rx(size==0_33)

 return character NULL(0)==if data not recive or ather character(type data)==if recive data

 return type data ‘c’==character ‘i’== int and ‘f’==float 

 ****************************************************************/

 

1
void change_automat_channel_ferquency_at_tx(void (

 

این تابع تعداد بسته های از دست رفته را چک می کند که اگر تعداد بسته های (دیتاها یا پایلودها)از دست رفته توسط فرستنده با تعداد بسته های تنظیمی توسط کاربرdefine SIZE_PACKET_LOST  15 # برابر شد برای اینکه داده ای از دست رفته کاهش یابد کانال فرکانسی رو عوض میکند.ابتدا با فرستادن رشتیه  تغییر کانال به  گیرنده  و سپس با در یافت تصدیق توسط  فرستنده  (فرستنده و گیرنده کانال فرکانسی را تغییر می دهند)

 

1
void change_automat_channel_ferquency_at_rx( character *string_rx(

تابع تغیر کانال توسط گیرنده که این تابع با دریافت رشتیهchannel_change_ferquency توسط فرستنده و ارسال تصدیق به فرستنده کانال فرکانسی رو تغیر میدهد

 

برنامه فرستنده :

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/****************************************************************/
//writer:sayed mahmood roosta
//date:  
//circuit:tx_nrf24l01_0
#include <mega16a.h>
#include <string.h>
#include <stdlib.h>
#include <delay.h>      
#include <spi.h>
#include "works_data.h"
#include "spi_0.h"
#include "nrf24l01+_0.h"
 
/****************************************************************/
#define OSCILLATOR           8MHZ
/****************************************************************/
void main( void );
void init_input_output(void);    
/****************************************************************/
void main( void ) {
       bit loop=1;    
       character address_tx[SIZE_ADDRESS]="NRFM"; تعیین آدرس فرستنده //
       character payload_tx[SIZE_PAYLOAD]="channel"; //دیتا ارسالی توسط فرستنده
        
       init_input_output( );
        
       nrf24l01_init_to_ack_at_tx( 1,2,12,3,address_tx );تنظیمات فرستنده/ در حالت تصدیق/
       nrf24l01_init_common_tx_rx( AIR_DATA_RATE_1_MBPS,90 );
       nrf24l01_set_at_mode( TX );  تنظیم ماژول در مد فرستنده      
       while( loop ) {
              
            nrf24l01_puts( payload_tx );دیتا هریک ثانیه یک بار فرستاده میشود
            delay_ms(2000);
            
         }  
  }
/****************************************************************/
void init_input_output(void) {
    spi_init_master( DATA_ORDER_MSB,4,0 ); تنظیمات اس پی آی
    return;
  }
/****************************************************************/
 
برای ارسال بدون تصدیق فقط به جای این تابع nrf24l01_init_to_ack_at_tx( 1,2,12,3,address_tx )ازاین تابع
 
nrf24l01_init_no_ack_at_tx( 3, address_tx);

 

مدار فرستنده:

 

http://dl.octacore.ir/octacore/avr/modules/nrf24l01_codevision/nrf_tx_circuit.png

 

برنامه گیرنده:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/****************************************************************/
//writer:sayed mahmood roosta
//date:  
//circuit:tx_nrf24l01_0
#include <mega16a.h>
#include <string.h>
#include <stdlib.h>
#include <delay.h>
#include <spi.h>
  
#include “works_data.h”
#include “spi_0.h”
 
#include “nrf24l01+_0.h”
 
/****************************************************************/
#asm
     .equ __lcd_port=0x1b ;PORTA
#endasm
#include <lcd.h>
/****************************************************************/
#define OSCILLATOR           8MHZ
/****************************************************************/
void main( void );
void init_input_output(void);    
/****************************************************************/
void main( void ) {
  
     bit loop=1;
     character address_pipe_0_rx[SIZE_ADDRESS]=”NRFM”;
     character payload_rx[SIZE_PAYLOAD]=””;
     init_input_output( );
      
     nrf24l01_init_number_pipe_rx( PIPE_0 , address_pipe_0_rx ); تنظیمات گیرنده
     nrf24l01_init_common_tx_rx( AIR_DATA_RATE_1_MBPS,90 );
     nrf24l01_set_at_mode( RX );// تنظیم ماژول در مد گیرنده                        
    
    while( loop ) {  
                
         if( nrf24l01_gets(payload_rx)!=NULL)اگر دیتا دریافت بشه مقداربرگشی مخالف0 است
              lcd_puts( payload_rx );  
                                              
     }
    
  }
/****************************************************************/
void init_input_output(void) {  
    
    spi_init_master( DATA_ORDER_MSB,4,0 );
    lcd_init(16);
    return;
  }
/****************************************************************/

 

مدار گیرنده :

 

http://dl.octacore.ir/octacore/avr/modules/nrf24l01_codevision/nrf_rx_circuit.png

 

برای تغذیه ماژول باید از رگولاتور 3.3 ولت(lf33 (استفاده کرد به همرا یک عدد خازن موازی با رگولاتور که میتواند مقادیر مختلف ر ا تست کرد اما ظرفیت بالتر بهتر است مانند220میکروفاراد به بالا

بهتر است که مدار بر روی برد نصب گردد بر روی برد برد سخت ترجواب میدهد که در صورت جواب ندادن باید تغذیه ها  را چک کرد یا رگلاتورها را تکان داد تا جواب دهد اتصالات وتغذیه کل مدار باید تست شود

برنامه فرستنده گیرنده:

در برنامه زیر بازدن یک کلید برنامه به مد گیرنده وبا زدن یک کلید دیگر برنامه به مد فرستنده می رود  ابتدا هر دو مدار در مد گیرنده تنظیم می شوند و با زدن کلید پایه صفر مدار به مود فرستنده میرود

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//writer:sayed mahmood roosta
//date:  
//circuit:tx_nrf24l01_0
#include <mega16a.h>
#include <string.h>
#include <stdlib.h>
#include <delay.h>      
#include <spi.h>
#include "works_data.h"
#include "spi_0.h"
#include "nrf24l01+_0.h"
 
/****************************************************************/
#asm
     .equ __lcd_port=0x1b ;PORTA
#endasm
#include <lcd.h>
/****************************************************************/
#define OSCILLATOR           8MHZ
/****************************************************************/
void main( void );
void init_input_output(void);    
/****************************************************************/
void main( void ) {
       bit loop=1;    
       character address_tx[SIZE_ADDRESS]="NRFM"; تعیین آدرس فرستنده //
       character payload_tx[SIZE_PAYLOAD]="channel"; دیتا ارسالی توسط فرستنده//
     character address_pipe_0_rx[SIZE_ADDRESS]="NRFM";//تعیین آدرس لولیه صفر گیرنده
       character payload_rx[SIZE_PAYLOAD]="";آرایه یا بافر یا پایلود گیرنده//
       init_input_output( );
        
     nrf24l01_init_to_ack_at_tx( 1,2,12,3,address_tx );تنظیمات فرستنده در حالت تصدیق//
     nrf24l01_init_number_pipe_rx( PIPE_0 , address_pipe_0_rx );برای لولیه صفر//    تنظیمات گیرنده
     nrf24l01_init_common_tx_rx( AIR_DATA_RATE_1_MBPS,90 ); تنظیمات مشترک//
     nrf24l01_set_at_mode( RX );در مود گیرنده تنظیم میکنیم//   ابتدا ماژول را  
                  
       while( loop ) {
          if( CHECK_RESET_BIT_DATA( PINC , BIT(0) ))  {   //اگر کلید صفر زده شود مدار به مد فرستنده میرود برای اینکه دیتا به صورت پیوسته فرستاده شود از یک کلید معمولی استفاده شود در غیر این صورت از کلید فشاری یا پوش باتن استفاده شود
                 nrf24l01_set_at_mode( TX );
                 nrf24l01_puts( payload_tx );ارسال دیتا//
                      delay_ms(1000);بعد از ارسال یک ثانیه صبر میکنیم//
            }
          if( CHECK_RESET_BIT_DATA( PINC , BIT(1) )   )  {برای این که مدار به مد گیرنده رود از یک کلید معمولی یا وصل پیوسته استفاده شود زیرا در این تابع چک میشود که دیتا گرفته شده یا نه
وبرای دریافت دیتا منتظر نمی ماند
              nrf24l01_set_at_mode( RX );
              if( nrf24l01_gets(payload_rx)!=NULL)اگر دیتا دریافت بشه مقداربرگشی مخالف0 است
                   lcd_puts( payload_rx );  
           }
 
    }  
}
/****************************************************************/
void init_input_output(void) {
    spi_init_master( DATA_ORDER_MSB,4,0 ); تنظیمات اس پی آی
    lcd_init(16);
  RESET_BIT_DATA( DDRC, BIT(0)+ BIT(1) ); پایه 0 و1 به عنوان ورودی//
  SET_BIT_DATA( PORTC, BIT(0)+ BIT(1) );فعال کردن پول آپ پایه 0 و 1//
 
return;
  }
/****************************************************************/
می توان توابع درون حلقیه وایل را به صورت زیر نیز نوشت یعنی اگر کلید شماره صفر زده شود مدار به مود فرستنده رود ودر غیره اینصورت به مود گیرنده رود
                  
       while( loop ) {
          if( CHECK_RESET_BIT_DATA( PINC , BIT(0) ))  {  
                 nrf24l01_set_at_mode( TX );
                 nrf24l01_puts( payload_tx );ارسال دیتا//
                      delay_ms(1000);بعد از ارسال یک ثانیه صبر میکنیم//
  
            Flag=1;برای اینکه بتوان گیرنده را تنظیم کرد این پرچم را یک میکنیم
            }
             else{
if(flag==1){برای اینکه در هر بار اجرای این بلوک گیرنده دو باره تنظیم نشود و وقت برنامه تلف نشود از// یک پرچم فلگ استفاده می کنیم و این متغیر را در ابتدای برنامه با مقدار یک باید تعریف کرد
                nrf24l01_set_at_mode( RX );
              flag=0;
              }
              if( nrf24l01_gets(payload_rx)!=NULL)اگر دیتا دریافت بشه مقداربرگشی مخالف0 است
                   lcd_puts( payload_rx );  
           }
 
    }  

 

استفاده از توابع تغییر کانال فرکانسی  بدست آوردن بهترین کانال وکم کردن گم شدن دیتا:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       while( loop ) {
          if( CHECK_RESET_BIT_DATA( PINC , BIT(0) ))  {  
                 nrf24l01_set_at_mode( TX );
              change_automat_channel_ferquency_at_tx( );
اگر تعداد بسته های از دست رفته توسط فرستنده زیاد شد یا با #define SIZE_PACKET_LOST  15 برابر شد این تابع رشتیه تغییر کانال را برای گیرنده میفرستد وبا دریافت تصدیق کانال خودش را تغییر می دهد//
                 nrf24l01_puts( payload_tx );ارسال دیتا//
                 delay_ms(1000);بعد از ارسال یک ثانیه صبر میکنیم//
                 Flag=1;برای اینکه بتوان گیرنده را تنظیم کرد این پرچم را یک میکنیم
            }
             else{
if(flag==1){برای اینکه در هر بار اجرای این بلوک گیرنده دو باره تنظیم نشود و وقت برنامه تلف نشود از// یک پرچم فلگ استفاده می کنیم و این متغیر را در ابتدای برنامه با مقدار یک باید تعریف کرد
                nrf24l01_set_at_mode( RX );
              flag=0;
              }
              if( nrf24l01_gets(payload_rx)!=NULL)اگر دیتا دریافت بشه مقداربرگشی مخالف0 است
                   lcd_puts( payload_rx );  
 
        change_automat_channel_ferquency_at_rx(payload_rx);اگر رشتیه تغییر کانال به گیرنده رسید کانال رفرش میشود
           }
 
    }  

 

 

تست سالم بودن ماژول

برای اینکه ببینیم ماژول سالم است و تنظیمات به درستی انجام شد از دستورات زیر استفاده میکنیم این دستورات  را بعد از توابع تنظیمات به کار میبریم.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
       char str[10]="";
        char a=2;
     nrf24l01_command_read_of_buffer(RX_ADDRESS_PIPE_0,str);  در گیرنده از این تابع استفاده میکنیم//
         lcd_puts(str);
 
nrf24l01_command_read_of_buffer(TX_ADDRESS,str);  در فرستنده از این تابع استفاده میکنیم//
lcd_puts(str);
         a=nrf24l01_command_read_of_register(CONFIG);
         itoa(a,str);
         lcd_puts(str);  
                            
         a=nrf24l01_command_read_of_register(ENABLE_AUTO_ACK);
         itoa(a,str);
         lcd_puts(str);            
        
         a=nrf24l01_command_read_of_register(ENABLE_RX_ADDRESSES);
         itoa(a,str);
         lcd_puts(str);  
                              
         a=nrf24l01_command_read_of_register(SETUP_ADDRESS_WIDTH);
         itoa(a,str);
         lcd_puts(str);
                          
         a=nrf24l01_command_read_of_register(SETUP_RETRANSMIT);
         itoa(a,str);
         lcd_puts(str);  
                            
         a=nrf24l01_command_read_of_register(RF_CHANNEL);
         itoa(a,str);
         lcd_puts(str);  
                  
         a=nrf24l01_command_read_of_register(RF_SETUP);
         itoa(a,str);
         lcd_puts(str);  
                                
         a=nrf24l01_command_read_of_register(FLAGS_RX_TX);
         itoa(a,str);
         lcd_puts(str);  
        
         a=nrf24l01_command_read_of_register(DYNAMIC_PAYLOAD_LENGHT);
         itoa(a,str);
         lcd_puts(str);
              
         a=nrf24l01_command_read_of_register(FEATURE);
         itoa(a,str);
         lcd_puts(str);            

 

توابع هدر spi  (فایل.h)

در این فایل ها نحویه ایجاد فایل کتابخانه ای نیز به کار برده شده است  که ایجاد فایل کتابخانه ای یا نحویه یادگیری فایل کتابخانه ای را می توان فرا گرفت این فایل ها برای میکروکنترلر مگا 16 نوشته شده است که با مگا 32 یکی است . برای میکروهای دیگه باید پایه های آن را در نظر گرفت واصلاح کوچکی را برای پایه های آن طبق defineهای برنامه در نظر گرفت فایل های .c  هر کتابخانه باید به پروژه لینک شوداین لینک کردن در سربرگ Configure project  صورت می گیرد

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/****************************************************************
writer:sayed mahmood roosta
date:  
functions spi_0
****************************************************************/
 
#ifndef  NULL
#define  NULL    0
#endif
#ifndef  DISABLE
#define  DISABLE 0
#endif  
#ifndef  ENABLE
#define  ENABLE  1
#endif  
#pragma used+
 
typedef unsigned char byte;
typedef unsigned char character;
 
/****************************************************************/
#define SPI_SLAVE         0
#define SPI_MASTER        1
#define SPI_SS            4  
#define SPI_MOSI          5  
#define SPI_MISO          6
#define SPI_SCK           7      
/***********************************functions_spi_seting***********************************/
  
void spi_init_master( byte data_order , byte clock_division , byte status_sck );
void spi_init_slave( void );
void spi_clock_division( byte clock_division );
     #define CLOCK_DIVISION(clock_division)   clock_division  //number_division==2_4_8_16_32_64_128
    
void spi_data_order( byte data_order );
     #define DATA_ORDER_MSB    0
     #define DATA_ORDER_LSB    1
    
void spi_status_sck( byte status_sck );
     #define STATUS_SCK(status_sck)           status_sck      //number_status==0_1_2_3
void spi_control(byte control);
void spi_control_interrupt( byte control );
void spi_mode( byte mode );
void spi_direction_pins( byte mode );
/***********************************functions_spi_put_get***********************************/
  
void spi_putchar( character data );
character spi_getchar( void );
void spi_puts( character *string );
character spi_gets( character *string );
 
void spi_putdata( void *data , character type );
character spi_getdata( character *string );

 

 

توابع و کتابخانه های دیگر از جعبه ی دانلود قابل دریافت میباشند(کل پروژه + امکانات جانبی رو میتونید از جعبه دانلود دریافت کنید.)

 

نتیجه گیری

از این ماژول می توان به صورت بی سیم استفاده کرد و برای ساخت وسایل بی سیم نظیر ماشین کنترلی و واکی تاکی یا بی سیم وغیره استفاده نمود . این ماژول برای ارسال صوت مناسب وبرای ارسال تصویر با تاخیر می تواند نیز مناسب باشد این ماژول بر روی برد بهتر جواب می دهد .

منابع

رضا سپاس یار انتشارات آوا

جابر الوندی انتشارات نص

مقاله ( ترجمیه دیتا شیت ماژول nrf24l01  ) مهدی دمرچیلو

سایت های ایرانی وخارجی

 

 

جعبه دانلود

فایل های مورد نیاز فایل های ضمیمه

دانلود فایل

اشتراک گذاری:
برچسب ها: nrfnrf24l01spiآموزش nrf در کدویژنآموزش nrf24l01آموزش کدویژنبرنامه نویسی کدویژندانلود nrf24l01دانلود رایگان کتابخانه nrf24l01دانلود کتابخان nrf24l01راه اندازی nrf24l01+روش برنامه نویسی در کدویژنروش راه اندازی nrf24l01کامپایلر کدویژنکتابخانه nrf24l01کتابخانه آماده nrf24l01
درباره مهدی

مهدی طالبی هستم ،مدرس وبسایت هشت هسته.. تو زمینه الکترونیک ، بعضی وقت ها هم توی علوم کامپیوتری و علوم دیگه براتون مطالب مفید میذارم.برای دیدن اطلاعات بیشتر از من اینجا کلیک کنید.

نوشته های بیشتر از مهدی
[zhanot id="727"]
مطالب زیر را حتما بخوانید
  • Pharma tech steroids, safest steroid to use for bodybuilding

    104 بازدید

  • Steroide anabolisant legal Anavar 10 mg, stéroïdes anabolisants effets secondaires

    104 بازدید

  • Best steroid stack to get huge, anabolic steroid detection times

    107 بازدید

  • Forbrænde fedt på armene compra steroidi in contrassegno

    92 بازدید

  • Anabolic steroids and depression, best steroid cycle for muscle gain in hindi

    94 بازدید

جدید تر قدم به قدم طراحی یک هواپیمای مسافربری Regional( شهاب )-قسمت دوم
قدیمی تر پروگرامر و مبدل سریال stku101z

4 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • 0411mohammadi گفت:
    خرداد 23, 1399 در 9:19 ب.ظ

    کجاست لینک دانلود ؟

    پاسخ
    • مهدی گفت:
      خرداد 30, 1399 در 4:09 ب.ظ

      درست شد . از آخر نوشته میتونین دانلود کنین

      پاسخ
  • a گفت:
    فروردین 8, 1400 در 5:08 ب.ظ

    شماتیک مدار گیرنده کجاس اون لینک فعال نیست

    پاسخ
    • علی گفت:
      مرداد 17, 1400 در 10:06 ب.ظ

      سلام عزیز
      لینک شماتیک رو می شه بفرمایید کجاست ؟

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

قوانین ثبت دیدگاه

  • اگر امکان داره دیدگاهتون رو به صورت فینگلیش ننویسید!
  • لطفا دیدگاهتون متناسب با مطلب باشه!
  • لطفا دیدگاه تکراری ننویسید!
  • اگر سوالی هم دارید همین جا میتونید بپرسید و مشکلی نداره.

جستجو برای:
سرفصل مطالب سایت
  • Arts & EntertainmentPhotography
  • biomedical engineering
  • hardware
    • article
    • Source Code
  • other
    • business
    • practical software
  • Other
  • power electronic
  • software engineering
    • image processing
  • weblog
    • electronic
      • book
      • knowledge base
      • microcontroller
        • AVR
          • AVR Library
          • AVR Tutorial
      • PCB
      • programming
    • mechanics & aerospace
      • ariplane designe
      • book
      • Exercise
آخرین دیدگاه‌ها
  • علی در مدار فرستنده گیرنده رادیویی باماژول NRF24L01+ با کامپایلر کدویژن
  • مهدی در پروگرامر و مبدل USB به سریال STkU101Z
  • فراز سیفی در پروگرامر و مبدل USB به سریال STkU101Z
  • امید یزدانی در دانلود نسخه سالم نرم افزار HSPICE + آموزش نصب
  • مهدی در دانلود نسخه سالم نرم افزار HSPICE + آموزش نصب
آخرین مطالب
  • Среди авиалиний, какие должны были отдавать кондоры, потенциально маячила…
  • Это упорствуют уезжать трети промышленноэнергетических брелоков, унитарных…
  • Pharma tech steroids, safest steroid to use for bodybuilding
  • Steroide anabolisant legal Anavar 10 mg, stéroïdes anabolisants effets secondaires
  • Best steroid stack to get huge, anabolic steroid detection times
دسترسی سریع به وبلاگ
  • electronic
  • mechanics & aerospace
  • biomedical engineering
اطلاعات تماس
  • location_on
    شماره تماس فقط برای ارتباط از طریق واتس آپ یا تلگرام میباشد.
  • phone_android
    09374187582
  • email
    octacore.ir@gmail.com
دسترسی به فروشگاه
  • فروشگاه
  • حساب کاربری من
  • پرداخت
  • سبد خرید
پیوندهای مفید
  • تماس با ما

 وبسایت هشت هسته ای با هدف توسعه علوم مهندسی توسط مجموعه ای از مهندسان تشکیل شده است.

در این وبسایت آموزش ها و مطالب جالب قرار خواهند گرفت و به تدریج هسته های متنوع شکل خواهند گرفت.

ما رو حتما دنبال کنین ..

© تمام حقوق برای octacore.ir محفوظ است.کپی بدون ذکر منبع لینکدار مجاز نمیباشد.
keyboard_arrow_up