I'm using OpenThread to control my home automation devices. They are built around a nRF52840 SoC, provided by a Holyiot 18010 module with built-in antenna. For the OpenThread gateway, I've been using the nRF52840 Dongle from Nordic Semiconductor, running as a Radio Co-Processor (RCP). While it's good for prototyping, I'm not completely happy with it for this purpose, as it doesn't fit securely in a USB port, and has a weak antenna.
That's why I decided to make my own nRF52840 based dongle, with an SMA connector for an external antenna.
Since I'm not experienced in designing RF PCBs, I decided to use an existing module with a nRF52840 SoC. Searching on the internet, I found the NINA-B301 module from u-blox, which is based on the nRF52840 SoC and has a pin for the RF output that can be connected to an SMA connector.
The board was designed using KiCad 6.0. The schematic is simple because most the work is done by the NINA-B301 module, which includes both 32 MHz and 32.768 kHz crystals. In addition there is an ARM SWD connector for programming, a voltage regulator providing 3.3V from the 5V USB, and a USB connector with the corresponding ESD protection and power filtering.
I used the same pin for the LED as the green LED on the Nordic nRF52840 dongle to be able to reuse the existing firmares. However, I chose not to include a RGB LED or a reset switch.
The PCB is a two-layer design and can fit into a Hammond 1551USB2 enclosure that I'm using as a standard. The RF trace between the NINA-B301 module and the SMA connector is kept as short as possible, with 50 ohm impedance matching making it wide given the 2-layer design. On the other hand, I didn't used differential impedance matching for the USB traces. This isn't really needed for full-speed devices and when the traces are kept short, and it's pretty tough to do a 2-layer PCB. I just made sure the two traces were the same length.
All the components from the bill of material should be easily available from many distributors. Soldering of the NINA-B301 module requires a hot air gun, but the LGA style pads are relatively large, so it's relatively easy to do. I personally didn't use a stencil.
I haven't developped any a custom software for this dongle. Instead, I am using the ot-nrf528xx repository to build an RCP firmware with a few commands:
./script/build nrf52840 USB_trans cd ./build/bin arm-none-eabi-objcopy -O ihex ot-rcp ot-rcp.hex
Then the resulting HEX file can be flashed with:
pyocd flash -e chip -t nrf52 ot-rcp.hex
The nRF52840 SoC is quite powerful, so it can also be used as a Matter or BLE dongle, or for other purposes as well.
The contents of this repository is released under the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0).