You know how sometimes you can take a device, plug it in, and it works exactly like you hoped the very first time? I wish I could say that happened for me with the nR24L01+ wireless module, but alas, for me, it was not meant to be.
There were far too many variables involved, and far too much new ground to cover, such that it was inevitable I would learn things the hard way. On the positive side, by doing everything wrong the first time and solving each issue one at a time, I am now that much more familiar/comfortable with this wireless module and the MSP430 and Raspberry Pi libraries for it. I also have a greater appreciation for how minimal and well-designed the nR24L01+ wireless module interface is; while the numerous registers and instructions seemed daunting at first, they actually provide a well-balanced capability for a wide range of wireless setups.
I'm very happy to report now that I have successfully transmitted data from my Raspberry Pi (running a Python 3 Program) to my MSP430 Launchpad (using MSP430G2553) wirelessly using nRF24L01+ modules! The code involved still shows a few battle scars from my debugging, but I should be able to clean it up and upload each program to GitHub so that anyone else can just download & run the code with minimal effort (note that there are still some setup steps for the Raspberry Pi that I'll detail, but at least the wireless configuration settings will match work right out of the box). Just a few of the issues I ran into while debugging were mismatched payload length, mismatched channel assignments, swapped pinouts, and backwards address byte order.
At this point, I'm able to send data:
- from a Python app running on laptop via telnet to a Python app running on my Raspberry Pi
- from a Python app running on my Raspberry Pi to my MSP430 (verified via debugging data)
- from my MSP430 to the strand of WS2812B LEDs
While I've been using dummy data for the most part, at this point, I feel (personally) that the most significant risks have been mitigated as those were the main first time events for me. Going forward, I just need to take what I've done and work it into handling the actual data. Risks still remain, like bandwidth, timing (the MSP430 doesn't have the memory to store data for 200+ LEDs), and even power (the LED strand power traces may be undersized for the current at max load), but at least now I know that everything in my prototype system is hooked up properly and I can at least proceed with circuit board schematics, layout, and fabrication. Today is a good day.