In this project I will present an Ultra-Low Power Wearable PoC Device based on the Nordic nRF5340 Bluetooth 5.2 SoC.
The device has the following features:
- Nordic nRF5340 Bluetooth 5.2 SoC in a Fanstel BT40 SoM
- 5 x Health Sensors including Heart-Rate Monitoring, Oximeter, Human Body Temperature Monitoring, Motion Tracking, and others
- Connection Point for External Sensors
- NFC Antenna
- Push-Button, LED and a PDM Microphone for user interaction
- Ultra-Low Power Consumption due to the Dedicated Power Management IC per Sensor
- Powered from a CR2032 Lithium Battery
The project is based on the Nordic nRF5340 Bluetooth 5.2 System on a Chip (SoC).
As a nRF5340 Development Kit is a quite big board, I decided to design a Custom PCB for the device.
The PCB has an oval shape with a size of 38 x 32 mm, which makes it appropriate to wear it like as a Fitness Tracker or Smart Watch:
Because the nRF5340's comes in a small pitch aQFN94 package, I decided to go with a System on Module (SoM) instead. My choose ended up being the the Fanstell BT40:
The BT40 is System on Module (SoM) featuring the Nordic nRF5340, along with PCB based antenna 2.4 GHz antenna:
A couple of Health Sensors connects to the nRF5340:
- the MAX30102 offers Heart-Rate sensors providing Pulse and Oximeter readings
- the MAX30205 offers high accuracy Human Body Temperature readings
- the ICM-42605 is a 6-Axis Inertial Measurement Unit sensor (accelerometer + gyroscope) that can be use for Motion & Activity Tracking
- the TDK ICS-41350 is a PDM Microphone used that can be used for Voice Commands and Environmental Noise Measurements
- the LTR-303ALS-01 is an Ambient Light Sensors that can be used to ensure adequate Lighting during sleep and work time
- along these the board also features a connection point for External Sensors supporting the I2C standard
The board is powered from a CR2032 Battery. Each of the Sensors has a dedicated Power Management IC allowing the nRF5340 to completely power down sensors when they are not used.
The Electronics and PCB were designed using the open-source KiCad EDA:
The Schematics is fairly simple. It feature the BT40 / nRF5340, the Sensors, Power Management IC-s, a Push Button, an LED, a SWD Programming Port and some miscellaneous components:
The PCB is 4-Layer Controlled-Impedance PCB ordered from JLCPCB:
The the price was just $2 for 5pcs I decide to order the PCB in 3 Colors:
The electronic components were mostly ordered from Mouser.
Unfortunately, the original shipping estimate, 29 Apr, for the BT40 module ended up being way off. The current estimate is 13 July, so I still not got the module...
AssemblyTo solder the components I used a Hot Air Station.
Here is what the result looks like:
The above is the Top side, bellow is the Bottom side:
On the Testing side I managed to the Power Management IC-s. I used the Nordic Power Profiler Kit || to measure the OFF current. It is < 1uA.
On the Software side, the this are not yet done. As I said I didn't got the BT40 yet, and the BT40's footprint has some tiny pads, which makes it little bit hard to break out wires to the Nordic nRF5340 Development Kit.
As I didn't got the Fanstel BT40 SoM in time, I decided to play around with the Nordic nRF5340 Development Kit.
SoftwareFor software development on the Nordic nRF5340 SoC we can use the nRF Connect SDK.
To install the Nordic nRF Connect SDK on Linux, we need to follow the: Installing the nRF Connect SDK manually guide.
Along this we also need to install the SEGGER Embedded Studio for ARM (Nordic Edition):
At this point we should be able to run programs on the Nordic nRF5340 Development Kit.
Additionally we can install nRF Connect for Desktop which comes with a number of useful apps that can be used for different things:
For example, we can use the Programmer app to flash pre-built programs in the nRF5340 development kit. One such program is the Heart Rate Monitor (HRM) demo application:
To be able to use the app we also need to install the nRF Toolbox for Bluetooth LE app on our phone:
From the app we need to select the HRM application, then on the next screen we need to hit Connect and select the Zephyr Heartrate Sensor device:
As the Fanstel BT40 was not here yet, I needed to improvise a bit. So, I ended up breaking the out a couple of signals to the the nRF5340 Dev Kit:
This allowed me to be able to access the I2C bus and the Power Management IC control signals from the nRF5340 Dev Kit:
The first thing I tried was a I2C Scan to make sure the Sensors are detected:
// I2C Scan
printk("I2C scan start!\n");
for (uint8_t addr = 0x02; addr < /*128*/ 0; ++addr) {
uint8_t cmd = 1;
int error = i2c_write(i2c_dev, &cmd, 1, addr);
if (error == 0) {
printk("I2C device found at addr 0x%2X!\n", addr);
}
}
printk("I2C scan end!\n");
The four I2C Sensors (hear rate, human body temp, motions, ambient light) were successfully detected.
After this I cloned the HR Peripheral sample application and started implement drivers for the sensors
First I got the MAX30205 Human Body Temperature sensor working. To test it I tied the Temperature value to the Heartrate BLE GATT attribute.
Then I used the Bluetooth Low Energy app from nRF Connect to inspect the device
The Temperature values are also visible in the HRM app from Nordic nRF Toolbox on Android:
Video:
Next StepsThe project is far from being completed. The next steps I plan to make include:
- completing the Hardware when the Fanstel BT40 module arrives
- completing the device Firmware
- creating an Android application
Note:
The Source Code along with the Hardware and 3D Files can be found in the projects GitHub repository: bluetiger9/nRF53-Wearable
To be continued! :)
Comments