-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incompatibility with Arduino NANO 33 BLE. #739
Comments
As far as I know the library is working with the Nano 33, so it would likely be a hardware or coding issue, especially since it is working as transmitter, just not receiving. Can you show the output of printDetails? Are you using the included examples to test? (same code on radio 2 and 3?) |
This is going to sound ironic, but the Nano 33 BLE uses a nRF52840 as its CPU which internally employs a cortex M4 (maybe a SAMD -- going off of memory here) for user-code execution. I'm not too surprised that printf.h isn't working on this platform given #414 , but all that only addresses why you can't get debugging info printed to Serial. The real problem is why your project isn't working, but it would be easier to address this if we see your code. If posting your code publicly is prohibited, then I would go with TMRh20's suggestion and load up a library example (gettingStarted.ino seems the most applicable) and test only a pair of radios at a time (the examples aren't written for transmitting to 2 RX nodes). |
first of all, thanks a lot for you reply and the good news, that the library should work well with the Nano 33 BLE. I have discarted a HW problem, as a I switched the NRFL2401+ boards among the Arduinos and the problem persists. The Arduino Uno can send/receive with no problem. These are the codes: Sender (Arduino Nano 33 BLE)
Receiver (Arduino Nano 33 BLE and/or Arduino Uno)
Below you can find the output of the Serial Monitor. Only the information inside of the "loops" is displayed. Sender (Arduino Nano 33 BLE) Working Receiver (Arduino Uno) Working Receiver (Arduino Nano 33 BLE) Not working The following can be observed: Receiver side:
Sender side.
The sender works fine, as the module connected to the Arduino Uno is displaying the data in the serial monitor. What I have tried:
PS1. Only 2 ouf 3 systems are powered while the test occurs (Nano 33 BLE and Uno, or two Nano 33 BLE's).
Best regards, Tonio |
To power off a radio, do you disconnect the usb cable (and whatever the radio's VCC pin is supplied with)? Or do you call Just trying to eliminate the possibility that the payload is intercepted. I don't often get to say this, but you've got me stumped. If you run the scanner example (found in "examples/old_backups" folder) and no signals are detected, then I would think the radio module is defective (especially in the presence of WiFi/Bluetooth). |
Hi, Sometimes the RPD flag gets active, but very rarely. This is the output of the scanner example. It seems that the default channel (0x4C) is not being affected by noise. Btw, I tried the same NRF24L01+ module with an Arduino DUE and it worked perfectly. Some brainstorming...
|
Love the brainstorming: Your brain is on the same page as mine. Thanks for the scanner output; this not only verifies that the radio is in working order but also the CE pin is behaving as expected.
This is worth reviewing... I would start with source code for |
yeah, I will do that, it will take a while though. Btw, I did the scanner test, while another NRF14L01+ module was transmitting data on the 0x69 channel, which is being reflected in the scanner test, i.e. the module is actually "seeing" data. |
BTW, according to BLE specs, any BLE device only focuses on channels 2, 26, and 80 (and nRF24->BLE uses the address Also, frequency resolution using 1Mbps data rate is +/- 1 channel. With 2Mbps, the resolution is +/- 2 channels. |
I figured it out, well partially. It was a HW problem. Apparently, the 3V3 output of the Nano 33 BLE was the problem. I am not sure why the voltage output of the Nano 33 BLE is not enough. According to the datasheet of the NRF24L01+, more current is drawn on RX mode than in TX mode. There does not seem to be a large difference in the RX and TX modes, though. This is kind of disappointing, as I will have to include an external 3V3 voltage source to my setup. Anyways, it was fun debugging the library and getting to know in detail the NRF24L01+ module. PS. Of course a capacitor on the VCC/GND pins of the radio module was always there... |
Hmm, most 3.3v devices can handle the Ned, that’s a bit disappointing. Thanks for the info though, I will have to add your modification to printf.h
… On Mar 2, 2021, at 9:53 AM, TonioChingon ***@***.***> wrote:
I figured it out, well partially. It was a HW problem.
Apparently, the 3V3 output of the Nano 33 BLE was the problem.
I changed the 3V3 source to an external source and now it is working well.
I am not sure why the voltage output of the Nano 33 BLE is not enough. According to the datasheet of the NRF24L01+, more current is drawn on RX mode than in TX mode. There does not seem to be a large difference in the RX and TX modes, though.
This is kind of disappoting, as I will have to include an external 3V3 voltage source to my setup.
Anyways, it was fun debugging the library and getting to know in detail the NRF24L01+ module.
I think this might be useful to other users of this library in the Nano 33 BLE, specially with the printf.h fix in the first post.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Good work! It's been so long since I looked at that part of the datasheet (I blame PA/LNA modules for that). I bet the scanner example will show much more ambient signals with a proper power source also. |
convert _SPI calls to pointers where applicable typo made BCM driver fail overload begin() and amended docs about begin() fix faulty #ifdef logic doxygen v1.9.1 deprecated COLS_IN_ALPHA_INDEX tag bump version to v1.4.0 exclude only RF24_LINUX apply ptr treatment to Teensy, LittleWire, & Due trigger ArduinoCLI action doxygen action shouldn't create a docs folder no need to specify output dir in doxygen action make my life simpler: use new RF24_SPI_PTR macro trigger ArduinoCLI action forgot about c'tor; fix 2-space indent in begin() abstract SPI::begin() from _init_pins() adjust csn_pin before SPI.begin() on BCM driver conforming whitespace add printf.h fix from @TonioChingon in nRF24#739 rename atxmega.md & add link to supported product add Due to ArduinoCLI action fix teensy support; add PIO CI for teensy [PIO CI] use quoted matrix entries [PIO CI] use single quotes? I hate YML Gimme that badge add MRAA to Linux CI action typo [Linux CI] MRAA install needs special permission try with "sudo bash -c" [Linux CI] MRAA not cross compiling (I think) add example code snippets to Arduino support pg doc typos Due can't use SPI_PTR; delete ATXMEGA/readme.md (use docs/atxmega.md instead) fix nRF24#414; note need mbed example in arduino.md fix printf() only for adafruit/ArduinoCore-SAMD add msg about COMMON_ISSUES to README add estimated mbed example to arduino.md avr/pgmspace.h was added to Due core in 2013 oops, undo my testing change remove useless Due config file nRF24#752 ammend support for SPI_UART in csn() Confirm working 2nd SPI bus on esp8266 nRF24#648 fix indent c-n-p artifact; more indent inconcsistencies comment out theroretical example snippets add pinout img from RF24Audio repo doxygen sux at reading imgs implement nRF24#539 my CnP skills are lacking need to test py wrapper [py_wrap] begin fails to compile [py wrap] oops left the old begin still in there [py wrap] use thin wrapper for begin_w/_pins [pr wrap] try explicit begin(void) boost.py docs suck [py wrap] try using same name for begin(pin, pin) [py wrap] c'tor overload is bad [py wrap] "optional<>" template didn't take [py wrap] unmatched parenthesis advise that teensy doesn't need overloaded begin() docs review
Hi,
this is a great library!
There is however some incompatibility with the Arduino Nano 33 BLE (based on mbed OS).
I have the following setup:
I am not able to receive any data on the Radio 2, transmission works well as data is received in Radio 3.
In order to debug the code, I tried to use printDetails and printf_P. Unfortunately they did not print any information.
After some research, I was able to make it work by inserting at line 27 of printf.h the following (see line 44 in https://github.com/arduino/ArduinoCore-mbed/blob/8564c3a97f9a2f74a54f3952ddd9a0516da22add/cores/arduino/macros.h):
Original code of printf.h:
RF24/printf.h
Lines 20 to 28 in 2af44fc
Unfortunately, I did not figure it out how to insert it inside printf_begin().
I was able to perform the debugging, but with no success, i.e. I am still not able to receive data with Radio 2.
The Radios 2 and 3 seem to behave exactly the same during setup commands, however at the time of reading the data, there is no available data in Radio 2. The tests were carried out while Radio 2 and 3 were both on and only either of them was on.
Any thoughts? I will keep trying.
PS. I was debugging library v.1.3.11 but today I made the update to 1.3.12 also with no success (but no debugging).
The text was updated successfully, but these errors were encountered: