Skip to the content
2 layers100 × 120 mmAnalog bridge, the printed circuit board in 3D

modular logic probe (3V3 logic level, 16 channels per device, SCPI)

Size
100 × 120 mm
Copper layers
2
Thickness
1.6 mm
Parts
112
Nets
102
Pads
425
Tracks, vias
981, 2,332
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Sep 2026
Updated
20 Sep 2026

Overview

Analog bridge is an open-source printed circuit board by mayermakes, from the mayermakes/analog-bridge repository on GitHub. It is a 2-layer board of 100 × 120 mm with 112 parts on 102 nets, routed with 981 tracks and 2,332 vias.

It is built around the ATTINY3226-SU and ADS1115IDGS. Its parts include 39 diodes, 31 resistors, 23 capacitors, 10 ICs and 7 connectors. It belongs with the interfaces and adapters and sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

Analog Bridge

A modular, open hardware 16-channel measurement and logic-monitoring platform built around an ATtiny3226 and four ADS1115 ADCs. The bridge exposes a line-oriented SCPI interface over Ethernet and USB serial, making it useful for automated test fixtures, digital logic observation, and lightweight data acquisition.

Status: Work in progress. The hardware, firmware, and host tools are under active development.

Features

  • 16 single-ended analog inputs per device
  • 3.3 V logic-level classification in the included monitor application
  • Four ADS1115 converters on a shared I²C bus
  • ATtiny3226-based firmware
  • Ethernet connectivity through an ENC28J60
  • USB-UART access at 115200 8N1
  • SCPI commands for identification, channel configuration, status, and measurements
  • Python web dashboards for live channel monitoring and oscilloscope-style plotting
  • KiCad PCB and schematic sources
  • 3D-printable enclosure plates and manufacturing files

Repository layout

text
analog-bridge/
├── analog-bridge-PCB/       # KiCad project, schematic, and PCB layout
├── analog-bridge/            # PlatformIO firmware and Python host tools
│   ├── src/                  # Firmware sources
│   ├── include/              # Firmware headers
│   ├── lib/                  # Project libraries
│   ├── test/                 # PlatformIO tests
│   ├── platformio.ini        # Build and upload configuration
│   ├── API_README.md         # Complete SCPI and transport reference
│   ├── analog_bridge_monitor.py
│   └── analog_bridge_oscilloscope.py
└── manufacturing/            # 3MF and SVG enclosure/manufacturing files

Channel mapping

Each ADS1115 contributes four single-ended inputs:

Logical channelsADS1115 addressInputs
0–30x48AIN0–AIN3
4–70x49AIN0–AIN3
8–110x4AAIN0–AIN3
12–150x4BAIN0–AIN3

The firmware uses the ADS1115 GAIN_ONE setting, with a nominal input range of approximately ±4.096 V. Always observe the electrical limits of the ADC and the assembled hardware.

SCPI interface

The device accepts one command per line. Commands are case-insensitive and can be sent over either transport:

  • Ethernet: DHCP, TCP port 5025
  • USB serial: 115200 8N1

Example Ethernet session:

bash
printf '*IDN?\n' | nc 192.168.1.42 5025
printf 'MEAS:RAW? 6\n' | nc 192.168.1.42 5025

Frequently used commands include:

CommandPurpose
*IDN?Return device identification
*RSTRestore enabled channels and 16 SPS defaults
SYST:ERR?Read and clear the latest error
CONF:CHAN<n>:RATE <sps>Set a channel’s sampling rate
CONF:CHAN<n>:STAT ON|OFFEnable or disable a channel
MEAS:RAW? <n>Read the latest raw ADC value
MEAS:RAW:ALL?Return all 16 channels as CSV records

Supported rates are 8, 16, 32, 64, 128, 250, 475, and 860 SPS. For the full command reference, wiring information, response formats, and transport details, see analog-bridge/API_README.md.

The SCPI interface has no authentication or encryption. Use Ethernet access only on a trusted network.

Firmware development

The firmware is built with PlatformIO and the Arduino framework.

Prerequisites

  • PlatformIO Core or the PlatformIO IDE extension
  • An ATtiny3226 UPDI programmer
  • pymcuprog for UPDI upload:
bash
python3 -m pip install pymcuprog

Build and upload

From the firmware directory:

bash
cd analog-bridge
pio run
pio run -e Upload_UPDI -t upload

Configure the upload port and speed for your UPDI adapter according to your local setup. The default PlatformIO environment is Upload_UPDI.

ADC diagnostic firmware

The repository includes a direct ADC test firmware that bypasses the normal SCPI scheduler:

bash
pio run -e ADC_TEST -t upload

Open the serial port at 115200 8N1 to view probe and raw conversion output. Use this mode to isolate ADC, I²C, power, address, or wiring problems.

Python host tools

The host applications use only the Python standard library unless USB serial discovery is needed.

Live channel monitor

The monitor discovers up to two bridges over Ethernet or USB serial and serves a live 32-channel dashboard. Ethernet discovery scans local IPv4 /24 networks for TCP port 5025; USB discovery requires pyserial.

bash
cd analog-bridge
python3 -m pip install pyserial  # optional, required for USB discovery
python3 analog_bridge_monitor.py

Open http://127.0.0.1:8080. By default, channels are classified as:

  • HIGH: ≥ 2.00 V
  • LOW: ≤ 0.80 V
  • doubt: between the two thresholds

Customize the thresholds, serial port, or web server:

bash
python3 analog_bridge_monitor.py \
  --serial-port /dev/ttyUSB0 \
  --high 2.2 \
  --low 0.7 \
  --port 8080

Network oscilloscope

The oscilloscope discovers up to four Ethernet bridges and plots AIN0 from each ADS1115: logical channels 0, 4, 8, and 12.

bash
python3 analog_bridge_oscilloscope.py

Open http://127.0.0.1:8090. Adjust the rolling history and polling interval with:

bash
python3 analog_bridge_oscilloscope.py --history 60 --poll 0.1 --port 8090

The tools use the device’s millisecond timestamp, which is relative to device boot rather than synchronized Unix time.

Hardware sources

The KiCad project is in analog-bridge-PCB/. It includes the main PCB, project configuration, and analog-section schematic. Manufacturing and enclosure assets are in manufacturing/, including SVG and 3MF files.

The primary ATtiny3226 connections are:

FunctionPin
I²C SCLPB0
I²C SDAPB1
UART TXPB2
UART RXPB3
ADS alert 0–3PB4, PB5, PC0, PC1
ENC28J60 MOSI/MISO/SCKPA1, PA2, PA3
ENC28J60 CS/INTPA4, PA6
UPDIPA0

Safety and limitations

  • Verify input voltage, grounding, and signal integrity before connecting external equipment.
  • The analog inputs are not isolated and the SCPI network service is unauthenticated.
  • Measurement rates are per-channel scheduling targets; use returned timestamps to determine the achieved rate.
  • Configuration is held in RAM and returns to the default state after reset or power loss.

Contributing

Issues and pull requests are welcome. When reporting a hardware or firmware problem, include the board revision, firmware environment, transport used, wiring, and relevant serial or SCPI output.

License

This project is licensed under the Open Community License v1.1 (OCL v1.1), without add-on conditions.

OCL v1.1 grants non-commercial users the right to use, copy, modify, and repair the project and requires distributed derivatives to remain under OCL. Commercial business use is limited to internal use unless a separate business or repair license is obtained. See LICENSE for the complete terms.

Third-party components and dependencies distributed with or alongside this project remain under their respective licenses where those licenses are incompatible with OCL. The authoritative OCL text and available add-ons are maintained by the OpenCommunityLicence project.

Parts

112
QtyValueFootprintReferences
33D_SchottkyDiode_SMD:D_0603_1608MetricD10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25 +17
161kResistor_SMD:R_0603_1608MetricR14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29
150,1uFCapacitor_SMD:C_0603_1608MetricC1, C3, C4, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23
610kResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R30, R31
6WE-TVS_SOT23-6L_82402305WE-TVS_SOT23-6L_82402305:WE-TVS_SOT23-6LD1, D2, D4, D5, D6, D7
510uFCapacitor_SMD:C_0603_1608MetricC5, C6, C7, C8, C10
449,9Resistor_SMD:R_0603_1608MetricR6, R7, R8, R9
4ADS1115IDGSPackage_SO:TSSOP-10_3x3mm_P0.5mmU7, U8, U9, U10
3PRGConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1, J6, J7
2330Resistor_SMD:R_0603_1608MetricR10, R11
25k1Resistor_SMD:R_0603_1608MetricR12, R13
28pFCapacitor_SMD:C_0603_1608MetricC9, C11
2DA15_Socket_MountingHolesConnector_Dsub:DSUB-15_Socket_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ4, J5
2MCP1825SPackage_TO_SOT_SMD:SOT-223-3_TabPin2U3, U4
11uFCapacitor_SMD:C_0603_1608MetricC2
12171790001USB-C_20_molex:MOLEX_2171790001J2
12k32Resistor_SMD:R_0603_1608MetricR5
1ATtiny3226-SPackage_SO:SOIC-20W_7.5x12.8mm_P1.27mmU1
1CP2102N-Axx-xQFN28Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mmU2
1ENC28J60x-SOPackage_SO:SOIC-28W_7.5x18.7mm_P1.27mmU5
1FerriteBeadInductor_SMD:L_0603_1608MetricFB1
1P01-0002-01P01-0002-01:BEL_P01-0002-01J3
1Val**e14 Presents KiCad Footprints:e14presents logo 10mm silk only v1Ref**
1~Crystal:Crystal_SMD_2520-4Pin_2.5x2.0mmU6

Similar boards

  • 4 layers106 × 29.2 mmBatterymeter, the printed circuit board in 3D

    Batterymeter

    hb020/batterymeter

    Handheld Battery AC and Time Domain characterization tool on Attiny series 2

    145 parts20
  • 2 layers147.8 × 106.3 mmMr washi, the printed circuit board in 3D

    Mr washi

    mayermakes/MyGenWashy

    Generic washing Machine Controller - Result of the TuttleButtle Hackathon 2025

    54 parts12GPL-3.0
  • 2 layers70 × 50 mmEtherKeyerMini, the printed circuit board in 3D

    EtherKeyerMini

    etherkit/EtherKeyerMini

    A simple Morse Code keyer that does the basic functions you need

    31 parts4
  • 4 layers64.8 × 58.7 mmSalp board, the printed circuit board in 3D

    Salp board

    aeiou642/sensOrb

    Initial commit

    77 parts2
  • 2 layers54 × 60 mmMicroPAMI-2026, the printed circuit board in 3D

    MicroPAMI-2026

    LesKaribous/Karibous-2026-PAMI

    39 parts1
  • 4 layers103 × 107 mmCentral control, the printed circuit board in 3D

    Central control

    adarwoo/KiCad

    All KiCad projects

    153 parts
  • 2 layers52 × 32.1 mmAttiny e ink, the printed circuit board in 3D

    Attiny e ink

    alexanderenrique/attiny-e-ink

    Ultra-low-power ATtiny3226 e-ink quote display — firmware and KiCad PCB

    31 parts
  • 4 layers100 × 65 mmSi5351AVFO, the printed circuit board in 3D

    Si5351AVFO

    etherkit/Si5351AVFO

    After any schematic change, run tools/exportdocs.sh (needs KiCad 10 kicad-cli). It rewrites docs/Si5351AVFOschematic.pdf, the netlist, SVGs and docs/erc.rpt.

    140 parts

Questions

How big is the Analog bridge PCB?

It measures 100 × 120 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Analog bridge use?

112 parts, built around the ATTINY3226-SU and ADS1115IDGS. 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 Analog bridge KiCad files?

From the mayermakes/analog-bridge repository on GitHub, at the commit this page was made from: the board is analog-bridge-PCB/analog-bridge.kicad_pcb and its schematic analog-bridge-PCB/Analog-section.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Analog bridge design in my own project?

Its repository states no licence, so its author keeps all rights: ask mayermakes before reusing the design.