Glad you could make it! Today we have another small project under the musicFromMotion heading, but its use goes far beyond making tunes from your grooves. Behold the musicFromMotion Receiver (Rx)!
This is a simple-yet-powerful adapter to allow the (mini) nRF24L01+ module to connect directly to a Raspberry Pi. Now you may be wondering, ‘Wait, don’t you have another project doing the exact same thing? The whatsitcalled?’ To that I’d agree: this project is similar to the nRF24L01+ adapter in that it makes hassling with hookup wire or protoboards obsolete. But where this project shines is in its much-smaller form factor, allowing it to fit inside RPi cases and look more ‘professional.’
Now since the connections are the same for the nRF adapter, I’ll steal my own words and paste them below. (Note that mFM-Rx uses the mini nRF module, thus the VDD and GND pin numbers have been updated to reflect this in the table.) In fact, most everything I had to say about the adapter translates one-to-one to the Rx module, so why not copy everything? Don’t worry: I’ve made sure to update thing like the parts list and what not. Enjoy!
Connection to Raspberry Pi
This adapter is meant to plug directly into the GPIO header of a Raspberry Pi, facing inwards towards the processor. Our adapter friend sits directly in the middle of the header on pins 17 to 24 (+3.3V to BCM 8) leaving 8 rows (16 pins) on each side when seated correctly. See https://pinout.xyz for a good pin diagram.
Below is a table describing the pin functions and how they map from the RPi to the nRF24L01+.
|Pin function||nRF24L01+ mini
|VDD||VDD (1)||+3.3V (17)|
|GND||GND (2)||GND (20)|
|SCK||SCK (5)||BCM 11/SCK (23)|
|MOSI||MOSI (6)||BCM 10/MOSI (19)|
|MISO||MISO (7)||BCM 9/MISO (21)|
|CE||CE (3)||BCM 25 (22)|
|CSN||CSN (4)||BCM 8/CE0 (24)|
|IRQ||IRQ (8)||BCM 24 (18)|
So say we’re using the lovely RF24 library from TMRh20 as a software interface with the nRF24L01+. Creating an instance of the RF24 object would look like so:
RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
Here the CE pin is specified by the first argument, the CSN pin by the second, and the SPI clock speed by the third.
Make It Yourself!
The board is cheap: $3.70 per batch of 3 from OSH Park. Since they gave me the code, might as well use it! Below is a link to put it in your cart:
Note that this version doesn’t include the silkscreen on top and bottom that denote, heh, the top and bottom. But it’s not too difficult to carry on without it — just follow the assembly instructions, and use reason and your spidey senses. If you’re really concerned with mucking it up, send off the hardware files from the GitHub repository.
Besides the boards you’ll need a mini nRF24L01+ module and a 2×4, 0.1″ (2.54mm) female header.
And a 10uF ceramic capacitor in an 0805 package is also optional, but recommended for high output use (0dBm transmitting). I’d go with some rated at least 10V with an X7R temperature coefficient — they’re only half a quarter a piece (quantity 10 — half that at quantity 100) and nice to have around.
That’s it! Here’s the full parts list:
- 1x mFM-Rx board (OSH Park or SeeedStudio)
- 1x mini nRF24L01+ module (eBay)
- 1x 2×4, 0.1″ (2.54mm) female header (eBay, Digikey, etc.)
- 1x 10uF, 10V, X7R, 0805 ceramic capacitor (eBay, Digikey, etc.) [optional]
For those who are curious or want to build/modify/improve/botch the thing, check out the hardware files on the mFM Github repo.