6

I have two NRF24L01+ modules which are transceivers, but for my project I would like to send a very simple signal from one of these modules to the be read by the other.

That would've been very simple if I had an Arduino on each side but due to power consumption constraints as well as size, cost and practicality, the transmitting side won't have one. Would it still be possible to do this?

To clarify, the message itself is not important and can be set in stone, it will never change. I really just want to detect on the receiving side (which will have an Arduino) that the transmitter is in fact transmitting. Transmission will be triggered by a push-button.

Ideally I would have a way of identifying my particular transmitter from others on similar frequencies but I am not too precious about that.

5
  • 1
    You don't need an "Arduino" but you do need a microcontroller core as that particular chip does not have a user-programmable one. To stay with something that can be treated Arduino-style you could probably make do with an attiny85 (or even the 45 or 25), in a tiny surface mount package, and have it only active a tiny fraction of the time and in negligible-power sleep the rest. May 21, 2014 at 13:51
  • Thank you, Chris, that actually answers my question so if you'd like to post it as an answer I can vote it up.
    – Ceottaki
    May 21, 2014 at 15:06
  • Also, would you then suggest another approach to doing what I intend with a different transceiver or transmitter / receiver pair that does not need a programmable microcontroller?
    – Ceottaki
    May 21, 2014 at 15:06
  • Not sure why the question was voted down?
    – Ceottaki
    Jun 29, 2014 at 6:49
  • is there a difference between the nrf24l01 and nrf24l01 + libraries?
    – saeedomidi
    Oct 29, 2017 at 8:53

5 Answers 5

5

The nRF24L01+ has a somewhat complex SPI based interface, where many registers have to be configured and tested and timeouts honored. Therefore it requires some kind of microcontroller to send or receive even the simplest message.

This can be as simple as a 3.3v Arduino Pro Mini (less than $3 with shipping), and there are libraries which simplify the task of interfacing to it - in particular see the RF24 library (there are many variations, see https://github.com/TMRh20/RF24 for a good one).

But many other microcontrollers could work as well.

Once you bite the bullet and accept the need for a microcontroller, yes the code can identify the source of the signal (which pushbutton) and much, much more.

Or you could use a dedicated device like an xBee which can be configured using a Windows utility to send the state of an input pin to another xBee; basically there is already a programmed microcontroller on the module along with the radio (not nRF24L01+ compatible).

1
  • Thanks, Zeph, I appreciate the clear answer. I would vote up except I don't have the reputation to do so yet.
    – Ceottaki
    Jun 29, 2014 at 6:52
3

An ATTiny85 can drive the NRF24L01+: "nrf24l01+ control with 3 ATtiny85 pins"

At least this is not a "full" Arduino...

Edit 2015-06-06:

Hackaday News: "EMBED WITH ELLIOT: MULTIPLEXING SPI USES FEW PINS"

The referred blog entry is: "nRF24l01 control with 2 MCU pins using time-division duplexed SPI".

(-: Nice countdown... 3 pins, 2 pins, ... ;-)

3

Note, there is also the NRF24LE1 SoC which has its own ULP MCU - good for transmitting simple data such as sensor readings. If used to Arduino, ARduino Pro Mini 3.3v and the NRF24L01+ is easier and better way to go. (Mod the Arduino to be ULP)

2

The nRF24L01+ needs an external microcontroller to be used.

I believe an XBee could be used if you want a "single module" solution, however using even the Atmega328p (standard for Arduino Uno) would probably be cheaper than this.

0

1) Easy way

This transmitter uses only SPI interface so you need to drive it some logic unit, i.e. microcontroller that supports this interface (i.e. AVR atmega8) and is able to use driver for this module as a ready to use set of high level functions to express your intentions in your code.

2) Badly bad way

You can use the SPI to I2C converter as well. Connect it to your computer via serial port - but note that it's a big effort. You will need to port nRF24L01 driver, etc.

http://www.elecrow.com/nrf24l01-wireless-shield-spi-to-i2c-interface-for-arduino-p-737.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.