Close

Trying Out the Chengdu Ebyte nrf52840 Module

A project log for Oneoffs

Small, quick, oneoff projects

parasquidparasquid 09/07/2020 at 08:430 Comments

The nrf52 modules I've ordered from aliexpress a couple of months ago have finally arrived, and one of them was an nrf52840 https://psqd.pw/ebyte-nrf52840 module. I've been working mostly with the nrf52832 so I thought I would try and get the nrf52840 to see if the increase in ram and built-in flash are worth the upgrade.

The module is designated as SMD and comes with castellated edges, with some pads at the bottom. I really like the pin assignments for this module; they cater for both the system integrator as well as the hobbyist. The castellated pins expose the most important pins (power and USB) as well as a generous amount of analog and digital pins. As someone who prefers to prototype with stripboards and donutboards, I don't have to design a PCB just to use the module; I can just wire up the edges with some hookups and I can already have a functional board without much effort.

In this case, I added double female headers and (on the outside) male headers to help support prototyping.

I also thought of having something like a shield type of mechanism so I can try things out quickly, but later on I found out that the RF signals are greatly reduced when you cover the antenna (who would have known ...) which isn't that big deal when doing development, but might be an issue when I start trying out BLE related functionality. The module, unfortunately, comes with a chip/ceramic antenna (no IPX connector) so the range isn't the best. I might have to eventually cutout some of the areas with copper pads to try and mitigate the signal loss.

I added a small 3v Lithium battery and wire-wrapped it to the power connections to try out the module. The nrf52840 (unlike the nrf52832 which has a simpler power connection) has two modes: normal voltage mode and high voltage mode. The datasheet reference circuits for the high voltage mode is a bit too complicated for me at this point, so I opted for the simpler normal voltage circuit where the VDD and the VDDH are connected to the same power source, and VBUS is left floating. I used wire wrap because it's semi-permanent; this can stay as is for months (and even deployed if needed) but it's also easily removed if I need to change anything (which I probably will while experimenting with the power supply configuration). I also added a jumper between the battery ground and the wire wrap as a "kill switch" of sorts; the nrf52 chips are low power, but nothing is lower power than no power :P

I then progammed the chip using OpenOCD with Espruino (javascript for microcontrollers, just like micropython). While the nrf52840 isn't officially supported (yet) there is a boardfile for the nrf52840DK which is what I used.

The pins are different of course (the DK exposes all of the chip's pins, and there are built-in LEDs and buttons) but LED1 is mapped to P0.13 and as expected, uploading the default blinky code and adding an LED between P0.13 and GND does blink the LED (I made this LED tester from a while back for the sole purpose of testing blinkies; I'm happy to report that it had proven its worth far more times than I can count).

Espruino uses the nordic UART BLE service for uploading (and debugging) code, so my small nrf52840 prototype doesn't need to be tethered to my development machine. It's really convenient; I can be testing some circuits and I don't have to worry about ground loops or even being near the actual board (e.g. testing out home automation in a room farther away). Here I placed it on the steel bars on the window via a magnet.


I initially thought that working with the nrf52840 would be difficult (especially with the normal voltage / high voltage power circuitry) but it turned out surprisingly easy if I default to what I was used to with the nrf52832. But now that the initial tests are over, the next would be discovering how to power the chip via high voltage (the nrf52840 has an internal DCDC and LDO circuits that can accept up to 5v5) as well as trying out the native USB functionality.

Discussions