Low-Power Wireless Sensor Node

RF Duinode V3 (2V4)

My goal today is to create a sensor node which can be used in a wireless sensor network, to capture environmental information and send it back to the base. My main goals are for the nodes to: Be cheap, and last for a year.

How cheap and how low-power can we go? In the end, I got down under $12 for a very capable Arduino-compatible node with a 2.4GHz radio running ~2.6V that should last a year and a half on 2 AA’s, or 5 months on a coin cell.


Adventures in Low Power

Previously, I ran a small test network of these nodes using 3.3V regulated power. After doing that, I realized it’s possible to run on even less power and with an even cheaper BOM by ditching the regulator entirely. Two AA cells will range from 2.4 to 2.9V. An Atmega328P MCU and the nRF24L01+ radio will both operate just fine in that range.

To enable this, I needed to create a new ‘board’ in the Arduino IDE. This board has two changes from the stock Duemilanove:

  • Set the correct fuses for the ‘Brown-Out Detector’ (BOD). The Arduino IDE as-shipped sets the BOD to 2.7V, so the chip won’t even power up with 2x AA’s.
  • Run the chip at 8MHz clock rate. That is exactly the edge of the specified clock rate curve for 2.4V, the low end of my voltage range.

Here’s what my entry to the boards.txt file looks like exactly:

lopower.name=Arduino Ultru Low-Power (<2.4V, 8 MHz) w/ ATmega328
 
lopower.upload.protocol=stk500
lopower.upload.maximum_size=30720
lopower.upload.speed=57600
 
lopower.bootloader.low_fuses=0xFF
lopower.bootloader.high_fuses=0xDA
lopower.bootloader.extended_fuses=0x06
lopower.bootloader.path=atmega
lopower.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
lopower.bootloader.unlock_bits=0x3F
lopower.bootloader.lock_bits=0x0F
 
lopower.build.mcu=atmega328p
lopower.build.f_cpu=8000000L
lopower.build.core=arduino

Power Experimentation

Now it’s time to measure and estimate power. Our usage pattern will be the MCU and radio powered down as low as they can go most of the time. Then they wake once every minute or two, transmit, and then go back to sleep.

These are the specific questions I needed to answer, so I ran experiments for each:

  • How much power is consumed when sleeping?
  • How much power is consumed when awake and transmitting?
  • How long will it be sleeping each cycle?
  • How long will it be awake each cycle?
  • How much capacity is really available from the batteries?

Current Consumption

To measure current, we need a multimeter capable of doing so. I use a Extech EX330 Autoranging Mini Multimeter, but many cheaper meters have current-measuring features. Look for an “mA” setting. The methodology here is to insert the multimeter inline into the circuit at the point we want to know the current flow. That is, the current flows THROUGH the meter on its way from the battery to the load. To keep things simple, it’s a good idea to use the actual battery being tested as the current source, rather than some external bench power.

There are two current measurements needed here, one while sleeping and the other while operating. So I created simple test sketches that did each. One just puts everything to sleep (MCU and radio), the other transmits constantly to a working receiver. Simply measure the current from the meter during both tests.

Actually for the ‘transmitting’ test, I am using the “endless sending” test. This is consuming 13.57mA reliably.

For ‘sleeping’, I am getting strange results. With the radio removed, and the voltage measurement circuit removed, the meter still reports 395 uA. But on mA mode, it reports 0.14mA. Argh! Also, adding the radio in doesn’t seem to matter much. Adding back in the voltage measurement, I hover up at 410 uA.

Duration / Duty Cycle

How long between wake-ups is defined by the application. For now, I am waking once a minute, but that is likely much more frequently than needed to effectively measure temperature.

To measure how long it stays awake, I used the same “endless sending” test as for capacity. I have the system endlessly send readings without actually ever sleeping. Every 30 seconds, the receiver posts a reading to the database. By counting the number of readings elapsed between each saved reading, I can see how long it takes to measure and send a reading. In my tests, there were reliably 1128 readings every 30 seconds, for an awake duration of 27ms.

Capacity

The one true test for this is to take a fully-charged battery, and burn it to the ground. Because consumption varies with current draw, it’s important to run the test at the correct amount of draw. It seemed like the logical choice was to use the ‘constant transmitting’ sketch which I used above to measure draw, and leave it on as long as it takes. Two AA batteries lasted over a week! So 156 hours @ 13.57mA tells us these ‘2300mAh’ batteries actually gave about 2110mAh.

Just for fun, I had the sender transmit its voltage level, so I could graph the progress.

Capacity Test - 2AA @ 13mA

In the end, I decided to go with a 3V coin cell battery, CR2450, rated at 540mAh. This is a big trade-off. With the coin cell, the units are much smaller and easier to place. They are also a few dollars cheaper. But I’ll only get 5 months, and the batteries are not rechargeable.

Power Calculations

Armed with these results, we can estimate how long the node will really last. I have a handy spreadsheet I use for these calculations. The results for this test are pasted below, but the same calculations can work for anything sleep/wake setup. we plug in the answers to the five questions above, and out comes the answer we want to know: How long will it operate?

Inputs
Sleep Consumption 0.14 mA
Operating Consumption 13.57 mA
Sleep Duration 60 s
Operating Duration 0.027 s
Capacity 2035.5 mAh
Per sleep cycle
Capacity Used Sleeping 8.4 =Sleep_Consumption * Sleep_Duration
Capacity Used Operating 0.36639 =Operating_Consumption * Operating_Duration
Total Capacity Used mAs 8.76639 =Operating_Consumption * Operating_Duration + Sleep_Consumption * Sleep_Duration
Total Capacity Used 0.00243510833333333 =Total_Capacity_Used_mAs/3600
Results
Time Available cycles 835897.102456085 =Capacity / Total_Capacity_Used
Time Available hours 13931.6183742681 =Time_Available_cycles / (3600/Sleep_Duration)
Time Available days 580.484098927837 =Time_Available_hours / 24
Time Available months 19.3494699642612 =Time_Available_days / 30

This file is available on Box.net: Power Calculations.ods CC BY-NC-SA

Sensors

What shall we measure, and how?

Temperature

The “hello world” of wireless sensor networks is temperature. I figure it’s always interesting to know what the temperature is, so now I can find out what the temperature is in 25 unique points within the house :) My weapon of choice is a Microchip MCP9700. There are many options. This one seemed simple and cheap.

To drive it, I created a simple MCP9700 library. It supports both the ’00 and ’01 variants, maintains a calibrated error value, and handles the average of multiple readings. Soon to be available on github!

Battery Voltage

It’s useful to know the battery voltage, from which we can infer the remaining battery capacity. So the nodes collect and transmit their battery voltage with every sample.

These nodes use the internal 1.1V reference voltage, so the battery voltage has to be divided down before it can be sampled. For this, I use a simple voltage divider circuit with 1M and 470k resistors. The resistors are chosen to have very high impedance so they don’t draw a ton of current. As a consequence, a capacitor is needed. (Not sure why exactly, but it was suggested on the Arduino forum, and definitely solved the problem of poor readings.)

Here is a very simple schematic of the voltage divider at work:

Battery Voltage Measurement.sch

Others to Come

To future-proof this node just a little, I included an expansion port. This exposes 4 unused pins (2 digital, 2 analog) and the SPI bus. It will allow me to add additional sensors in the future without having to re-spin the board. For details, see my post on the Arduino Box Header Platform; this is “Port B”.

Software

These nodes are running my RF24Network stack. Built on my RF24 radio driver, the network layer provides node addressing and routing to build a tree topology out of the nRF24L01+ radios.

The temperature reading & sending code on the client is really simple. It is also using my MCP9700 library for the temp sensor and my Sleep library for putting the node to sleep and waking at the right interval.

  // If there's a reading ready, send it.
  if ( temp_sensor && temp_sensor->available() )
  {
    // Take a reading
    message.temp = temp_sensor->read();
    if ( voltage_sensor )
     message.voltage = voltage_sensor->read();
 
    // Send it to the base
    RF24NetworkHeader header(/*to node*/ base_node,/*message type*/ 'T');
    network.write(header,&message,sizeof(message));
 
    // Leaf nodes sleep
    if ( is_leaf() )
    {
      // Power down the radio. Note that the radio will get powered back up
      // on the next write() call.
      radio.powerDown();
 
      // Sleep the MCU. The watchdog timer will awaken in a short while, and
      // continue execution here.
      Sleep.go();
    }
  }

The receiving node and SQL storage infrastructure will be the topics of future blog posts.

Bill of Materials

Pricing for all of these parts is in quantity 25, which is about how many I want to have operating at once. All part ##’s are from Mouser.

Qty Vendor# Description Price
1 556-ATMEGA328P-PU Atmel Microcontrollers (MCU) 32KB In-system Flash 20MHz 1.8V-5.5V $3.05
1 614-CR2450N.IB Renata Coin Cell Battery 3V 24.5 x 5.0mm 540mAh $1.10
1 122-00224-GR Eagle Plastic Devices Battery Holders, Snaps & Contacts 24.5MM THRUHOLE BLK $0.65
1 611-OS102011MS2QN1 C&K Components Slide Switches SPDT On-On $0.32
1 571-1-390261-9 TE Connectivity IC & Component Sockets 28P ECONOMY TIN SKT $0.30
1 774-ATS080B CTS Electronic Components Crystals 8.0MHz 18pF Fund. -20C +70C $0.29
1 579-MCP9700A-E/TO Microchip Board Mount Temperature Sensors Lin Active Therm $0.26
2 140-50N2-220J-RC Xicon Ceramic Disc Capacitors 50V 22pF NPO 5% Tol $0.08
1 642-MJTP1230 Apem Tactile & Jog Switches 6mm TACTILE SW $0.06
1 604-WP132XYD Kingbright Standard LED – Through Hole YELLOW DIFFUSED $0.06
1 604-WP132XGD Kingbright Standard LED – Through Hole GREEN DIFFUSED $0.07
1 604-WP7104HD Kingbright Standard LED – Through Hole RED DIFFUSED $0.06
4 594-K104M15X7RF53L2 Vishay Multilayer Ceramic Capacitors (MLCC) – Leaded 0.1uF 50volts 20% X7R 2.5mm LS $0.04
1 660-MF1/4DCT52R1004F KOA Speer Metal Film Resistors – Through Hole 1/4W 1M ohm 1% $0.05
1 660-MF1/4DC4703F KOA Speer Metal Film Resistors – Through Hole 470K 1% 100PPM $0.05
1 660-MF1/4DC1002F KOA Speer Metal Film Resistors – Through Hole 10K 1% 100PPM $0.06
3 660-MF1/4DC3300F KOA Speer Metal Film Resistors – Through Hole 330ohm 1% 100PPM $0.06

The radio unit is from iTeadStudio, 2.4G Wireless nRF24L01+ Module for $4.00.

Cost breakdown:BOM $6.69, Radio $4, Board $1, Total $11.69

Schematic

Eagle file is on box.net: RF Duinode V3.sch CC BY-NC-SA

RF Duinode V3.sch

Circuit Board

Eagle file is on box.net: RF Duinode V3.brd CC BY-NC-SA

RF Duinode V3-laen

About these ads

70 Comments

Filed under Arduino, RF Radio

70 responses to “Low-Power Wireless Sensor Node

  1. Jason

    Excellent work – I’m going down the same route myself and this is most helpful! Many Thanks!

  2. Eric VDB

    Hi, just came across your blog, and in particular this post, and all I can say is…….WOW.
    Would you be interested in helping modifying a C# library so that it will be possible to create a sensor network with your nodes, and receive the data on Dot Net MicroFramework devices?
    Is it also possible to allow Dynamic payload size?

    Keep up the fantastic work, this is a direct concurrent for the JeeNodes ;)

  3. Jay

    This is indeed awesome…. please keep on innovating… i will eventually get into the same line of stuff… ad i like what you did so far.

    great work and Thank you for sharing.

    Jay.

  4. Hi,

    What is the range of this system?
    Do you know if this or something similar can work up to 100 meters?

    Thanks, Ron Otsig

  5. Ameet

    Thanks a lot for this beautiful information. I don’t understand one thing, how do you know the sleep duration is 60s. And you said you are waking once a second. If the sleep duration is 60s, shouldn’t it be once a 60s?

    Many Thanks,

    Ameet

  6. StuartP

    Any news on code being available for this ?

    • Not yet. I have been working on something to share. It will combine the RF24Network and NanodeUIP examples to post readings from a whole network up to Pachube.

      • Stuart

        Great stuff, I was particularly interested in the idea of holding some calibration data. I’d be happy to see a pre-release code, drop me an e-mail.

  7. Do you think it would be possible to support a network of hundreds of sensor nodes with the nRF24L01+? I’m thinking that if the nodes are asleep most of the time and just wake at regular intervals up to ping the base, and wake up on interrupt from the sensor to send a reading, then it would be possible to use the same address for each node and overcome the limit of 6 receivers when in PRX mode. An id in the payload could be used to uniquely identify each node. Do you think this is workable? Do you have any other suggestions of how to support hundreds of nodes?

    • Definitely possible. A few things to think through…

      Even if the nodes are mostly sleeping, you’ll still need a strategy to deal with inevitable collisions. Typically, you would listen on the channel to see if it’s clear before talking. If it’s not, you could adjust the sleep window so next time the node doesn’t wake up and collide AGAIN.

      Also have to think about range. Would all hundreds of nodes be in range of the destination node? Or would you build a tree of routers, and then just have dozens of nodes hit a single router? Or build a much fancier mesh network?

      • To minimise collisions, I was thinking that the nodes could wake up in RX mode, then the base node could ping each node in turn. Once a node has responded it goes back to sleep again. This will reduce the chances of collisions but not eliminate them, so a simple back-off strategy would still be required.

        Regarding the range, that is something that I will need to test. The nodes need to be as small and as low power as possible, but the base node can be larger and have power so could be fitted with an SMA connector and a decent antenna. But I guess adding repeaters would be fairly straight forward, in fact the repeaters could form a mesh network, with one or more providing internet connectivity.

        Thanks for your help, and the RF24 library. :-)

  8. GR0B

    Hi maniacbug,
    This project looks awesome and I am wanting to replicating it. How did you produce the PCBs? did you get someone to manufacture them for you and if so is it possible to order some?

    • Hi there. I used iTeadStudio’s PCB service. The files are available above and you’re welcome to send some off for them to fab, just follow the terms of the CC BY-NC-SA. (Mainly, don’t sell them.)

  9. GR0B

    Hi There,
    I just noticed that the nRF24L01+ module you used uses a 8 pins but a lot of the nRF24L01+ modules use 10pins (2 pins each for VCC&GND). Thought I might just put the comment out there as if people are planning to replicate you project they need to get the correct nRF24L01+ module or change the wiring a little.

  10. Ram

    I am working on a home automation project and your rf24 library is the backbone. Thank you for the awesome work.

    I was wondering if you tried using the internal 8MHz oscillator (i am using atmega328). This will be really useful to save more pins if I move to a smaller attiny…

  11. Lorenzo Gasparini

    Thank you so much for your work. It’s helping me a lot in preparing my school final exam. I followed this http://arduino.cc/en/Tutorial/ArduinoToBreadboard tutorial with an Arduino UNO R3, using an 8mhz external oscillator and working with 3.3V. It works like a charm. I’m using that board with an nRF24L01+ and a DS18B20 from Maxim IC, and I didn’t implement the voltage sensing yet. The board is being powered by two AA batteries and it works perfectly. I can transmit temperature to my other Arduino UNO wich stays listening and once received a packet sends it via Serial port.
    I’m writing this to you because i found a bit strange the fact that your circuit has a current usage of 14mA while transmitting and 410uA while sleeping. My board consumes 5,4uA while sleeping and 4mA while transmitting. I had not the opportunity to check how much it stays active when transmitting, yet.
    For letting the MCU sleep i used this excellent library https://github.com/rocketscream/Low-Power.
    If you want some other infos from me just send me an email!

    • The 410uA strikes me as measurement error on my part, but I really haven’t dug into it further. On the other hand, I can say for SURE that 4mA while transmitting is measurement error on your part. The data sheet calls out 13mA on high-power modes. It may just not be transmitting long enough for you to get a complete reading?

      Wow, that low power lib is pretty powerful, thanks for the tip. That’s definitely worth digging through.

  12. Joseph McGowan

    Sir,

    Your setting of:
    lopower.bootloader.low_fuses=OxFF
    prevents the use of the internal oscillator, at least in my findings. I have defaulted to OxE2, and all is well

    Other than that, your only other modified setting from the default “ATmega328 on a breadboard (8 MHz internal clock)” config was:

    lopower.bootloader.extended_fuses=OxO6 ;verses the normal setting of OxO5.

    Which seems to work.

    • Yes, I did not want the internal oscillator. The node has an external 8MHz osc. And yes, the big change is to set the brownout detector to kick in at 1.8V instead of 2.7V. Given that the unit runs at 2.4V, a 2.7V brownout is catastrophic!

    • Larz

      Hi Joseph,

      Are you working with a 328 chip?

      I have been running a 328p on 2xAA batteries using the internal 8MHz oscillator. I use LFUSE=0xE2, HFUSE=0xDA, and EFUSE=0xFE. The low fuse byte set the oscillator. A value of FF runs via an external source whereas E2 uses the internal. I also set Brown Out Detection to 1.8v via the EFUSE (FE or 06).

      I specified these fuse settings in the boards.txt, and compiled a new bootloader for this sort of board.

      I want to try to run things down to 1MHz internal, but have not had a lot of success so far. This is mostly because I do not completely understand how to configure the bootloader baud rates at the lower speed. As long as I load sketches via the ISP, 1MHz works a treat, but I have had no luck programming via serial. If I ger some better results, I’d be happy to share them.

      Hope this was somewhat helpful.

      Cheers!

  13. John Ellinas

    Dear maniacbug,

    I have noticed that RFCE and RFCSN are connected to pins 14 and 13 (digital pins 8 and 7) of ATMEGA respectively, instead of pins 15 and 16 (digital pins 9 and 10) as they are normally connected. However, the sofware defines digital pins 9 and 10. Is there a mistake?

    • The examples from the RF24 libraries are just that: examples. In order to run them on actual hardware, the software must be configured for the hardware being used. So yes, to run RF24 library examples on the nodes in this blog post, it’s necessary to change the software to use pins 8 & 7. The library uses 9 & 10 because that’s how the ‘getting started’ boards are all set up, thereby making it easier on new people to have everything work together nicely out of the box.

      ________________________________

  14. Great work! I just tested out my first design using your library and it works! Then I realized my 3.3v regulator was going to really hurt my battery life as it draws 3.3mA all the time. I will be trying out the 2 batteries setup next. Thanks so much! I would never have figured all this out on my own, but it looks like it will end up being just what I wanted.

  15. I can’t seem to find a article on your base node or your SQL stuff… Where is that please? I’m about to build 10 of these things.

  16. Alberto Yarmuch

    Hi,

    The idea is great :-)
    But I have a question.
    Where can I buy this board?

    Thanks
    Alberto

  17. A great tutorial, great links, great libraries.
    I have to say thank you very much for this contributing.
    We can make this low cost sensor and make the nrf24 a very useful wireless transmitting.
    I’m going to make a board and do like this for my gardening project.
    Hope to share the result soon.
    Thanks a lot :)

  18. Thomas T

    Hi, I was wondering if you can program the node with the 5V FTDI breakout board or if you need the 3.3V version? Cheers.

    • Right, good question. I DO use the 5V FTDI breakout board, BUT I do not connect the +5V line. Instead, during programming the module needs to be powered on with its own power. This works great.

  19. Sergey T

    Hi, do you have any plans to make some experments with nRF24LE1 or nRF24LU1? The same network compatilble with L01 but with their own MCU onboard, compact size and maybe more power efficient solution for price about 10$. Only problem with it is that there are not so many examples about this new chips and not so easy to upload compiled program to buildin mcu comparing to arduino. But with you experience it should be easy))

    Good luck with you projects!

    • Hi Sergey, thanks for the suggestion. I haven’t explored those. As you said, there are not so many examples. The beauty of Arduino is the rich community that you can tap into, and these modules seem to lack that. They do look really interesting though.

  20. Hi,
    Im about to do something quite like this project when I found it.

    I was thinking about adding a Maxim DS2401 (Silicon Serial Number) to create a unique ID for every node.

    Any thoughts about that ?

    Merry Christmas
    Mats Karlsson

  21. JohnW

    1st.. This all has been great information!! 2nd.. I am a total noob at this stuff, but I am learning. 3rd.. Has ANYONE tried a sensor node or use one of these RF modules with a attiny85 mcu? If so I would like to know.
    Regards,

  22. The wonky power measurement was probably due to the ex330. The specification table in the manual seems to indicate a minimum of 400µA.

  23. Ron M

    Great project and it gives me a lot of inspiration. But as far as I can tell, the PCB is no longer available on de iTeadStudio website. Am I missing something?

  24. Zenneth

    Hi, Just want to know if the low cost sensor node can communicate with a laptop with wifi directly?

  25. emma

    Thanks a lot for your informative post. I am currently considering building wireless sensor nodes myself, and I’m not completely sure whether to go with an Arduino board or your custom design.
    The nodes will be running on battery power, typically with 2*AA or anything else that gives me a long life (9V batteries are a possibility as well). However I intend to use them for magnetic field detection (to hook them up to my gas & water meters), and Hall effect sensors seem to require +5V power… so the regulator might be needed after all, unless I use 4*AA…

    Your custom design lacks a bootloader, correct? How would one program the µC, then? Aside from the BOM you have listed, the only thing I would need is a “programming cable” to use from my computer, am I mistaken? (I don’t have any Arduino equipment at home yet)

    • As with any custom-built Arduino-compatible unit, you’ve got to get a bootloader on somehow. Easy way is to buy the 328 chips with a bootloader already on, like Adafruit sells. Programming a bootloader is a pretty easy thing to do, though. You can use another Arduino as an ISP. There is an ‘ArduinoISP’ sketch that ships as an example in the IDE which will turn another Arduino into a programmer.

      • emma

        I decided to buy a JeeNode v6, as it is designed for low power I figure it was a good idea. I bought it without the RFM12B, so I could fit my RF24 instead – it’s a bit messy in terms of connections, but it seems to work.
        Once I’m done with this project, I could move to a JeeNode *Micro* which does *not* feature the Arduino bootloader. For now and as a beginner the Arduino bootloader is a great comfort.

        Thanks for all your informative posts!

  26. Hello Maniac, I’d like to chat with you sometime about this project and what you have done on the receving end. More so the hardware and this http://www.flickr.com/photos/maniacbug/7046477285/. Would you mind emailing me or replying here? Thanks

  27. Mark Grass

    First of all>>>>>>Thank you soooo much maniacbug for the library!!!!!!

    Finally!!!! :smiley-mr-green: I had three problems.
    1. Bad connections on the 2×4 icd connector. The module doesn’t lend itself to easy hook up or plugging it into a std breadboard, not to mention the fact that they all are marked as pin 1 is pin 2 (2 is 1), because they have the pins going out the bottom of the board not the top. They all seem to be that way. So a colored ribbon cable does not match the std color code 1bro, 2rd, 3ord, 4yel, etc. it’s 1rd, 2bro, 3yel, 4org, 5blu, 6grn, 7gry, 8vio.

    2. Reading the documentation I thought the CE and CSN pin could be any unused I/O pin. For some reason the method “RF24 radio(9,10);” can’t be changed. I had used different pins than 9 and 10,and it didn’t work. I understand that the SPI interface has to match that of the ucontroller hardware, but I thought the other two pins could be any unused digital I/O.
    If some one can shed some light on this it would be appreciated.

    3. This applies to the module with PA+LNA: Once I fixed the other two problems, the pong (repeater) would send out one reply and then stop. The fix was to add a cap to the module. I started with a .1uf, but didn’t help. Used a 220/15v cap and it worked. Did not check to see if a larger one was better or a smaller was the same.

    Using the RF24 lib example “pingpair”: Tested with an Uno R3 and the Nano.
    RANGE: (line of sight:LOS)
    nRF24L01+ 30′ in doors through two walls
    (doors open, LOS was through 2 walls)
    nRF24L01+PA+LNA approx 200′ LOS
    through 3 walls to outside and down the hill

  28. Mark Grass

    PS: the cap was placed across gnd and 3v3.

  29. Mark Grass

    The bad connection: I noticed that the “detail” print out didn’t match for both of the pingpair modules. If you don’t get the following, you have a bad connection to the nRF24:

    RF24/examples/pingpair/
    ROLE: Pong back
    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0xf0f0f0f0d2 0xf0f0f0f0e1
    RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
    TX_ADDR = 0xf0f0f0f0d2
    RX_PW_P0-6 = 0x08 0x08 0x00 0x00 0x00 0x00
    EN_AA = 0x3f
    EN_RXADDR = 0x03
    RF_CH = 0x4c
    RF_SETUP = 0x07
    CONFIG = 0x7f
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_HIGH

  30. Mark Grass

    Well, I’m somewhat chagrined! The method “Radio(X,Y), does work for the nRF24L01 library. May have been one of the other gremlins I was plagues with. Live and learn.

  31. Hi Maniac!

    Thanks for sharing your knowledge, I use RF24network in my project(sensor node) and works pefectly. But lastly, I’ve written a little skecth to ‘updagre’ my system and have the ability to handle request so that sensor nodes can send back information when I want it(sorry for my english :-S, but see link below to have more informations about what I’m speaking):

    http://pastebin.com/Wcv1uueb

    I’ve wired NRF24L01 IRQ to Arduino pin 2, everything works(I don’t paste server code, not very useful) when I send request to these node. But when I’m trying to use radio.powerDown() and radio.powerUp(), IRQ pin don’t works anymore: interrupt routine isn’t called :-( It seems power down mode disable NRF24L01 IRQ…Do you known any solution to solve these problem? because NRF2401 drawn me about 13ma! I’ve seen in datasheet that there standby mode(I and II) and some others mode…but I don’t see how to implement them to see if they can solve my problem…

    Greets,
    Alex.

  32. IlkerBEKMEZCI

    Hello meniac,

    I have project about ad hoc networking on UAVs.
    It will be a prototype project. Do you think that we can use it on UAVs.
    If you give me your e-mail I can wirte smothing more specific.

  33. Hi Maniacbug,

    I still confused about your mechanism to measure voltage.
    Why you dont use like Larz (comment above) to measure it?
    Is it because your using only 3.3v only?

    Just wanna be sure, suppose I’m using uno and I’m powering my arduino either from usb / battery, can I use internal reference voltage (like describe in https://code.google.com/p/tinkerit/wiki/SecretVoltmeter) or I have to use voltage divider to measure voltage.

    anyway, cool project and already fork your code and RWDev code in https://github.com/funky81/RF24Network

    Looking forward to hear your answer

    Thanks

  34. Larz

    An internal reference voltage (1v1) is available on the 168 and 328. It is enabled with the analogReference(INTERNAL) command.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s