More software! This time some fixes to the Mirf library

I’ve added another Arduino library to the software page. This one is an updated version of the original Mirf library, used for interfacing with the Nordic Semiconductor RF modules, like the nRF24L01+. I fixed a bug, updated the code here and there, fixed one of the examples and made some other small changes. As I work further with the library, I’ll push changes up here if they’re big. The bug fix was a pretty big one, so I wanted to share it with everyone. Let me know if you have any comments or suggestions!

16 Comments

  1. JR says:

    Why don’t add the updated code to the arduino playground? I’ll give it a try as soon as I receive the nrf modules.

    Thanks.

    • nisburgh says:

      I’m planning to contact the playground and let them know about the updated code, but was holding off because I have plans for additional improvements, just need to find the time to incorporate them. Please let me know how it goes using the library and if you have any problems. Cheers!

  2. JR says:

    I got my Sparkfun parts :) . At the moment I am struggling with my C328 camera and my Arduino Mega board. When I get this working I’ll try your library!! I got 2 nordic boards and a LCD and a duemilanove. Can you post your sketches you used to get it working?

    Cheers.

    • nisburgh says:

      Nice! Always fun seeing that red sparkfun box! :) Enjoy your new toys! I touched up the examples in the mirf library, so they should work well to get you started. They’re included in the archive here.

      Cheers!

  3. JR says:

    Hey Chris,

    I am planning to use the library soon. I started working with the C328 Camera project again (I was very busy for a while).

    I’ve noticed you do not update your website often but I was just curious if you’ve updated the MIRF library in the meantime?

    Cheers,

    JR

    • nisburgh says:

      JR,

      Unfortunately, the library has not been updated recently, but I can say that it has been working flawlessly for months in my wireless mesh. Definitely give it a try and let me know how it goes! Maybe I’ll have some more spare time in the next few months to do more electronics projects again! :)

      Cheers,
      Nathan

  4. JR says:

    Hey Chris,

    I am working on the wireless connection using your code!! I use an Arduino Mega and an Arduino Duemilanove.

    The problem is the ping_client sends data but gets a timeout on the server…. The server is not responding at all (this makes sense based on the server timeout).

    I’ve exchanged the modules between both setups, and again the client_ping starts sending data but without server response.

    Is there a way to check if I soldered the headers OK?

    I have also posted on the Sparkfun forum:

    http://forum.sparkfun.com/viewtopic.php?f=13&t=21286&p=98695#p98695

    This user posted a PIC code to test the modules individually, but my programming skills are somewhat poor……

    Do you have got any suggestions?

    Thanks in advance,

    Cheers.

    • nisburgh says:

      It’s awesome to hear that you’re using the library! I noticed you posted below that you got it working, so congrats! Definitely keep me updated, and I’ll try to do a better job updating the website! =)

      Cheers,
      Nathan

  5. JR says:

    Got it working :)

    The Mega uses other SPI pins, so I had to change the SPI library.

    I’ll keep you updated,

    Cheers.

  6. Pat says:

    Hi, I’m using this library to control a robot (arduino mega with modified SPI library) with a remote (arduino duemilanove). The remote send a command (up,down,left,rigth or stop) to the robot every 100ms. The robot send his batt status every sec to the remote. (There is no synchronisation of any kind so it’s possible that they send at the same time). I also have a button on the remote that turn the healights on the robot on or off. Every now and then, one of the arduino (mega or duemilanove) will get stuck in a while(mirf.isSending()); loop and will never get out (after a few seconds I just reset the board – the other one is still fine). I can pretty much make that append if I press the button on the romote to open the headlight on the robot at the same time that he is sending the batt status. It seem that if both 24L01 are trying to send at the same time, one of them will always return true to isSendingI()…
    Any help or insight would be appreciated. Note that this also append with the playground library.
    Thanks!

    • Pat says:

      I don’t know how long it takes to pass the “Your comment is awaiting moderation.” (been 8 days now…) but I found a workaround for my mirf problem: If it get stuck in the “while isSending loop” for more than 200ms I do a “powerUpRx()” then I “break” the loop…

      • nisburgh says:

        Sorry it took so long to reply – I’ve been working around the clock and barely have time to check in with my hobbies. :) I’m glad you found a workaround! It’s been a while since I looked at the code, so I’m not sure what’s causing this issue, but next time I’m working on it, if I see an obvious problem, I will definitely upload a new version. Good luck with your robot project!

        Cheers!

  7. JR says:

    Hi Nathan,

    The wireless connection is working like a charm, thanks to your modified library. I would like to read some registers but havent managed yet.

    Do you know how to use the readRegister void?

    Please take a look at:

    http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1277323718

    Thanks in advance!!

    • nisburgh says:

      JR,

      Really glad to hear it’s working well for you! I replied to your comment on the forums. I hope that helps! Check it out here:

      Reply

      Let me know if you have any more questions!

      Cheers,
      Nathan

  8. [...] of my readers asked ( in the forums too ) for some help on reading register values from the Nordic chip, so I put [...]

Leave a Reply to JR