summaryrefslogtreecommitdiff
path: root/projects/kimesh/index.html
blob: 37d06b2c4ce14f1a78fd08f741ed635b71caac69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE html>
<html><head>
    <meta charset="utf-8">
    <title>KiMesh | Home</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="color-scheme" content="dark light">
    <link rel="stylesheet" href="/style.css">
</head>
<body><nav>
    <div class="internal">
        
        <a href="/" title="Home">Home</a>
        <a href="/blog/" title="Blog">Blog</a>
        <a href="/projects/" title="Projects">Projects</a>
        <a href="/about/" title="About">About</a>
    </div>
    <div class="external">
        <a href="https://git.jaseg.de/" title="cgit">cgit</a>
        <a href="https://github.com/jaseg" title="Github">Github</a>
        <a href="https://gitlab.com/neinseg" title="Gitlab">Gitlab</a>
        <a href="https://chaos.social/jaseg" title="Mastodon">Mastodon</a>
    </span>
</nav>

    <header>
        <h1>KiMesh</h1>
<ul class="breadcrumbs">
    <li><a href="/">jaseg.de</a></li>
    <li><a href="/projects/">Projects</a></li><li><a href="/projects/kimesh/">KiMesh</a></li>
</ul>
 <strong>2023-10-04</strong>
    </header>
    <main>
        <div class="links">
            <a href="https://git.jaseg.de/kimesh.git">Sources</a>
            <a href="https://github.com/jaseg/kimesh/issues">Issues</a>
            <a href="https://jaseg.de/projects/kimesh">Docs</a>
        </div>
        <div class="document" id="kicad-security-mesh-generator">
<h1 class="title">KiCAD Security Mesh Generator</h1>

<img alt="A screenshot of KiCAD showing a PCB security mesh generated by KiMesh." src="kicad-mesh-result-large.png" style="width: 800px;" />
<p>This repository contains KiMesh, a KiCAD pcbnew plugin that generates security mesh traces on a KiCAD PCB.</p>
<div class="section" id="installation">
<h2>Installation</h2>
<p>KiMesh has two parts: The pcbnew plugin that generates the traces, and the magic footprints that you use to tell the
plugin how many traces of which dimensions to generate where.</p>
<p>To install the plugin, copy the &quot;kimesh&quot; directory into your KiCAD installation's scripting plugin folder. Usually, this
is <cite>~/.config/kicad/scripting/plugins/</cite> for KiCAD stable installations or
<cite>~/.config/kicad/[major version].99/scripting/plugins/</cite> for nightly builds. On Windows, these paths can be found in your
user account's <cite>AppData/Roaming</cite> directory.</p>
<p>To install the footprint libraries, the easiest way is to download the library zip from the project's repo
<a class="reference external" href="https://git.jaseg.de/kimesh.git/plain/mesh_footprints.tar.xz?h=main">[link]</a>, unpack it to your project folder, and
add the unpacked libraries as project-specific libraries through KiCad's library management thingy.</p>
</div>
<div class="section" id="usage">
<h2>Usage</h2>
<p>To work, KiMesh requires four things:</p>
<ol class="arabic simple">
<li>An area free of other features such as footprints or traces where to generate the mesh.</li>
<li>One or more &quot;graphic polygons&quot; on a drawing layer that specify the area of the mesh.</li>
<li>A closed board outline on the <cite>Edge.Cuts</cite> layer.</li>
<li>One of the magic footprints from the KiMesh anchor library that defines the mesh's number of wires and their
dimensions, and tells KiMesh where to start the mesh and in which direction to start it.</li>
</ol>
<p>You can choose any layer for the outline polygons, such as the pre-defined <cite>User.Eco1</cite> or <cite>User.X</cite> layers, or you can
define your own. You just have to select that layer later in KiMesh's generator dialog. Note that KiMesh only processes
graphic polygons on that layer, and ignores other shapes such as lines, rectangles or circles. You can still use other
shapes, but you have to manually convert them to polygons before running KiMesh. To convert other shapes to
a polygon, select them, open the context menu with a right click, then choose the &quot;Create from Selection 🞂 Create
Polygon from Selection&quot; entry. For rectangles or circles, use the &quot;Use Centerlines&quot; option. For lines or arcs, use the
&quot;Create bounding hull&quot; option.</p>
<p>Place the magic anchor footprint on the outline of the mesh's shape polygons so that you have space to route out the
traces. The anchor footprint has an arrow on the <cite>F.Fab</cite> layer that indicates in which direction the mesh will be
generated.</p>
<p>I recommend adding the mesh to the schematic with one of KiCad's built-in <cite>Connector_02xN_Top_Bottom</cite> footprints. For a
mesh with k wires, choose a symbol with two rows of 2k pins each. For instance, for two mesh wires, choose
<cite>Connector_02x04_Top_bottom</cite>. Then assign one of the magic footprints to that symbol. To avoid DRC warnings, join the
two halves of the mesh on the output side of the footprint. That's the right side in default orientation, where the
higher-numbered pins are.</p>
<img alt="A screenshot of the connector footprint mentioned in the previous paragraph, shown conencted up as described in KiCad's schematic editor." src="screenshot-mesh-schematic.png" style="width: 800px;" />
</div>
<div class="section" id="theory-of-operation">
<h2>Theory of operation</h2>
<p>I have published a <a class="reference external" href="https://blog.jaseg.de/posts/kicad-mesh-plugin/">post</a> on my blog on the theory of operation behind KiMesh.</p>
</div>
</div>
    </main><footer>
    Copyright © 2023 Jan Sebastian Götte
    / <a href="/about/">About</a>
    / <a href="/imprint/">Imprint</a>
</footer>
<script>
            if(navigator.getEnvironmentIntegrity!==undefined)document.querySelector('body').innerHTML=`<h1>Your browser
            contains Google DRM</h1>"Web Environment Integrity" is a Google euphemism for a DRM that is designed to
            prevent ad-blocking, and which Google has forced into their browsers against widespread public opposition.
                In support of an open web, this website does not function with this DRM. Please install a browser such
            as <a href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> that respects your freedom and supports
            ad blockers.`;
        </script>
    </body>
</html>