

TransducerBLE
This is the code for a paper titiled "Wireless Recording and Autoencoder Denoising of Intestinal Activity in Freely Moving Rats"
- Size
- 28 × 32 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 24
- Nets
- 28
- Pads
- 73
- Tracks, vias
- 136, 12
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 14 Dec 2023
- Updated
- 2 Mar 2025
Overview
TransducerBLE is an open-source printed circuit board by UT-yakusaku, from the UT-yakusaku/WirelessIntestine repository on GitHub. It is a 2-layer board of 28 × 32 mm with 24 parts on 28 nets, routed with 136 tracks and 12 vias.
It is built around the AD8237ARMZ, ADS1113IDGS and TLV71330PDBV. Its parts include 8 resistors, 5 capacitors, 4 connectors and 3 ICs.
Main components
3AD8237ARMZ
MSOP-8-40℃~+125℃ 0.005% 0.15V/us 0.5pA/℃ 1 1.8V~5.5V 100dB 115uA 120dB 1V/V~1000V/V 250pA 250pA 25uV 300nV/℃ 4mA 68nV/√Hz@1kHz 80us External resistor gain、Zero drift / auto-zero、EMI filtering/RF suppression Rail-to-Rail Input, Rail-to-Rail Output MSOP-8 Instrumentation Amplifiers ROHSAnalog DevicesInstrumentation AmplifiersADS1113IDGS
MSOP10Ultra-Small, Low-Power, 4 Channels 16-Bit Analog-to-Digital Converter with Internal ReferenceTexas InstrumentsUncategorisedTLV71330PDBV
SOT-23-5-40℃~+125℃@(Tj) 1 150mA 230mV@(150mA) 3V 5.5V 50uA 65dB 73uVrms Fixed Positive Under Voltage Lockout、Over Current Protection、Over Temperature Protection、Enable SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSTexas InstrumentsVoltage Regulators - Linear, Low Drop Out (LDO) Regulators
README
README.mdThis is the code for a paper titiled "Wireless Recording and Autoencoder Denoising of Intestinal Activity in Freely Moving Rats"
WirelessIntestine
In this repository, we have 3 main components used in our paper.
kicad/ : PCB and BOM of a custom-made board
nrf/ : a custom-made firmware for microcontroller (nrf51822)
analysis/model_train.py: codes for training the denoising autoencoder
Building a firmware for nrf51822
Building and flashing firmware were described in the Makefile routines. Connect the debugger to the microcontroller via JTAG, then build and flash the program using:
cd nrf/
make . -B ./_build
make flash_softdeviceDetailed description of methods
Below, detailed description of analysis methods utilized in paper.
Locomotion index
Locomotion index was calculated by the video of behaving rats in their homecage, recorded at a resolution of 960 by 540 pixels squared at 30 frames per second. As an initial preprocessing step for analyzing rats’ locomotion, video frames were converted to grayscale, with frames extracted every 180 frames (downsampled). The differential between successive frames was employed to quantify the magnitude of locomotion at each temporal point. In calculating this specific differential, the variance between the luminance values in each pixel, ranging from 0 to 255, was computed for every frame and aggregated across the entire frame. These aggregated values were designated as the locomotion levels and interpreted as an index of the rat's activity at specific intervals. Locomotion levels were measured throughout the entire recording period. Home cage provided a confined space, restricting the variety of locomotion. Given this limitation, we estimated that their movements under these experimental conditions could be classified into two distinct states: moving (behaving) and non-moving (immobile). A Gaussian mixture model (GMM) was used to classify these states and determine the threshold for the locomotion index.
Calculation of alpha in power-law noises
Alpha (α) is a parameter of power-law noise that defines the slope of the spectrum. Specifically, α is determined by the following relationship: Where f is the frequency and S(f) is the power spectral density (PSD) of the power-law noise, S(f) ∝ f ^(-α) This equation indicates that a higher α corresponds to a steeper spectral slope, while a lower α results in a flatter spectrum in the Fourier-transformed waveforms.
For the analysis of intestinal movement signals, a Fourier transform was applied to the acquired signals and represented on a double-logarithmic graph (Figure 1C, 2D). The signal comprising 180,000 data points was limited within the frequency range up to 5 Hz resulting in 18,000 points, meticulously smoothed employing a third-order Savitzky-Golay filter with a window size of 51, as executed via the Python Scikit-learn library. For the analysis across both logarithmic graphs, the smoothed signal was resampled at uniformly distributed intervals with a scaling factor of 100.02 in the logarithmic domain to circumvent bias in the subsequent fitting procedure. This precaution addresses the intrinsic characteristic of data sampled in linear space, which predisposes it to contain more data points in high-frequency regions as opposed to the low-frequency areas, resulting in their disproportionate representation when analyzed on a logarithmic scale. The resampled signal to mitigate this biased representation was depicted on a logarithmic scale spanning from 5 × 10⁻⁴ to 5 Hz, and thereafter, it was meticulously fitted with a linear function utilizing the least-squares methodology. This linear fit was employed to estimate a robust baseline for evaluating the strength of intestinal movement and calculate the slope of baseline, interpreted as the alpha.
Definition of Intestinal Events
The amplitude of intestinal movements was segmented into 10.24-second bins. These amplitudes were then classified into two states—containing or lacking intestinal activity—using a Gaussian mixture model (the number of components is set to 2). Intestinal events were defined as periods in which intestinal activity was present.
Autoencoder construction and training
Training datasets
The training data comprised scalograms derived from amplitude-modulated waves, representing pure intestinal movements, amalgamated with pink noise to simulate motion-induced disruptions. The pure signal was modeled as the product of a modulation sine wave (frequency: 0.01-0.2 Hz) and a carrier wave (frequency: 0.5-0.7 Hz), with its intensity and frequency, varied across training samples to introduce diversity. Pink noise, inversely proportional to frequency, was incorporated to emulate movement artifacts, with a 15-fold difference in noise intensity between high- and low-noise conditions. The model was trained with 100 artificial 2000-second waves. The model was engineered to receive the high-noise version of signals as input and produce the low-noise version as output. The dataset was split into training and validation groups at an 8:2 ratio.
Data preprocessing
For preprocessing, signals were converted into scalograms utilizing a short-term Fourier transform (STFT) with a 10.24-second Hann window, providing a frequency resolution of 0.1 Hz. These scalograms, restricted to the 0.4–6.5 Hz range, were segmented into 655-second segments and resized into 64 × 64 matrices for input into the autoencoder.
Model construction
The autoencoder architecture comprises three parts: the encoder, bottleneck, and decoder. The encoder first processes the input matrices through a 2D convolutional layer with 32 filters of size 3 × 3, followed by a 2 × 2 max-pooling layer, reducing the matrices to 32 × 32 × 32. A second convolutional layer with identical filter dimensions and another max-pooling layer further reduces the size to 64 × 16 × 16. A 2D convolutional operation is performed in the bottleneck layer, increasing the depth to 128 while maintaining the spatial dimensions. In the decoder, two upsampling layers, each followed by a convolutional layer, sequentially doubled the spatial dimensions and reduced the depth, ultimately restoring the matrices to 32 × 64 × 64. The final convolutional layer employed a linear activation function to conform the output to the input dimensions.
Training
The model was trained to utilize the Adam optimizer with a learning rate of 0.001 and mean squared error (MSE) as the loss function. The training was confined to 100 epochs, with the learning rate reduced by a factor of 0.1 after five epochs without improvement. If no improvement was observed after ten epochs, training was stopped early. All routines were implemented using Python TensorFlow and Keras libraries.
Parts
24| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 0.1µ | Capacitor_SMD:C_0402_1005Metric | C1, C2, C3, C4 |
| 3 | 120 | Resistor_SMD:R_0603_1608Metric | R1, R2, R3 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R7, R8 |
| 2 | 430 | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 2 | Conn_01x02_Socket | Connector_PinSocket_2.00mm:PinSocket_1x02_P2.00mm_Horizontal | J3, J4 |
| 2 | Conn_01x08_Socket | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J1, J2 |
| 1 | 0.047µ | Capacitor_SMD:C_1210_3225Metric | C5 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | AD8237ARMZ | Package_SO:MSOP-8_3x3mm_P0.65mm | U1 |
| 1 | ADS1113IDGS | Package_SO:TSSOP-10_3x3mm_P0.5mm | U2 |
| 1 | TLV71330PDBV | Package_TO_SOT_SMD:SOT-23-5 | U3 |
The 20 most common of 24 parts.
Similar boards
- 2 layers23.3 × 34.3 mm

- 4 layers45 × 35 mm

- 2 layers20.5 × 25 mm

Ppg watch
harishbawin18/PCB
This project presents the design and routing of a Photoplethysmography (PPG) based wearable watch PCB, developed using KiCad 9.0.
39 parts - 2 layers60 × 50 mm

- 4 layers21.5 × 62.8 mm

- 4 layers65 × 56 mm

- 2 layers168.9 × 109.2 mm

Node old
CaptnSisko/CHARM
CHeap Accessible Resilient Mesh for Remote Locations and Disaster Relief
64 parts - 2 layers103 × 86.5 mm

Questions
How big is the TransducerBLE PCB?
It measures 28 × 32 mm and has 2 copper layers, 1.6 mm thick.
What parts does the TransducerBLE use?
24 parts, built around the AD8237ARMZ, ADS1113IDGS and TLV71330PDBV. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the TransducerBLE KiCad files?
From the UT-yakusaku/WirelessIntestine repository on GitHub, at the commit this page was made from: the board is kicad/transducerBLE.kicad_pcb and its schematic kicad/transducerBLE.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the TransducerBLE design in my own project?
Its repository states no licence, so its author keeps all rights: ask UT-yakusaku before reusing the design.