اطلاعیه

Collapse
No announcement yet.

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

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

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

    نوشته اصلی توسط مهدی مشرقی
    سلام به همه دوستان گل خودم :nerd:

    یه سوال ؛

    بنده برای کنترلر راه انداز CNC از کنترلری استفاده کردم که با USB به کامپیوتر وصل میشه ولی متوجه شدم که به خاطر طول سیم (که شیلد هم هست) دیتا دچار مشکل و ارتباط قطع میشه!

    سوالم اینه که آیا میتونم از دوتای این ماژول به جای ارتباط سیمی استفاده کنم یا سخت تر از این حرفاست؟

    امیدوارم با پاسختون خوشحالم کنید :redface:

    با سپاس فراوان
    سلام
    والا ارتباط با CNC مخصوصا برای کارای مهم و حساس بهتره سیمی و صنعتی مثل 485 باشه
    من خودم توی برد CNC که طراحی کردم 10 تا بافر گذاشتم که اطلاعات رو لود میکنه و بعد اجرا میکنه
    اینطوری سرعت کار خیلی بالا تر میره و وابسته به سرعت ارتباط سریال نیست ( سریال کنده )
    اگر فاصله کمه میتونی استفاده کنی فقط بهتره حتما CRC با Check Sum داشته باشه برنامت تا حتما دیتا وقتی صحیح برسه اجرا بشه
    من با سرعت 57600 و ارتباط RS232 و بافرینگ مشکلی نداشتم
    به نظر من با nRF هم میتونی راحت ارتباط داشته باشی ولی باز میگم CRC و بافر باید داشته باشی
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
    شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
    فروش اسیلوسکوپ GWinstek GOS-630FC

    دیدگاه


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

      نوشته اصلی توسط بسطام بیرامی
      سلام
      والا ارتباط با CNC مخصوصا برای کارای مهم و حساس بهتره سیمی و صنعتی مثل 485 باشه
      من خودم توی برد CNC که طراحی کردم 10 تا بافر گذاشتم که اطلاعات رو لود میکنه و بعد اجرا میکنه
      اینطوری سرعت کار خیلی بالا تر میره و وابسته به سرعت ارتباط سریال نیست ( سریال کنده )
      اگر فاصله کمه میتونی استفاده کنی فقط بهتره حتما CRC با Check Sum داشته باشه برنامت تا حتما دیتا وقتی صحیح برسه اجرا بشه
      من با سرعت 57600 و ارتباط RS232 و بافرینگ مشکلی نداشتم
      به نظر من با nRF هم میتونی راحت ارتباط داشته باشی ولی باز میگم CRC و بافر باید داشته باشی
      ممنون مهندس :nerd:

      شما میتونید یه حافظه روی کنترلر ما بذارید و اطلاعات روش لود بشه تا مشکل ارتباطی نداشته باشیم؟!

      امکانش هست شماره تماستون رو داشته باشیم؟ شماره تماس رو برام PM کنید :redface:

      دیدگاه


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

        نوشته اصلی توسط مهدی مشرقی
        ممنون مهندس :nerd:

        شما میتونید یه حافظه روی کنترلر ما بذارید و اطلاعات روش لود بشه تا مشکل ارتباطی نداشته باشیم؟!

        امکانش هست شماره تماستون رو داشته باشیم؟ شماره تماس رو برام PM کنید :redface:
        خی این که اولین و ساده ترین راه حله
        بیشتر cnc های صنعتی فلش میخورن و فایل رو از روی اون اجرا میکنن
        ولی بخوای مث پرینتر مستقیم وصل شه به سیستم به نظرم 232 یا 485 خوب باشه
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
        شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
        فروش اسیلوسکوپ GWinstek GOS-630FC

        دیدگاه


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

          نوشته اصلی توسط freedom_truth
          مرسی شاهرخ جان.
          اون عکسی که گذاشتم تو صفحه اش نوشته "ماژول +NRF24L01 دو چیپ تقویت شده با برد 1000 متر". همینه دیگه؟ اگر این نیست لینک اونی که میگی رو بزار لطفاً.
          سلام.
          اونی که من پیشنهاد کردم مدلی هست که آنتن اون پیچی هست. اون مدل با حدود 4-5 دیوار مانع، کمتر از 100 متر برد داشت.
          http://eshop.eca.ir/%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%87%D8%A7%DB%8C-ism-band/2163-%D9%85%D8%A7%DA%98%D9%88%D9%84-nrf24l01palna-%D8%AA%D9%82%D9%88%DB%8C%D8%AA-%D8%B4%D8%AF%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A2%D9%86%D8%AA%D9%86-%D8%A8%D8%B1%D8%AF-1100-%D9%85%D8%AA%D8%B1-%D8%AA%D8%A7%DB%8C%D9%88%D8%A7%D9%86%DB%8C.html

          دیدگاه


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

            این 2 تا ارور یعنی جی من واسه ATMEGA48V می خوام موقع کامپایل ارور میده
            :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

            Error: D:\cvv\inc\nrf24l01p.h(187), included from: 1.c: undefined symbol 'GIFR'
            Error: D:\cvv\inc\nrf24l01p.h(188), included from: 1.c: undefined symbol 'GICR

            گاهی نمی شود که نمی شود
            گاهی قرعه نگفته به نام تو می شود
            گاهی گدای گدایی و چاره چیست
            گاهی تمام شهر گدای تو میشود
            ای بنده بدان در این عالم ___هرچه خدا خواست همان می شور

            دیدگاه


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

              نوشته اصلی توسط mfazl22
              این 2 تا ارور یعنی جی من واسه ATMEGA48V می خوام موقع کامپایل ارور میده
              :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

              Error: D:\cvv\inc\nrf24l01p.h(187), included from: 1.c: undefined symbol 'GIFR'
              Error: D:\cvv\inc\nrf24l01p.h(188), included from: 1.c: undefined symbol 'GICR
              یه سوال رو دو جا مطرح نکن
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
              شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
              فروش اسیلوسکوپ GWinstek GOS-630FC

              دیدگاه


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

                برید توی هدر nrf و کتابخونه ی atmega48 را اضافه کنید.
                یا کلا فایل هاتون را بذارید یه نگاهی بکنم
                آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                دیدگاه


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

                  نوشته اصلی توسط pooyan-shafiei
                  برید توی هدر nrf و کتابخونه ی atmega48 را اضافه کنید.
                  یا کلا فایل هاتون را بذارید یه نگاهی بکنم
                  سلام
                  ممنون که جواب منو دادی من هدر nrf24 رو همین جوری که در atmega8a فرا خوانی میکردم فراخوانی کردم که ارور داد
                  Error: D:\cvv\inc\nrf24l01p.h(187), included from: 1.c: undefined symbol 'GIFR'
                  Error: D:\cvv\inc\nrf24l01p.h(188), included from: 1.c: undefined symbol 'GICR
                  کتابخانه آقای مرتضوی رو از صفحه اول همین سایت دانلود کردم و جواب هم داد
                  ولی من میخوام از atmega48 استفاده کنم
                  لطفا بگید کجارو باید دست کاری کنم
                  گاهی نمی شود که نمی شود
                  گاهی قرعه نگفته به نام تو می شود
                  گاهی گدای گدایی و چاره چیست
                  گاهی تمام شهر گدای تو میشود
                  ای بنده بدان در این عالم ___هرچه خدا خواست همان می شور

                  دیدگاه


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

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

                    دیدگاه


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

                      دوستان سلام
                      من مشکلی با کتابخانه ای که آقای ایمانی فر زحمتش رو کشیدن دارم.
                      یکی اینکه در روند برنامه ماژول nrf رو از حالت فرستنده به حالت گیرنده تغییر میدم ماژول هنگ میکنه، یه مشکل دیگه هم اینه که وقتی دیتا با فاصله زمانی کم مثلا 100 میلی ثانیه ارسال میکنم ماژول فرستنده هنگ میکنه. :angry: :angry: :angry:
                      از آقای ایمانی فر عزیز و سایر دوستان درخواست کمک دارم ممنون

                      دیدگاه


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

                        نوشته اصلی توسط interrupt
                        دوستان سلام
                        من مشکلی با کتابخانه ای که آقای ایمانی فر زحمتش رو کشیدن دارم.
                        یکی اینکه در روند برنامه ماژول nrf رو از حالت فرستنده به حالت گیرنده تغییر میدم ماژول هنگ میکنه، یه مشکل دیگه هم اینه که وقتی دیتا با فاصله زمانی کم مثلا 100 میلی ثانیه ارسال میکنم ماژول فرستنده هنگ میکنه. :angry: :angry: :angry:
                        از آقای ایمانی فر عزیز و سایر دوستان درخواست کمک دارم ممنون
                        سلام
                        خازن روی تغذیه ماژول گذاشتین؟؟

                        دیدگاه


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

                          بله گذاشتم تاثیری نداره باید اضافه کنم تغذیه مدارمم با باتری هست

                          دیدگاه


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

                            نوشته اصلی توسط interrupt
                            بله گذاشتم تاثیری نداره باید اضافه کنم تغذیه مدارمم با باتری هست
                            اره حتی اگه تغذیه باتری باشه باید خازن رو بزارید :agree:
                            حتما حتما از یه خازن نو استفاده کن مثلا یه 100 میکروفراد بزارید.
                            اگه باز هم جواب نداد برنامه رو بفرست تا برات تست کن

                            دیدگاه


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

                              نوشته اصلی توسط ALI micro
                              اره حتی اگه تغذیه باتری باشه باید خازن رو بزارید :agree:
                              حتما حتما از یه خازن نو استفاده کن مثلا یه 100 میکروفراد بزارید.
                              اگه باز هم جواب نداد برنامه رو بفرست تا برات تست کن
                              برنامه فرستنده:
                              #include <mega8.h>
                              #include <delay.h>
                              #include <nRF24L01+.h>

                              #define LED PORTB.0
                              #define UP PIND.0
                              #define RIGHT PIND.1
                              #define DOWN PIND.4
                              #define LEFT PIND.5
                              #define SW5 PIND.6
                              #define SW6 PINB.6
                              #define SW7 PINB.7
                              #define SW8 PIND.7

                              void value(void);

                              unsigned char INPUT[8], DATA, Flag, null=0, NOT_DATA;

                              // External Interrupt 1 service routine
                              interrupt [EXT_INT1] void ext_int1_isr(void)
                              {
                              Flag=1;
                              LED=0;
                              if(UP==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(RIGHT==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(DOWN==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(LEFT==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(SW5==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(SW6==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(SW7==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(SW8==0)
                              {
                              value();
                              Send_Data(1 , &NOT_DATA);
                              delay_ms(100);
                              }

                              if(UP==1 && RIGHT==1 && DOWN==1 && LEFT==1 && SW5==1 && SW6==1 && SW7==1 && SW8==1)
                              {
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              }
                              }

                              // Timer1 overflow interrupt service routine
                              interrupt [TIM1_OVF] void timer1_ovf_isr(void)
                              {
                              TCNT1=4000;
                              LED=~LED;
                              }

                              void main(void)
                              {
                              // Port C initialization
                              // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                              // State6=T State5=P State4=P State3=P State2=P State1=P State0=P
                              PORTC=0x3F;
                              DDRC=0x00;

                              // Port D initialization
                              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                              // State7=P State6=P State5=P State4=P State3=P State2=T State1=P State0=P
                              PORTD=0xFB;
                              DDRD=0x00;

                              // Timer/Counter 1 initialization
                              // Clock source: System Clock
                              // Clock value: 125.000 kHz
                              // Mode: Normal top=0xFFFF
                              // OC1A output: Discon.
                              // OC1B output: Discon.
                              // Noise Canceler: Off
                              // Input Capture on Falling Edge
                              // Timer1 Overflow Interrupt: On
                              // Input Capture Interrupt: Off
                              // Compare A Match Interrupt: Off
                              // Compare B Match Interrupt: Off
                              TCCR1A=0x00;
                              TCCR1B=0x03;
                              TCNT1=0x00;
                              ICR1H=0x00;
                              ICR1L=0x00;
                              OCR1A=0x00;
                              OCR1B=0x00;

                              // Timer(s)/Counter(s) Interrupt(s) initialization
                              TIMSK=0x04;

                              nRF_Config(0);

                              Flag=1;

                              while (1)
                              {
                              if(Flag==1)
                              {
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              delay_ms(2);
                              Send_Data(1 , &null);
                              Flag=0;
                              }
                              }
                              }


                              void value(void)
                              {
                              INPUT[0]=UP;
                              INPUT[1]=RIGHT;
                              INPUT[2]=DOWN;
                              INPUT[3]=LEFT;
                              INPUT[4]=SW5;
                              INPUT[5]=SW6;
                              INPUT[6]=SW7;
                              INPUT[7]=SW8;
                              DATA=(INPUT[0]*1)+(INPUT[1]*2)+(INPUT[2]*4)+(INPUT[3]*8)+(INPUT[4]*16)+(INPUT[5]*32)+(INPUT[6]*64)+(INPUT[7]*128);
                              NOT_DATA=~DATA;
                              }


                              برنامه گیرنده:
                              #include <mega8.h>
                              #include <delay.h>
                              #include <nRF24L01+.h>

                              #define LED PORTB.0
                              #define OUT1 PORTD.0
                              #define OUT2 PORTD.1
                              #define OUT3 PORTD.4
                              #define OUT4 PORTD.5
                              #define OUT5 PORTD.6
                              #define OUT6 PORTD.7
                              #define OUT7 PORTB.6
                              #define OUT8 PORTB.7

                              unsigned char t[8],b[8], bin[8];
                              unsigned char in, data1, data_clear;

                              void D2B(unsigned int value);


                              // Timer1 overflow interrupt service routine
                              interrupt [TIM1_OVF] void timer1_ovf_isr(void)
                              {
                              TCNT1=4000;
                              LED=~LED;
                              }

                              void main(void)
                              {
                              // Port C initialization
                              // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                              // State6=T State5=P State4=P State3=P State2=P State1=P State0=P
                              PORTC=0x3F;
                              DDRC=0x00;

                              // Port D initialization
                              // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=Out Func0=Out
                              // State7=0 State6=0 State5=0 State4=0 State3=P State2=T State1=0 State0=0
                              PORTD=0x08;
                              DDRD=0xF3;

                              // Timer/Counter 1 initialization
                              // Clock source: System Clock
                              // Clock value: 125.000 kHz
                              // Mode: Normal top=0xFFFF
                              // OC1A output: Discon.
                              // OC1B output: Discon.
                              // Noise Canceler: Off
                              // Input Capture on Falling Edge
                              // Timer1 Overflow Interrupt: On
                              // Input Capture Interrupt: Off
                              // Compare A Match Interrupt: Off
                              // Compare B Match Interrupt: Off
                              TCCR1A=0x00;
                              TCCR1B=0x03;
                              TCNT1=0x00;
                              ICR1H=0x00;
                              ICR1L=0x00;
                              OCR1A=0x00;
                              OCR1B=0x00;

                              // Timer(s)/Counter(s) Interrupt(s) initialization
                              TIMSK=0x04;

                              nRF_Config(1);

                              while (1)
                              {
                              if(State == 1)
                              {
                              data1 = payload[1];
                              D2B(data1);

                              State = 0;
                              data_clear=0;
                              }

                              data_clear++;
                              if(data_clear>=200)
                              {data1=0; payload[1]=0; data_clear=0;}
                              }
                              }

                              void D2B(unsigned int value)
                              {
                              //----Bin 2 Decimal----
                              in=value;

                              t[0]=in/2;
                              b[0]=in%2;
                              bin[0]=b[0];

                              t[1]=t[0]/2;
                              b[1]=t[0]%2;
                              bin[1]=b[1];

                              t[2]=t[1]/2;
                              b[2]=t[1]%2;
                              bin[2]=b[2];

                              t[3]=t[2]/2;
                              b[3]=t[2]%2;
                              bin[3]=b[3];

                              t[4]=t[3]/2;
                              b[4]=t[3]%2;
                              bin[4]=b[4];

                              t[5]=t[4]/2;
                              b[5]=t[4]%2;
                              bin[5]=b[5];

                              t[6]=t[5]/2;
                              b[6]=t[5]%2;
                              bin[6]=b[6];

                              t[7]=t[6]/2;
                              b[7]=t[6]%2;
                              bin[7]=b[7];

                              OUT1=bin[0];
                              OUT2=bin[1];
                              OUT3=bin[2];
                              OUT4=bin[3];
                              OUT5=bin[4];
                              OUT6=bin[5];
                              OUT7=bin[6];
                              OUT8=bin[7];
                              }

                              برنامه ها بسیار ساده هستن من حس میکنم کتابخانه مشکلی داره چون زمانی که از حالت فرستنده به گیرنده تغییر وضعیت میدادم هم مشکل هنگ کردن ماژول وجود داشت البته.
                              کسی با کتابخانه آقای مرتضوی کار کرده مشکلی نداره؟

                              دیدگاه


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

                                علی آقا مشکل حل شد اشکال استفاده از اینتراپت یک بود، یکم موضوع عجیب نباید استفاده از اینتراپتها تو کار همدیگه مشکلی ایجاد کنه چون هر اینتراپت وکتور نامبر داره که هر زمانی دو اینتراپت در یک زمان رخ بده اول اونی اجرا میشه که وکتور بالاتری داره. صفخه42 جدول 18 دیتا شیت مگا8.
                                علی آقا بابت پاسخهای شما متشکرم

                                دیدگاه

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