Solid nrf24 library recommendation

My current setup :
Host : iBoardex (based on Leonardo) running at 3.3V.
Sensor : Mini Pro powered from 3 x AA batteries.
At present I am I am using cheap 433MHz modules to send data from sensor to host.
With code, I give the sensor an id, which is transmitted with the message.

My desired setup :
I bought 2 of these nRF24L01+ modules and an adpater.
The host has an nRF24 header, so the module can just plug in.
The adapter will connect the module to the sensor at 3.3V.

Objectives:
Use/enable address checking, i.e. the sensors will transmit to a specific address.
Host to acknowledge receipt of message.
For now I don’t need mesh networking - that may come later.
I also plan to change the module at the host to a module with PA and external antenna.

Yes I know there are many libraries (266 entries on Github) and I have done a lot of research/reading, but of course most of the posts are about problems. Radiohead, ManiacBug etc all seem to be problematic in their implementation.

Apparently several people also have problems getting the low and high power units to communicate - I am aware of the higher power requirements for the latter.

Anyway I was hoping to draw on the experience of people who have actually set up a similar network and got it to work with very little trouble; and ask for a recommendation for a solid library to use that would meet my objectives.

TIA for sharing your experience.

I have decided to try out maniac bug's RF24 library.

I am trying the pingpair example.

PROBLEM : I am using an iBoard ex, which has non standard SPI MISO & MOSI pins viz.

MISO = D7
MOSI = D8

QUESTION : Where is it best to redefine these pins and what is the format?

FWIW the example requires SPI.h, which is set to be included.
It would appear the pins are actually defined in "pins_arduino.h".

Hmmm this thread is becoming a soliloquy.

I have redefined the pins, and the serial monitor is updating.

Unfortunately I am getting a send failed and response timeout....

How I miss plug&play.

Hello for simple nrf communication i would recommend this code, it uses non hardware spi and only a few functions.
So you can easily see what the code are doing, and its easy to add your own functions just take a look in the nrf24l01 data sheet and read/write to the right register.

Just change the pins to whatever you need in nrf24l01.h and the code should just work.
i have used it on 5 different nrf24l01 chips with 0 problems (pa/pa-lna/cheap and cheaper clones…)

Another big plus, this code will run on almost anything so far i have tried on most standard arduino chips, stm32, esp8266 and with some modification it even runs on attiny13…

Have fun.

nRF24l01_softSpi.zip (7.93 KB)

Hello

I've been using the TMR20h version of manicbug's RF24 network libraries and general workjs well. I say that even though I am have issues getting 8 nodes to talk cleanly but I think that's more to do with my wiring\setup.

How many nodes are you testing with and have you reviewed the addressing octal requirements.

Unfortunately the iBoard ex died on me today :frowning:
So all testing on it has come to a screeching halt.

I guess its time to revert back to using an uno with shields and adapters :frowning:

Should you ever get it working again or replace it then at the bottom of the IBoard Wiki are links that may help

Andy Karpov’s GitHub Page <RF24 library that supports nRF24L01 on iBoard

Andy Karpov’s GitHub Page <RF24Network library that supports nRF24L01 on iBoard

Yes, I saw that code and was actually testing swe-dude's code when it died.

I managed to revive the iBoardex by reburning the bootloader with an Uno.

Testing resumes, but a question arises....

What would cause a bootloader to be "lost"?
Can a library or bad code do it?

aisc:
I managed to revive the iBoardex by reburning the bootloader with an Uno.
Glad you managed to perform successful CPR on it. :slight_smile:

Testing resumes, but a question arises....

What would cause a bootloader to be "lost"?
Can a library or bad code do it?

The main things that spring to mind are wrong board.txt/fuse settings for the size of bootloader that don't protect the full memory area the bootloader uses and it gets overwritten when uploading large code.

Riva:
The main things that spring to mind are wrong board.txt/fuse settings for the size of bootloader that don't protect the full memory area the bootloader uses and it gets overwritten when uploading large code.

Ok so for instance could this cause it :

  • I upload a sketch to an Uno
  • I unplug the Uno and plug in the iBoardex (read Leonardo)
  • I select another sketch and upload it to the iBoardex
  • The sketch compiles but the IDE complains it cannot find the board
  • Duh - I forgot to change board and port selection.

Because I certainly am guilty of having done that a few times.