summaryrefslogtreecommitdiff
path: root/projects/kimesh/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'projects/kimesh/index.html')
-rw-r--r--projects/kimesh/index.html112
1 files changed, 112 insertions, 0 deletions
diff --git a/projects/kimesh/index.html b/projects/kimesh/index.html
new file mode 100644
index 0000000..33c9ef5
--- /dev/null
+++ b/projects/kimesh/index.html
@@ -0,0 +1,112 @@
+<!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="search">
+ <div id="search"></div>
+ </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 data-pagefind-body>
+ <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 src="/pagefind/pagefind-ui.js"></script>
+ <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.`;
+
+ window.addEventListener('DOMContentLoaded', (event) => {
+ new PagefindUI({element: "#search", showSubResults: true});
+ });
+ </script>
+ </body>
+</html>