Skip to the content
PCBKitNew board
2 layers261.6 × 261.6 mmMesh, the printed circuit board in 3D

This project implements a 30x30 node resistor mesh for testing it approximately. The mesh contains 1,740 resistors (870 horizontal + 870 vertical connections), each a 1kΩ 0805 SMD resistor with 0.1% precision.

Size
261.6 × 261.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
2,821
Nets
961
Pads
4,681
Tracks, vias
3,720, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
14 Aug 2025
Updated
14 Aug 2025

Overview

Mesh is an open-source printed circuit board by FrankBuss, from the FrankBuss/mesh repository on GitHub. It is a 2-layer board of 261.6 × 261.6 mm with 2,821 parts on 961 nets, routed with 3,720 tracks and 0 vias.

README

README.md

Infinite Grid Resistor Mesh Test Board

Overview

A popular question is the resistance between nodes in an infinite grid of resistors, like this:

Circuit Diagram (Illustration)

This project implements a 30x30 node resistor mesh for testing it approximately. The mesh contains 1,740 resistors (870 horizontal + 870 vertical connections), each a 1kΩ 0805 SMD resistor with 0.1% precision.

Automated Design Generation

For creating the PCB layout, I used the mesh.py Python script, which automates the placement of the resistors, connections, and vias on each node for easier measurement in the grid pattern, for a KiCAD board, looks like this:

PCB Layout

You can download the board here: mesh.kicad_pcb.

Manufacturing

The board was manufactured by JLCPCB, including populating all resistors, using the following production files:

5 boards, 2 of them with populated resistors, did cost $259.99 with shipping.

Manufactured Board

Assembled PCB - View 1 Assembled PCB - View 2

Measurements vs Theory

Measured Values

  • Adjacent nodes (15,15) to (16,15): 500.2 Ω
  • Diagonal nodes (14,14) to (15,15): 640 Ω
    • This is a (1,1) separation: 1 node horizontally, 1 node vertically
  • Knight's move (14,14) to (16,15): 778 Ω (as in xkcd #356)
    • This is a (2,1) separation: 2 nodes horizontally, 1 node vertically

Theoretical Values (Infinite Grid)

For an infinite 2D square resistor grid with resistance R per element, the theoretical analysis gives the resistance between nodes separated by (m,n) as:

General formula (equation 9 from the analysis):

math
R_{(m,n)} = \frac{1}{\pi} \int_0^{\pi} \frac{[1 - e^{i(n\arccos(2-\cos(\alpha)))}] \cos(m\alpha)}{\sin[\arccos(2-\cos(\alpha))]} \, d\alpha

This integral evaluates to specific values:

Adjacent nodes (1,0):

math
R_{(1,0)} = \frac{1}{2} \cdot R = 500 \text{ Ω}

Diagonal nodes (1,1):

math
R_{(1,1)} = \frac{2}{\pi} \cdot R = 0.63662 \cdot R = 636.62 \text{ Ω}

Knight's move (2,1):

math
R_{(2,1)} = \left(\frac{4}{\pi} - \frac{1}{2}\right) \cdot R = 0.77324 \cdot R = 773.24 \text{ Ω}

Finite Grid Simulation

Since our grid is finite (30x30), edge effects cause small deviations from the infinite grid values. The simulate_grid.py script uses nodal analysis to solve the exact resistance values for the finite grid:

Method: The simulation builds an admittance matrix based on Kirchhoff's current law, injects 1A between two nodes, and solves for all node voltages using sparse matrix methods.

Simulated values for 30x30 grid:

  • Adjacent (15,15) to (16,15): 500.61 Ω (vs infinite: 500.00 Ω)
  • Diagonal (14,14) to (15,15): 637.84 Ω (vs infinite: 636.62 Ω)
  • Knight's move (14,14) to (16,15): 776.29 Ω (vs infinite: 773.24 Ω)

Comparison of measured values with theory:

ConfigurationMeasuredInfinite GridFinite Grid (30x30)Error vs InfiniteError vs Finite
Adjacent (1,0)500.2 Ω500.00 Ω500.61 Ω0.04%0.08%
Diagonal (1,1)640.0 Ω636.62 Ω637.84 Ω0.53%0.34%
Knight's move (2,1)778.0 Ω773.24 Ω776.29 Ω0.62%0.22%

These results demonstrate:

  1. The 30x30 mesh closely approximates an infinite grid (measured values within 0.62% of infinite theory)
  2. Edge effects account for most of the discrepancy (finite grid simulation explains the differences)
  3. The 0.1% precision resistors and JLCPCB assembly quality are excellent (< 0.34% error vs simulation)

Parts

2,821
QtyValueFootprintReferences
1860RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R10, R100, R101, R1000, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, R1009, R1010, R1011 +1844
961TestPointConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP +945

Questions

How big is the Mesh PCB?

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

What parts does the Mesh use?

2,821 parts. 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 Mesh KiCad files?

From the FrankBuss/mesh repository on GitHub, at the commit this page was made from: the board is mesh.kicad_pcb and its schematic mesh.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mesh design in my own project?

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

Similar boards

  • 2 layers100 × 18.7 mmWorkshop 3, the printed circuit board in 3D

    Workshop 3

    Tessavana/Soft-interfaces-files

    Sharing all circuit, PCB, code and design files to be able to replicate EOP soft interfaces

    2,819 partsApache-2.0
  • 2 layers177.4 × 202.8 mmGPIO Expander MCP23017, the printed circuit board in 3D

    GPIO Expander MCP23017

    SolderedElectronics/IO-expander-MCP23017-breakout-hardware-design

    Hardware design, BOM, gerbers and 3D files for IO-expander-MCP23017-breakout designed by Soldered Electronics.

    2,804 parts4
  • 2 layers115 × 70 mmMcu proto-115x70mm, the printed circuit board in 3D

    Mcu proto-115x70mm

    galopago/misistemote

    Misistemote is an Open Source, modular ecosystem that uses pre-made PCB to mix and match your choice of processor board.

    2,786 parts11MIT
  • 2 layers161 × 132 mmSparkFun BMV080 panelized, the printed circuit board in 3D

    SparkFun BMV080 panelized

    embeddedos-org/eCAD-Hardware-Products

    Hardware designs + EE docs + Board datasheets of Multiple products

    2,869 parts8MIT
  • 2 layers187 × 222 mmRabbit mask capacitors left, the printed circuit board in 3D

    Rabbit mask capacitors left

    idlehandsdev/black_rabbit

    A low poly LED mask made completely out of circuit boards. Second version of a series of high tech face changing masks.

    2,875 parts83GPL-3.0
  • 2 layers388 × 444 mmPanel, the printed circuit board in 3D

    Panel

    koson/e-Power-PCBs

    This repository contains all e-Power PCB projects

    2,744 parts
  • 2 layers202.8 × 216.6 mmI2C multiplexer TCA9548A, the printed circuit board in 3D

    I2C multiplexer TCA9548A

    SolderedElectronics/I2C-multiplexer-TCA9548A-breakout-hardware-design

    Hardware design, BOM, gerbers and 3D files for I2C-multiplexer-TCA9548A-breakout designed by Soldered Electronics.

    2,744 parts3