The SparkFun Pro RF is a LoRa®-enabled wireless board that marries a SAMD21 and a long-range RFM95W to make a compact and easy-to-use IoT Arduino board. With its fast MCU and excellent point to point data transmission in the 915MHz ISM band with LoRa Capabilities, the Pro RF is a great choice for anyone interested or experienced in utilizing long range data communication.
Every pin on the SparkFun Pro RF is accompanied with a ground connection making the buttons and LEDs easy to connect. In case you're building something to be embedded into clothing or other physically harsh environment the antenna includes a stress relief hole to make sure your wire antenna survives. A short (3 inch) wire antenna is sufficient for "short" distances (up to 1 mile line-of-sight), but we've also included a u.FL antennae connector for potentially longer distances.
The Pro RF also includes a power switch and 2-pin JST connector for powering from a lithium battery. With a Micro-B USB and the power switch in the off position, the Pro RF will charge the attached battery! The board programs over a reinforced Micro-B connector with a slim reset button that fits nicely on the side of the board. We’ve even added our popular Qwiic connector to the edge of the board making it incredibly easy to add sensors and actuators without the need for solder or a soldering iron!
Thanks to the Arduino LoRa library, the RFM95W radio is an easy to use packet radio. But it doesn’t stop there because closing a few jumpers on the underside of the SAMD21 Pro RF initiates LoRaWAN mode on the radio module making it a node in a distributed sensor network.
Note: If you are looking to pick up a SparkFun Pro RF while we are out of stock, we do have a special edition with a black PCB available as well! Follow the link listed in the previous sentence or in the Similar Items section below. Please be aware that the Pro RF with the black PCB is only available for a limited time and will not be restocked when it is gone!
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 7 ratings:
2 of 2 found this helpful:
I had high hopes this would supply a wireless link for an ongoing project, but its a complete dud.
I'm sorry to hear you're having trouble! Please contact our technical assistance team for help with this.
2 of 2 found this helpful:
Despite their drawbacks, my projects are usually breadboarded, as my lack of design expertise generates a lot of experimentation and modification. The width of the board with the ground rails uses all the width for connections on the usual breadboard, so your competitor’s format works better most of the time. I seem to end up usually needing a power bus, so all those ground connectors only solve half that problem.
A great use of your skills would be better radio software support. The third party libraries usually used are short on explanation and perhaps a little long on attitude for a packet radio beginner, and contain inconsistancies like setting the power one way on the server and then adding a boolian on the client, or setting the frequency in a not if statement. I finally ended up figuring most of it out from Nate’s kill switch article.
2 of 2 found this helpful:
I like the clear labels and QWIIC connector make for a quick start. It works and seems to be fairly robust. It has adequate mounting holes to include in a real project! I understand the other review's concern about the layout for prototyping. But for me the QWIIC allows minimal the soldering to get where i want to go.
It did not work well out of the box, but the support team was able to patch an issue in the library and get things working promptly. Thank you! (Note: use 1.5.3 SparkFun SAMD board defs for the working version.)
The Hookup Guide is a little short on details (for example: it explains that connecting the two LoRa jumpers on the back of the board puts the board in LoRa mode. But it does not explain what mode is enabled by leaving the jumpers disconnected). The "SWITCH" pin through holes are not explained, but can be "sort-of" inferred from the schematic.
Also, there are many fiddly configuration changes in the libraries. But if you are careful, you can make them all correctly.
2 of 2 found this helpful:
We recently bought this board to use as a SAMD LoRa node on our deployment for TTN here in San Salvador. Everything seems perfect but there is a couple of issues with this design:
1st: Documentation is a little bit of a mess and the instructions about the libraries to use are confusing. There are several Libraries recommended on the tutorial but some of them simple don't work directly on the SAMD. Also there is an error in the tutorial for The Things Network were SPI pins for the radio are wrong.
2st: Why there is no JTAG port? I mean... This is a "PRO" board. Pros tend to like to have tools to debug the boards. LoRa is a complex protocol and trying to debug only using UART is a PITA. With the instructions wrong on the tutorial we literally had to solder a couple of wires directly on the chip to extract the SWD lines to be able to connect a JTAG debugger and find the errors because the board didn't even boot.
In general the other features are fine and the quality is the one that one expects from Sparkfun. But for a PRO board and for LoRa this one didn't convinced us.
The board's SWD pins are only available via unlabeled testpoints that depend on a proprietary, Sparkfun-facility-only bed of nails fixture. Sparkfun, if you are unwilling to include a 0.05" ARM Cortex connector (or bring out the pins to the header), at least consider using a standard bed of nails PCB footprint like a Tag-Connect (or standardize on a Sparkfun-sold equivalent). Other disappointments include no documentation on what the ARM comes programmed with, omission of USB ESD and shield components recommended in the SAMD21 datasheet, and a circuitous PCB layout of the critical USB differential traces. Finally, the BOOTPROT configuration was not set, leaving the bootloader wholly unprotected from getting 'bricked'; the only recovery in that scenario would be the SWD pins that the board doesn't provide.
Want to really like this board, but in order to get it into low power mode you must cut a trace. I have bricked 2 of my 3 devices attempting to do this. unsure why they continue to sell this board as currently designed as the problem has been acknowledged and fix posted in their support forums.
Hi Member #765496.
We don't advertise this as a low power device. I'm sorry you bricked your boards trying to modify them for low power operation but these were never intended to be used in low power mode. Our engineers will consider a low power version on a future revision though.
It is probably just my fat fingers, but I have been concerned for some time that the reset button would eventually fail. Now it has.
I'm not certain what the logic of the narrow 'neck' of the board is, it looks reasonable to keep the switches out of harm's way, but it (for me) awkward and causes me to have to hold the board very tightly when I have to 'double click' to initiate an upload. Since I have to do this about ten times for each successful upload, this puts a LOT of stress on the switch.
From now on I am going to wire an off-board reset for development on M0 boards.
I'd ask the folks at SparkFun to please just make it a habit to include physical dimensions of boards and parts in general and have them readily visible on the product page.
It seems really standard and it's a bit frustrating when they are nowhere to be found.
There is an image with a ruler for a rough estimation. Otherwise, you can use the Eagle files to get exact dimensions of the board and mounting points. AutoDesk offers a free version of Eagle that users can download (as long as it isn't for commercial use). Unfortunately, we currently don't have the resources for someone to draw up 3D models though.
After uploading a sketch to do LoRa via OTAA none of my computers can recognize the board (code 43). I've tried all the normal stuff with diff USB ports, drivers, restarting, diff comps, diff cables yet it seems whatever I did in the code (which I can tell you if it would help) has made it noncommunicable. What can I do to bring this little guy back to factory memory condition so I can try again? I know I had the wrong AppKey for LoRa in my code but I don't see how that's causing this problem. Cheers
Plug it in to your computer via USB and try quickly double-tapping the reset button if you haven't already, then see if your computer recognizes it.
I wanted to point out that the part number for the LDO regulator is not specified on the schematic for this board. However, based on the markings observed in the photos, it looks like you're using the AP2112 (https://www.diodes.com/assets/Datasheets/AP2112.pdf), which has a max voltage of 6V and 600 mA output.
You are correct, however you may have missed the text that states the "Max Voltage" and "Max Current Output" under the "Power" section of the schematic. If you need some more info on power limitations check out the hookup guide, something of interest is the current limitation of I/O "clusters" on the SAMD21 that is unique to that micro-controller. If you're ever wanting to get into which parts are used, you can also download the Eagle files under the documents tab and take a look at which parts are used.
This product page does not list the amount of Flash/RAM memories, a CRUCIAL technical detail. Can somebody please let me know the amount of Flash/RAM? The photo shows a SAMD21G18A-U which has 256K FLASH, 32K SRAM. Is this the actual device used on the shipping product?
I agree that those features should be listed. My apologies for somehow not placing those details on this page. You can now find them under the Features tab and I added the datasheet for the SAMD21G18A under Documents. You are correct, those are the specs of the micro-controller.
RSSI Values?
I'm getting low RSSI values, even with a decent 900 MHZ antenna. I'm running the point to point example and I'm only getting -90dB when the antennas are 1 foot apart.
Any tips? What values are you getting?
Does anyone have working arduino code to get the lora.h library to work on this board?
It seems easier to have the lora.h library change the Bandwidth/ CR/ Spread Spectrum settings than it is with Radiohead library Additionally I have some of the 1w modules that use lora.h and I would like to have them all communicating
I have tried a few things and I am the point I want to ask for help, not knowing if it could cause problems
I have tried to use serial output to send trace to monitor. My usual approach is to do a setup and trace. I am getting no output and no lights on TX and RX. It appears that serial is going to null.
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200); Serial.println("Blink Startup"); }
// the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second Serial.println("Blink"); }
But then I discovered I am not up-to-date on serial (amazing we are still innovating in this old stuff) and now have it working:
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); SerialUSB.begin(115200); SerialUSB.println("Blink Startup"); }
// the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second SerialUSB.println("Blink"); }
Left comment here for anyone that makes the same mistake...
Where are the SWDIO and SWDCLK pads, they are not labelled (that I can see).
They are not labeled, you are correct. The pads are broken out to two test points on the underside of the board by the "RST" silk. You can see them in the pictures if you look carefully. You'll need to download the board files to determine which one is which, and you can find those under the "Documents" tab. Happy hacking!
Issue fixed and IDE works now. Thanks!
Sorry for the mix up and thank you for the comment update =)!
We need these LoRaWAN boards in european versions. EU 863-870 MHz
That was my mistake, we only carry the module that broadcasts in the 915 MHz range.
Question removed after research