Connecting MSP430 and Stellaris Launchpad through NRF24L01

Last few weeks I have been working with RF modules to establish a wireless communication link between two systems. But most of the times my efforts were a failure. I had an MSP430 Launchpad, Stellaris Launchpad and two NRF24L01 modules. In order to check whether those wireless modules are working I had to setup a wireless communication link. I thought it would be easier for me if I used the available Stellaris and MSP launchpads for this task.

DSC04719

I started threads and followed some more on 430h and Stellaris forum.

http://forum.43oh.com/

http://forum.stellarisiti.com/

When I go through the Stellaris TI forum I came across an Energia library for NRF24L01 to be used with Stellaris Launchpad. In one of the 43oh forums I found the corresponding library on Energia for MSP430 Launchpad. Following are the links to those threads,

http://forum.stellarisiti.com/topic/636-energia-library-enrf24-nrf24l01-library/

http://forum.43oh.com/topic/3237-energia-library-nordic-nrf24l01-library/

You can download Energia, which is an IDE similar to Arduino but modified to facilitate the MSP430 and Stellaris Launchpads. Following link will guide you to the download page of Energia.

http://energia.nu/download/  

Setting up the wireless link:

I used the Stellaris launchpad as the TX and the MSP430 as the RX for no specific reason. Following are the pinouts,

NRF24L01:

24L01Pinout-800

Make sure that you supply 3.3V to the NRF24L01 module. Failing to do so may result in permanent damages to the module.

MSP430:

P1.5: SCK
P1.6: MISO
P1.7: MOSi
P2.0: CE
P2.1: CSN
P2.2: IRQ

DSC04723

Stellaris launchpad:

PD0: SCK
PD2: MISO
PD3: MOSI
PE1: CE
PE2: CSN
PE3: IRQ

DSC04721

Energia library setup:

Download both libraries and the Energia software from the links provided above. You will have to patch Energia in order to make sure that your SPIs are working fine. The patching procedure is available at the 43oh forum link I mentioned above. Make sure that your RXD and TXD jumpers on the MSP430 launchpad are connected in the proper way according to guidelines given in the Energia website.

Extract the libraries to “\Documents\Energia\Libraries” or equivalent, so that Energia will be able to find them when they are needed for a compilation.

Upload the RX example (Enrf24_RXdemo.ino) to the MSP430 board, the example can be found inside the library you downloaded for the MSP430 board.

Upload the TX example (AStelTXdemo.ino) to the Stellaris launchpad, the example can be found inside the library you downloaded for the Stellaris launchpad.

Now you will see the Red LED at the MSP430 launchpad blinking if you did everything perfectly.

Open your favorite console. I use putty. Make sure both your serial baud rate configurations have been set to have a baud rate of 9600 without parity bit. If you did everything perfectly you will get console outputs as follows,

putty1

Thank you.

Advertisements

35 comments

    1. Thank you John. Any reason for not using the NRF24L01. Currently I am trying to use the NRF24L01 library in code composer studio with C. If you ever come across something like that please post a link here. I appreciate your comment.

    2. Did you have any success with rfm73.. I have a pair rfm70 that I’d like to so, and would love to learn from your experience.

      1. Hello John,

        I don’t have the modules with me yet. I’ll try to find them. In the mean time you can ask from stellaris forum or 43oh. If I get it done, I will update you.
        Just curious, why RFM73?

    1. Hello Rakshit,

      Yes I had the code Rakshit. You can find the original thread through stellaris forum. There all the codes are mentioned. Try searching for NRF24L01. I formatted all my systems at home. So currently I am unable to provide you with the code.

    1. Hello Rakshit,

      TIVA C is a drop in replacement for Stellaris. I don’t own a board, but it should work. TIVAware and Stallarisware are also compatible with each other IF the hardware is there in both modules.

    1. Hello Rakshit,

      Here is something you can do,

      Power down TX
      Check whether you receive something.

      If not check the baud rates of the SPI interfaces of both devices. Most of the time that can be the issue.

    1. I was half way there, then I started working. I’ll definitely look into it from today. Actually I was writing a C library to be used with a PIC uc. I was porting c++ back to C and got a stack issue. I had only 8 level stack or something. Since CCS is compatible with c++ i think we might be able to use the same energia library in CCS.

    1. 🙂 I think the baud rate mismatch was the issue right? If you did something else, and if you have time please post it here. 🙂 Glad that I could help you.

      No issue about all the comments above I understand the frustration 😀

  1. Thanks for your post, pradeep. I’m working on making NRF24L01s talk as well, and your post gave me the go-to info I needed (about to patch and hopefully make ’em talk). I did find a video of a guy who made this work through CCS, and he shared his source files. Haven’t tried the CCS version yet, but I will if Energia fails me. It’s the first time I’m trying Energia.

    Video: https://www.youtube.com/watch?v=QE7BgVmJNCk
    Source for CCS: https://www.box.com/s/5bdcdi8x98nqkev3­4eii

    Best,
    Skateboarder

    1. Hello,

      Thank you for the comment. I managed to port the energia library into CCS and was able to communicate between a Stellaris launchpad and a MSP430 last night. I did not know about this source. 🙂 Anyway thank you. I’m planning on improving the ported library in the days to come. I uploaded the library at

      http://forum.stellarisiti.com/topic/613-nr4f24l01-in-ccs/#entry5202

      I will put a better blog post on this library once I developed it to a better state. I have also not used Energia except for this application. I don’t like to move into higher level programming due to massive overhead.

      Also, Energia is easier than CCS.

      Have Fun!!!

  2. Hello pradeepakck, i want to ask if it is possible to use the NRF24L01 simultaneously as transmitter and receiver? thank you very much.. I have thought about making a communication NRF24L01 two modules mounted on two different MSP430 but communication must be bidirectional, that is the reason of my question.
    Greetings from Mexico.

    1. Hello José Luis,

      Thank you for the question.

      Yes. The NRF24L01 is a transceiver. That means it can both act as a transmitter and a receiver. You can put the module into TX mode only when you need to transmit and then after transmitting you can put the module back to RX for reception. By doing that you can have a bidirectional communication. But I’m not sure whether it is duplex or half-duplex. My guess is half-duplex. I hope I answered your question. If you need any more clarifications please don’t hesitate to post here.

      Thank you.

  3. Oh, thank you very much for your answer friend.

    I have many questions because I’m about to start a project to finish my engineering in electronics in Mexico. Just bought the two transceivers of this model to start testing but I really have no sure where to begin.

    I can’t use the UART to Rx and Tx? My English is not adequate to understand the transceiver data sheets, I know there are 8 pins but do not know exactly what each one could help me? I am ready to publish the final draft after my thesis.

    Thanks again pradeepakck.

    Later.

    1. Hello José Luis,

      You can’t use UART because it is asynchronous. That means it has no clock pin. You can use any SPI interface to communicate with the NRF24L01 modules. There are registers within the IC that you should program according to your needs. The best starting point would be reading the datasheet.

      The pin definitions are mentioned in my blog post. It has data input, data output, clock, etc pins. Let me know how I can help you.

      Thank you.

  4. Hey man. I have a question for you. I’m working on a project and I’m trying to connect my 3 stellaris arm over an RF module. 2 of my arms are transmitter and one is receiver. I programmed my arms on Keil using C language. But when it comes to the programming of RF’s I don’t know what to do. I dont know which compiler to use, Keil or energia, or whether I should use any library for RF. Please help me when you’re convenient.

    Thank you

    1. Hello,

      What is the RF module that you are using?

      But when it comes to the programming of RF’s I don’t know what to do.

      I think you are talking about interfacing the RF module with the stellaris modules. You need to assign different addresses to two transmitters and then use the receivers address when transmitting. Please provide more information. I’ll help as I can.

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