SensWear is an open-source, research-grade wearable development platform for collecting raw physiological, motion, interaction, and environmental data.
Most commercial wearables provide only processed metrics through closed hardware and restricted APIs. SensWear takes the opposite approach: developers receive access to the hardware design files, configurable firmware, communication interfaces, raw sensor streams, mobile applications, and software SDKs.
Its modular and form-factor-agnostic architecture can be adapted to smart rings, wristbands, patches, research instruments, and other custom wearable devices without redesigning the complete technology stack.
SensWear is intended for:
The SensWear main board acts as the processing, connectivity, motion-sensing, storage, and power-management hub.
Its primary components include:
Sensors and actuators can be added through interchangeable daughter boards:
| Module | Main component | Purpose |
|---|---|---|
| PPG board | MAX30101 | Raw red, infrared, and green optical sensing |
| Temperature board | MAX30208 | Skin and body-surface temperature sensing |
| Touch board | MTCH6102 | Capacitive touch position and gesture input |
| Haptic board | DRV2605 | Programmable vibration and haptic feedback |
| Debug board | SWD and UART interfaces | Programming, flashing, debugging, and serial communication |
The modular interface also allows developers to design their own daughter boards for new sensors, actuators, or experimental applications.
SensWear provides more than a hardware design. The complete stack includes:
This provides an inspectable path from physical sensing to embedded processing, wireless communication, visualization, and AI/ML analysis.
There are two ways to build SensWear:
git clone https://github.com/Sens-Wear/hardware.git
cd hardwareOpen the top-level SensWear_V1R1.DsnWrk workspace in Altium Designer.
Open the relevant .PrjPcb project for the board you want to manufacture. Separate projects are provided for the main, debug, PPG, temperature, touch, haptic, and sensor-panel boards.
Locate the manufacturing outputs inside the relevant board directory. Depending on the board, these include:
Before ordering, compile the Altium project and run the electrical-rule and design-rule checks.
Verify the PCB stack-up, thickness, copper weight, finish, impedance requirements, panelization, component availability, and assembly constraints with the selected manufacturer.
Inspect all Gerber and drill files in an independent viewer before releasing them for production.
Because SensWear uses dense flexible-PCB designs and small components, professional PCB fabrication and automated assembly are strongly recommended.
Disconnect the battery and all external power before connecting or removing boards.
Visually inspect the main board and daughter boards for damaged connectors, solder bridges, missing components, or incorrect assembly orientation.
Connect the required daughter board to the standardized expansion interface. Follow the connector orientation and assembly drawings in the hardware repository.
Connect a suitable rechargeable battery while carefully checking polarity.
If the device will be worn on the body, place the electronics inside an electrically insulating enclosure.
Position skin-facing sensors correctly:
The firmware is based on Zephyr and targets the SensWear nRF54L15 application core.
Clone the firmware repository:
git clone https://github.com/Sens-Wear/firmware.git
cd firmware
cp .env.example .envInstall the compatible Nordic nRF Connect SDK and Zephyr toolchain, then update .env with the paths for your local installation.
Build the base-board firmware:
cmake --preset senswear_nrf54l15_cpuapp
cmake --build --preset senswear_nrf54l15_cpuappUse the appropriate preset when a daughter board is installed:
cmake --preset senswear_nrf54l15_cpuapp_ppg
cmake --build --preset senswear_nrf54l15_cpuapp_ppgAvailable application presets include:
senswear_nrf54l15_cpuapp_ppgsenswear_nrf54l15_cpuapp_temperaturesenswear_nrf54l15_cpuapp_touchsenswear_nrf54l15_cpuapp_hapticThe firmware configuration must match the physically connected daughter board. The current build system also validates combinations that share the regulated daughter-board power rail.
Flash the generated firmware through the SensWear debug board using a compatible CMSIS-DAP or J-Link programmer.
Important: The nRF54L15 SWD interface operates at 1.8 V. Do not use a standard ST-Link/V2 unless that specific debugger explicitly supports 1.8 V target signaling.
Full setup and build documentation is available in the firmware repository.
Install the Python SDK on a Bluetooth-enabled computer running Python 3.10 or later:
python -m pip install senswearThe following example connects to SensWear and streams acceleration data:
import asyncio
from senswear import SenswearClient
async def main():
async with SenswearClient() as device:
battery = await device.battery.read()
print(f"Battery: {battery.percent}%")
await device.imu.set_physical_streams_enabled(True)
await device.imu.subscribe_linear_acceleration(
lambda sample: print(sample)
)
try:
await asyncio.sleep(30)
finally:
await device.imu.unsubscribe_all()
await device.imu.set_physical_streams_enabled(False)
asyncio.run(main())The SDK also provides access to raw PPG channels, temperature measurements, touch events, orientation, gyroscope data, activity classification, battery state, RGB LEDs, and haptic patterns when the corresponding hardware and firmware services are available.
After assembly and flashing:
SensWear hardware, firmware, SDKs, and applications are released under the permissive MIT License. Contributions involving new sensors, hardware revisions, firmware drivers, SDK integrations, documentation, power optimization, embedded AI, and example applications are welcome.
Open hardware. Embedded intelligence. Modular by design.