This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF24LE1 Communication

Hi all! I am approaching this with pretty much zero experience but what I'm trying to build should be a piece of cake for you so any help, example code, advice will be appreciated.

The idea is to build a simple notification system. The RX is connected to a 3V coin cell through an on/off switch and couple LED's. If switched on, LED blinks once and the RX enters deep sleep mode and wakes up when a signal from a TX is received. When RX wakes up, LED's blink until RX is switched off. If switched off/on, RX resets, enters deep sleep and waits for a signal.

The TX is connected to a 3V power source. As soon as TX switches on, it sends a signal to RX and RX wakes up. The TX repeatedly sends signal to RX for 2 minutes and enters deep sleep if not switched off.

I'm using 2 x NRF24LE1, Q32, Keil software, mpro burner. I have programmed a device to blink a LED (Hello World) and 2 devices to communicate with "enhanced_shockburst" example, but that is as far is I've got. Trying to add deep sleep and wake up on pins resulted in nearly burning the chips.

Maybe someone has done/made something similar and can help even a bit?

Send help to NRF24LE1 street. Thank you in advance!

  • Hi

    What do you mean about nearly burning the chips? That you were unable to program them again?

    I wrote a small example many years ago, showing how to implement wakeup on pin from deep sleep: Wakeup on pin.zip
    Maybe you could take a look at that and see if you handle power management in the same way?

    Also, please be aware that you can't use the radio in deep sleep mode. If you want to wake up the chip through the radio you have to simulate it by waking up periodically and turning on the RX for a short amount of time to look for packets, and then you can go to sleep in between RX periods. If you want to sleep on a timer then the lowest mode you can use is 'memory retention timers on'.

    Best regards
    Torbjørn

  • Thank you for the thorough response! Fortunately I was able to program them again and they are working just fine. I had some wiring issues on the breadboard that caused the chip to warm up but that's fixed. Your given example works good, I managed to enter deep sleep and wake up on pin.

  • After your response I now understand this better. At first I thought that I could program the RX to wake up on pin, set some pins as active low on the TX side but that's not how it works as the RX won't look for the packets in deep sleep mode. I assume I could just leave the RX chip in active mode and let it look for packets from the TX all the time but that would cause a serious power consumption. After looking at the Power cons. in Product spec. I understand that the "memory retention timers on" mode would fit best and provide a low power consumption even if I'd program the RX chip to wake up every 3 seconds. I'll try to examine that mode and hope I'll get somewhere. Thank you again for the help!

  • I am glad to hear it made more sense now :)
    Depending on the wakeup interval you might want to consider 'register retention' mode also. The sleep current is a bit higher (~3uA), but you don't have to reset the MCU for each wakeup. This means that you spend less time re-configuring all the interfaces and modules, which speeds up wake up and might simplify code development (in register retention the code will continue running where it left off, rather than starting from the top).
    Best regards

  • Thank you for the suggestion! :) I assume that a 3uA power consumption would be okay, even if the RX module would be switched on for approx. 16 h a day. I hope it's okay that I write another question for you here. Power consumption on the TX module is not very relevant as it would be connected to an appliance which would switch the module on maybe just a few times a week. According to that I assume I can use the ESB_ptx example to program it, make f.e. pin 0.6 as active low and by switch on it should trigger the RX module to wake it up if the pin 0.6 is set for WUOPC0?

Related