<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Ohmbedded]]></title><description><![CDATA[Wacko Electronics]]></description><link>https://ohmbedded.com/</link><image><url>https://ohmbedded.com/favicon.png</url><title>Ohmbedded</title><link>https://ohmbedded.com/</link></image><generator>Ghost 5.72</generator><lastBuildDate>Tue, 17 Mar 2026 08:25:02 GMT</lastBuildDate><atom:link href="https://ohmbedded.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240]]></title><description><![CDATA[<p>Did you know? Google and other providers have large databases of geolocation-SSID pairs! By sniffing SSIDs in your area, you can get surprisingly accurate location without surprising power use. Using nRF Cloud, you can even define your own SSIDs with location--a very powerful feature for situations in which you cannot</p>]]></description><link>https://ohmbedded.com/nrf7000-wi-fi-scan-w-the-7002-ek/</link><guid isPermaLink="false">65eb55ebab1e5428626c2fde</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Fri, 08 Mar 2024 18:51:12 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2024/03/DALL-E-2024-03-08-13.30.15---Imagine-a-group-of-digital-vikings-in-a-cyberpunk-world--each-located-in-different-parts-of-the-globe.-These-vikings-are-outfitted-in-futuristic--cybe.webp" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2024/03/DALL-E-2024-03-08-13.30.15---Imagine-a-group-of-digital-vikings-in-a-cyberpunk-world--each-located-in-different-parts-of-the-globe.-These-vikings-are-outfitted-in-futuristic--cybe.webp" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240"><p>Did you know? Google and other providers have large databases of geolocation-SSID pairs! By sniffing SSIDs in your area, you can get surprisingly accurate location without surprising power use. Using nRF Cloud, you can even define your own SSIDs with location--a very powerful feature for situations in which you cannot get a reliable GNSS fix. </p><p>Nordic has a few Wi-Fi chips now, the nRF7002, nRF7001, and (believe it or not) the nRF7000. Here are the key features:</p><ul><li>nRF7002 - Dual-band, Wi-Fi 6, TX/RX</li><li>nRF7001 - Single-band (2.4 GHz), Wi-Fi 6, TX/RX</li><li>nRF7000 - Dual-band, RX only</li></ul><p>For situations where you are implementing Wi-Fi based geolocation and have an alternate backhaul (cellular with our nRF9161, for example), the nRF7000 is an excellent choice. </p><p>Let&apos;s investigate the basics of Wi-Fi scanning in nRF Connect SDK using an nRF52840 and the nRF7002-EK! Since the nRF7000 has a subset of the nRF7002&apos;s feature set, we can simply use a board overlay with the nRF7002-EK to emulate the nRF7000&apos;s scan-only feature.</p><p>To begin, gather your nRF52840-DK, nRF7002-EK, and PPK-2.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/IMG_9385.jpg" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="2000" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/IMG_9385.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2024/03/IMG_9385.jpg 1000w, https://ohmbedded.com/content/images/size/w1600/2024/03/IMG_9385.jpg 1600w, https://ohmbedded.com/content/images/size/w2400/2024/03/IMG_9385.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>I would recommend cutting at least the VBAT solder bridge and adding a couple of pin headers for power characterization.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/IMG_9386.jpg" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="2000" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/IMG_9386.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2024/03/IMG_9386.jpg 1000w, https://ohmbedded.com/content/images/size/w1600/2024/03/IMG_9386.jpg 1600w, https://ohmbedded.com/content/images/size/w2400/2024/03/IMG_9386.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>Note: if using the PPK-2, be sure to set it to source meter.</p><p>Next, clone the Wi-Fi scan example from nRF Connect SDK:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/image.png" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="609" height="485" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/image.png 600w, https://ohmbedded.com/content/images/2024/03/image.png 609w"></figure><p>Next, add a build configuration for the nRF52840:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/image-1.png" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="1470" height="990" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/image-1.png 600w, https://ohmbedded.com/content/images/size/w1000/2024/03/image-1.png 1000w, https://ohmbedded.com/content/images/2024/03/image-1.png 1470w" sizes="(min-width: 720px) 720px"></figure><p>We will add the &quot;nrf7002ek_nrf7000&quot; shield to the build. Within &quot;Extra CMake arguments&quot; add:</p><pre><code>-DSHIELD=nrf7002ek_nrf7000</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/image-2.png" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="535" height="815"></figure><p>Your build configuration should look just like this.</p><p>After flashing, enable power output in &quot;Ampere meter&quot; mode:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/image-3.png" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="959" height="1053" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/image-3.png 600w, https://ohmbedded.com/content/images/2024/03/image-3.png 959w" sizes="(min-width: 720px) 720px"></figure><p>And here are the results:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2024/03/image-5.png" class="kg-image" alt="nRF7000 - Wi-Fi Scan w/ the 7002-EK + nRF58240" loading="lazy" width="1453" height="346" srcset="https://ohmbedded.com/content/images/size/w600/2024/03/image-5.png 600w, https://ohmbedded.com/content/images/size/w1000/2024/03/image-5.png 1000w, https://ohmbedded.com/content/images/2024/03/image-5.png 1453w" sizes="(min-width: 720px) 720px"></figure><p>Congrats! This data can then be fed into nRF Cloud for geolocationing. </p>]]></content:encoded></item><item><title><![CDATA[zperf - Evaluating the nRF7002's Wi-Fi Performance in YOUR RF Environment]]></title><description><![CDATA[<p><a href="https://docs.zephyrproject.org/latest/connectivity/networking/api/zperf.html?ref=ohmbedded.com">zperf</a> is a Zephyr <a href="https://docs.zephyrproject.org/latest/services/shell/index.html?ref=ohmbedded.com">shell</a> utility modeled after and used in conjunction with the Linux <a href="https://en.wikipedia.org/wiki/Iperf?ref=ohmbedded.com">iperf</a> command line tool. If you haven&apos;t used the shell module in Zephyr before, be sure to check out Golioth&apos;s guide on using and customizing it:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.golioth.io/how-to-add-custom-shell-commands-in-zephyr/?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to add custom shell</div></div></a></figure>]]></description><link>https://ohmbedded.com/zperf-nrf7002/</link><guid isPermaLink="false">651c5a198a34393549442dfd</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Tue, 03 Oct 2023 19:54:28 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/10/_b40ec09e-438a-4ddc-bb5c-be733cec59c4.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/10/_b40ec09e-438a-4ddc-bb5c-be733cec59c4.jpeg" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment"><p><a href="https://docs.zephyrproject.org/latest/connectivity/networking/api/zperf.html?ref=ohmbedded.com">zperf</a> is a Zephyr <a href="https://docs.zephyrproject.org/latest/services/shell/index.html?ref=ohmbedded.com">shell</a> utility modeled after and used in conjunction with the Linux <a href="https://en.wikipedia.org/wiki/Iperf?ref=ohmbedded.com">iperf</a> command line tool. If you haven&apos;t used the shell module in Zephyr before, be sure to check out Golioth&apos;s guide on using and customizing it:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.golioth.io/how-to-add-custom-shell-commands-in-zephyr/?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to add custom shell commands in Zephyr - Golioth</div><div class="kg-bookmark-description">Adding custom shell commands in Zephyr is a great way to interact with your device, from setting values to making custom data readouts.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.golioth.io/wp-content/uploads/2023/09/Golioth_Symbol_Coral_RGB-1-80x80.png" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment"><span class="kg-bookmark-author">Golioth</span><span class="kg-bookmark-publisher">Mike Szczys</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.golioth.io/wp-content/uploads/2022/06/zephyr-custom-shell-commands.jpg" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment"></div></a></figure><p>To get started, ensure you have the latest nRF Connect SDK installed. Let&apos;s start by cloning the Wi-Fi shell example:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="522" height="124"></figure><p>Once it has been cloned, create a new build configuration for the 7002DK:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-4.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="417" height="92"></figure><p>Be sure to build the version <strong>without</strong> the _ns extension.</p><p>To make sure zperf is enabled as a console command, click the &quot;Add fragment&quot; button and select the &quot;overlay-zperf.conf&quot; file:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-2.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="433" height="182"></figure><p>Now build your configuration and program your 7002DK:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-3.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="573" height="212"></figure><p>Using your terminal emulator of choice, select the second enumerated serial port. For me, this was /dev/ttyACM1.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-5.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="558" height="133"></figure><p> Let&apos;s connect to our local Wi-Fi network and run some zperf commands!</p><p>Conduct a Wi-Fi scan with the following command:</p><pre><code>$ wifi connect &lt;YOUR_SSID&gt; &lt;YOUR_PASSWORD&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-6.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="957" height="576" srcset="https://ohmbedded.com/content/images/size/w600/2023/10/image-6.png 600w, https://ohmbedded.com/content/images/2023/10/image-6.png 957w" sizes="(min-width: 720px) 720px"></figure><p>After waiting for a few seconds, you should see the IP assigned to your device with DHCP. Be sure to take note of this address!</p><p>Now that we are connected, ensure that you have iperf installed by running:</p><pre><code>$ iperf -v</code></pre><p>If you don&apos;t have it installed it should be available on most package managers. For Ubuntu:</p><pre><code>$ sudo apt install iperf</code></pre><p>Let&apos;s test the upload speed of the nRF7002 by setting up iperf to run as a UDP server. Run the following command on the host machine to determine your IP:</p><pre><code>$ ip addr</code></pre><p>You should see output similar to this:<br></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-7.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="948" height="280" srcset="https://ohmbedded.com/content/images/size/w600/2023/10/image-7.png 600w, https://ohmbedded.com/content/images/2023/10/image-7.png 948w" sizes="(min-width: 720px) 720px"></figure><p>My local IP for my computer happens to be 192.168.0.130. Let&apos;s use that to set up our iperf server:</p><pre><code>$ iperf -s -l 1K -u -B &lt;YOUR_IP&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-8.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="551" height="89"></figure><p>Here we go! It is waiting for communication from our device. Run the following through the Zephyr shell:</p><pre><code>$ zperf udp upload &lt;YOUR_IP&gt; 5001 &lt;DURATION_SEC&gt; &lt;PACKET_SIZE&gt; &lt;BPS&gt;
$ zperf udp upload 192.168.0.130 5001 10 1K 10M</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-9.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="1721" height="384" srcset="https://ohmbedded.com/content/images/size/w600/2023/10/image-9.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/10/image-9.png 1000w, https://ohmbedded.com/content/images/size/w1600/2023/10/image-9.png 1600w, https://ohmbedded.com/content/images/2023/10/image-9.png 1721w" sizes="(min-width: 720px) 720px"></figure><p>If you&apos;d prefer a longer sample, you can always change &quot;10&quot; to something larger like &quot;60.&quot; You can also change the target transmit speed. Let&apos;s try something like:</p><pre><code>$ zperf udp upload 192.168.0.130 5001 60 1K 80M</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-10.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="402" height="199"></figure><p>You can squeeze some performance out of the 7002 if you&apos;re able to keep up with it! The rate on the server side will often differ and be lower than on the device side:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-11.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="756" height="176" srcset="https://ohmbedded.com/content/images/size/w600/2023/10/image-11.png 600w, https://ohmbedded.com/content/images/2023/10/image-11.png 756w" sizes="(min-width: 720px) 720px"></figure><p>Still, ~24Mbps is 3 MB over the air. If the above packet loss is too high for your application, a more reasonable target data rate is somewhere between 10-15Mbps.</p><p>Let&apos;s see how quickly we can download from the network with the 7002. Use the following commands:</p><pre><code>$ zperf udp download 5001</code></pre><p>On the host side:</p><pre><code>$ iperf -l 1K -u -c &lt;DEVICE_IP&gt; -b &lt;BPS&gt;</code></pre><p>I see a typical download maximum of ~9Mbps.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/10/image-12.png" class="kg-image" alt="zperf - Evaluating the nRF7002&apos;s Wi-Fi Performance in YOUR RF Environment" loading="lazy" width="392" height="173"></figure><p>You can run the commands above for TCP as well as UDP. The extra overhead of TCP will show slightly lower throughput. I&apos;ve compiled a reference list of commands for iperf and zperf that you can refer to below:</p><!--kg-card-begin: markdown--><h1 id="iperf-commands">iperf commands</h1>
<ul>
<li>UDP server</li>
</ul>
<pre><code>$ iperf -s -l 1K -u -B &lt;SERVER_IPV4_ADDR&gt;
</code></pre>
<ul>
<li>TCP server</li>
</ul>
<pre><code>$ iperf -s -l 1K -B &lt;SERVER_IPV4_ADDR&gt;
</code></pre>
<ul>
<li>UDP client</li>
</ul>
<pre><code>$ iperf -l 1K -u -c &lt;DEVICE_IPV4_ADDR&gt; -b &lt;TARGET_OUTPUT_BPS&gt;
</code></pre>
<ul>
<li>TCP client</li>
</ul>
<pre><code>$ iperf -l 1K -c &lt;DEVICE_IPV4_ADDR&gt; -b &lt;TARGET_OUTPUT_BPS&gt;
</code></pre>
<h1 id="wi-fi-commands">Wi-Fi commands</h1>
<ul>
<li>Wi-Fi scan</li>
</ul>
<pre><code>$ wifi scan
</code></pre>
<ul>
<li>Wi-Fi connect</li>
</ul>
<pre><code>$ wifi connect &lt;SSID&gt; &lt;PASS_KEY&gt;
</code></pre>
<h1 id="zperf-commands">zperf commands</h1>
<ul>
<li>UDP server</li>
</ul>
<pre><code>$ zperf udp upload &lt;SERVER_IPV4_ADDR&gt; &lt;PORT&gt; &lt;DURATION&gt; &lt;PACKET_SIZE&gt; &lt;OUTPUT_BPS&gt;
</code></pre>
<ul>
<li>TCP server</li>
</ul>
<pre><code>$ zperf tcp upload &lt;SERVER_IPV4_ADDR&gt; &lt;PORT&gt; &lt;DURATION&gt; &lt;PACKET_SIZE&gt; &lt;OUTPUT_BPS&gt;
</code></pre>
<ul>
<li>UDP client</li>
</ul>
<pre><code>$ zperf udp download &lt;PORT&gt;
</code></pre>
<ul>
<li>TCP client</li>
</ul>
<pre><code>$ zperf tcp download &lt;PORT&gt;
</code></pre>
<!--kg-card-end: markdown--><p>Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM]]></title><description><![CDATA[<p>Electronics design is supposed to be hard, isn&apos;t it? No longer.</p><p>Let&apos;s create a 40% PCB as fast as we can with nothing more than KiCAD, <a href="http://keyboard-layout-editor.com/?ref=ohmbedded.com">Keyboard Layout Editor</a>, and a few scripts.</p><p>Let&apos;s create a fun KLE...</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/08/2023-08-22_17-14.png" class="kg-image" alt loading="lazy" width="563" height="242"><figcaption>Maybe more useful as a macro</figcaption></figure>]]></description><link>https://ohmbedded.com/keeb-speedrun/</link><guid isPermaLink="false">64e522e48a34393549442d53</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Wed, 23 Aug 2023 01:45:20 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/08/Untitled-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/08/Untitled-1.png" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"><p>Electronics design is supposed to be hard, isn&apos;t it? No longer.</p><p>Let&apos;s create a 40% PCB as fast as we can with nothing more than KiCAD, <a href="http://keyboard-layout-editor.com/?ref=ohmbedded.com">Keyboard Layout Editor</a>, and a few scripts.</p><p>Let&apos;s create a fun KLE...</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/08/2023-08-22_17-14.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="563" height="242"><figcaption>Maybe more useful as a macro pad?</figcaption></figure><p>Download it to a safe place. You&apos;ll need it.</p><p>Start by cloning the following repo. I created it! If you run into issues, please open one!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/LordsBoards/PyKLE-Schematic?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - LordsBoards/PyKLE-Schematic: This ingests a kle.json and spits out a schematic with proper symbols and footprints.</div><div class="kg-bookmark-description">This ingests a kle.json and spits out a schematic with proper symbols and footprints. - GitHub - LordsBoards/PyKLE-Schematic: This ingests a kle.json and spits out a schematic with proper symbols a&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">LordsBoards</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/73fe89d161ed40f2646cea97aa0107957f9371ede40ab3d788f029a4691ddef9/LordsBoards/PyKLE-Schematic" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"></div></a></figure><p>Follow the instructions in the repo above to generate your schematic with all switches and diodes connected and labelled correctly. It may take a minute to run.</p><p>Copy the generated &quot;generated_schematic.kicad_sch&quot; to a fresh and clean new KiCAD project.</p><p>Add a hierarchical sheet:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-2.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="250" height="293"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-3.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1040" height="463" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-3.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-3.png 1000w, https://ohmbedded.com/content/images/2023/08/image-3.png 1040w" sizes="(min-width: 720px) 720px"></figure><p>And select your sheetfile + name it something memorable.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-4.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="567" height="460"></figure><p>Now let&apos;s quickly add a microcontroller, regulator, and USB-C port. Go go go!!!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-5.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="697" height="487" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-5.png 600w, https://ohmbedded.com/content/images/2023/08/image-5.png 697w"></figure><p>Add a USB-C port with the correct 5.1k pull down resistors. Include a series PTC fuse, ferrite bead, and ESD protection with the USBLC6-2SC6.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-6.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="290" height="223"></figure><p>Add a regulator for the input USB power to step it down to 3.3V.</p><p>For this PCB, we&apos;re using the STM32L443CCU. This is a very easy chip to create a keyboard for as it requires few decoupling capacitors, has a USB bootloader, and requires no external crystal or termination resistors for USB. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-7.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="975" height="839" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-7.png 600w, https://ohmbedded.com/content/images/2023/08/image-7.png 975w" sizes="(min-width: 720px) 720px"></figure><p>This is really it! All you need for an ARM microcontroller with 256k of flash, USB, and QMK/Vial support!</p><p>A few more niceties are in order. I&apos;m adding a 6 pin tag connect port for SWD programming.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-8.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="818" height="738" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-8.png 600w, https://ohmbedded.com/content/images/2023/08/image-8.png 818w" sizes="(min-width: 720px) 720px"></figure><p>Now go through and assign your footprints. The switch footprints were automatically assigned but things like diodes, push button switches for reset, and capacitors will need to be set.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-9.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="831" height="798" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-9.png 600w, https://ohmbedded.com/content/images/2023/08/image-9.png 831w" sizes="(min-width: 720px) 720px"></figure><p>In your matrix schematic, connect the rows and columns and add global labels per row/column like so:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-12.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1204" height="575" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-12.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-12.png 1000w, https://ohmbedded.com/content/images/2023/08/image-12.png 1204w" sizes="(min-width: 720px) 720px"></figure><p>Next, install the following plugin from Zykrah:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/zykrah/kicad-kle-placer?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - zykrah/kicad-kle-placer: KiCAD plugin to help place switch footprints based on a KLE</div><div class="kg-bookmark-description">KiCAD plugin to help place switch footprints based on a KLE - GitHub - zykrah/kicad-kle-placer: KiCAD plugin to help place switch footprints based on a KLE</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">zykrah</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/e20c4a20fc740c08842c27cdc46a4b3c91a62948b75b574ac9276fdea3ea0b24/zykrah/kicad-kle-placer" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"></div></a></figure><p>Once you have it installed, add your keyboard-layout.json and change the key annotation and stab annotations to match my script (MX &amp; STAB).</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-10.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="769" height="400" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-10.png 600w, https://ohmbedded.com/content/images/2023/08/image-10.png 769w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-11.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1060" height="454" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-11.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-11.png 1000w, https://ohmbedded.com/content/images/2023/08/image-11.png 1060w" sizes="(min-width: 720px) 720px"></figure><p>Your layout is ready! I&apos;m going to flip the bottom stab and get to work routing my microcontroller:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-13.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1194" height="526" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-13.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-13.png 1000w, https://ohmbedded.com/content/images/2023/08/image-13.png 1194w" sizes="(min-width: 720px) 720px"></figure><p>A few notes--I flipped the two switches up top to allow the USB port to sit correctly. I would recommend using a 4 layer board for all boards since they&apos;re so cheap from JLC. Keep traces out of your two inner layers and fill one with GND and one with VCC (3.3V in this case).</p><p>Here is the board, ready to be routed:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-14.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1215" height="653" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-14.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-14.png 1000w, https://ohmbedded.com/content/images/2023/08/image-14.png 1215w" sizes="(min-width: 720px) 720px"></figure><p>Once you have completed routing, generate your files with JLC. You may have to pre-order this ST part. Here&apos;s the complete board! Check the GitHub repo below for the full schematic, PCB, and production files.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/08/image-15.png" class="kg-image" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM" loading="lazy" width="1447" height="636" srcset="https://ohmbedded.com/content/images/size/w600/2023/08/image-15.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/08/image-15.png 1000w, https://ohmbedded.com/content/images/2023/08/image-15.png 1447w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/LordsBoards/KeyboardSpeedrun?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - LordsBoards/KeyboardSpeedrun: Keyboard Speedrun Repo</div><div class="kg-bookmark-description">Keyboard Speedrun Repo. Contribute to LordsBoards/KeyboardSpeedrun development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">LordsBoards</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/b61f5d3b7d391306767293f54d016ff116c0eed87fdb910880bf7c21d32a451a/LordsBoards/KeyboardSpeedrun" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"></div></a></figure><p>Thanks for reading. Check out my Discord below!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 11 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Speedrunning Keyboard PCB Design or: How I Learned to Stop Worrying and Love the STM"><span class="kg-bookmark-author">Discord</span></div></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 6 - On-Board MCU - Schematic Capture]]></title><description><![CDATA[<p>Now that we&apos;ve integrated <em>somebody else&apos;s </em>microcontroller board into a keyboard PCB, we should take a moment to learn about integrating microcontrollers directly into our keyboard PCBs. </p><p>Let&apos;s walk through the important steps of schematic capture before doing board layout!</p><p>The microcontroller I use</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-6-on-board-mcu-schematic-capture/</link><guid isPermaLink="false">64e3b3967aceca19e11c1e53</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Sun, 25 Jun 2023 23:58:47 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/06/Screenshot-2023-06-25-191324.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/06/Screenshot-2023-06-25-191324.png" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"><p>Now that we&apos;ve integrated <em>somebody else&apos;s </em>microcontroller board into a keyboard PCB, we should take a moment to learn about integrating microcontrollers directly into our keyboard PCBs. </p><p>Let&apos;s walk through the important steps of schematic capture before doing board layout!</p><p>The microcontroller I use for most of my PCBs is the <a href="https://www.raspberrypi.com/products/rp2040/?ref=ohmbedded.com">RP2040</a> from the Raspberry Pi foundation. The highlights are:</p><ul><li>Dual-core Arm Cortex-M0+ processor, flexible clock running up to 133 MHz</li><li>264kB on-chip SRAM</li><li>2 &#xD7; UART, 2 &#xD7; SPI controllers, 2 &#xD7; I2C controllers, 16 &#xD7; PWM channels</li><li>1 &#xD7; USB 1.1 controller and PHY, with host and device support</li><li>8 &#xD7; Programmable I/O (PIO) state machines for custom peripheral support</li><li><strong>QMK/Via/Vial support</strong></li><li><strong>External SPI flash required</strong></li></ul><p>This microcontroller has excellent community support and is relatively easy to integrate into a PCB. As compared to industry focused microcontrollers like ST&apos;s offerings (i.e. STM32F411&apos;s used in PCBs) the RP2040 requires a couple of extra components to function. As always, check the <a href="https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf?ref=ohmbedded.com">datasheet!</a></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-4.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="516" height="676"></figure><p>This is the heart of the keyboard! I use &quot;Shift+L&quot; to create node labels that make the schematic easier to read. Some critical things to note are:</p><ul><li>The RP2040 has an integrated 3.3V-&gt;1.1V regulator for internal use. </li><li>The TESTEN pin must be shorted to ground.</li><li>The RUN_ node should be connected to a button to allow restarting the board.</li></ul><p>The RP2040 has a built in USB bootloader (which is not typical for most microcontrollers) that enables easy programming. If you need to do mass programming, you might prefer to expose the &quot;SWCLK,&quot; &quot;SWD,&quot; and &quot;3.3V&quot; pins.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-5.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="706" height="390" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-5.png 600w, https://ohmbedded.com/content/images/2023/06/image-5.png 706w"></figure><p>The RP2040 requires a number of decoupling capacitors for proper functioning. <a href="https://ohmbedded.com/quick-tip-decoupling-capacitors/">Check the last post on decoupling capacitors for more info!</a> One 100nF cap is used per VDD input pin (as specified in the datasheet) and a bulk 1uF cap is used per voltage regulator. </p><p>Power is supplied to the microcontroller through USB. However, USB&apos;s nominal voltage (for our purposes!) is 5V. The AP2127N3-1.2 is an extremely common 3.3V fixed regulator that has, probably, a million clones available. This will take in our 5V and spit out 3.3V for the RP2040&apos;s regulators. Other things to note in this section are the USBLC6 ESD protection IC which protects the data and power lines of your USB port. A 1A PTC resettable fuse is included as well as a 100 Ohm @ 100 MHz ferrite bead. There is a <em><strong>lot</strong></em> of woo surrounding ferrite beads. I haven&apos;t done near field testing of any keyboard PCB but it is cheap to include a ferrite bead and can solve EMI issues. For more information check out StackExchange post:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://electronics.stackexchange.com/questions/521313/question-on-emi-filtering?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Question on EMI filtering</div><div class="kg-bookmark-description">I have seen people using ferrite beads to suppress EMI from switching power supplies.Recently, I came across the following blog post where the author successfully re-models a switching power suppl&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.sstatic.net/Sites/electronics/Img/apple-touch-icon.png?v=8ab405a669c4" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"><span class="kg-bookmark-author">Electrical Engineering Stack Exchange</span><span class="kg-bookmark-publisher">User</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.sstatic.net/Sites/electronics/Img/apple-touch-icon@2.png?v=7b89fddaa66b" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"></div></a></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-9.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="454" height="393"></figure><p>Next let&apos;s check out our PCB connectors. The USB-C port used has a few pins you may not be familiar with if you have previously used Micro-B USB ports. The CC1/CC2 pins are used for orientation detection. Only one pin is connected to the cable that is inserted. The 5.1k resistors &quot;communicate&quot; with the USB host that the peripheral is requesting a maximum of 500mA. The CC lines are used for USB power delivery. Thankfully, even the most severely gamerfied RGB keyboards should use less than 500mA. Your mileage may vary if you include a solenoid or 600 NeoPixels.</p><p>The other connector is a JST connector to be used with a <a href="https://unified-daughterboard.github.io/?ref=ohmbedded.com#/">Unified Daughter Board</a>. This is for the JST variant (which shares cable specs with STEMMA Qt and Qwiic connectors). </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-10.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="970" height="728" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-10.png 600w, https://ohmbedded.com/content/images/2023/06/image-10.png 970w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-12.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="454" height="281"></figure><p> Next is the crystal. The RP2040, when it starts up, creates a clock signal using an internal oscillator (probably using an RC circuit). This is a clock signal that is too inaccurate for USB&apos;s strict timing tolerance! The RP2040 then starts driving its crystal which provides superior timing precision and allows USB to work well without a hitch. Quartz crystals require load capacitors. C1 = C2, C1 = 2*CL - 4pF should give you values in the ball park. CL is a value given by a crytal&apos;s datasheet.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-13.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="706" height="287" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-13.png 600w, https://ohmbedded.com/content/images/2023/06/image-13.png 706w"></figure><p>Next, here are the connections to the RP2040&apos;s external flash. A button is placed on the chip-select pin of the flash. When this button is held down, it forces the RP2040 to run it&apos;s ROM bootloader instead of the SPI flash&apos;s program code. This allows you to reprogram the device! The other button simply resets the RP2040.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-14.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="455" height="248"></figure><p>An indicator LED is provided as an example for a caps lock indicator. For more information on choosing an LED resistor value, <a href="https://ohmbedded.com/quick-tip-calculating-led-resistor-values/">check this post.</a> The LED_INDICATOR net label should be applied to a GPIO pin of the microcontroller. In this configuration, the microcontroller <em>will </em>sink a significant amount of current (~5mA). </p><p><strong><em>Do not exceed the rated current sink of the microcontroller! It will never be more than 20mA. If you need an array of LEDs consider using a dedicated LED driver or individual transistors.</em></strong></p><p>Finally, there is the switch matrix.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-16.png" class="kg-image" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture" loading="lazy" width="850" height="572" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-16.png 600w, https://ohmbedded.com/content/images/2023/06/image-16.png 850w" sizes="(min-width: 720px) 720px"></figure><p>Each switch requires a diode. The microcontroller alternates what rows/columns are scanned--the diodes prevent &quot;ghosting&quot; and allow n-key rollover. This is just a small example, your matrix will likely have between 10-15 columns and 3-6 rows. Matrices are used in order to allow a microcontroller with relatively few pins (30 for the RP2040) to address many switches.</p><p>You can download this RP2040 template project here:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/hlord2000/Ohmbedded-RP2040-PCB-Template?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - hlord2000/Ohmbedded-RP2040-PCB-Template: An RP2040-based keyboard PCB KiCAD Template Project</div><div class="kg-bookmark-description">An RP2040-based keyboard PCB KiCAD Template Project - GitHub - hlord2000/Ohmbedded-RP2040-PCB-Template: An RP2040-based keyboard PCB KiCAD Template Project</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">hlord2000</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/2222aeda5265ee2a8667630d6afeec58e325b4272479bcf90f06c954f5bdfeba/hlord2000/Ohmbedded-RP2040-PCB-Template" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"></div></a></figure><p>Thanks for reading!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 5 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Keyboard Design Part 6 - On-Board MCU - Schematic Capture"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Quick tip: Decoupling Capacitors]]></title><description><![CDATA[<p>Decoupling capacitors are a critical component for circuits that switch at a high speed. Electricity has a limited speed of propagation and, when a large transient current draw is placed on a power supply (as in a bunch of transistors changing state when you print &quot;Hello, world!&quot;), voltage</p>]]></description><link>https://ohmbedded.com/quick-tip-decoupling-capacitors-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f26</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Fri, 23 Jun 2023 16:36:56 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/cap.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/cap.png" alt="Quick tip: Decoupling Capacitors"><p>Decoupling capacitors are a critical component for circuits that switch at a high speed. Electricity has a limited speed of propagation and, when a large transient current draw is placed on a power supply (as in a bunch of transistors changing state when you print &quot;Hello, world!&quot;), voltage within a microcontroller can drop before adequate current can be supplied. </p><p>There are two ways of considering how a capacitor works--in the time domain and in the frequency domain. Let&apos;s look at the time domain model first.</p><p>\[ I = C \frac{dV}{dt} \]</p><p>Where I is current (charge per second), C is capacitance, V is voltage, and t is time. This implies that any change in voltage will necessarily &quot;push&quot; or &quot;pull&quot; current out of or into a capacitor. Let&apos;s visualize this with the <a href="https://falstad.com/circuit/?ref=ohmbedded.com">Falstad Circuit Simulator</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/06/image.png" class="kg-image" alt="Quick tip: Decoupling Capacitors" loading="lazy" width="645" height="525" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image.png 600w, https://ohmbedded.com/content/images/2023/06/image.png 645w"><figcaption>RLC Circuit, shown by default in Falstad</figcaption></figure><p>This RLC (resistor, inductor, capacitor) oscillator swings up and down +/-10V. The capacitor here works with the inductor to boost the voltage from ~.3V to 10V. The capacitor sources and sinks current as the oscillations continue--in a sense it is acting as a very <em>very</em> tiny battery. </p><p>How does this relate to a circuit using a microcontroller? When a particularly strenuous bit of calculation happens, a ton of gates on the microcontroller change state all at once. <a href="https://en.wikipedia.org/wiki/MOSFET?ref=ohmbedded.com">MOSFET</a>, the technology used in modern microcontrollers, is used because of its miniscule on current. The switching part of the MOSFET (the gate) simply needs to be charged or discharged. Some discrete MOSFETs have ~18nC gate charge. Microcontroller MOSFETs will be even lower. Not a lot per device but it quickly scales with many thousands of transistors on even simple microcontrollers. Let&apos;s take a look at what that might look like in Falstad.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-1.png" class="kg-image" alt="Quick tip: Decoupling Capacitors" loading="lazy" width="642" height="522" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-1.png 600w, https://ohmbedded.com/content/images/2023/06/image-1.png 642w"></figure><p> For this toy example, it can be seen that as soon as the transistor is closed a large amount of current is sourced. This causes the voltage to dip close to zero. This effect is greatly exaggerated for demonstration. In reality, the dip in voltage will be significantly shorter and smaller in magnitude.</p><p> These variations are important! If a power supply is too noisy, the &quot;high&quot; voltage level of a transistor may not be properly supplied. This may cause the transistor to fall below the threshold of a logic high level and cause a myriad of errors in the microcontroller.</p><p>Let&apos;s simulate a slightly different scenario with a decoupling capacitor!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-2.png" class="kg-image" alt="Quick tip: Decoupling Capacitors" loading="lazy" width="638" height="519" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-2.png 600w, https://ohmbedded.com/content/images/2023/06/image-2.png 638w"></figure><p>You can see as the transistor is switched on and off that the voltage rail becomes quite noisy! +/- 1V around the &quot;logic level&quot; of 5V. Let&apos;s add in a decoupling capacitor to source and sink current near the transistor.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/06/image-3.png" class="kg-image" alt="Quick tip: Decoupling Capacitors" loading="lazy" width="638" height="518" srcset="https://ohmbedded.com/content/images/size/w600/2023/06/image-3.png 600w, https://ohmbedded.com/content/images/2023/06/image-3.png 638w"></figure><p>Now the voltage ripple is reduced to almost nothing. Thanks decoupling cap.</p><p>Another way to consider capacitors is in the &quot;frequency domain.&quot; Let&apos;s apply a Laplace transform to the above equation describing a capacitor.</p><p>\[ I = C \frac{dV}{dt} \]</p><p>\[ \mathscr{L} \{ \frac{dV}{dt} \} = sV(s) -V(0) \]</p><p>Let&apos;s neglect V(0) and assume that it is 0.</p><p>\[ I(s) = CsV(s) \]</p><p>\[ Z(s) = \frac{V(s)}{I(s)} \]</p><p>Substituting the expressions for V(s) and I(s) we derived earlier and canceling out the I(s) terms:</p><p>\[ Z(s) = \frac{1}{Cs} \]</p><p>Since s represents the complex frequency, we can replace it with j&#x3C9;, where j is the imaginary unit and &#x3C9; is the angular frequency. This gives us:</p><p>\[ Z(j&#x3C9;) = \frac{1}{j&#x3C9;C} \]</p><p>Where &#x3C9; is the angular frequency in radians per second, j is the imaginary unit, and Z is the complex impedance or resistance at a certain frequency.</p><p>What does this all mean? Let&apos;s take the limiting case where the frequency, &#x3C9;, is infinite. This would mean that Z approaches zero. It becomes a short. Conversely, let&apos;s take the limiting case where the frequency approaches zero. It becomes infinite in impedance. In a decoupling circuit, the capacitor sits across the power rail to ground. Any noise in the circuit sees the capacitor as a very low resistance path to ground! This prevents noise from propagating to the rest of the circuit (i.e. the microcontroller) and ensures that the logic voltage for every transistor is always well defined.</p><p>There are a few more rules of thumb about decoupling capacitors. Here&apos;s a quick list:</p><ol><li>Place the decoupling capacitor as close to the microcontroller power supply pins as is practical. It may not make a difference for low performance systems but it is a best practice.</li><li>All capacitors should have a via to ground as close to them as possible. Always always always!</li><li>The rule of thumb is one decoupling capacitor of 0.1u-1u per power supply pin. If you&apos;re working with a small QFN, absolutely do this. If you&apos;re working with a 1000 ball FPGA, include bulk decoupling and evaluate your performance later.</li><li>Tantalum capacitors are polarized! If you put it in backwards it will explode. </li><li>Manufacturer datasheets are the way, the truth, and the light. They are also written by sophomore undergrad interns. Keep both in mind! </li></ol><p>I leave you with an excellent presentation by David Jones of <a href="https://www.youtube.com/eevblog?ref=ohmbedded.com">EEvblog</a>.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/P8MpZGjwgR0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="EEVblog #1081 - Are Bypass Capacitors REALLY needed?"></iframe></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 5 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Quick tip: Decoupling Capacitors"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Quick tip: Decoupling Capacitors"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 5 - Plate Design]]></title><description><![CDATA[<p>Remember the Keyboard Layout Editor .json file we saved earlier? Turns out that we can use it to generate a plate file! Let&apos;s make a simple stand-off based plate for our macropad. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-160.png" class="kg-image" alt loading="lazy" width="1384" height="556" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-160.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-160.png 1000w, https://ohmbedded.com/content/images/2023/03/image-160.png 1384w" sizes="(min-width: 720px) 720px"></figure><p>To get started, navigate to the <a href="https://kbplate.ai03.com/?ref=ohmbedded.com">ai03 Plate Generator site.</a></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-161.png" class="kg-image" alt loading="lazy" width="1319" height="255" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-161.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-161.png 1000w, https://ohmbedded.com/content/images/2023/03/image-161.png 1319w" sizes="(min-width: 720px) 720px"></figure><p><br>Paste your KLE file into the</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-5-plate-design-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f25</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Thu, 30 Mar 2023 01:43:57 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/image-173-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/image-173-1.png" alt="Keyboard Design Part 5 - Plate Design"><p>Remember the Keyboard Layout Editor .json file we saved earlier? Turns out that we can use it to generate a plate file! Let&apos;s make a simple stand-off based plate for our macropad. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-160.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1384" height="556" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-160.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-160.png 1000w, https://ohmbedded.com/content/images/2023/03/image-160.png 1384w" sizes="(min-width: 720px) 720px"></figure><p>To get started, navigate to the <a href="https://kbplate.ai03.com/?ref=ohmbedded.com">ai03 Plate Generator site.</a></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-161.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1319" height="255" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-161.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-161.png 1000w, https://ohmbedded.com/content/images/2023/03/image-161.png 1319w" sizes="(min-width: 720px) 720px"></figure><p><br>Paste your KLE file into the text box. If you don&apos;t have one, check out <a href="https://ohmbedded.com/keyboard-design-part-3-kle-and-schematic/">Keyboard Design Part 3.</a></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-162.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1060" height="799" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-162.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-162.png 1000w, https://ohmbedded.com/content/images/2023/03/image-162.png 1060w" sizes="(min-width: 720px) 720px"></figure><p>The following plate file will be generated for you. If you are using a different variety of switch, change it from Cherry MX to whatever you have chosen for your PCB.</p><h2 id="caveat-watch-out-for-the-orientation-of-your-stabilizers">Caveat: watch out for the orientation of your stabilizers! </h2><p>If you have a stabilizer oriented on your PCB like this (south-facing) you should use the following stabilizer cutout and footprint combination:<br></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-163.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="336" height="280"></figure><p><strong> </strong>If your footprint is flipped, i.e.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-164.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1214" height="488" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-164.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-164.png 1000w, https://ohmbedded.com/content/images/2023/03/image-164.png 1214w" sizes="(min-width: 720px) 720px"></figure><p>Then simply flip your stabilizer cutout by adding &quot;_rs:180&quot; to the spacebar&apos;s footprint in the keyboard layout description.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-165.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1072" height="230" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-165.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-165.png 1000w, https://ohmbedded.com/content/images/2023/03/image-165.png 1072w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-166.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="1057" height="405" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-166.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-166.png 1000w, https://ohmbedded.com/content/images/2023/03/image-166.png 1057w" sizes="(min-width: 720px) 720px"></figure><p>We will now download the &quot;.dxf&quot; file from ai03&apos;s plate generator. This can be used in CAD programs like SolidWorks or Fusion360 but can also be imported directly into KiCAD. We will use KiCAD to create a plate that can be manufactured by JLCPCB!<br></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-167.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="569" height="604"></figure><p>Create a new blank PCB file and click &quot;File &gt; Import &gt; Graphics...&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-168.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="387" height="438"></figure><p>Select and import your file. Be sure to change the &quot;Graphic layer&quot; setting to &quot;Edge.Cuts.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-169.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="660" height="351" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-169.png 600w, https://ohmbedded.com/content/images/2023/03/image-169.png 660w"></figure><p>Congrats! Now comes the gross mechanical design part of the process. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-170.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="670" height="647" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-170.png 600w, https://ohmbedded.com/content/images/2023/03/image-170.png 670w"></figure><p>Ungroup the items you just imported by clicking on the group, right clicking, and selecting &quot;Grouping &gt; Ungroup.&quot;</p><p>Adjust the outlines of your plate by creating a new rectangle. You will use this to add mechanical holes to place standoffs in, kind of like a <a href="https://cannonkeys.com/products/practicetkl-keyboard-kit?ref=ohmbedded.com">CannonKeys Practice series</a> board.</p><p>Typically, standoffs are M2.5 or M3. I use M2.5 most of the time. Let&apos;s add some mechanical standoff holes!</p><p>Press &quot;Shift+A&quot; to directly add footprints. Search for M2.5 and select whatever looks nice! I selected &quot;MountingHole_2.7mm_M2.5_DIN965_Pad&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-171.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="860" height="394" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-171.png 600w, https://ohmbedded.com/content/images/2023/03/image-171.png 860w" sizes="(min-width: 720px) 720px"></figure><p>Add a rectangle on the Edge.Cuts layer to outline these holes.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-172.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="763" height="406" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-172.png 600w, https://ohmbedded.com/content/images/2023/03/image-172.png 763w" sizes="(min-width: 720px) 720px"></figure><p>Got it! I would delete the silkscreen layer text so that it doesn&apos;t show up on the manufactured board.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-173.png" class="kg-image" alt="Keyboard Design Part 5 - Plate Design" loading="lazy" width="856" height="418" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-173.png 600w, https://ohmbedded.com/content/images/2023/03/image-173.png 856w" sizes="(min-width: 720px) 720px"></figure><p>Here ya are!</p><p>You can use JLCPCB tools to generate the gerber files for this and order it. It is a best practice to use this in conjunction with a CAD tool to confirm your design if implementing into a machined or 3D printed case.</p><p><a href="https://ohmbedded.com/keyboard-design-part-6-on-board-mcu-schematic-capture/">Click here for part 6!</a></p><p>Hope you enjoyed this post. Join our Discord if you have any questions!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 5 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 5 - Plate Design"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Keyboard Design Part 5 - Plate Design"></div></a></figure><p> </p>]]></content:encoded></item><item><title><![CDATA[Quick tip: Rotary Encoders - Understanding Your Knob]]></title><description><![CDATA[<p>Rotary encoders are a reliable, switch-debounce-safe method of detecting (believe it or not) rotary motion. Rotary encoders (aka quadrature encoders) have a number of uses outside of making your keyboard look cool--they have historically been used as part of a closed-loop motor control system as the speed/direction input device.</p>]]></description><link>https://ohmbedded.com/quick-tip-understanding-rotary-enocder-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f24</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Wed, 29 Mar 2023 03:28:19 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/IMG-6991.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/IMG-6991.jpg" alt="Quick tip: Rotary Encoders - Understanding Your Knob"><p>Rotary encoders are a reliable, switch-debounce-safe method of detecting (believe it or not) rotary motion. Rotary encoders (aka quadrature encoders) have a number of uses outside of making your keyboard look cool--they have historically been used as part of a closed-loop motor control system as the speed/direction input device.</p><p>It is useful to look at Gray code first to understand the exact way that rotary encoders work.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/03/image-156.png" class="kg-image" alt="Quick tip: Rotary Encoders - Understanding Your Knob" loading="lazy" width="600" height="600" srcset="https://ohmbedded.com/content/images/2023/03/image-156.png 600w"><figcaption>Gray code disc used for a motor encoder.</figcaption></figure><p>Gray code is a clever numerical encoding system that ensures only one bit changes at a time between adjacent values, minimizing errors during rapid transitions. This is particularly useful in rotary encoders, as it reduces misreadings caused by simultaneous bit changes.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/03/image-157.png" class="kg-image" alt="Quick tip: Rotary Encoders - Understanding Your Knob" loading="lazy" width="784" height="429" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-157.png 600w, https://ohmbedded.com/content/images/2023/03/image-157.png 784w" sizes="(min-width: 720px) 720px"><figcaption>Rotary encoder schematic symbol</figcaption></figure><p>What does this look like practically for human input devices? Two separate contacts that generate two square waves 90&#xB0; out of phase. As the encoder is rotated, contact A and contact B are sequentially shorted to ground. Using internal pull-ups on a microcontroller, the following waveform is generated.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-158.png" class="kg-image" alt="Quick tip: Rotary Encoders - Understanding Your Knob" loading="lazy" width="818" height="540" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-158.png 600w, https://ohmbedded.com/content/images/2023/03/image-158.png 818w" sizes="(min-width: 720px) 720px"></figure><p>Each valid transition (Gray code count up!) can show you the direction of the step the rotary encoder has taken. How can you determine that direction and the validity of the transition in software? With a state machine!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-159.png" class="kg-image" alt="Quick tip: Rotary Encoders - Understanding Your Knob" loading="lazy" width="636" height="328" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-159.png 600w, https://ohmbedded.com/content/images/2023/03/image-159.png 636w"></figure><p>Keep state and register a transition interrupt on pins A and B. Since the two independent contacts of the encoder cannot influence each other with switch bounce, we can get very precise and responsive input from a rotary encoder on every detent. </p><p>Note: this isn&apos;t the only way to handle quadrature encoders. If you don&apos;t want to use interrupts for whatever reason you can simply poll them quite quickly. Some detents may get lost but overall implementation could be simpler.</p><p>Here is QMK&apos;s encoder implementation:<br><a href="https://github.com/qmk/qmk_firmware/blob/master/quantum/encoder.c?ref=ohmbedded.com">https://github.com/qmk/qmk_firmware/blob/master/quantum/encoder.c</a></p><p>Have questions or comments? Be sure to check out our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 5 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Quick tip: Rotary Encoders - Understanding Your Knob"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Quick tip: Rotary Encoders - Understanding Your Knob"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Building Your Embedded Lab - My Recommendations for Instruments, Tools]]></title><description><![CDATA[<p>Embedded engineers bridge the gap between hardware and software. That means we need tools beyond our editor, compiler, and debugger. Oscilloscopes, multimeters, logic analyzers, hardware debuggers, and on and on. Here are my recommendations for the tools you can use to make embedded development easier!</p><h2 id="note-all-amazon-links-in-this-post-give-me-a-kickback">Note: All Amazon links in</h2>]]></description><link>https://ohmbedded.com/building-your-embedded-lab-my-recommendations-for-instruments-tools-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f23</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Sun, 26 Mar 2023 16:09:19 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1562568068-ea24dcbf3c78?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fGVsZWN0cm9uaWNzJTIwbGFifGVufDB8fHx8MTY3OTg0MzYxMQ&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1562568068-ea24dcbf3c78?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fGVsZWN0cm9uaWNzJTIwbGFifGVufDB8fHx8MTY3OTg0MzYxMQ&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><p>Embedded engineers bridge the gap between hardware and software. That means we need tools beyond our editor, compiler, and debugger. Oscilloscopes, multimeters, logic analyzers, hardware debuggers, and on and on. Here are my recommendations for the tools you can use to make embedded development easier!</p><h2 id="note-all-amazon-links-in-this-post-give-me-a-kickback">Note: All Amazon links in this post give me a kickback! </h2><p> </p><h2 id="oscilloscope">Oscilloscope</h2><p>Start with the basics! Hopefully you aren&apos;t doing anything too strenuous with this oscilloscope. Outside of some power supply evaluation, your best friend <em>should</em> be your logic analyzer. So let&apos;s keep it simple. Use something like the following:</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/811dT41e3HL._SL1500_.jpg" width="1500" height="1001" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/811dT41e3HL._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/811dT41e3HL._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/811dT41e3HL._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Siglent Technologies SDS1202X-E 200 mhz</h4></div><div class="kg-product-card-description"><p>A 200 MHz 2-channel oscilloscope.</p></div><a href="https://amzn.to/3ZozGRH?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>This should cover most of your usecases. </p><h2 id="logic-analyzer">Logic Analyzer</h2><p>Saleae is the be-all, end-all of logic analyzers. There are cheaper clones that exist but the real power of this LA is in its software package and the ease with which custom plugins can be developed. Buy once cry once! There are a number of options within the Saleae family but for many users (with low speed communication buses) their lower tier devices are just fine.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71ZpyR8c3nL._SL1500_.jpg" width="1500" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71ZpyR8c3nL._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71ZpyR8c3nL._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71ZpyR8c3nL._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Saleae Logic 8</h4></div><div class="kg-product-card-description"><p>An 8-channel logic analyzer with killer software.</p></div><a href="https://amzn.to/3FTgR2r?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="multimeter">Multimeter</h2><p>An embedded engineer&apos;s multimeter is nowhere near as critical as an electrician&apos;s! I mostly use my multimeter for quick voltage measurements or, more often, to verify continuity of new PCBs. Anything will work--I personally use the <a href="https://www.youtube.com/eevblog?ref=ohmbedded.com">EEVblog</a> BM786 because it comes with excellent quality probes and supports Dave.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/8180kDUgsjL._AC_SL1500_.jpg" width="899" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/8180kDUgsjL._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/2023/03/8180kDUgsjL._AC_SL1500_.jpg 899w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">EEVblog BM786 Multimeter</h4></div><div class="kg-product-card-description"><p>A multimeter with great test leads.</p></div><a href="https://amzn.to/3FVW6TM?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="hardware-debugger">Hardware Debugger</h2><p>The Black Magic Debug Probe is a game changer for the beginner. printf()s can only get you so far after a while. Using a hardware debugger allows you to step through your program one line at a time (just like a regular, plebian software developer!). It presents a GDB server to the user, connects via USB-C, and supports pretty much every debugging protocol you could desire (including RTT or real-time transfer). I&apos;m a sucker for open source projects so be sure to purchase directly from 1BitSquared to continue supporting the Black Magic project!</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/bmp_v2_3b_iso_1024x1024.webp" width="1024" height="678" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/bmp_v2_3b_iso_1024x1024.webp 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/bmp_v2_3b_iso_1024x1024.webp 1000w, https://ohmbedded.com/content/images/2023/03/bmp_v2_3b_iso_1024x1024.webp 1024w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Black Magic Probe V2.3</h4></div><div class="kg-product-card-description"><p>Best debugger in its SEGment.</p></div><a href="https://1bitsquared.com/products/black-magic-probe?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="power-supply">Power Supply</h2><p>Unless you have very exacting requirements, DC power supplies should almost be treated as consumables. Grab the cheapest one you can with constant current so that you can more effectively smoke test boards.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/91RDB8r7wlL._SL1500_.jpg" width="1500" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/91RDB8r7wlL._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/91RDB8r7wlL._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/91RDB8r7wlL._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">DC Power Supply Variable, 30V 10A</h4></div><div class="kg-product-card-description"><p>Jellybean power supply.</p></div><a href="https://amzn.to/3TT39Cs?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="probesleads">Probes/Leads</h2><p>Just buy dozens of these. Truly consumable parts. I would recommend getting some with the little hooks and some with dupont connectors. </p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71VCxk-OHQL._SL1024_.jpg" width="1024" height="1024" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71VCxk-OHQL._SL1024_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71VCxk-OHQL._SL1024_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71VCxk-OHQL._SL1024_.jpg 1024w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Sumnacon 39 Inch Multimeter Test Lead Set</h4></div><div class="kg-product-card-description"><p>Disposable but DO NOT throw into the ocean.</p></div><a href="https://amzn.to/3Kaxitx?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71hqCTNgG1L._SL1500_.jpg" width="1500" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71hqCTNgG1L._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71hqCTNgG1L._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71hqCTNgG1L._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Goupchn Stackable Banana Plug to Breadboard Male Jumper</h4></div><div class="kg-product-card-description"><p>Keep out of bodies of water.</p></div><a href="https://amzn.to/3ZkOAsr?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="board-probingfixturing-system">Board Probing/Fixturing System</h2><p>PCBite is a game changer for board fixturing and probing. The probes are actually sharp pogo pins (that will cut through flux) and have an excellent weight to them. When you place them on a pad, test-point, or lead they stay there. The board fixtures themselves are also excellent--they are insulated and have strong magnets in their bases to keep things nice and steady. I would recommend picking up a kit with an oscilloscope BNC connector probe included. &#x2003;</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61KHBNFIL6L._AC_SL1000_.jpg" width="956" height="598" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61KHBNFIL6L._AC_SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/61KHBNFIL6L._AC_SL1000_.jpg 956w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">PCBite kit with 2x SP200 and 4x SP10 probes</h4></div><div class="kg-product-card-description"><p>These things are sharp.</p></div><a href="https://amzn.to/3LSZjqM?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="hand-tools">Hand Tools</h2><p>Pick up a pair of flush cutters ASAP if you don&apos;t have them already! They may be called flush cutters, but they are the greatest multitool of all time. Tweezers, pliers, cutters--they fixed my marriage. Get the Hakko ones--they have the nicest jaws.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71QGl0rv6rL._SL1500_.jpg" width="1500" height="958" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71QGl0rv6rL._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71QGl0rv6rL._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71QGl0rv6rL._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Hakko-CHP-170 Micro Cutter - Red</h4></div><div class="kg-product-card-description"><p>Panacea.</p></div><a href="https://amzn.to/3z9PVYw?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Wire strippers will come in handy eventually. <a href="https://www.youtube.com/c/beneater?ref=ohmbedded.com">Ben Eater</a> showed off these in one of his breadboarding videos and they are what I have used since then.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71QnoetLJuL._AC_SL1500_.jpg" width="1500" height="1027" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71QnoetLJuL._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71QnoetLJuL._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71QnoetLJuL._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">IRWIN VISE-GRIP Wire Stripping Tool / Wire Cutter</h4></div><div class="kg-product-card-description"><p>Eater approved.</p></div><a href="https://amzn.to/3lEBWqv?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>An exacto knife is your best friend on a prototype board spin. When you inevitably swap TX/RX lines, use this little guy to scrape off solder mask and bodge together a temporary fix.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61VY43cl3GL._AC_SL1500_.jpg" width="1500" height="585" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61VY43cl3GL._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/61VY43cl3GL._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/61VY43cl3GL._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Elmer&apos;s X-ACTO</h4></div><div class="kg-product-card-description"><p>Probably sharper than the PCBite.</p></div><a href="https://amzn.to/3zfHQkJ?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Pick up some tweezers and screwdrivers (including hex keys and torx) from a great brand.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/81m2TVhSgkL._AC_SL1500_.jpg" width="1500" height="1365" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/81m2TVhSgkL._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/81m2TVhSgkL._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/81m2TVhSgkL._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Mako Driver Kit + Precision Tweezer Set</h4></div><div class="kg-product-card-description"><p>Mako? Like the shark?</p></div><a href="https://amzn.to/40kzuUW?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><h2 id="soldering">Soldering</h2><p>You will probably not use your soldering iron that often with microelectronics. I elect to spend a little bit less on my soldering iron proper and quite a lot on my actual solder. Grab something super cheap and a handful of tips.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61hruZOzyxL._AC_SL1500_-1.jpg" width="1337" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61hruZOzyxL._AC_SL1500_-1.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/61hruZOzyxL._AC_SL1500_-1.jpg 1000w, https://ohmbedded.com/content/images/2023/03/61hruZOzyxL._AC_SL1500_-1.jpg 1337w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Aipudi Soldering Iron Kit Electric 60W</h4></div><div class="kg-product-card-description"><p>Hot.</p></div><a href="https://amzn.to/3KkhHId?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Spend your real money on nice, leaded solder. Loctite makes some nice stuff. Be sure to wash your hands after handling!</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/31d1THhxEDL._AC_.jpg" width="207" height="200" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">MULTICORE / LOCTITE 3096525-M</h4></div><div class="kg-product-card-description"><p>Metal hot glue (if you think about it).</p></div><a href="https://amzn.to/3JUo6IG?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Pick up a spool holder. You could use spool for leaded, one for unleaded.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/51WrPSl69CL._SL1500_-3.jpg" width="1500" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/51WrPSl69CL._SL1500_-3.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/51WrPSl69CL._SL1500_-3.jpg 1000w, https://ohmbedded.com/content/images/2023/03/51WrPSl69CL._SL1500_-3.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Hakko 611-2 Dual Solder Reel Stand</h4></div><div class="kg-product-card-description"><p>So much room for activities.</p></div><a href="https://amzn.to/3ZlWNMV?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Grab some nice flux!</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/518mcMbmUbL._SL1000_.jpg" width="1000" height="800" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/518mcMbmUbL._SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/518mcMbmUbL._SL1000_.jpg 1000w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Chipquik SMD4300TF10 Tack Flux</h4></div><div class="kg-product-card-description"><p>Don&apos;t eat the glue.</p></div><a href="https://amzn.to/3Ka3eOR?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>And some solder wick to clean up pads after desoldering.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71CE9kKHO-L._AC_SL1500_.jpg" width="1500" height="1426" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71CE9kKHO-L._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71CE9kKHO-L._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71CE9kKHO-L._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Lesnow Solder Wick</h4></div><div class="kg-product-card-description"><p>Gets hot! Cut off a piece and hold it with tweezers.</p></div><a href="https://amzn.to/42KY3vS?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Also spend the couple bucks on tip tinner and a brass sponge to stretch the lifespan of your iron&apos;s tips.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61cYTzRy7gL._SL1500_.jpg" width="1500" height="1458" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61cYTzRy7gL._SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/61cYTzRy7gL._SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/61cYTzRy7gL._SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Thermaltronics TMT-TC-2 Tip Tinner</h4></div><div class="kg-product-card-description"><p>Like new.</p></div><a href="https://amzn.to/40BbTyZ?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/81qWbIXaNML._AC_SL1500_.jpg" width="1500" height="1213" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/81qWbIXaNML._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/81qWbIXaNML._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/81qWbIXaNML._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Weller Soldering Brass Sponge Tip Cleaner with Silicone Holder</h4></div><div class="kg-product-card-description"><p>Also like new.</p></div><a href="https://amzn.to/3TNu8yZ?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Get a hot air reflow station and a hotplate.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71JXgHYDk8L._AC_SL1500_.jpg" width="1500" height="1411" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71JXgHYDk8L._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71JXgHYDk8L._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71JXgHYDk8L._AC_SL1500_.jpg 1500w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">YIHUA 959D-Digital Hot Air Rework Station</h4></div><div class="kg-product-card-description"><p>The Merrymen</p></div><a href="https://amzn.to/3TIqXJ7?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/51cWt7AHU9L._AC_SL1000_.jpg" width="996" height="758" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/51cWt7AHU9L._AC_SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/51cWt7AHU9L._AC_SL1000_.jpg 996w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Soiiw Upgraded 110V 800W LED Microcomputer Electric Hot Plate</h4></div><div class="kg-product-card-description"><p>Nelly</p></div><a href="https://amzn.to/3lI4pLQ?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Also pick up a decent microscope with a light. I use this one but you could probably get away with a USB microscope.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/71DZAS2ROiL._AC_SL1500_.jpg" width="1488" height="1500" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/71DZAS2ROiL._AC_SL1500_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/71DZAS2ROiL._AC_SL1500_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/71DZAS2ROiL._AC_SL1500_.jpg 1488w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">AmScope SE400-Z Professional Binocular Stereo Microscope</h4></div><div class="kg-product-card-description"><p>Best debugger in its SEGment.</p></div><a href="https://amzn.to/40xGIEI?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Chipquik makes excellent solder paste. Be sure to keep it in a cool place when not in use. Get the little jar so that you can save excess solder paste after stenciling.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/51jkJ-nsj3L._AC_SL1000_.jpg" width="758" height="784" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/51jkJ-nsj3L._AC_SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/51jkJ-nsj3L._AC_SL1000_.jpg 758w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Chip Quik SMD291AX50T3</h4></div><div class="kg-product-card-description"><p>Try the gray stuff, it&apos;s delicious! (Do not eat lead.)</p></div><a href="https://amzn.to/3FUA7N3?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Grab some magnet wire and solid core tinned wire for fixing PCB errors. The enamel wire can have its plastic coating burnt off with a blob of solder but is insulated elsewhere. <a href="https://www.youtube.com/channel/UCl2mFZoRqjw_ELax4Yisf6w?ref=ohmbedded.com">Louis Rossmann</a> uses magnet wire for many of his repairs.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61WBgDkvraL._SL1024_.jpg" width="1024" height="1024" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61WBgDkvraL._SL1024_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/61WBgDkvraL._SL1024_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/61WBgDkvraL._SL1024_.jpg 1024w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">BNTECHGO 28 AWG Magnet Wire</h4></div><div class="kg-product-card-description"><p>Used to make electro magnets.</p></div><a href="https://amzn.to/40k905V?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61eoDjR3aAL._AC_SL1200_.jpg" width="1030" height="968" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61eoDjR3aAL._AC_SL1200_.jpg 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/61eoDjR3aAL._AC_SL1200_.jpg 1000w, https://ohmbedded.com/content/images/2023/03/61eoDjR3aAL._AC_SL1200_.jpg 1030w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Silicone Wire Kit</h4></div><div class="kg-product-card-description"><p>Like an electric eraser.</p></div><a href="https://amzn.to/3ZhzAvs?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Be sure to use Kapton tape. It is very thermally stable and holds great. You will find a million uses for it.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61EvvzInk-L._SL1000_.jpg" width="1000" height="1000" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61EvvzInk-L._SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/61EvvzInk-L._SL1000_.jpg 1000w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">MYJOR High Temperature Kapton Tape</h4></div><div class="kg-product-card-description"><p>Think they used this stuff on the space shuttle</p></div><a href="https://amzn.to/3nlOSC6?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>Finally, pick up an Omnivise for holding boards when soldering.</p><div class="kg-card kg-product-card"><div class="kg-product-card-container"><img src="https://ohmbedded.com/content/images/2023/03/61bSFGjyXnL._AC_SL1000_.jpg" width="1000" height="967" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/61bSFGjyXnL._AC_SL1000_.jpg 600w, https://ohmbedded.com/content/images/2023/03/61bSFGjyXnL._AC_SL1000_.jpg 1000w" sizes="(min-width: 720px) 720px" class="kg-product-card-image" loading="lazy" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><div class="kg-product-card-title-container"><h4 class="kg-product-card-title">Hakko C1390C Omnivise</h4></div><div class="kg-product-card-description"><p>Omnipotent?</p></div><a href="https://amzn.to/3TNBHpB?ref=ohmbedded.com" class="kg-product-card-button kg-product-card-btn-accent" target="_blank" rel="noopener noreferrer"><span>Buy Here!</span></a></div></div><p>You&apos;re on the way to being a true blue embedded engineer. I use many of these tools on a daily basis and hope you find use from them too! If you feel that I&apos;ve missed something don&apos;t hesitate to reach out on our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 5 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Building Your Embedded Lab - My Recommendations for Instruments, Tools"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 4 -  PCB Layout]]></title><description><![CDATA[<p>Time to design something you can really hold in your hand! If you&apos;ve been following along, you should have a cool macropad layout planned and footprints for everything you need. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-114.png" class="kg-image" alt loading="lazy" width="1911" height="1031" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-114.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-114.png 1000w, https://ohmbedded.com/content/images/size/w1600/2023/03/image-114.png 1600w, https://ohmbedded.com/content/images/2023/03/image-114.png 1911w" sizes="(min-width: 720px) 720px"></figure><p>Click &quot;Tools &gt; Update PCB from Schematic.&quot; KiCAD should open up the PCB editor.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-115.png" class="kg-image" alt loading="lazy" width="682" height="479" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-115.png 600w, https://ohmbedded.com/content/images/2023/03/image-115.png 682w"></figure><p>Keep everything</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-4-pcb-layout-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f22</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Fri, 24 Mar 2023 00:36:15 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/image-141-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/image-141-1.png" alt="Keyboard Design Part 4 -  PCB Layout"><p>Time to design something you can really hold in your hand! If you&apos;ve been following along, you should have a cool macropad layout planned and footprints for everything you need. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-114.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1911" height="1031" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-114.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-114.png 1000w, https://ohmbedded.com/content/images/size/w1600/2023/03/image-114.png 1600w, https://ohmbedded.com/content/images/2023/03/image-114.png 1911w" sizes="(min-width: 720px) 720px"></figure><p>Click &quot;Tools &gt; Update PCB from Schematic.&quot; KiCAD should open up the PCB editor.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-115.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="682" height="479" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-115.png 600w, https://ohmbedded.com/content/images/2023/03/image-115.png 682w"></figure><p>Keep everything checked for now. If you are updating a PCB from a schematic in the future you should look more carefully at these options.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-116.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="885" height="749" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-116.png 600w, https://ohmbedded.com/content/images/2023/03/image-116.png 885w" sizes="(min-width: 720px) 720px"></figure><p>Nice! Keyboard switches are 0.75&quot; or 19.05mm square. This is a bit of a simplification--keycaps are something close to 18mm square and plate cutouts are 14mm square.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-117.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1326" height="512" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-117.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-117.png 1000w, https://ohmbedded.com/content/images/2023/03/image-117.png 1326w" sizes="(min-width: 720px) 720px"></figure><p>Here is a diagram of relevant keyswitch dimensions!</p><p>Let&apos;s set up the &quot;snap grid&quot; to fit keyboard switches. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-118.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="587" height="532"></figure><p>Click the grid drop-down. Click on &quot;Edit User Grid...&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-119.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="475" height="288"></figure><p>Enter 0.75&quot; / x to get fractions of a key switch unit, commonly referred to as &quot;u&quot; (as in 2u, 6.25u, 10u keys). I personally use 16 as my divisor but you can use whatever you&apos;d like!</p><p>Tip: KiCAD will evaluate unit conversions for you in most input boxes!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-120.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1014" height="581" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-120.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-120.png 1000w, https://ohmbedded.com/content/images/2023/03/image-120.png 1014w" sizes="(min-width: 720px) 720px"></figure><p>Click back and forth between the schematic and PCB to find footprints. This is what I do when not using an auto-placing script and I recommend you do it to get the hang of navigating between the schematic and PCB editor. When you click on a symbol in the schematic, it highlights its footprint in the PCB editor!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-121.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="637" height="507" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-121.png 600w, https://ohmbedded.com/content/images/2023/03/image-121.png 637w"></figure><p>Once you have laid out your macropad&apos;s keys, you should see something like this. </p><p>Note: the stabilizer orientation changes the direction of the cutout you will use on the keyboard&apos;s plate.</p><p>Position your pro-micro somewhere nice looking. This will be relatively easy to route!</p><p>Place your diodes in a way that minimizes the number of crossing traces. This is an art! Don&apos;t worry if it isn&apos;t perfect, just make sure that everything connects properly.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-122.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="870" height="563" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-122.png 600w, https://ohmbedded.com/content/images/2023/03/image-122.png 870w" sizes="(min-width: 720px) 720px"></figure><p>Next, press &quot;X&quot; to start routing. You&apos;re really doing it!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-123.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="952" height="615" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-123.png 600w, https://ohmbedded.com/content/images/2023/03/image-123.png 952w" sizes="(min-width: 720px) 720px"></figure><p>Here I am halfway through routing. Notice that the ratsnest (the little lines running between traces and their destinations) is crossing itself. Let&apos;s change some pin numbers around in the schematic to simplify this. Remember: we should only use pins labelled &quot;D*&quot; because these are available GPIOs on all pro micros.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-124.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="370" height="567"></figure><p>I&apos;ve flipped the COL1-COL5 pins by selecting them and pressing &quot;y&quot; to flip vertically. </p><p>Be sure to update the PCB from the schematic in order to transfer these changes.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-125.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="905" height="593" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-125.png 600w, https://ohmbedded.com/content/images/2023/03/image-125.png 905w" sizes="(min-width: 720px) 720px"></figure><p>There! Much better.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-126.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="887" height="603" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-126.png 600w, https://ohmbedded.com/content/images/2023/03/image-126.png 887w" sizes="(min-width: 720px) 720px"></figure><p>Routing complete! Let&apos;s take a look at its 3D render.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-127.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1920" height="1030" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-127.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-127.png 1000w, https://ohmbedded.com/content/images/size/w1600/2023/03/image-127.png 1600w, https://ohmbedded.com/content/images/2023/03/image-127.png 1920w" sizes="(min-width: 720px) 720px"></figure><p>See that error? That means that we need to define the actual physical edges of our board by drawing them on the &quot;edgecuts&quot; layer. Let&apos;s define edgecuts for this board.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-128.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="184" height="644"></figure><p>Select the &quot;Edge.Cuts&quot; layer. Switch your grid spacing to the key-unit size. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-130.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="212" height="224"></figure><p>Next, select the rectangle tool in the toolbar to the right.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-129.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1214" height="777" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-129.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-129.png 1000w, https://ohmbedded.com/content/images/2023/03/image-129.png 1214w" sizes="(min-width: 720px) 720px"></figure><p> Draw out the edgecuts! I added a bit of extra distance up top.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-131.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1174" height="768" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-131.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-131.png 1000w, https://ohmbedded.com/content/images/2023/03/image-131.png 1174w" sizes="(min-width: 720px) 720px"></figure><p>The edges are a bit sharp, though. If you were to order this board as-is, you would probably poke yourself on the edges. Let&apos;s add some fillets (aka radii) to the edges.</p><p></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-132.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="400" height="751"></figure><p>Right click the rectangle you created and &quot;Fillet Lines.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-133.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="379" height="155"></figure><p>Set your radius to whatever you&apos;d like. Let&apos;s try 2.5mm.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-134.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="969" height="615" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-134.png 600w, https://ohmbedded.com/content/images/2023/03/image-134.png 969w" sizes="(min-width: 720px) 720px"></figure><p>Nice! Now we have our board in a good place. One last step. Let&apos;s add &quot;ground fills&quot; connected to the ground net. I personally prefer the look of boards with ground fills. Practically, ground fills are important for signal integrity for all electronics. Since this is a carrier board, signal integrity isn&apos;t necessarily a big concern. The frequency of matrix scanning is only ~1KHz.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-135.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="235" height="330"></figure><p>Click &quot;Add a filled zone&quot; and draw it a bit larger than the edge cuts of the board. Don&apos;t worry, there are default rules that will prevent the copper from actually being exposed on the edges.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-136.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="867" height="682" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-136.png 600w, https://ohmbedded.com/content/images/2023/03/image-136.png 867w" sizes="(min-width: 720px) 720px"></figure><p>Select the top and bottom copper layers and select the &quot;GND&quot; net to connect the pours to ground. Be sure to change the clearance to 0.127mm</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-137.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="890" height="609" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-137.png 600w, https://ohmbedded.com/content/images/2023/03/image-137.png 890w" sizes="(min-width: 720px) 720px"></figure><p>This should be the result! Let&apos;s take a look in the 3D viewer.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-141.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="770" height="582" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-141.png 600w, https://ohmbedded.com/content/images/2023/03/image-141.png 770w" sizes="(min-width: 720px) 720px"></figure><p>Congrats! Let&apos;s use Bouni&apos;s JLCPCB tool to generate board files.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-142.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="530" height="621"></figure><p>From the PCB editor, click &quot;Tools &gt; &#xA0;External Plugins &gt; JLCPCB Tools.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-143.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1297" height="819" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-143.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-143.png 1000w, https://ohmbedded.com/content/images/2023/03/image-143.png 1297w" sizes="(min-width: 720px) 720px"></figure><p>Allow it a moment to download the latest JLCPCB parts inventory. Then simply click &quot;Generate&quot; in the top left! We will explore more of the features of the JLCPCB Tools plugin in future posts.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-144.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1473" height="706" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-144.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-144.png 1000w, https://ohmbedded.com/content/images/2023/03/image-144.png 1473w" sizes="(min-width: 720px) 720px"></figure><p>Navigate to <a href="https://jlcpcb.com/?ref=ohmbedded.com">https://jlcpcb.com</a> and click &quot;Instant Quote.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-145.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="792" height="529" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-145.png 600w, https://ohmbedded.com/content/images/2023/03/image-145.png 792w" sizes="(min-width: 720px) 720px"></figure><p>Next, open your project folder. You should see a new &quot;jlcpcb&quot; folder that contains your production files.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-146.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="821" height="179" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-146.png 600w, https://ohmbedded.com/content/images/2023/03/image-146.png 821w" sizes="(min-width: 720px) 720px"></figure><p><br>Open the &quot;production_files&quot; folder and then drag your &quot;GERBER-*.zip&quot; folder to the JLCPCB site.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-151.png" class="kg-image" alt="Keyboard Design Part 4 -  PCB Layout" loading="lazy" width="1021" height="641" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-151.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-151.png 1000w, https://ohmbedded.com/content/images/2023/03/image-151.png 1021w" sizes="(min-width: 720px) 720px"></figure><p>Let&apos;s use the defaults at first. We will explore other options in future posts.</p><p>The total cost for 5 boards comes out to ~$30. They should take about a week to arrive. I would recommend using DHL shipping.</p><p>In the next post we will design a plate + case for this macropad using KiCAD!</p><p><a href="https://ohmbedded.com/keyboard-design-part-5-plate-design/">Click here for part 5!</a></p><p>For more information and to ask keyboard specific or general electronics questions join our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 4 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 4 -  PCB Layout"><span class="kg-bookmark-author">Discord</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.discordapp.com/icons/1087573256262922280/aa210772cbf9953afdbdc5e97beefb03.jpg?size=256" alt="Keyboard Design Part 4 -  PCB Layout"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 3 - Schematic Capture]]></title><description><![CDATA[<p>It&apos;s time to get into the best part of keyboard design--coming up with a cool idea and bringing it to life. By the end of this post, we should be ready to start our PCB layout for a pro micro based keyboard.</p><p>To get started, lets play around</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-3-kle-and-schematic-2/</link><guid isPermaLink="false">64e3ba117aceca19e11c1f21</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Wed, 22 Mar 2023 23:55:10 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-22-195535.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-22-195535.png" alt="Keyboard Design Part 3 - Schematic Capture"><p>It&apos;s time to get into the best part of keyboard design--coming up with a cool idea and bringing it to life. By the end of this post, we should be ready to start our PCB layout for a pro micro based keyboard.</p><p>To get started, lets play around with <a href="https://keyboard-layout-editor.com/?ref=ohmbedded.com">https://keyboard-layout-editor.com</a></p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-82.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1035" height="416" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-82.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-82.png 1000w, https://ohmbedded.com/content/images/2023/03/image-82.png 1035w" sizes="(min-width: 720px) 720px"></figure><p>You will be greeted with the following interface.</p><p>Click on &quot;Preset&quot; in the toolbar and select &quot;Blank Layout&quot;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://ohmbedded.com/content/images/2023/03/image-83.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="756" height="658" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-83.png 600w, https://ohmbedded.com/content/images/2023/03/image-83.png 756w" sizes="(min-width: 720px) 720px"><figcaption>Tabula rasa</figcaption></figure><p>Let&apos;s add a few keys. Click the &quot;Add Key&quot; button to add a few keys. Play around! </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-85.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="747" height="655" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-85.png 600w, https://ohmbedded.com/content/images/2023/03/image-85.png 747w" sizes="(min-width: 720px) 720px"></figure><p>If you want to change the width of keys, click on it and modify the &quot;width,&quot; and &quot;height,&quot; properties.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-86.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="743" height="265" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-86.png 600w, https://ohmbedded.com/content/images/2023/03/image-86.png 743w" sizes="(min-width: 720px) 720px"></figure><p></p><p>Here is my macropad design. Find something that you think looks cool! </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-87.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="384" height="235"></figure><p><br>When you&apos;re ready, click &quot;Download,&quot; in the top right and save the .json output to your project folder. This output can be used to create renders and will be helpful when creating our keyboard&apos;s QMK/Vial firmware.</p><p>Open up your KiCAD schematic. </p><p>Tip: to quickly open the schematic symbol placing dialog, use the shortcut &quot;Shift+A&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-88.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="985" height="864" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-88.png 600w, https://ohmbedded.com/content/images/2023/03/image-88.png 985w" sizes="(min-width: 720px) 720px"></figure><p>Search for the pro micro symbol you created in the last tutorial. If you don&apos;t have this, refer to <a href="https://ohmbedded.com/keyboard-design-part-2-pro-micro-based-designs/">Keyboard Design Part 2!</a></p><p>Press &quot;OK,&quot; to place it on the schematic.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-89.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="998" height="865" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-89.png 600w, https://ohmbedded.com/content/images/2023/03/image-89.png 998w" sizes="(min-width: 720px) 720px"></figure><p>Next, press &quot;P&quot; to place power symbols on the schematic. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-90.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="395" height="553"></figure><p>Search for GND and for +3V3 power symbols and place them on the top and bottom of the symbol.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-91.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="977" height="861" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-91.png 600w, https://ohmbedded.com/content/images/2023/03/image-91.png 977w" sizes="(min-width: 720px) 720px"></figure><p>Now press &quot;Shift+A&quot; to add switches to the schematic. You can select either &quot;solder,&quot; or &quot;hotswap,&quot; switch symbols. These are just convenient ways that <a href="https://github.com/ebastler/marbastlib?ref=ohmbedded.com">marbastlib</a> has set up links between your footprint and symbol--in many other cases you will have to set footprint/symbol relationships as described in the previous tutorial. Also note the two different varieties of switch. &quot;<a href="https://thockeys.com/switches/oil-kings/?ref=ohmbedded.com">MX</a>&quot; switches are most commonly used but &quot;<a href="https://mkultra.click/choc-switches?ref=ohmbedded.com">choc</a>&quot; switches from Kailh have become increasingly popular for low profile keyboard designs. Both have hotswap footprint variants available. </p><p>If you are a beginner to soldering, I would recommend using the &quot;solder&quot; variant as it is easier (in the opinion of the author) to solder these switches as opposed to manually soldering hotswap sockets. In the future we will discuss how to order assembled keyboards with hotswap sockets.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-107.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1282" height="519" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-107.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-107.png 1000w, https://ohmbedded.com/content/images/2023/03/image-107.png 1282w" sizes="(min-width: 720px) 720px"></figure><p>Add enough symbols to fill the keymap you created before. I typically place one symbol and then copy and paste as many as required.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-93.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="979" height="859" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-93.png 600w, https://ohmbedded.com/content/images/2023/03/image-93.png 979w" sizes="(min-width: 720px) 720px"></figure><p>Next, add diode symbols to the schematic. Diodes are used so that modern matrix scanning algorithms will work properly. For more information, refer to the following page: <a href="https://pcbheaven.com/wikipages/How_Key_Matrices_Works/?ref=ohmbedded.com">https://pcbheaven.com/wikipages/How_Key_Matrices_Works/</a></p><p>In short, the diodes are added to prevent ghosting and to allow n-key rollover.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-94.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="751" height="525" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-94.png 600w, https://ohmbedded.com/content/images/2023/03/image-94.png 751w" sizes="(min-width: 720px) 720px"></figure><p>After adding the symbol to the schematic, double click on it and assign a footprint. The diode footprint depends on the specific diode you choose to use--in this case, we are using through hole diodes available on Adafruit.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.adafruit.com/product/1641?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">1N4148 Signal Diode - 10 pack</div><div class="kg-bookmark-description">You have some electrons over here, and you want them over there but you don&amp;#39;t want the electrons from over there to be able to come over here? That&amp;#39;s what a diode is for, these are&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn-shop.adafruit.com/static/favicon-196x196.png" alt="Keyboard Design Part 3 - Schematic Capture"><span class="kg-bookmark-author">Adafruit Logo</span><span class="kg-bookmark-publisher">Adafruit Industries</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.adafruit.com/images/480x360/1641-00.jpg" alt="Keyboard Design Part 3 - Schematic Capture"></div></a></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-95.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1272" height="711" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-95.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-95.png 1000w, https://ohmbedded.com/content/images/2023/03/image-95.png 1272w" sizes="(min-width: 720px) 720px"></figure><p>These are packaged in a &quot;DO-35,&quot; formfactor. Refer to the datasheet to find this information for the diodes you choose to use.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-106.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="818" height="455" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-106.png 600w, https://ohmbedded.com/content/images/2023/03/image-106.png 818w" sizes="(min-width: 720px) 720px"></figure><p>Continue populating your matrix. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-105.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="806" height="467" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-105.png 600w, https://ohmbedded.com/content/images/2023/03/image-105.png 806w" sizes="(min-width: 720px) 720px"></figure><p>Once you have completed it, connect the &quot;rows&quot; of your keyboard to the cathodes of the diodes.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-104.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="787" height="429" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-104.png 600w, https://ohmbedded.com/content/images/2023/03/image-104.png 787w" sizes="(min-width: 720px) 720px"></figure><p>Connect the columns to the other side of the switches.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-99.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="134" height="112"></figure><p>Click the &quot;Add a net label&quot; button (or press &quot;L&quot;) and label the connections between rows and columns. </p><p>Once you have placed the rows/column labels, you can rotate them by pressing &quot;R&quot;.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-101.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="899" height="445" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-101.png 600w, https://ohmbedded.com/content/images/2023/03/image-101.png 899w" sizes="(min-width: 720px) 720px"></figure><p>This completes the matrix layout. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-108.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1016" height="511" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-108.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-108.png 1000w, https://ohmbedded.com/content/images/2023/03/image-108.png 1016w" sizes="(min-width: 720px) 720px"></figure><p>Good work! Just a few more details.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-109.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1267" height="712" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-109.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-109.png 1000w, https://ohmbedded.com/content/images/2023/03/image-109.png 1267w" sizes="(min-width: 720px) 720px"></figure><p>Add an MX_stab symbol from marbastlib. Double click on the symbol and change its footprint to the applicable stabilizer footprint. </p><p>Note: all keys &gt;2 units in width/height require a stabilizer.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-110.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1425" height="540" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-110.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-110.png 1000w, https://ohmbedded.com/content/images/2023/03/image-110.png 1425w" sizes="(min-width: 720px) 720px"></figure><p>Copy your column and row labels to pins on the pro micro symbol. Be sure to select pins that are eligible GPIO pins as shown in the pinout image below.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-111.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="800" height="589" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-111.png 600w, https://ohmbedded.com/content/images/2023/03/image-111.png 800w" sizes="(min-width: 720px) 720px"></figure><p>D2-D9 are pins we can use! To keep compatibility with other pro micro form factor devkits I would recommend using pins labeled &quot;D*.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-112.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1375" height="563" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-112.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-112.png 1000w, https://ohmbedded.com/content/images/2023/03/image-112.png 1375w" sizes="(min-width: 720px) 720px"></figure><p>One last step--press &quot;Q&quot; over all unconnected pins to prevent an error in the design rules checker or &quot;DRC.&quot; This adds a small &quot;X&quot; icon over pins that are not going to be routed in your PCB design.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-113.png" class="kg-image" alt="Keyboard Design Part 3 - Schematic Capture" loading="lazy" width="1425" height="577" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-113.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-113.png 1000w, https://ohmbedded.com/content/images/2023/03/image-113.png 1425w" sizes="(min-width: 720px) 720px"></figure><p>Congrats! You are one step closer to your first custom board design. In the next tutorial, we will learn a bit about the process of routing and ordering a PCB from JLCPCB!</p><p><a href="https://ohmbedded.com/keyboard-design-part-3-kle-and-schematic/">Click here for part 4!</a></p><p>For more information and to ask keyboard specific or general electronics questions join our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.com/invite/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 4 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.com/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 3 - Schematic Capture"><span class="kg-bookmark-author">Discord</span></div></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Quick tip: Calculating LED Resistor Values]]></title><description><![CDATA[<p>From a question someone posted in Discord.</p><p>what&apos;s a safe bet on how many ohms resistors for 2-pin leds should be</p><figure class="kg-card kg-image-card"><img src="https://cdn.discordapp.com/emojis/859210973944610836.webp?size=44&amp;quality=lossless" class="kg-image" alt=":Apu:" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-77.png" class="kg-image" alt loading="lazy" width="740" height="457" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-77.png 600w, https://ohmbedded.com/content/images/2023/03/image-77.png 740w" sizes="(min-width: 720px) 720px"></figure><p>This is the basic circuit for an LED, right? LEDs are simply diodes. Diodes are non-linear circuit elements that have a decently high resistance until they reach</p>]]></description><link>https://ohmbedded.com/quick-tip-calculating-led-resistor-values/</link><guid isPermaLink="false">64e3b3967aceca19e11c1e4a</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Wed, 22 Mar 2023 01:55:37 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-21-215444.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-21-215444.png" alt="Quick tip: Calculating LED Resistor Values"><p>From a question someone posted in Discord.</p><p>what&apos;s a safe bet on how many ohms resistors for 2-pin leds should be</p><figure class="kg-card kg-image-card"><img src="https://cdn.discordapp.com/emojis/859210973944610836.webp?size=44&amp;quality=lossless" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-77.png" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy" width="740" height="457" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-77.png 600w, https://ohmbedded.com/content/images/2023/03/image-77.png 740w" sizes="(min-width: 720px) 720px"></figure><p>This is the basic circuit for an LED, right? LEDs are simply diodes. Diodes are non-linear circuit elements that have a decently high resistance until they reach their Vf or forward voltage. Once they reach their forward voltage (between 1-2V for typical LEDs you will encounter and a key piece of info to find from the datasheet) they lose nearly all resistance and you can treat the circuit as the following:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-78.png" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy" width="614" height="446" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-78.png 600w, https://ohmbedded.com/content/images/2023/03/image-78.png 614w"></figure><p>The LED is actually <strong><strong>just</strong></strong> another battery with voltage Vf, but opposing the voltage V of your system.</p><p>Do some ohm&apos;s law stuff. I1 = (V-Vf)/R1.</p><p>If you want your current through the LED to be something like 5-10mA, just set I1 to 5*10^-3 and solve for R1</p><p>Another thing to keep in mind is the power through the resistor. It&apos;s a good check to P = R*I^2 to verify that the power rating for the resistor is high enough and it won&apos;t get super hot.</p><p>In practice, &#xA0;look at the datasheet and use this calculator: &#xA0;<a href="https://www.digikey.com/en/resources/conversion-calculators/conversion-calculator-led-series-resistor?ref=ohmbedded.com" rel="noreferrer noopener">https://www.digikey.com/en/resources/conversion-calculators/conversion-calculator-led-series-resistor</a></p><p>Here is a quick example with a random LED.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-79.png" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy" width="783" height="631" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-79.png 600w, https://ohmbedded.com/content/images/2023/03/image-79.png 783w" sizes="(min-width: 720px) 720px"></figure><p>Max current, If, of 30mA. I will use 5mA here.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-80.png" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy" width="746" height="622" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-80.png 600w, https://ohmbedded.com/content/images/2023/03/image-80.png 746w" sizes="(min-width: 720px) 720px"></figure><p>Typical Vf of 2.0V.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-81.png" class="kg-image" alt="Quick tip: Calculating LED Resistor Values" loading="lazy" width="937" height="616" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-81.png 600w, https://ohmbedded.com/content/images/2023/03/image-81.png 937w" sizes="(min-width: 720px) 720px"></figure><p>Into the calculator, we get 260 ohms with a power use of 6.5mW. Looking up the closest resistor value, I would recommend 270 ohms.</p><p>Thanks!</p>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 2 - Schematic Symbols and Footprints]]></title><description><![CDATA[<p>Designing a wholly integrated keyboard PCB from the ground up can be a tough ask. That&apos;s why I started by integrating an existing development board into a &quot;carrier&quot; PCB that I designed and ordered. That project can be found <a href="https://geekhack.org/index.php?topic=116045.0&amp;ref=ohmbedded.com">here</a>.</p><p>The concept of using a devkit</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-2-pro-micro-based-designs/</link><guid isPermaLink="false">64e3b3967aceca19e11c1e49</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Wed, 22 Mar 2023 01:31:05 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/5302-12.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/5302-12.jpg" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"><p>Designing a wholly integrated keyboard PCB from the ground up can be a tough ask. That&apos;s why I started by integrating an existing development board into a &quot;carrier&quot; PCB that I designed and ordered. That project can be found <a href="https://geekhack.org/index.php?topic=116045.0&amp;ref=ohmbedded.com">here</a>.</p><p>The concept of using a devkit to build a keyboard isn&apos;t new. People in the hobby have used the <a href="https://www.sparkfun.com/products/12640?ref=ohmbedded.com">Pro Micro</a> from SparkFun for years to iterate quickly and to do away with some of the complications of having a fully integrated board assembled. The Pro Micro&apos;s history in the hobby has also meant that a number of other devkits with extended functionality are available with Pro Micro backwards compatibility.</p><p>To get started, let&apos;s take a look at the microcontroller development board we&apos;ll be using!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.adafruit.com/product/5302?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Adafruit KB2040 - RP2040 Kee Boar Driver</div><div class="kg-bookmark-description">A wild Kee Boar appears! It&amp;rsquo;s a shiny KB2040! An Arduino Pro Micro-shaped board for Keebs with RP2040. (#keeblife 4 evah) A lot of folks like using Adafruit parts for their Keeb builds&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn-shop.adafruit.com/static/favicon-196x196.png" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"><span class="kg-bookmark-author">Adafruit Logo</span><span class="kg-bookmark-publisher">Adafruit Industries</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.adafruit.com/images/480x360/5302-12.jpg" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"></div></a></figure><p>The Adafruit KB2040 integrates an <a href="https://www.raspberrypi.com/products/rp2040/?ref=ohmbedded.com">RP2040</a> from the Raspberry Pi Foundation (yes, that Raspberry Pi) into a Pro Micro footprint. Some other fun bells and whistles include 16MB (!) of flash, an addressable RGB LED (or NeoPixel), and STEMMA QT support. For more information on STEMMA QT (which is really an <a href="https://en.wikipedia.org/wiki/I%C2%B2C?ref=ohmbedded.com">I2C bus</a> + power in a JST connector) check <a href="https://learn.adafruit.com/introducing-adafruit-stemma-qt/what-is-stemma?ref=ohmbedded.com">here</a>. &#xA0;</p><p>I have chosen this board because of its availability and the popularity of the RP2040 in the hobby at the time of writing. The RP2040 has been available when few other microcontrollers have. The flash size mentioned above also enables keyboards based on the RP2040 to store dozens of layers, macros, and other fun QMK features you will be introduced to soon. </p><p>Let&apos;s get started. Open up KiCAD (check <a href="https://ohmbedded.com/keyboard-design-part-1-kicad-install/">here</a> for installation instructions from the last post) and create a new project.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-23.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="946" height="540" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-23.png 600w, https://ohmbedded.com/content/images/2023/03/image-23.png 946w" sizes="(min-width: 720px) 720px"></figure><p>You will see two files generated by creating this project:</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-24.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="313" height="81"></figure><p>Start by opening the &quot;*.kicad_sch&quot; file. You will be greeted with a blank schematic. Unlimited possibilities!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-26.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="1231" height="873" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-26.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-26.png 1000w, https://ohmbedded.com/content/images/2023/03/image-26.png 1231w" sizes="(min-width: 720px) 720px"></figure><p>To get started, let&apos;s place a Pro Micro schematic symbol. You may notice that we don&apos;t actually have a &quot;Pro Micro&quot; schematic symbol or footprint. Fret not! A key part of learning an ECAD suite is picking up the ability to generate good looking and functional schematic symbols and footprints. </p><p>Note: skip ahead to simply download the KiCAD symbol and footprint I will show how to design. I encourage you to try it out yourself as you will almost certainly discover a part with a poor schematic symbol or incorrect footprint.</p><p>The Pro Micro&apos;s pinout is relatively simple. To get started, let&apos;s look at the Adafruit KB2040 documentation.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-27.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="800" height="589" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-27.png 600w, https://ohmbedded.com/content/images/2023/03/image-27.png 800w" sizes="(min-width: 720px) 720px"></figure><p>The specific pins broken out can be seen in the pin headers on the left and right.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-30.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="532" height="551"></figure><p>Lets create the schematic symbol! Open the Symbol Editor from your project in KiCAD.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-31.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="305" height="222"></figure><p>Click &quot;File &gt; New Library&quot; and create a Project specific library. You can also create a global project library if you intend to use this symbol in other PCB designs.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-33.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="946" height="532" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-33.png 600w, https://ohmbedded.com/content/images/2023/03/image-33.png 946w" sizes="(min-width: 720px) 720px"></figure><p>Name the library &quot;Pro_Micro.kicad_sym&quot; and save.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-34.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="571" height="382"></figure><p>Click the &quot;create a new symbol&quot; button in the top left.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-39.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="321" height="393"></figure><p>In the &quot;New Symbol&quot; dialog, add the symbol name (&quot;Pro_Micro&quot;) and leave everything else default. </p><p>Now it is time to create pins that match the pinout above. &#xA0;</p><p>Tip: Use the shortcut &quot;Shift+P&quot; to place pins.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-41.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="559" height="408"></figure><p>There are a ton of options here! Leave most as default. Let&apos;s name the first pin &quot;D+&quot; to match up with the pinout and set its number to 1. Make it a &quot;Passive&quot; pin under &quot;Electrical Type.&quot;</p><p>Continue assigning pins! We will add their layout shortly. This should be the result you see. Note: the right row starts with 26 because it will be used with the footprint generation wizard later.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-69.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="506" height="540"></figure><p>Tip: While moving a pin with the mouse, press &quot;x&quot; to mirror it horizontally.</p><p>Tip: While moving a pin with the mouse, press &quot;y&quot; to mirror it vertically.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-51.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="742" height="680" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-51.png 600w, https://ohmbedded.com/content/images/2023/03/image-51.png 742w" sizes="(min-width: 720px) 720px"></figure><p>To flip the right side pins, I select them all and press &quot;x.&quot;</p><p>It is a best practice for your schematic symbols to place their power pins on the top and their ground pins on the bottom. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-52.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="578" height="421"></figure><p>To simplify your schematic, place pins that have identical functions (like GND) over each other with all but one pin being set invisible like so.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-53.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="142" height="246"></figure><p>When invisible, pins look grayed out. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-54.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="100" height="215"></figure><p>Stack them over eachother.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-67.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="577" height="613"></figure><p>Next add a rectangle with the rectangle tool on the right side tool bar. </p><p>Be sure to set your grid size to 0.05&quot; (1.27mm)!</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-56.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="671" height="282" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-56.png 600w, https://ohmbedded.com/content/images/2023/03/image-56.png 671w"></figure><p>Select the rectangle and set its &quot;Fill Style&quot; to &quot;Fill with body background color.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-66.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="506" height="616"></figure><p>Save! You are now the owner of a fresh new pro micro schematic symbol.</p><p>Now time for the footprint.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-28.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="800" height="455" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-28.png 600w, https://ohmbedded.com/content/images/2023/03/image-28.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Look specifically at the sides of the KB2040. You will see that there are two ways to actually mount the device. The little &quot;scoops&quot; beside the pin holes are called castellations (because of their resemblance to the notches on a castle wall) and can be used to surface-mount the devkit. For now, lets just use the through holes with commonly available 0.1&quot; (2.54mm) spaced pin headers.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-58.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="517" height="564"></figure><p>To begin, open the footprint editor.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-59.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="276" height="147"></figure><p>Next, click the &quot;Footprint Wizard&quot; button. It is a DIP chip with a star icon.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-60.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="582" height="412"></figure><p>Select the S-DIP generator. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-61.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="800" height="498" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-61.png 600w, https://ohmbedded.com/content/images/2023/03/image-61.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Using the above mechanical drawing, set the S-DIP generator settings to the following.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-62.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="364" height="168"></figure><p>This corresponds to the 26 pins of the pro micro, the 2.54mm spacing between them, and the 15.24mm distance between the two rows of pins.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-63.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="523" height="265"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-71.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="602" height="795" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-71.png 600w, https://ohmbedded.com/content/images/2023/03/image-71.png 602w"></figure><p>Next, click the &quot;export to editor&quot; button. I would recommend rotating the footprint to sit vertically, but it doesn&apos;t really matter.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-72.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="678" height="413" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-72.png 600w, https://ohmbedded.com/content/images/2023/03/image-72.png 678w"></figure><p>Click &quot;New Library...&quot; upon saving the footprint. Rename it to Pro-Micro when saving. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-73.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="298" height="213"></figure><p>Add a library to the project&apos;s scope. Name the library something like &quot;Pro-Micro.pretty.&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-74.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="643" height="388" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-74.png 600w, https://ohmbedded.com/content/images/2023/03/image-74.png 643w"></figure><p>You should see something like this.</p><p>Go ahead and update your schematic symbol to refer to this specific footprint.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-75.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="241" height="87"></figure><p>Open the schematic editor, select the Pro-Micro schematic symbol you just created, and click the &quot;display symbol properties editor,&quot; button.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-76.png" class="kg-image" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints" loading="lazy" width="821" height="286" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-76.png 600w, https://ohmbedded.com/content/images/2023/03/image-76.png 821w" sizes="(min-width: 720px) 720px"></figure><p>Click the footprint box and select the Pro-Micro footprint you just created. Congrats! </p><p>The process for creating any symbol and footprint is mostly the same! Don&apos;t be afraid to make the symbols you need when doing any project--it is certianly fine to use something like SnapEDA&apos;s library but you should be able to make modifications to footprints if necessary.</p><p>Here is the GitHub repo with the example pro micro footprint and symbol!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/hlord2000/example_pro_micro?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - hlord2000/example_pro_micro: This is part of the Ohmbedded example project used to create a schematic&#x2019;s symbols and footprints.</div><div class="kg-bookmark-description">This is part of the Ohmbedded example project used to create a schematic&amp;#39;s symbols and footprints. - GitHub - hlord2000/example_pro_micro: This is part of the Ohmbedded example project used to&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">hlord2000</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/31e830b1cd94be30e7a3d01a1282e6bd01deb0a029fddbe70f799dedcaf25ad5/hlord2000/example_pro_micro" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"></div></a></figure><p>Thanks for reading. Next up--a custom macropad using the pro micro!</p><p><a href="https://ohmbedded.com/keyboard-design-part-3-kle-and-schematic/">Click here for part 3!</a></p><p>For more information and to ask keyboard specific or general electronics questions join our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.com/invite/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 4 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.com/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 2 - Schematic Symbols and Footprints"><span class="kg-bookmark-author">Discord</span></div></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Keyboard Design Part 1 - KiCAD Install]]></title><description><![CDATA[<p>Welcome to the first part in a series on mechanical keyboard design.</p><p>KiCAD is the hobbyist&apos;s greatest weapon in creating bespoke electronics. It is a completely <strong>free</strong> and open-source electronic design automation (EDA) suite. It is available on most commonly used platforms including Windows, Linux, and macOS. </p><p>The</p>]]></description><link>https://ohmbedded.com/keyboard-design-part-1-kicad-install/</link><guid isPermaLink="false">64e3b3967aceca19e11c1e48</guid><dc:creator><![CDATA[Helmut Lord]]></dc:creator><pubDate>Tue, 21 Mar 2023 03:08:48 GMT</pubDate><media:content url="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-20-221913.png" medium="image"/><content:encoded><![CDATA[<img src="https://ohmbedded.com/content/images/2023/03/Screenshot-2023-03-20-221913.png" alt="Keyboard Design Part 1 - KiCAD Install"><p>Welcome to the first part in a series on mechanical keyboard design.</p><p>KiCAD is the hobbyist&apos;s greatest weapon in creating bespoke electronics. It is a completely <strong>free</strong> and open-source electronic design automation (EDA) suite. It is available on most commonly used platforms including Windows, Linux, and macOS. </p><p>The process of creating a PCB design in KiCAD involves first creating a schematic to describe the abstract electronic parts of a device (i.e. the individual resistors, capacitors, integrated circuits, etc.) to create a list of &quot;nets&quot; or connections between parts. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="1224" height="868" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image.png 1000w, https://ohmbedded.com/content/images/2023/03/image.png 1224w" sizes="(min-width: 720px) 720px"></figure><p>Here is an example of a schematic for a keyboard using an RP2040 microcontroller. Throughout the series you will learn what <em>every</em> part of the above schematic means. </p><p>This &quot;netlist&quot; is then used to create the physical layout of a PCB.</p><p>The above may sound a bit abstract. Let&apos;s dive into the nitty gritty of PCB design by setting up a stellar KiCAD configuration for mechanical keyboard electronics design.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-1.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="816" height="417" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-1.png 600w, https://ohmbedded.com/content/images/2023/03/image-1.png 816w" sizes="(min-width: 720px) 720px"></figure><p>Start by downloading KiCAD for your specific platform at <a href="https://www.kicad.org/?ref=ohmbedded.com">https://www.kicad.org/</a>. Select the latest stable release. N.B. at the time of writing, the latest stable release is 7.0.1.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-6.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="499" height="388"></figure><p>Start the installer. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-7.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="499" height="388"></figure><p>Be sure to select all libraries offered.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-8.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="499" height="388"></figure><p>Install to the default location.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-10.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="1920" height="1032" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-10.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-10.png 1000w, https://ohmbedded.com/content/images/size/w1600/2023/03/image-10.png 1600w, https://ohmbedded.com/content/images/2023/03/image-10.png 1920w" sizes="(min-width: 720px) 720px"></figure><p>Now launch KiCAD. Open the &quot;Plugin and Content Manager.&quot; Select the &quot;Color themes&quot; tab. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-12.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="926" height="534" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-12.png 600w, https://ohmbedded.com/content/images/2023/03/image-12.png 926w" sizes="(min-width: 720px) 720px"></figure><p><strong>N.B. packages will not install until you have clicked &quot;Apply Pending Changes.&quot; Select the packages you want to install first.</strong></p><p>Select the &quot;wDark Theme&quot; and click &quot;Install&quot; to save your eyesight.</p><p>Next, click the &quot;Manage...&quot; button. You will be greeted with a dialogue that will become familiar once working with symbol/footprint tables. </p><p>For now, copy and paste the following link to add the kicad-jlcpcb-tools plugin repository by <a href="https://github.com/Bouni?ref=ohmbedded.com">Bouni</a>.</p><pre><code class="language-html">https://raw.githubusercontent.com/Bouni/bouni-kicad-repository/main/repository.json</code></pre><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-13.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="931" height="539" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-13.png 600w, https://ohmbedded.com/content/images/2023/03/image-13.png 931w" sizes="(min-width: 720px) 720px"></figure><p>Click &quot;Apply Pending Changes,&quot; select the respository dropdown to switch to Bouni&apos;s repository.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-14.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="926" height="534" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-14.png 600w, https://ohmbedded.com/content/images/2023/03/image-14.png 926w" sizes="(min-width: 720px) 720px"></figure><p>Install KiCAD JLCPCB tools and click &quot;Apply Pending Changes.&quot;</p><p>The final step is to install a very useful KiCAD schematic symbol and footprint library specific to mechanical keyboard development.</p><p>Marbastlib is a mechanical keyboard switch/general part library that I have used for almost every mechanical keyboard I have designed.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/ebastler/marbastlib?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - ebastler/marbastlib: A library collecting MX and Choc style footprints, as well as various other parts used to design custom keyboards</div><div class="kg-bookmark-description">A library collecting MX and Choc style footprints, as well as various other parts used to design custom keyboards - GitHub - ebastler/marbastlib: A library collecting MX and Choc style footprints,&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt="Keyboard Design Part 1 - KiCAD Install"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">ebastler</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/0f16c8b16614e8e6f0e220f186588046db8cd7c15555fff9920448cb93169531/ebastler/marbastlib" alt="Keyboard Design Part 1 - KiCAD Install"></div></a></figure><p>To install, download or clone the above repository. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-17.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="755" height="416" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-17.png 600w, https://ohmbedded.com/content/images/2023/03/image-17.png 755w" sizes="(min-width: 720px) 720px"></figure><p>Next, in KiCAD, click &quot;Preferences&quot; and select &quot;Manage Symbol Libraries...&quot;</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-18.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="1007" height="606" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-18.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-18.png 1000w, https://ohmbedded.com/content/images/2023/03/image-18.png 1007w" sizes="(min-width: 720px) 720px"></figure><p>Copy the three files in the repository ending in &quot;*.kicad_sym&quot; to the default ${KICAD7_SYMBOL_DIR} seen in the Path Substitutions section of the Symbol Libraries table. </p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-19.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="1002" height="578" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-19.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-19.png 1000w, https://ohmbedded.com/content/images/2023/03/image-19.png 1002w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-20.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="944" height="530" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-20.png 600w, https://ohmbedded.com/content/images/2023/03/image-20.png 944w" sizes="(min-width: 720px) 720px"></figure><p>Next click the &quot;Add existing library to table&quot; button and select the three files you just added. Three new rows should be added to your Symbol Libraries table.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-21.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="672" height="355" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-21.png 600w, https://ohmbedded.com/content/images/2023/03/image-21.png 672w"></figure><p>Next, open the &quot;Manage Footprint Libraries...&quot; dialogue from the Preferences dropdown. Much the same process here. Find the ${KICAD7_FOOTPRINT_DIR}, copy over the <strong>folders </strong>this time, and add them to the table. Generally, KiCAD footprint library folders end with &quot;*.pretty&quot; Optionally, copy the &quot;3d&quot; folder to the ${KICAD7_3DMODEL_DIR}.</p><figure class="kg-card kg-image-card"><img src="https://ohmbedded.com/content/images/2023/03/image-22.png" class="kg-image" alt="Keyboard Design Part 1 - KiCAD Install" loading="lazy" width="1010" height="671" srcset="https://ohmbedded.com/content/images/size/w600/2023/03/image-22.png 600w, https://ohmbedded.com/content/images/size/w1000/2023/03/image-22.png 1000w, https://ohmbedded.com/content/images/2023/03/image-22.png 1010w" sizes="(min-width: 720px) 720px"></figure><p>You have now completed setup of KiCAD for mechanical keyboard design! In the next tutorial, we will take a look at the basics of keyboard electronics. </p><p><a href="https://ohmbedded.com/keyboard-design-part-2-pro-micro-based-designs/">Click here for part 2!</a></p><p>For more information and to ask keyboard specific or general electronics questions join our Discord!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://discord.gg/Q8EbKyAjWN?ref=ohmbedded.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Join the Ohmbedded Discord Server!</div><div class="kg-bookmark-description">Check out the Ohmbedded community on Discord - hang out with 1 other members and enjoy free voice and text chat.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://discord.gg/assets/ec2c34cadd4b5f4594415127380a85e6.ico" alt="Keyboard Design Part 1 - KiCAD Install"><span class="kg-bookmark-author">Discord</span></div></div></a></figure>]]></content:encoded></item></channel></rss>