اطلاعیه

Collapse
No announcement yet.

[آموزش]راه اندازی ماژول +nRF24L01

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : راه اندازی ماژول +nRF24L01

    با سلام
    با روشی که دوستان گفتن(روش کد گذاری روی ماژول ها) سه ماژول رو شبکه کردم یک ماژول رو بعنوان مرکز و دوتا دیگه رو گیرنده کردم و به نوبت از ماژول مرکز فرستنده میشه و اطلاعات رو میفرسته همه چیز خوب کار میکنه ولی یه مشکل وجود داره :
    بعد از چند دقیقه یکی از ماژول ها که اطلاعات میفرسته از کار میفته ولی ماژول دومی به کار خودش ادامه میده....
    ماژولی که از کار میفته رو ریست میکنم ولی نتیجه ی نداره ولی وقتی تغذیه ش رو قطع میکنم درست میشه oo: oo: :cry: :cry: :cry:
    :cry: :cry: :cry: :cry: :cry:

    اگه اینطوری باشه هیچ اعتباری بهش نیست :cry2: :cry2: :cry2:

    در ضمن خازن روی تغذیه ماژول گذاشتم.

    کسی نیست کمکم کنه :cry: :cry:
    @};- @};- @};- @};- @};- @};- @};- @};- @};-

    دیدگاه


      پاسخ : راه اندازی ماژول +nRF24L01

      راهی وجود داره که ماژول و میکرو رو اتوماتیک ریست کنم ممنون @};- @};-

      دیدگاه


        پاسخ : راه اندازی ماژول +nRF24L01

        این پیام مدیران پاک کنند اشتباه ارسال شد

        دیدگاه


          پاسخ : راه اندازی ماژول +nRF24L01

          کسی نبود کمک کنه :cry: :cry: :cry:

          دیدگاه


            پاسخ : راه اندازی ماژول +nRF24L01

            نوشته اصلی توسط ALI micro
            با سلام
            با روشی که دوستان گفتن(روش کد گذاری روی ماژول ها) سه ماژول رو شبکه کردم یک ماژول رو بعنوان مرکز و دوتا دیگه رو گیرنده کردم و به نوبت از ماژول مرکز فرستنده میشه و اطلاعات رو میفرسته همه چیز خوب کار میکنه ولی یه مشکل وجود داره :
            بعد از چند دقیقه یکی از ماژول ها که اطلاعات میفرسته از کار میفته ولی ماژول دومی به کار خودش ادامه میده....
            ماژولی که از کار میفته رو ریست میکنم ولی نتیجه ی نداره ولی وقتی تغذیه ش رو قطع میکنم درست میشه oo: oo: :cry: :cry: :cry:
            :cry: :cry: :cry: :cry: :cry:

            اگه اینطوری باشه هیچ اعتباری بهش نیست :cry2: :cry2: :cry2:

            در ضمن خازن روی تغذیه ماژول گذاشتم.

            کسی نیست کمکم کنه :cry: :cry:
            @};- @};- @};- @};- @};- @};- @};- @};- @};-
            سلام مطمعا باش یه جایی توی کد اشتباه کردی و این که باید تایمینگ ها رو رعایت کنی یعنی ماژول ها نباید با هم ارسال کنند و با یه زمان رندم بعد از دریافت از سرور باید جواب بدن

            نوشته اصلی توسط ALI micro
            راهی وجود داره که ماژول و میکرو رو اتوماتیک ریست کنم ممنون @};- @};-
            برای هر کاری راه وجود داره خب میتونی برقشو قطع کنی اما با یه پایه از میکرو و یه مدار ایجاد کننده تاخیر
            یعنی وقتی خواستی ریست کنی یه پایه رو یک کنی که باعث بشه میکرو ریست شه ( خب پایه 0 میشه ) بعد یه مدار تاخیر راه بیفته ( و پایه رو برات یک نگه داره ) و بعد از مدت مشخصی تغذیه میکرو و ماژولت وصل شه ( یعنی پایه رو صفر کنه )
            اینطوری دستور ریست شدن رو خودت میدی و تغذیت قطه میشه و با تاخیر تغدیه وصل میشه و میاد بالا
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
            فروش اسیلوسکوپ GWinstek GOS-630FC

            دیدگاه


              پاسخ : راه اندازی ماژول +nRF24L01

              سلام ممنون
              این مازول مرکز:
              کد:
              #include <mega16.h>
              #include <nRF24L01+.h>
              #include <stdio.h>
              #include <delay.h>
              // Alphanumeric LCD functions
              #include <alcd.h>
              
              char b[16];
              char c[16];
              char data[33];
              char datach1;
              char datach2;
              char check;
              char cod;
              char staa;
              bit fch1;
              bit fch2;
              unsigned long int count;
              void main(void)
              {
              
               lcd_init(16);
              
              PORTD=0X00;
              DDRD=0XFF;
              PORTB=0X00;
              DDRB=0XFF;
              
              PORTD.6=1;
              delay_ms(500);
              PORTD.6=0;
              delay_ms(500);
              
              //PORTB.1=1;
              //PORTB.0=1;
              
              
              // start---------------------------------------------------
              while (1) {
              datach1=0;
              datach2=0;
              
              
              
              //// ch1*********************************************
              
              nRF_Config(0);
              delay_us(200);
              cod=66; //ch1
              Send_Data(1 , &cod);
              delay_us(200);
              nRF_Config(1);
              delay_us(200);
               data[1]=0;
               check=0;
              //delay_ms(20);
              
              // while (check == 0){
              for(count=0;count<50000;count++){
              PORTD.5=1;  //led red
              if(State == 1)
                  {
                  check=1;
                  count=50000;
                  PORTD.3=1;  //led red
                  data[1] = payload[1];
                  data[2] = payload[2];
                 //  if (data[1]==110){
                  fch1=1;
                  datach1=data[2];
                  // }
                  State = 0;
                  // delay_us(1);
                  }
              
               } // for
              
              ///end ch1*****************************************
              
              delay_ms(300);
              
              //// ch2*********************************************
              
              nRF_Config(0);
              delay_us(200);
              cod=88; //ch1
              Send_Data(1 , &cod);
              delay_us(200);
              nRF_Config(1);
              delay_us(200);
               data[1]=0;
               check=0;
              // while (check == 0){
              for(count=0;count<50000;count++){
              PORTD.6=1;  //led red
              if(State == 1)
                  {
                  check=1;
                  count=50000;
                  PORTD.4=1;  //led yello
                  data[1] = payload[1];
                  data[2] = payload[2];
                  if (data[1]==110){
                  fch1=1;
                  datach2=data[2];
                  }
                  State = 0;
                  // delay_us(1);
                  }
               }
              
              ///end ch2*****************************************
               delay_ms(300);
              lcd_clear();
              sprintf(b,"CH1 =%d",datach1);
              lcd_gotoxy(0,0);
              lcd_puts(b);
                  PORTD.3=0;  //led red
                  PORTD.4=0;  //led yello
                  PORTD.5=0;  //led red
                  PORTD.6=0;  //led yello
              
              sprintf(c,"CH2 =%d",datach2);
              lcd_gotoxy(0,1);
              lcd_puts(c);
              //delay_ms(2000);
              
                };
                 }
              اینم یکی از ماژول ها که اطلاعات رو میفرسته:
              کد:
              /*****************************************************
              
              Project : nRF24L01+
              Version :
              Date  : 9/25/2013
              Author : Ali Imanifar
              Company : ECA
              Comments:
              
              
              Chip type        : ATmega32
              Program type      : Application
              AVR Core Clock frequency: 8.000000 MHz
              Memory model      : Small
              External RAM size    : 0
              Data Stack size     : 512
              *****************************************************/
              
              #include <mega16.h>
              #include <stdio.h>
              #include <delay.h>
              #include <nRF24L01+.h>
              // Alphanumeric LCD functions
              #include <alcd.h>
              
              
              
              
              
              
              // Declare your global variables here
              char data[2];
              
              void main(void)
              {
              
              
              PORTD=0X00;
              DDRD=0XFF;
              
              PORTD.6=1;
              delay_ms(500);
              PORTD.6=0;
              delay_ms(500);
              PORTD.6=1;
              delay_ms(500);
              PORTD.6=0;
              delay_ms(500);
              
              /*
              // Declare your local variables here
              
              
              
              
              
              // Alphanumeric LCD initialization
              // Connections are specified in the
              // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
              // RS - PORTA Bit 0
              // RD - PORTA Bit 1
              // EN - PORTA Bit 2
              // D4 - PORTA Bit 4
              // D5 - PORTA Bit 5
              // D6 - PORTA Bit 6
              // D7 - PORTA Bit 7
              // Characters/line: 16
              //lcd_init(16);
              
              //lcd_clear();
              //lcd_gotoxy(0,0);
              //lcd_puts("WWW.ECA.IR");
              */
              //delay_ms(2000);
              
              while (1) {
              nRF_Config(1);
              if(State == 1)
                  {
              
                  data[1] = payload[1];
                  State = 0;
                  if(data[1]==66){
                  PORTD.6=1;
                  nRF_Config(0);
                  delay_us(200);
                  PORTD.6=0;
                  data[1]=110;
                  data[2]=68;
                  Send_Data(2 , &data[1]);
                  delay_us(200);
                  }
              
               };
               }
              
               /*
              while (1)
                 {
                 // Place your code here
              
                //data1=36;
                // Send_Data(1 , &data1);
              
                 data[0]=47;
                 data[1]=88;
                 Send_Data(2 , &data[0]);
              
              
              
                 delay_ms(100);
                 }
                 */
              }

              خیلی ببخشید که یکم بهم ریخته و ابتدای نوشتم :biggrin:

              دیدگاه


                پاسخ : راه اندازی ماژول +nRF24L01

                ببین مهندس من که نمیدونم چی نوشتی و اینا چی هستن
                خودت تو جو کد هستی بهتر میدونی فقط نکاتی گفتمو رعایت کن
                ببین وقتی شما 100 تا نود داری و یک سرور مثلا یه دیتایی برای همه میفرستی اونا باید آدرس خودشون رو بررسی کنن و اگر آدرس مربوط به خودشون بود جواب بدن
                این جواب دادن هم بهتره با یه تاخیر باشه اونم به صورت رندم یعنی اگر دیتایی رسید و دید آدرس خودشه یه عدد تصادفی رو تولید کنه و به مقدار اون صبر کنه و جواب بده
                این زمان باید به مقداری باشه که سرور وقت کنه از مد ارسال بره به مد دریافت تا بتونه دیتا رو بگیره
                و اینکه به هر دلیلی چنتا نود با هم قرار بود جواب بدن همزمان کلی بسته برای سرور نرسه
                تاخیر ها هم نباید به صورت wait باشن باید با تایمر و یه شمارنده این رو مدیریت کنی که برنامه توی اون زمان متوقف نباشه مثلا هم 1 میلی ثانیه تایمر سر ریز بشه و شما بیای شمارنده رو افزایش بدی و بعد بیاد چک کنه و ببینه مثلا اگر به 100 میلی ثانیه رسیده اطلاعات رو بفرسته ( یعنی زمانی شارنده 100 شده ارسال کنه )
                حالا توی هر دفعه میتونی این زمان 100 رو به صورت تصادفی مثلا بین 50 تا 200 تغییر بدی
                درایور شبکه و nRF24L01
                کاتالوگ محصولات
                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                فروش اسیلوسکوپ GWinstek GOS-630FC

                دیدگاه


                  پاسخ : راه اندازی ماژول +nRF24L01

                  ای کاش به زبان بسکام هم راه اندازی میکردین :cry2:

                  دیدگاه


                    پاسخ : راه اندازی ماژول +nRF24L01

                    نوشته اصلی توسط بسطام بیرامی
                    ببین مهندس من که نمیدونم چی نوشتی و اینا چی هستن
                    خودت تو جو کد هستی بهتر میدونی فقط نکاتی گفتمو رعایت کن
                    ببین وقتی شما 100 تا نود داری و یک سرور مثلا یه دیتایی برای همه میفرستی اونا باید آدرس خودشون رو بررسی کنن و اگر آدرس مربوط به خودشون بود جواب بدن
                    این جواب دادن هم بهتره با یه تاخیر باشه اونم به صورت رندم یعنی اگر دیتایی رسید و دید آدرس خودشه یه عدد تصادفی رو تولید کنه و به مقدار اون صبر کنه و جواب بده
                    این زمان باید به مقداری باشه که سرور وقت کنه از مد ارسال بره به مد دریافت تا بتونه دیتا رو بگیره
                    و اینکه به هر دلیلی چنتا نود با هم قرار بود جواب بدن همزمان کلی بسته برای سرور نرسه
                    تاخیر ها هم نباید به صورت wait باشن باید با تایمر و یه شمارنده این رو مدیریت کنی که برنامه توی اون زمان متوقف نباشه مثلا هم 1 میلی ثانیه تایمر سر ریز بشه و شما بیای شمارنده رو افزایش بدی و بعد بیاد چک کنه و ببینه مثلا اگر به 100 میلی ثانیه رسیده اطلاعات رو بفرسته ( یعنی زمانی شارنده 100 شده ارسال کنه )
                    حالا توی هر دفعه میتونی این زمان 100 رو به صورت تصادفی مثلا بین 50 تا 200 تغییر بدی
                    چرا تاخیر ها باید به صورت تصادفی باشه؟
                    گفت که دیوانه نهی لایق این خانه نهی

                    دیدگاه


                      پاسخ : راه اندازی ماژول +nRF24L01

                      سلام دوستان
                      من چطور باید pipe برای ارتباط که در صفحه 41 دیتاشیت است رو راه بندازم از کجا شروع کنم
                      ممنون @};- @};-

                      دیدگاه


                        پاسخ : راه اندازی ماژول +nRF24L01

                        نوشته اصلی توسط Finder_
                        چرا تاخیر ها باید به صورت تصادفی باشه؟
                        توضیح دادن که
                        مثلا اگر همزمان از چنتا بخاد اطلاعاتی برگرده , همگی در یک زمان از پیش تعیین شده اینکارو نکنن که همزمان همه جوابها برگردن

                        دیدگاه


                          پاسخ : راه اندازی ماژول +nRF24L01

                          نوشته اصلی توسط Finder_
                          چرا تاخیر ها باید به صورت تصادفی باشه؟
                          ببینید یه زمانهایی ممکنه نیاز باشه همه نود ها پاسخ بدن
                          من توی ماژولی که با NRF طراحی کردم و ایشالا به زودی به صورت یه محصول شاید توی همین سایت هم برای فروش ارائه بشه
                          مثلا شما میخوای الان ببینی چنتا نود زیر مجموعه سرور شما هستن یه دستور میفرستی به همه و میگی اونایی هستن دستا بالا
                          برای این حالت خب همه نود ها باید جواب بدن ، اگر شما مثلا یه تاخیر ثابت بذاری همه بعد از دریافت و پردازش دستور بعد از همون زمان جواب میدن
                          سرور بیچاره یک دفعه 1000 تا بسته میاد سمتش و کلا اطلاعات قاطی میشه
                          برای همین باید یکی یکی و طبق یه تابع تصادفی با Random جواب بدن تا سرور بتونه دونه دونه اینا رو بررسی و پردازش کنه
                          درایور شبکه و nRF24L01
                          کاتالوگ محصولات
                          کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                          شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                          فروش اسیلوسکوپ GWinstek GOS-630FC

                          دیدگاه


                            پاسخ : راه اندازی ماژول +nRF24L01

                            نوشته اصلی توسط ALI micro
                            سلام دوستان
                            من چطور باید pipe برای ارتباط که در صفحه 41 دیتاشیت است رو راه بندازم از کجا شروع کنم
                            ممنون @};- @};-
                            شما جدول 9 صفحه 54 رو بخون توی یه قسمت میتونی برای هر پایپ یه آدرس مشخص تعریف کنی و اگر همگام ارسال این آدرس رو توی ریجیستر مورد نظر بریزی اون بسته به اون پایپ یا گیرنده هایی که آدرس پایپ اونا همینه ارسال میشه
                            البته خیلی نیازی به این کار نیست برای کارهای شبکه بهتره یه تپولوژی مثل Zigbee رو بخونید و سعی کنید اونو پیاده کنید
                            پروتکلی که من پیاده کردم برای مسیریابی AODV هست و بسیار هم عالی جواب میده و تقریبا میشه گفت تعداد نامحدودی نود رو میشه شبکه کرد ( حدود 65000 تا )
                            درایور شبکه و nRF24L01
                            کاتالوگ محصولات
                            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                            فروش اسیلوسکوپ GWinstek GOS-630FC

                            دیدگاه


                              پاسخ : راه اندازی ماژول +nRF24L01

                              نوشته اصلی توسط بسطام بیرامی
                              ببینید یه زمانهایی ممکنه نیاز باشه همه نود ها پاسخ بدن
                              من توی ماژولی که با NRF طراحی کردم و ایشالا به زودی به صورت یه محصول شاید توی همین سایت هم برای فروش ارائه بشه
                              مثلا شما میخوای الان ببینی چنتا نود زیر مجموعه سرور شما هستن یه دستور میفرستی به همه و میگی اونایی هستن دستا بالا
                              برای این حالت خب همه نود ها باید جواب بدن ، اگر شما مثلا یه تاخیر ثابت بذاری همه بعد از دریافت و پردازش دستور بعد از همون زمان جواب میدن
                              سرور بیچاره یک دفعه 1000 تا بسته میاد سمتش و کلا اطلاعات قاطی میشه
                              برای همین باید یکی یکی و طبق یه تابع تصادفی با Random جواب بدن تا سرور بتونه دونه دونه اینا رو بررسی و پردازش کنه
                              آقای بسطامی البته اینکه میگین قاطی میشه , پس اگر یک سیستم با nrf بسازیم که داره با گیرندش تبادل اطلاعات میکنه و یک سیستم دیگه که مستقل و جدا از قبلی هست و تو برد هم هستن هم داره با گیرنده خودش تبادل داده میکنه
                              پس این تکلیفش چی میشه داده های دو سیستم باهم قاطی میشن؟

                              دیدگاه


                                پاسخ : راه اندازی ماژول +nRF24L01

                                نوشته اصلی توسط intel_amd
                                آقای بسطامی البته اینکه میگین قاطی میشه , پس اگر یک سیستم با nrf بسازیم که داره با گیرندش تبادل اطلاعات میکنه و یک سیستم دیگه که مستقل و جدا از قبلی هست و تو برد هم هستن هم داره با گیرنده خودش تبادل داده میکنه
                                پس این تکلیفش چی میشه داده های دو سیستم باهم قاطی میشن؟
                                نمیدونم با این ماژول کار کردی یا همینطوری این سوال به ذهنت رسید و پرسیدی
                                ولی به نظر شما اگر بتونی 5 بایت آدرس دهی کنی چنتا آدرس میتونی باش تولید کنی؟!!!!!!!
                                این عددو بخون 1,099,511,627,776 شبیه رقم اختلاس هاس ولی این تعداد آدرس میشه تولید کرد که بعید میدونم 2 نفر دو سیستم طراحی کنن که این عددا یکی بشه
                                و این که این میتونه در 6 هم ضرب شه البته باند فرکانسی هم میشه انتخاب کرد
                                تازه میتونی دیتاشیت رو بخونی که میبینی میتونی فرکانس کریر رو از 2400 مگاهرتز تا 2525 مگ تغییر بدی با گام 1 مگ یعنی 125 تا باند جدا برای این کار
                                خودت حساب کن ببین با ترکیب اینا بازم ممکنه خط رو خط بشه!؟؟؟
                                درایور شبکه و nRF24L01
                                کاتالوگ محصولات
                                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                                فروش اسیلوسکوپ GWinstek GOS-630FC

                                دیدگاه

                                لطفا صبر کنید...
                                X