Nrf24l01 Bascom und Arduino

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Nrf24l01 Bascom und Arduino

      Hallo Forengemeinde!
      Meine bisherigen Funkprojekte mit dem Nrf24 waren ausschließlich in Bascom programmiert.
      Nun möchte ich einen Bascom-tx mit einem Arduino-rx (programmiert mit der Arduino IDE, also C) verbinden.
      Ich habe schon viele Einstellungen hinsichtlich pipe, packload, Kanal und Leistung getestet - ohne Erfolg.
      Vielleicht hat das schon mal einer probiert und könnte mir mal von dem Schlauch helfen, auf dem ich wie angewurzelt stehe.

      Mfg
      Rico
    • Das wichtigste:
      Die 232-Parameter müssen bei Sender und Empfänger identisch sein.

      Dann musst du wissen, wie Bascom sendet und wie Arduino empfängt.

      Bascom Sendet bei Print variable immer ein CR am Schluss mit.
      Will man das nicht, miss man Print variable; schreiben (mit Strichpunkt).

      Wenn du Zahlen schickst, wandelt Bascom diese um in String und sendet diese.
      Beispiel
      Word-Variable wrdWord mit Wert 100.
      Dann mit Code "Print wrdWord" schreibt auf die Schnittstelle:
      1, dann 0, dann 0, dann CR, also 4 Byte

      Gibst du mit PrintBin wrdWord aus, werden 2 Byte über die Schnittstelle ausgegeben.

      Jetzt musst du schauen, wie Arduino die Werte einliest.
    • Sorry. Ich war der Annahme, dass die Bezeichnung tx als Sender und rx als Empfänger im Zusammenhang mit dem Funkmodul gesehen wird.

      Als erstes Sender und Empfänger in Basom --> funzt.
      Als zweites Sender (Bascom) und Empfänger (Arduino IDE).

      Mir geht es darum, wie ich die Parameter des Empfängers in Basom in die 'void setup' bei radio.xyz des Arduino mittels IDE eintrage (bisherige Versuche erfolglos).
      Also Kanal 40, Adresse 1, Pipe 0, 0dbm und 2Mbps, 5 Byte Übertragung ( 6 Byte am Sender ).

      Hier der Bascom-Code des Empfängers:


      BASCOM-Quellcode: RX

      1. $regfile = "m328pdef.dat"
      2. $crystal = 8000000
      3. Config Lcd = 16 * 2
      4. Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
      5. Cursor Off
      6. Cls
      7. Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte)
      8. Declare Sub W_register(byval C_bytes As Byte)
      9. Const Write_reg = &H20
      10. Const Rd_rx_pload = &H61
      11. Const Config_nrf = &H00
      12. Const En_aa = &H01
      13. Const En_rxaddr = &H02
      14. Const Rf_ch = &H05
      15. Const Rf_setup = &H06
      16. Const Status = &H07
      17. Const Rx_addr_p0 = &H0A
      18. Const Rx_pw_p0 = &H11
      19. Const Fifo_status = &H17
      20. Dim D_bytes(6) As Byte , B_bytes(5) As Byte
      21. Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
      22. Config Pind.5 = Output 'CE pin is output
      23. Config Pinb.2 = Output 'SS pin is output
      24. Config Pind.7 = Input 'IRQ pin is input
      25. Ce Alias Portd.5
      26. Ss Alias Portb.2
      27. Irq Alias Pind.7
      28. Spiinit
      29. Set Ce
      30. Waitms 10
      31. Reset Ce
      32. Reset Ss
      33. Call R_register(status , 1)
      34. Reset Ce
      35. Gosub Setup_rx
      36. Waitms 2
      37. Set Ce
      38. Do
      39. If Irq = 0 Then
      40. Reset Ce
      41. Call R_register(rd_rx_pload , 5)
      42. locate 1,1
      43. Lcd B_bytes(1)
      44. D_bytes(1) = Write_reg + Status
      45. D_bytes(2) = &B01000000
      46. Call W_register(2)
      47. Set Ce
      48. Waitms 2
      49. End If
      50. Loop
      51. Sub W_register(byval C_bytes As Byte)
      52. Reset Ss
      53. Spiout D_bytes(1) , C_bytes
      54. Set Ss
      55. End Sub
      56. Sub R_register(byval Command As Byte , Byval C_bytes As Byte) As Byte
      57. Reset Ss
      58. Spiout Command , 1
      59. Spiin B_bytes(1) , C_bytes
      60. Set Ss
      61. End Sub
      62. Setup_rx:
      63. D_bytes(1) = Write_reg + Rx_addr_p0
      64. D_bytes(2) = &H34
      65. D_bytes(3) = &H43
      66. D_bytes(4) = &H10
      67. D_bytes(5) = &H10
      68. D_bytes(6) = &H01
      69. Call W_register(6)
      70. D_bytes(1) = Write_reg + En_aa
      71. D_bytes(2) = &H01
      72. Call W_register(2)
      73. D_bytes(1) = Write_reg + En_rxaddr
      74. D_bytes(2) = &H01
      75. Call W_register(2)
      76. D_bytes(1) = Write_reg + Rf_ch
      77. D_bytes(2) = 40
      78. Call W_register(2)
      79. D_bytes(1) = Write_reg + Rx_pw_p0
      80. D_bytes(2) = 5
      81. Call W_register(2)
      82. D_bytes(1) = Write_reg + Rf_setup
      83. D_bytes(2) = &H0F
      84. Call W_register(2)
      85. D_bytes(1) = Write_reg + Config_nrf
      86. D_bytes(2) = &H0F
      87. Call W_register(2)
      88. Return
      Alles anzeigen
    • Ich verstehe deine Frage nicht.
      Welche Parameter von Bascom? Was meinst du damit? Die Parameter vielleicht von der SPI?

      Void setup() sagt mir was.
      Aber mit radio.xyz bin ich überfordert.
      Und was meinst du miitels IDE eintagen?

      Kannst du das mal etwas präzisieren?

      Ach ja, das radio.xyz kannst du auch einstellen. Ich nehme an das ist Sourcecode vom Arduino?
    • Und hier ist ein Beispielcode eines Empfängers (Arduino):

      #include <SPI.h>
      #include <nRF24L01.h>
      #include <RF24.h>
      RF24 radio(8, 9); //Define radio (CE-PIN,CSN-PIN)
      const byte rxAddr[6] = "00001"; //RX adress
      String received_data;
      void setup()
      {
      // Start the serial
      Serial.begin(9600);
      Serial.println("NRF24 Receiver");
      radio.begin();
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate( RF24_2MBPS );
      radio.openReadingPipe(0, rxAddr);
      radio.startListening();

      }

      .....
    • IDE ist die Plattform, um den Arduino zu programmieren.
      Bei radio trage ich die Parameter ein, welche ich auch in bascom für die Steuerung des nrf24 verwende. Ausser, natürlich, ihn jeweils als Empfänger und Sender zu konfigurieren.
      Leider verstehen die beiden, trotz gleicher Parameter, nicht.
    • Richie69 schrieb:

      wie ich die Parameter des Empfängers in Basom in die 'void setup' bei radio.xyz des Arduino mittels IDE eintrage
      Die Arduino-IDE bietet nicht die Möglichkeit wie die Bascom-IDE Parameter in einem Fenster einzugeben.
      Das musst du bei Arduino in den Source-Code schreiben.

      Welche Parameter du da eingeben musst für das Funkmodul und die SPI kann ich dir auch nicht sagen.
      Zur SPI gibt es Hilfe auf der Ardiono-Webseite.
      Zum Funkmodul auf der Seite des Anbieters, nehme ich an.

      Ich kann dir an der Stelle dann auch nicht weiter helfen, ohne mich einzulesen.