اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من این ماژول رو با هدری که پست اول بود راه اندازی کردم ولی data lost زیادی دارم!!
    عدد 1 رو دریافت میکنم و دیگه دیتایی دریافت نمیشه تا عدد 5 مثلا!
    مگه تو این هدر ack فعال نیست؟
    کسی تا حالا این مشکل رو داشته؟

    دیدگاه


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

      امان از دست کتابخونه های چرت
      و ماژول های آشغال تر از کتابخونه ها
      این هایی که تو بازار ایران هست
      میان و با نقشه خود ماژول که تو دیتاشیت هست و با وارد کردن قطعات از جمله آی سی NRF خود اقدام به ساخت میکنند

      حالا یکی میاد مثل ECA آیسی رو از تایوان وارد میکنه یکی هم معلوم نیست از کجا
      این تفاوت های قیمت هم به خاطر همونه
      از دو چیز بسیار زیاد یاد گرفتم (1) نمونه مدارهای موجود در سایت های خارجی (2) مهندسی معکوس بردهای غیر ایرانی. به نقل از آقای مرتضی امانی
      --------------------------------------------------------
      تمام دنیا ما را تحریم کرده اند؛ حداقل خودمان همدیگر را تحریم نکنیم. به نقل از pencil
      --------------------------------------------------------
      اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است. mehran901

      دیدگاه


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

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

        دیدگاه


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

          سلام
          یه نکته تو راه اندازی nrf هست (یعنی spi میکرو) که منو 1 روز درگیر خودش کرد گفتم بگم شاید دوستان اگه به چنین مشکلی خوردن راه حلش رو بلد باشن!
          اگه واسه راه اندازی nrf و کلا spi از پایه ss میکرو استفاده نمیکنید حتما پایه ss رو خروجی قرار بدید و یکش کنید در غیر اینصورت میکرو به حالت مستر نمیره و در حالت اسلیو میمونه و هیچ کاری انجام نمیده! (البته چن تا پروژه انجام دادم و این مشکل رو نداشتم نمیدونم چرا ایندفه اینجوری شد!)
          اینو پس از سرچ تو سایت sparkfun متوجه شدم!
          اینم لینک تاپیکش:

          دیدگاه


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

            سلام دوستان
            من تقریبا یه هفتس دارم دنبال اموزش جامع و ساده برای این ماژول به زبان بیسیک میگردم
            ولی متاسفانه چیزی پیدا نکردم
            یه چندتا لینکم بود که مال انجمن قبلی بود که عملا بدون استفاده هست
            کسی اگه اموزشی چیزی به زبان بیسیک داره لطفا برام بزاره
            با تشکر
            گر جهنم میروی
            مـــردانـــه رو
            www.gitinet.org

            دیدگاه


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

              مشکلم حل شد مرسی همه
              جدیدترین ویرایش توسط mohsen jam35; ۲۳:۵۳ ۱۳۹۵/۰۶/۱۱. دلیل: درست شد

              دیدگاه


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

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

                دیدگاه


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

                  سلام دوستان
                  من یه چند مدته دارم دنبال ی برنامه ساده میگردم ک فقط بتونم با استفاده زا اون این ماژول رو یاد بگیرم و ازش تو پروژم استفاده کنم
                  تو سایت eca که تقریبا همه لینکاش خراب شده و فایده نداره هر لینکی میزنم میاد صفحه اصلی سایت
                  از چند تا دیگه سایت یه نرم افزار پیدا کردم وا ون رو بستم و اجرا کردم
                  زبانش بیسیک هس
                  مشکل اینجاست که من این رو وقتی استارت میکنم فرستنده یکی led روشن میشه و ثابت میمونه ولی دی گیرنده هیچی ندارم
                  در حالی که اگه گیرنده رو غیرفعال کنم(خاموش باشه)همون ال ای دی توی فرستنده هم روشن نمیشه
                  کسی میتونه راهنماییم کنه؟
                  از دوستان اگه کسی اموزش جامع و ساده ای برای این ماژول ب زبان بیسیکم داره خواهش میکنم لینکش بهم بده منم مطالعه کنم الان 2 هفتس وقتم رو گرفته و هیچی ازش نفهمیدم.
                  راستی من نوع smd+ این ماژول رو دارم فکر نمیکنم فرقی بکنه کارش
                  پیش پیش از راهنماییتون ممنونم
                  اینم فایلای پروژه
                  دانلود کنید.
                  گر جهنم میروی
                  مـــردانـــه رو
                  www.gitinet.org

                  دیدگاه


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

                    سلام .چرا توی برنامه نمونه اقای ایمانی فر وقتی متغیر از نوع اینتیجر انتخاب میکنی و مساوی پایلود میکنی برنامه ارور میده.ایا فقط مقدار متغیر از نوع چار رو میشه فرستاد؟؟؟؟؟؟؟؟لطفا کمک کنید

                    دیدگاه


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

                      فکر کنم جنس متغییری که میخای بفرستید حتما باید byte باشه
                      بازم مطمین نیستم
                      نوشته اصلی توسط mohsen jam35 نمایش پست ها
                      سلام .چرا توی برنامه نمونه اقای ایمانی فر وقتی متغیر از نوع اینتیجر انتخاب میکنی و مساوی پایلود میکنی برنامه ارور میده.ایا فقط مقدار متغیر از نوع چار رو میشه فرستاد؟؟؟؟؟؟؟؟لطفا کمک کنید
                      گر جهنم میروی
                      مـــردانـــه رو
                      www.gitinet.org

                      دیدگاه


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

                        مرسی ولی اگه بخایم متغیرو تغییر بدیم باید چیکار کرد؟؟؟

                        دلیل: ادغام دو پست برای جلوگیری از اسپم

                        نوشته اصلی توسط mohsen jam35 نمایش پست ها
                        مرسی ولی اگه بخایم متغیرو تغییر بدیم باید چیکار کرد؟؟؟
                        ایا کسی هست مرا یاری کند؟؟؟

                        دیدگاه


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

                          سلام مجدد دوستان
                          من بعد از حدود 2 هفته بلاخره تونستم راهش بندازم
                          اول اینکه دوستانی که توی پستای قبلی گفتن کار نمیکنه اگه از سخت افزار و نرم افزارشون مطمینن تغذیه فرستنده و گیرنده (هم 3 ولتی هم 5 ولتی ) رو یکی کنند شاید مشکلشون برطرف بشه من دو سه روز روی این گیر بودم
                          بعد یه مشکلی که الان پیدا کردم اینه که توی فرستنده میخام مقدار ماژول التراسونیک رو بخونم و بفرستم
                          برنامه ای که نوشتم اینه که همزمانی که ماژول التراسونیک میخاد بفرسته یکی شمارشم (0تا 255) گذاشتم واسه تست ارتباط
                          حالا مشکل اونجاس که توی گیرنده مقدار شمارنده هام رو نشون میده ولی مقدار التراسونیک رو 0 میزاره
                          نمیدونم مشکل از کجاس
                          دوستان کسی میتونه راهنماییم کنه؟
                          کد:




                          $regfile = "M8def.dat"
                          $crystal = 8000000
                          $baud = 19200
                          $hwstack = 40
                          $swstack = 20
                          $framesize = 40


                          '=== Declare sub routines
                          Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte)
                          Declare Sub W_register(byval C_bytes As Byte)


                          '=== Constante ===
                          'Define nRF24L01 interrupt flag's
                          Const Idle_int = &H00 'Idle, no interrupt pending
                          Const Max_rt = &H10 'Max #of Tx Retrans Interrupt
                          Const Tx_ds = &H20 'Tx Data Sent Interrupt
                          Const Rx_dr = &H40 'Rx Data Received


                          'SPI(nRF24L01) commands


                          Const Read_reg = &H00 'Define Read Command To Register
                          Const Write_reg = &H20 'Define Write Command To Register
                          Const Rd_rx_pload = &H61 'Define Rx Payload Register Address
                          Const Wr_tx_pload = &HA0 'Define Tx Payload Register Address
                          Const Flush_tx = &HE1 'Define Flush Tx Register Command
                          Const Flush_rx = &HE2 'Define Flush Rx Register Command
                          Const Reuse_tx_pl = &HE3 'Define Reuse Tx Payload Register Command
                          Const Nop_comm = &HFF 'Define No Operation , Might Be Used To Read Status Register
                          'SPI(nRF24L01) registers(addresses)
                          Const Config_nrf = &H00 'Config' register address
                          Const En_aa = &H01 'Enable Auto Acknowledgment' register address
                          Const En_rxaddr = &H02 'Enabled RX addresses' register address
                          Const Setup_aw = &H03 'Setup address width' register address
                          Const Setup_retr = &H04 'Setup Auto. Retrans' register address
                          Const Rf_ch = &H05 'RF channel' register address
                          Const Rf_setup = &H06 'RF setup' register address
                          Const Status = &H07 'Status' register address
                          Const Observe_tx = &H08 'Observe TX' register address
                          Const Cd = &H09 'Carrier Detect' register address
                          Const Rx_addr_p0 = &H0A 'RX address pipe0' register address
                          Const Rx_addr_p1 = &H0B 'RX address pipe1' register address
                          Const Rx_addr_p2 = &H0C 'RX address pipe2' register address
                          Const Rx_addr_p3 = &H0D 'RX address pipe3' register address
                          Const Rx_addr_p4 = &H0E 'RX address pipe4' register address
                          Const Rx_addr_p5 = &H0F 'RX address pipe5' register address
                          Const Tx_addr = &H10 'TX address' register address
                          Const Rx_pw_p0 = &H11 'RX payload width, pipe0' register address
                          Const Rx_pw_p1 = &H12 'RX payload width, pipe1' register address
                          Const Rx_pw_p2 = &H13 'RX payload width, pipe2' register address
                          Const Rx_pw_p3 = &H14 'RX payload width, pipe3' register address
                          Const Rx_pw_p4 = &H15 'RX payload width, pipe4' register address
                          Const Rx_pw_p5 = &H16 'RX payload width, pipe5' register address
                          Const Fifo_status = &H17 'FIFO Status Register' register address




                          Dim D_bytes(33) As Byte , B_bytes(33) As Byte 'Dim the bytes use for SPI, D_bytes = outgoing B_bytes = Incoming
                          Dim Temp As Byte , W As Word
                          Dim Packet_count As Byte
                          Dim T1 As Byte
                          Dim T2 As Byte
                          '///////////////////////////////////////////////////////////////////////////////
                          Config Portd.2 = Output
                          Config Pind.3 = Input
                          Dim A As Word , Distance As Single , B As Word , D As Word , T3 As Byte
                          '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                          '=== Config hardware ===
                          Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 1


                          'Software SPI is NOT working with the nRF24L01, use hardware SPI only, but the SS pin must be controlled by our self


                          Config Pind.5 = Output 'CE pin is output
                          Config Pinb.2 = Output 'SS pin is output
                          Config Pind.7 = Input 'IRQ pin is input


                          Ce Alias Portd.5
                          Ss Alias Portb.2
                          Irq Alias Pind.7


                          Config Portc.3 = Output
                          Config Portc.4 = Output
                          Red_led Alias Portc.3
                          Green_led Alias Portc.4


                          Red_led = 1
                          Green_led = 1
                          Waitms 50
                          Red_led = 0
                          Green_led = 0
                          Waitms 50
                          Red_led = 1
                          Green_led = 1
                          Waitms 50
                          Red_led = 0
                          Green_led = 0
                          Spiinit 'init the spi pins


                          Set Ce
                          Waitms 10 'Wait a moment until all hardware is stable
                          Reset Ce 'Set CE pin low
                          Reset Ss 'Set SS pin low (CSN pin)




                          Print "TX_device" 'Send to terminal who i'm


                          Red_led = 1


                          D_bytes(1) = Flush_tx 'Flush the TX_fifo buffer
                          Call W_register(1)
                          D_bytes(1) = Write_reg + Status 'Reset the IRQ bits
                          D_bytes(2) = &B00110000
                          Call W_register(2)
                          Red_led = 0


                          Do




                          '================================================= =============================




                          Gosub Ultera
                          ' T1 = 50
                          ' T2 = 30


                          '================================================= =============================








                          'Main loop for TX






                          Incr Packet_count 'Increase the send packet counter, for test only


                          If Packet_count > 254 Then Packet_count = 0


                          Gosub Setup_tx 'Setup the nrf24l01 for TX
                          D_bytes(1) = Wr_tx_pload 'Put 5 bytes in the TX pload buffer
                          D_bytes(2) = T1 'Byte 1 - �ٍ�ً���ےهى�ے ٍهى�هً�ًٍَ�
                          D_bytes(3) = T2 'Byte 2 - �ٌٍ���ی�ه 4 ل��ٍ� ى�وی� ٍ��وه �ٌ��������ٍ� � ٌ���ُ ِه�ےُ
                          D_bytes(4) = T3 'Byte 3
                          D_bytes(5) = &H11 'Byte 4
                          D_bytes(6) = Packet_count 'Byte 5
                          Call W_register(6) 'Write 6 bytes to register


                          Waitms 2


                          Set Ce 'Set CE for a short moment to transmit the fifo buffer
                          Waitms 1 '
                          Reset Ce '
                          Waitms 25 'Some delay to read the output on the terminal, line can be removed for max. speed


                          W = 0 'Counter for time out






                          Do


                          Red_led = 1


                          If Irq = 0 Then
                          Call R_register(status , 1)
                          Temp = B_bytes(1) And &B01110000 'Mask the IRQ bits out the status byte


                          Select Case Temp 'Which IRQ occurs
                          Case Max_rt 'MAX_RT
                          Print "Maximum number of TX retries, Flushing the TX buffer now !"
                          D_bytes(1) = Flush_tx 'Flush the TX buffer
                          Call W_register(1)
                          D_bytes(1) = Write_reg + Status
                          D_bytes(2) = &B00010000 'Clear the MAX_RT IRQ bit
                          Call W_register(2)
                          Waitms 10
                          Red_led = 0
                          Exit Do
                          Case Tx_ds 'TX_DS
                          Print "Packet " ; Packet_count ; " send and ACK received."
                          D_bytes(1) = Write_reg + Status
                          D_bytes(2) = &B00100000 'Clear the TX_DS IRQ bit
                          Call W_register(2)
                          Waitms 10
                          Red_led = 0
                          Exit Do
                          Case Else 'Other IRQ ??
                          Print "Other irq " ; Bin(temp)
                          D_bytes(1) = Flush_tx 'Flush the TX buffer
                          Call W_register(1)
                          D_bytes(1) = Write_reg + Status
                          D_bytes(2) = &B00110000 'Clear both MAX_RT, TX_DS bits
                          Call W_register(2)
                          End Select
                          End If
                          Green_led = 0
                          Waitms 1 'Time out waiting for IRQ 1ms * 100
                          Incr W 'Increment W
                          If W > 200 Then 'Waited for 200ms
                          Print "No irq response from RF24L01 within 100ms"
                          Exit Do 'Exit the wait loop
                          End If








                          Loop


                          Red_led = 0
                          Wait 1


                          Loop






                          '=== Sub routines ===
                          Sub W_register(byval C_bytes As Byte) 'Write register with SPI
                          Reset Ss 'Manual control SS pin, set SS low before shifting out the bytes
                          Spiout D_bytes(1) , C_bytes 'Shiftout the data bytes trough SPI , C_bytes is the amount bytes to be written
                          Set Ss 'Set SS high
                          End Sub


                          Sub R_register(byval Command As Byte , Byval C_bytes As Byte) As Byte 'C_bytes = Count_bytes, number off bytes to be read
                          Reset Ss 'Manual controle SS pin, set low before shifting in/out the bytes
                          Spiout Command , 1 'First shiftout the register to be read
                          Spiin B_bytes(1) , C_bytes 'Read back the bytes from SPI sended by nRF20L01
                          Set Ss 'Set SS back to high level
                          End Sub




                          Setup_tx: 'Setup for TX


                          D_bytes(1) = Write_reg + Tx_addr 'TX adress
                          D_bytes(2) = &H34
                          D_bytes(3) = &H43
                          D_bytes(4) = &H10
                          D_bytes(5) = &H10
                          D_bytes(6) = &H01
                          Call W_register(6)
                          D_bytes(1) = Write_reg + Rx_addr_p0 'RX adress for pipe0
                          D_bytes(2) = &H34
                          D_bytes(3) = &H43
                          D_bytes(4) = &H10
                          D_bytes(5) = &H10
                          D_bytes(6) = &H01
                          Call W_register(6)
                          D_bytes(1) = Write_reg + En_aa 'Enable auto ACK for pipe0
                          D_bytes(2) = &H01
                          Call W_register(2)
                          D_bytes(1) = Write_reg + En_rxaddr 'Enable RX adress for pipe0
                          D_bytes(2) = &H01
                          Call W_register(2)
                          D_bytes(1) = Write_reg + Rf_ch 'Set RF channel
                          D_bytes(2) = 40
                          Call W_register(2)
                          D_bytes(1) = Write_reg + Rf_setup 'Setup RF-> Output power 0dbm, datarate 2Mbps and LNA gain on
                          D_bytes(2) = &H0F
                          Call W_register(2)
                          D_bytes(1) = Write_reg + Config_nrf 'Setup CONFIG-> PRX=0(TX_device), PWR_UP=1, CRC 2bytes, Enable CRC
                          D_bytes(2) = &H0E
                          Call W_register(2)


                          Return














                          '================================================= ====================


                          Ultera:
                          Green_led = 1
                          Incr T1
                          Decr T2
                          'Waitms 10
                          '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                          Pulseout Portd , 2 , 20
                          Pulsein A , Pind , 3 , 1
                          B = A
                          'Waitms 500
                          Pulseout Portd , 2 , 20
                          Pulsein A , Pind , 3 , 1
                          D = B - A
                          If D < 10 Then
                          If D > 0 Then


                          Distance = A * 20 : Distance = Distance / 5800 : Distance = Distance * 100
                          T3 = Distance


                          'Waitms 500
                          End If
                          End If
                          Return
                          جدیدترین ویرایش توسط salimio2; ۰۱:۵۳ ۱۳۹۵/۰۶/۲۴.
                          گر جهنم میروی
                          مـــردانـــه رو
                          www.gitinet.org

                          دیدگاه


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

                            نوشته اصلی توسط salimio2 نمایش پست ها
                            فکر کنم جنس متغییری که میخای بفرستید حتما باید byte باشه
                            بازم مطمین نیستم
                            ددقیقا همینطوره صفحه 26 دیتاشیت گفته که طول پیلود میتونه تا 32 بایت باشه. بنابراین باید از متغیر نوع char که 8 بیتی هست استفاده بشه

                            دیدگاه


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

                              سورنا جان در مورد سوالی که پرسیدم اطلاعی نداری شما؟
                              نوشته اصلی توسط sorena01 نمایش پست ها
                              ددقیقا همینطوره صفحه 26 دیتاشیت گفته که طول پیلود میتونه تا 32 بایت باشه. بنابراین باید از متغیر نوع char که 8 بیتی هست استفاده بشه
                              گر جهنم میروی
                              مـــردانـــه رو
                              www.gitinet.org

                              دیدگاه


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

                                سلام دوستان
                                من تاه میخوام با NRF کار کنم.میتونید کمک کمید که مثلا فرمانی که data1 ما باید بفرسته به چه صورت باید باشه؟؟ مثلا فشرده شدن یک کلید (pin==0(

                                دیدگاه

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