The iLabs Challenger RP2040 LoRa 868MHz is a small embedded computer equipped with a LoRa modem module on board, in the popular Adafruit Feather form factor. It is based on an RP2040 microcontroller from Raspberry Pi which is a dual-core Cortex M0 that can run on a clock up to 133MHz.
This is a spin-off from our Challenger RP2040 WiFi board but we have replaced the WiFi module with a low-power RFM95W LoRa radio module from Hope RF. The transceiver features a LoRa long-range modem that provides ultra-long-range spread spectrum communication and high interference immunity whilst minimizing current consumption.
The RFM95W is connected to the microcontroller using an SPI channel and a few GPIO signals to handle signalling from the modem circuit. Besides the modem module, there is only one additional U.FL connector that forms the modem functionality. Simply hook an external antenna to this connector and you are ready to go.
We paired the RP2040 with 8MByte high-speed flash capable of supplying data up to the max speed. The flash memory can be used both to store instructions for the microcontroller as well as data in a file system and having a file system available makes it easy to store data in a structured and easy-to-program approach.
The device can be powered by a Lithium Polymer battery connected through a standard 2.0mm connector on the side of the board. An internal battery charging circuit allows you to charge your battery safely and quickly. The device is shipped with a programming resistor that sets the charging current to ~450mA. this resistor can be exchanged by the user to either increase or decrease the charging current, depending on the battery that is being used.
The integrated module LoRa module, RFM95W, can achieve a sensitivity of over -148dBm utilizing a low-cost crystal and bill of materials. The high sensitivity combined with the integrated +20 dBm power amplifier yields industry-leading link budget making it optimal for any application requiring range or robustness. LoRa also provides significant advantages in both blocking and selectivity over conventional modulation techniques, solving the traditional design compromise between range, interference immunity and energy consumption.
The RFM95W is connected to the RP2040 via SPI channel 1 and a few GPIO that are required for signalling. A U.FL connector is used to attach your LoRa antenna to the board.
- 168 dB maximum link budget.
- +20 dBm – 100 mW constant RF output vs. V supply.
- +14 dBm high-efficiency PA.
- Programmable bit rate up to 300 kbps.
- High sensitivity: down to -148 dBm.
- Bullet-proof front end: IIP3 = -12.5 dBm.
- Excellent blocking immunity.
- Low RX current of 10.3 mA, 200 nA register retention.
- Fully integrated synthesizer with a resolution of 61 Hz.
- FSK, GFSK, MSK, GMSK, LoRaTM and OOK modulation.
- Built-in bit synchronizer for clock recovery.
- Preamble detection.
- 127 dB Dynamic Range RSSI.
- Automatic RF Sense and CAD with ultra-fast AFC.
- Packet engine up to 256 bytes with CRC.
The board can be powered from multiple sources. The most obvious way to run the board is by plugging it into a USB-C cable and attaching it to your computer. In this mode, you can write software and test the board with all its functionality.
You can also supply the board with 5V via the header connectors on the PWR pin.
There is a third way to supply the board too. This way is more invasive and will disable the onboard 3.3V power regulator. When doing this you will have to pull the EN header pin low and then supply your own 3.3V voltage on the 3.3V header pin. Please note that when disabling the onboard power regulator you will have to supply the 3.3V also when running the system on battery power.
The board can also be powered by a LiPo battery. The battery can be connected using a standard 2.0mm JST connector through the battery connector on the right side of the board, or if the battery is an integral part of the system that you are designing, it is possible to connect the battery through the BAT pin instead.
Switching between the battery voltage and the applied USB voltage or external 5V is achieved seamlessly by the onboard circuitry.
Charging of the battery is performed by either connecting a USB cable or by connecting a 5V power source to the header pin marked USB on the board. If you do this make sure you connect your voltage through a 1A schottky diode to avoid any excessive current draw in the system when the two levels are slightly different. Please note that providing external charger circuitry could destroy the internal charger on the Challenger board!
On each side of the USB connector, there is a small indicator LED. The LED which is marked CHG is the charge control indicator. This red LED will light whenever the connected battery is being charged, and when the battery is fully charged the LED will turn off again. If you haven’t connected a battery to the board this LED will not come on at all.
On the other side of the USB connector, there is a user-programmable green LED. This LED is connected to pin D15.
Connection between MCU and the RFM95W LoRa modem
The board uses the second SPI channel (SPI1) of the MCU to connect to the RFM95W module as well as two GPIO pins that allows the RP2040 to reset and put the ESP8285 in flash mode. The pins used are as follows.
- GPIO9 – GPIO12 is configured as SPI bus 1 (SPI1) and is connected to the SPI bus
- GPIO13 is connected to the reset input of the RFM95W.
- GPIO14, GPIO15 and GPIO18 are connected to DIO0 – DIO2 respectively of the RFM95W.
- GPIO19 is connected to ESP8285 reset and is active low (PIN_ESP8285_RST in the Arduino IDE).
- GPIO24 is connected to the general-purpose LED.
In recent years we have noticed that we are seeing more and more USB Type-C cables laying around the lab due to the fact that most new phones and accessories use them. So iLabs decided to go for a USB Type-C connector for this board. A bonus of this is that they are more durable and you don’t have to fiddle with the cable before plugging it in!
The onboard microcontroller (RP2040) has a number of communication channels that have been routed out to the side (header connector) connectors.
- UART – One UART channel has been routed to the header pins (RX, TX). The microcontroller has 2 UARTs but on this board, only the first UART is used.
- SPI – One SPI channel has been routed to the header pins (SCK, SDO, SDI) and the other SPI channel is connected to the RFM95W LoRa module.
- I2C – One I2C channel has been routed to the header pins (SCL, SDA).
- Analog pins – The microcontroller has 4 analog input pins that all are available on the header pins (A0-A3).
- PWM – All pins can be used for PWM.
The pin chart below shows the placement of all pins and their respective functions. When working in an Arduino environment (or Platform IO) use the blue pins when writing your code and when working with CircuitPython use the orange marked pin assignments.
Using the Arduino environment
We’ve teamed up with Earle F. Philhower over at his Github page to provide Arduino support for our Raspberry Pi Pico-based boards. All instructions on how to install the board support package as well as multiple examples on how to use the Raspberry Pi Pico processor can be found there.
The Challenger RP2040 WiFi board is fully compatible with Adafruit's CircuitPython.
- 1x Challenger RP2040 LoRa board (868MHz)
- 2x Pin headers