Skip to content

Build guide

A runway comprises four identical modules, each consisting of a flexible-circuit sensor array, a piezoresistive film and a readout board. The remaining components are a transparent enclosure, a waterproof cover, an overhead camera and a host computer.

One sensor module: a 64 by 64 flexible-PCB sensor array with its readout board connected to the sensor tails.

Components

Component Per runway Notes
Sensor module (flexible PCB, 2 layers, 157.9 × 179.7 mm outline) 4 64 × 64 electrode pairs at 2-mm pitch; no components. Two 70-contact tails connect directly to the readout board. Fabricated as a flexible PCB (FPC) with stiffeners on the tails.
Readout board (4-layer PCB, 92 × 56 mm) 4 Teensy 4.1, 2 × ADG732 32:1 multiplexers, 2 × AD7476 12-bit ADCs, 8 × 74LVC595 shift registers, 2 × MCP41HV51 digital potentiometers, operational amplifiers and two 70-pin flexible-circuit connectors (Molex 505110).
Piezoresistive film (Velostat/Linqstat) 4 sheets of approximately 140 × 140 mm Placed over the electrode arrays.
Waterproof cloth approximately 1 m Forms the walking surface over the sensing area.
Acrylic walls and base, USB cables and hub, overhead and side cameras, host computer The recording software runs on macOS with two 1920 × 1080 cameras; the side view assists manual paw labelling.

Cost

The parts for one four-module runway cost approximately US$550 (range approximately US$500–750), or approximately US$140 per 64 × 64 module, assuming in-house soldering, bare PCBs from any fabrication service and parts at retail prices (October 2026).

Per runway
Readout electronics (parts for 4 boards) $323
4 × Teensy 4.1 $126
Readout PCBs and stencil (one order of 5) ~$13
Flex sensor PCBs (one order of 5) ~$75 (estimate; $30–200 depending on fab)
Piezoresistive film and waterproof cloth ~$15
Total ~$550

The analog multiplexers and analog-to-digital converters (two of each per board) account for almost half of the total. Digital potentiometers are priced at US$2.00 each (DigiKey, October 2026); other distributors list them at up to approximately US$7, which adds approximately US$40. The flexible sensor PCB should be quoted with the chosen fabrication service. Shipping, taxes, tools, enclosure, cameras and the host computer are not included; optional board-house assembly adds approximately US$155.

Design files

The KiCad sources, the fabrication files used to manufacture the boards and the bill of materials of the readout board are provided in hardware/ under the CERN Open Hardware Licence v2 (permissive).

Board Files Fabrication
Sensor module KiCad layout and Gerber files 2-layer flexible PCB, 157.9 × 179.7 mm, with stiffeners under the two tails
Readout board KiCad schematic, layout and Gerber files; bill of materials 4-layer PCB, 1.6 mm, 91.9 × 56.3 mm

Fabrication and soldering notes are given in the hardware README. All readout-board parts except the Teensy 4.1 can be placed by the board house; the JLCPCB BOM and placement files are in hardware/readout_64x64/jlcpcb/. The Teensy 4.1 is soldered by hand. Parts that are out of stock at JLCPCB when ordering can be sourced through its parts pre-order or global sourcing services, or soldered by hand.

Assembly

  1. Readout boards. Solder the components, mounting the Teensy 4.1 on pin headers, and install the firmware (below) with a distinct board identifier on each board.
  2. Sensor connection. Insert the two flexible tails of each sensor module into the connectors of its readout board.
  3. Array alignment. Place the four sensor modules edge to edge with their taxel grids aligned. The analysis pipeline assumes boards 4, 3, 2 and 1 from left to right along the runway.
  4. Piezoresistive film. Cover the electrode arrays with the piezoresistive film.
  5. Enclosure. Lay the waterproof cloth flat over the film, position the walls around the sensing area and mount the overhead camera so that the full floor is in view.
  6. Verification. Connect the four boards to the host computer, run live_view_runway.py and confirm that the indicator LED of every board is lit and that applied pressure appears at the corresponding location.

Steps 2–4 and 6 are shown in Supplementary Video 1 (93 s).

Firmware

The firmware is provided in acquisition/firmware/ and is installed with the Arduino IDE, Teensyduino and the MCP41HVX1 digital-potentiometer library.

  • Set BOARD_ID (line 5) to 1, 2, 3 or 4 before programming each board. The identifier is transmitted in every packet.
  • On power-up, each board awaits a configuration line (M threshold digipot) from the host, sets its gain, acknowledges with OK and begins streaming. It executes the adaptive sampling loop; each frame consists of a header (0xDEADBEEF, board identifier, number of measurements, frame counter) followed by (index, value) pairs.

Recording

acquisition/record_runway.py configures the four boards, starts them and the cameras from a common start signal, and saves runway_tactile_data_<time>_M<M>_T<threshold>_D<digipot>.mat together with one MP4 file per camera with per-frame timestamps. Serial ports and camera indices are set at the end of the script. The study recordings used a duration of 90 s, M = 200, threshold 700 and digital-potentiometer setting 100, with cameras at 1920 × 1080 (target 30 frames/s; approximately 25–27 frames/s achieved, so per-frame timestamps are used for synchronization).

pip install pyserial scipy numpy opencv-python
python acquisition/live_view_runway.py     # live pressure map (no recording)
python acquisition/record_runway.py        # synchronized recording

Calibration

Calibration curves for the four boards used in the study are provided in data/calibration_0_450/. Each new set of sensor modules requires its own calibration: each module is loaded through the same cover on a reference force plate (in the study, three 5-kg load cells with an NAU7802 24-bit amplifier on a Teensy), and the summed taxel response is fitted to the reference load as described in the README of that folder.