<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>How to Build an Open Source Bluetooth Mechanical Keyboard -- Episode 619</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>How to Build an Open Source Bluetooth Mechanical Keyboard -- Episode 619</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619</link><pubDate>Thu, 07 Sep 2023 23:00:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>Matt</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Current Revision posted to Documents by Matt on 9/7/2023 11:00:00 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem creates a truly unique and open-source wireless keyboard from scratch. He emphasizes the importance of customization for true keyboard enthusiasts. Starting with the choice of mechanical switches, Clem opts for flat low profile KS27 Gateron Blue switches , showcasing his passion for the tactile feedback of mechanical keyboards.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem uses KiCad to design a custom PCB. Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To ensure modularity, Clem integrates a flexible interconnect system between two PCBs, one holding the keyboard switches and the other housing the LiPo charging circuit. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable. The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects. He even offers the option for hot-swappable switches, making it adaptable to various preferences.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW58180384 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt;The keycaps of this keyboard are unique, designed in &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW58180384 BCX0"&gt;FreeCAD&lt;/span&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt; to accommodate the low-profile switches. Clem prints them with raised letters and symbols on the inside for durability and visibility, even after extensive use.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW58180384 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW239598956 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;Finally, Clem dives into the firmware, which he codes from scratch using the Arduino IDE&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;, with the help of the ESP32-BLE keyboard library and the Adafruit keypad library&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;. &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;T&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;he code allows for easy customization of the keyboard layout, &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;providing&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW239598956 BCX0"&gt;a personalized&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; typing experience. He also adds LED indicators for modifier keys, enhancing the user experience.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW239598956 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW236168379 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW236168379 BCX0"&gt;One of the distinctive features of Clem&amp;#39;s keyboard is its low-profile design, akin to laptop keys, resulting in a compact layout of around 60 keys. He also combines elements from both English and German keyboard layouts to suit his daily needs. The keyboard is powered by a LiPo battery with onboard charging circuit.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW236168379 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW260005463 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt;Despite&lt;/span&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt; facing challenges, like voltage drop issues with LEDs, Clem perseveres and successfully creates an open-source Bluetooth keyboard with a custom layout, 3D-printed keycaps, and unique lighting features.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW260005463 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="t"&gt;Download Code, ECAD and CAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-fb62e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fb62e'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1e681" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1e681'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a3ee9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a3ee9'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-02567" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('02567'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-67898" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('67898'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a4ed8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a4ed8'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c8db1" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c8db1'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-2ccc9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('2ccc9'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-75603" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('75603'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-57165" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('57165'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="t"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="t"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="t"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday release, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/13</link><pubDate>Fri, 08 Sep 2023 15:25:32 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>cstanton</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 13 posted to Documents by cstanton on 9/8/2023 3:25:32 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem creates a truly unique and open-source wireless keyboard from scratch. He emphasizes the importance of customization for true keyboard enthusiasts. Starting with the choice of mechanical switches, Clem opts for flat low profile KS27 Gateron Blue switches , showcasing his passion for the tactile feedback of mechanical keyboards.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem uses KiCad to design a custom PCB. Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To ensure modularity, Clem integrates a flexible interconnect system between two PCBs, one holding the keyboard switches and the other housing the LiPo charging circuit. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable. The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects. He even offers the option for hot-swappable switches, making it adaptable to various preferences.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW58180384 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt;The keycaps of this keyboard are unique, designed in &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW58180384 BCX0"&gt;FreeCAD&lt;/span&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt; to accommodate the low-profile switches. Clem prints them with raised letters and symbols on the inside for durability and visibility, even after extensive use.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW58180384 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW239598956 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;Finally, Clem dives into the firmware, which he codes from scratch using the Arduino IDE&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;, with the help of the ESP32-BLE keyboard library and the Adafruit keypad library&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;. &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;T&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;he code allows for easy customization of the keyboard layout, &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;providing&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW239598956 BCX0"&gt;a personalized&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; typing experience. He also adds LED indicators for modifier keys, enhancing the user experience.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW239598956 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW236168379 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW236168379 BCX0"&gt;One of the distinctive features of Clem&amp;#39;s keyboard is its low-profile design, akin to laptop keys, resulting in a compact layout of around 60 keys. He also combines elements from both English and German keyboard layouts to suit his daily needs. The keyboard is powered by a LiPo battery with onboard charging circuit.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW236168379 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW260005463 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt;Despite&lt;/span&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt; facing challenges, like voltage drop issues with LEDs, Clem perseveres and successfully creates an open-source Bluetooth keyboard with a custom layout, 3D-printed keycaps, and unique lighting features.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW260005463 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code, ECAD and CAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-64633" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('64633'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-117c0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('117c0'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5cbbc" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5cbbc'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-de452" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('de452'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-df3d2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('df3d2'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d5274" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d5274'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ebdc1" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ebdc1'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-22175" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('22175'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-aad37" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('aad37'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f9085" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f9085'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday release, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/12</link><pubDate>Fri, 08 Sep 2023 13:49:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 12 posted to Documents by tariq.ahmad on 9/8/2023 1:49:29 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem creates a truly unique and open-source wireless keyboard from scratch. He emphasizes the importance of customization for true keyboard enthusiasts. Starting with the choice of mechanical switches, Clem opts for flat low profile KS27 Gateron Blue switches , showcasing his passion for the tactile feedback of mechanical keyboards.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem uses KiCad to design a custom PCB. Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;To ensure modularity, Clem integrates a flexible interconnect system between two PCBs, one holding the keyboard switches and the other housing the LiPo charging circuit. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable. The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects. He even offers the option for hot-swappable switches, making it adaptable to various preferences.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW58180384 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt;The keycaps of this keyboard are unique, designed in &lt;/span&gt;&lt;span class="NormalTextRun SpellingErrorV2Themed SCXW58180384 BCX0"&gt;FreeCAD&lt;/span&gt;&lt;span class="NormalTextRun SCXW58180384 BCX0"&gt; to accommodate the low-profile switches. Clem prints them with raised letters and symbols on the inside for durability and visibility, even after extensive use.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW58180384 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW239598956 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;Finally, Clem dives into the firmware, which he codes from scratch using the Arduino IDE&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;, with the help of the ESP32-BLE keyboard library and the Adafruit keypad library&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;. &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;T&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;he code allows for easy customization of the keyboard layout, &lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt;providing&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; &lt;/span&gt;&lt;span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW239598956 BCX0"&gt;a personalized&lt;/span&gt;&lt;span class="NormalTextRun SCXW239598956 BCX0"&gt; typing experience. He also adds LED indicators for modifier keys, enhancing the user experience.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW239598956 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW236168379 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW236168379 BCX0"&gt;One of the distinctive features of Clem&amp;#39;s keyboard is its low-profile design, akin to laptop keys, resulting in a compact layout of around 60 keys. He also combines elements from both English and German keyboard layouts to suit his daily needs. The keyboard is powered by a LiPo battery with onboard charging circuit.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW236168379 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="TextRun SCXW260005463 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt;Despite&lt;/span&gt;&lt;span class="NormalTextRun SCXW260005463 BCX0"&gt; facing challenges, like voltage drop issues with LEDs, Clem perseveres and successfully creates an open-source Bluetooth keyboard with a custom layout, 3D-printed keycaps, and unique lighting features.&lt;/span&gt;&lt;/span&gt;&lt;span class="EOP SCXW260005463 BCX0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-bd148" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('bd148'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c0303" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c0303'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-52dff" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('52dff'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-89669" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('89669'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c8300" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c8300'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-39884" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('39884'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-80ee3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('80ee3'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-03544" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('03544'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1e691" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1e691'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-aaf7b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('aaf7b'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday release, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/11</link><pubDate>Fri, 08 Sep 2023 13:39:17 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>pchan</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 11 posted to Documents by pchan on 9/8/2023 1:39:17 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem embarks on a captivating journey to craft an open-source Bluetooth keyboard entirely from the ground up, showcasing his passion for keyboard customization. Starting with the choice of clicky mechanical switches and a low-profile design, Clem combines elements from both English and German layouts to create a compact and highly personalized keyboard. He meticulously designs a custom PCB, integrating an ESP32 S3 microcontroller for wireless connectivity, and delves into coding the firmware from scratch. The uniqueness of his creation extends to 3D-printed keycaps with raised, durable symbols on the inside, ensuring a lasting, tailored typing experience. Despite encountering technical challenges, Clem&amp;#39;s determination prevails, resulting in an open-source Bluetooth keyboard with a distinctive layout and innovative features, ready for fellow enthusiasts to explore.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Keyboards. An everyday item for the average computer user and praised possession for the enthusiast.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Building a mechanical keyboard from a kit is a very popular project.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;As Clem spends most of his time in front of his PC, he is an avid user of mechanical keyboards, but not an enthusiast, so his daily driver can be described as the &amp;quot;cheapest thing that has mechanical switches&amp;ldquo;.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Since he coined the phrase &amp;bdquo;there should be an open-source variant of everything&amp;ldquo;, a keyboard went on the list. But not a normal one.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The only way to build such a monstrosity is to start from scratch and even write the firmware from scratch.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. The two are perfect for side-by-side usage on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact&amp;nbsp;ortholinear&amp;nbsp;layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard.&amp;nbsp;The two&amp;nbsp;are perfect for&amp;nbsp;side-by-side&amp;nbsp;usage&amp;nbsp;on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth&amp;nbsp;connectivity is achieved by&amp;nbsp;utilizing&amp;nbsp;an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs&amp;nbsp;provide&amp;nbsp;feedback about the current state of the Keyboard and visually&amp;nbsp;indicate&amp;nbsp;if SHIFT-Alt/AltGr&amp;nbsp;or SUPER/FN/GUI are pressed.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A BLE Keyboard on a cord does not make much sense, so Clem made a second PCB bringing the aforementioned modularity into play.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The second PCB fits right above the uppermost row of keys; it has a convenient copperless window which is illuminated by the LEDs on the main PCB, a LiPo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This allows for variable heights and tolerates slight misalignments.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects (foreshadowing) *wink *wink.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The whole layout was done in KiCad and features hot-swappable Keyboard switches.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The flat low profile KS27 Gateron Blue switches were chosen for clickiness (and availability). The footprints should also fit the sockets of other brands and/or switches, but they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before committing to a particular model. All PCBs were manufactured by Aisler with ENIG finish, and had to be assembled with a hot air gun and soldering iron, as the PCB was too big to fit in Clem&amp;rsquo;s reflow oven.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Of course, for such a weird keyboard, there are no ready-made injection-molded keycaps available.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Blank keycaps would also make the board unusable to Clem, as he actually looks down a lot while typing to find the right keys. The only choice was to design and 3D-print custom keycaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem designed his set of keycaps in FreeCAD and utilizes the ShapeString function of the Draft workbench to make easy modifications to the writing for each key.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;He also extrudes the writing to the inside of each keycap and paints the letter with a permanent marker.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This results in a flat keycap without any raised portions that can be printed very quickly while laying flat on the bed of a resin printer. &amp;nbsp;The lettering will never rub off, because it never actually comes in contact with the fingers. Of course, this only works with transparent keycaps, so Clem prints them with his super durable MAYER MAKES Engineering Resin.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The full keyset and the source files are available for download and are easily customized (as demonstrated in the video).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware was written in Arduino with the&amp;nbsp;help of the ESP32-BLE&amp;nbsp;keyboard&amp;nbsp;library and the Adafruit keypad library.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To get the BLE keyboard output working on the ESP32-S3,&amp;nbsp;Clem&amp;nbsp;was required&amp;nbsp;to enable NIMBLE in the&amp;nbsp;librariess&amp;nbsp;files and install the NIMBLE library. These changes enable&amp;nbsp;more efficient usage of the memory of the&amp;nbsp;ESP32-S3 and should&amp;nbsp;in theory also&amp;nbsp;make the&amp;nbsp;library work on the ESP32&amp;nbsp;S2 and C3.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware first tries to&amp;nbsp;identify&amp;nbsp;which layer the user is trying to use and then sends the&amp;nbsp;corresponding&amp;nbsp;key of the active layer. It took a lot of shuffling around&amp;nbsp;with&amp;nbsp;the code until the&amp;nbsp;output&amp;nbsp;was snappy enough for real keyboard usage.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Additionally,&amp;nbsp;a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to&amp;nbsp;identify&amp;nbsp;any mishaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem also designed a backshell for the keyboard., &amp;nbsp;The original intention was to mill it from aluminum, but this could not be done in time for the video release. He 3D-printed a shell in PETG; however, it turned out that the keyboard with the secondary PCB-mounted LiPo was so stiff and sturdy that a back shell is not really necessary, though would be a nice upgrade.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;At 15mm total thickness, this also might be one of the flattest DIY mechanical keyboards out there.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-772a3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('772a3'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-72e65" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('72e65'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f853b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f853b'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-46e53" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('46e53'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0e507" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0e507'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3da8b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3da8b'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f2b54" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f2b54'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-39caa" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('39caa'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4d853" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4d853'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-6ae7e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('6ae7e'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday release, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/9</link><pubDate>Thu, 07 Sep 2023 18:53:14 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 9 posted to Documents by tariq.ahmad on 9/7/2023 6:53:14 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem embarks on a captivating journey to craft an open-source Bluetooth keyboard entirely from the ground up, showcasing his passion for keyboard customization. Starting with the choice of clicky mechanical switches and a low-profile design, Clem combines elements from both English and German layouts to create a compact and highly personalized keyboard. He meticulously designs a custom PCB, integrating an ESP32 S3 microcontroller for wireless connectivity, and delves into coding the firmware from scratch. The uniqueness of his creation extends to 3D-printed keycaps with raised, durable symbols on the inside, ensuring a lasting, tailored typing experience. Despite encountering technical challenges, Clem&amp;#39;s determination prevails, resulting in an open-source Bluetooth keyboard with a distinctive layout and innovative features, ready for fellow enthusiasts to explore.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Keyboards. An everyday item for the average computer user and praised possession for the enthusiast.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Building a mechanical keyboard from a kit is a very popular project.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;As Clem spends most of his time in front of his PC, he is an avid user of mechanical keyboards, but not an enthusiast, so his daily driver can be described as the &amp;quot;cheapest thing that has mechanical switches&amp;ldquo;.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Since he coined the phrase &amp;bdquo;there should be an open-source variant of everything&amp;ldquo;, a keyboard went on the list. But not a normal one.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The only way to build such a monstrosity is to start from scratch and even write the firmware from scratch.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. The two are perfect for side-by-side usage on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact&amp;nbsp;ortholinear&amp;nbsp;layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard.&amp;nbsp;The two&amp;nbsp;are perfect for&amp;nbsp;side-by-side&amp;nbsp;usage&amp;nbsp;on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth&amp;nbsp;connectivity is achieved by&amp;nbsp;utilizing&amp;nbsp;an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs&amp;nbsp;provide&amp;nbsp;feedback about the current state of the Keyboard and visually&amp;nbsp;indicate&amp;nbsp;if SHIFT-Alt/AltGr&amp;nbsp;or SUPER/FN/GUI are pressed.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A BLE Keyboard on a cord does not make much sense, so Clem made a second PCB bringing the aforementioned modularity into play.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The second PCB fits right above the uppermost row of keys; it has a convenient copperless window which is illuminated by the LEDs on the main PCB, a LiPo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This allows for variable heights and tolerates slight misalignments.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects (foreshadowing) *wink *wink.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The whole layout was done in KiCad and features hot-swappable Keyboard switches.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The flat low profile KS27 Gateron Blue switches were chosen for clickiness (and availability). The footprints should also fit the sockets of other brands and/or switches, but they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before committing to a particular model. All PCBs were manufactured by Aisler with ENIG finish, and had to be assembled with a hot air gun and soldering iron, as the PCB was too big to fit in Clem&amp;rsquo;s reflow oven.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Of course, for such a weird keyboard, there are no ready-made injection-molded keycaps available.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Blank keycaps would also make the board unusable to Clem, as he actually looks down a lot while typing to find the right keys. The only choice was to design and 3D-print custom keycaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem designed his set of keycaps in FreeCAD and utilizes the ShapeString function of the Draft workbench to make easy modifications to the writing for each key.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;He also extrudes the writing to the inside of each keycap and paints the letter with a permanent marker.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This results in a flat keycap without any raised portions that can be printed very quickly while laying flat on the bed of a resin printer. &amp;nbsp;The lettering will never rub off, because it never actually comes in contact with the fingers. Of course, this only works with transparent keycaps, so Clem prints them with his super durable MAYER MAKES Engineering Resin.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The full keyset and the source files are available for download and are easily customized (as demonstrated in the video).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware was written in Arduino with the&amp;nbsp;help of the ESP32-BLE&amp;nbsp;keyboard&amp;nbsp;library and the Adafruit keypad library.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To get the BLE keyboard output working on the ESP32-S3,&amp;nbsp;Clem&amp;nbsp;was required&amp;nbsp;to enable NIMBLE in the&amp;nbsp;librariess&amp;nbsp;files and install the NIMBLE library. These changes enable&amp;nbsp;more efficient usage of the memory of the&amp;nbsp;ESP32-S3 and should&amp;nbsp;in theory also&amp;nbsp;make the&amp;nbsp;library work on the ESP32&amp;nbsp;S2 and C3.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware first tries to&amp;nbsp;identify&amp;nbsp;which layer the user is trying to use and then sends the&amp;nbsp;corresponding&amp;nbsp;key of the active layer. It took a lot of shuffling around&amp;nbsp;with&amp;nbsp;the code until the&amp;nbsp;output&amp;nbsp;was snappy enough for real keyboard usage.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Additionally,&amp;nbsp;a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to&amp;nbsp;identify&amp;nbsp;any mishaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem also designed a backshell for the keyboard., &amp;nbsp;The original intention was to mill it from aluminum, but this could not be done in time for the video release. He 3D-printed a shell in PETG; however, it turned out that the keyboard with the secondary PCB-mounted LiPo was so stiff and sturdy that a back shell is not really necessary, though would be a nice upgrade.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;At 15mm total thickness, this also might be one of the flattest DIY mechanical keyboards out there.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-059bc" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('059bc'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-deef6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('deef6'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-adc76" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('adc76'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3ce0b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3ce0b'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0bbd0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0bbd0'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-139e3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('139e3'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f9722" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f9722'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8ebdc" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8ebdc'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-73d78" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('73d78'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-752bf" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('752bf'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/10</link><pubDate>Thu, 07 Sep 2023 18:53:14 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>pchan</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 10 posted to Documents by pchan on 9/7/2023 6:53:14 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem embarks on a captivating journey to craft an open-source Bluetooth keyboard entirely from the ground up, showcasing his passion for keyboard customization. Starting with the choice of clicky mechanical switches and a low-profile design, Clem combines elements from both English and German layouts to create a compact and highly personalized keyboard. He meticulously designs a custom PCB, integrating an ESP32 S3 microcontroller for wireless connectivity, and delves into coding the firmware from scratch. The uniqueness of his creation extends to 3D-printed keycaps with raised, durable symbols on the inside, ensuring a lasting, tailored typing experience. Despite encountering technical challenges, Clem&amp;#39;s determination prevails, resulting in an open-source Bluetooth keyboard with a distinctive layout and innovative features, ready for fellow enthusiasts to explore.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Keyboards. An everyday item for the average computer user and praised possession for the enthusiast.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Building a mechanical keyboard from a kit is a very popular project.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;As Clem spends most of his time in front of his PC, he is an avid user of mechanical keyboards, but not an enthusiast, so his daily driver can be described as the &amp;quot;cheapest thing that has mechanical switches&amp;ldquo;.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Since he coined the phrase &amp;bdquo;there should be an open-source variant of everything&amp;ldquo;, a keyboard went on the list. But not a normal one.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The only way to build such a monstrosity is to start from scratch and even write the firmware from scratch.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. The two are perfect for side-by-side usage on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth connectivity is achieved by utilizing an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs provide feedback about the current state of the Keyboard and visually indicate if SHIFT-Alt/AltGr or SUPER/FN/GUI are pressed. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Clem decided on a 60-button compact&amp;nbsp;ortholinear&amp;nbsp;layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard.&amp;nbsp;The two&amp;nbsp;are perfect for&amp;nbsp;side-by-side&amp;nbsp;usage&amp;nbsp;on his editing workstation.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Bluetooth&amp;nbsp;connectivity is achieved by&amp;nbsp;utilizing&amp;nbsp;an ESP32-S3 as the main MCU. USB-C acts as the charging port and Serial output.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;4 colorful LEDs&amp;nbsp;provide&amp;nbsp;feedback about the current state of the Keyboard and visually&amp;nbsp;indicate&amp;nbsp;if SHIFT-Alt/AltGr&amp;nbsp;or SUPER/FN/GUI are pressed.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The keyboard therefore has 4 freely programmable layers available for heavy customization.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;A BLE Keyboard on a cord does not make much sense, so Clem made a second PCB bringing the aforementioned modularity into play.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The second PCB fits right above the uppermost row of keys; it has a convenient copperless window which is illuminated by the LEDs on the main PCB, a LiPo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus, broken out on a Molex Premo-Flex connector and connected with a simple flat flex ribbon cable.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This allows for variable heights and tolerates slight misalignments.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The Premo-Flex connectors break out all power traces and UART connections so the keyboard can easily be used in future projects (foreshadowing) *wink *wink.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The whole layout was done in KiCad and features hot-swappable Keyboard switches.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The flat low profile KS27 Gateron Blue switches were chosen for clickiness (and availability). The footprints should also fit the sockets of other brands and/or switches, but they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before committing to a particular model. All PCBs were manufactured by Aisler with ENIG finish, and had to be assembled with a hot air gun and soldering iron, as the PCB was too big to fit in Clem&amp;rsquo;s reflow oven.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;Of course, for such a weird keyboard, there are no ready-made injection-molded keycaps available.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Blank keycaps would also make the board unusable to Clem, as he actually looks down a lot while typing to find the right keys. The only choice was to design and 3D-print custom keycaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem designed his set of keycaps in FreeCAD and utilizes the ShapeString function of the Draft workbench to make easy modifications to the writing for each key.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;He also extrudes the writing to the inside of each keycap and paints the letter with a permanent marker.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;This results in a flat keycap without any raised portions that can be printed very quickly while laying flat on the bed of a resin printer. &amp;nbsp;The lettering will never rub off, because it never actually comes in contact with the fingers. Of course, this only works with transparent keycaps, so Clem prints them with his super durable MAYER MAKES Engineering Resin.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The full keyset and the source files are available for download and are easily customized (as demonstrated in the video).&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware was written in Arduino with the&amp;nbsp;help of the ESP32-BLE&amp;nbsp;keyboard&amp;nbsp;library and the Adafruit keypad library.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;To get the BLE keyboard output working on the ESP32-S3,&amp;nbsp;Clem&amp;nbsp;was required&amp;nbsp;to enable NIMBLE in the&amp;nbsp;librariess&amp;nbsp;files and install the NIMBLE library. These changes enable&amp;nbsp;more efficient usage of the memory of the&amp;nbsp;ESP32-S3 and should&amp;nbsp;in theory also&amp;nbsp;make the&amp;nbsp;library work on the ESP32&amp;nbsp;S2 and C3.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;The&amp;nbsp;firmware first tries to&amp;nbsp;identify&amp;nbsp;which layer the user is trying to use and then sends the&amp;nbsp;corresponding&amp;nbsp;key of the active layer. It took a lot of shuffling around&amp;nbsp;with&amp;nbsp;the code until the&amp;nbsp;output&amp;nbsp;was snappy enough for real keyboard usage.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Additionally,&amp;nbsp;a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to&amp;nbsp;identify&amp;nbsp;any mishaps.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-03-81/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;Clem also designed a backshell for the keyboard., &amp;nbsp;The original intention was to mill it from aluminum, but this could not be done in time for the video release. He 3D-printed a shell in PETG; however, it turned out that the keyboard with the secondary PCB-mounted LiPo was so stiff and sturdy that a back shell is not really necessary, though would be a nice upgrade.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span data-contrast="auto"&gt;At 15mm total thickness, this also might be one of the flattest DIY mechanical keyboards out there.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-b1c9a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b1c9a'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f5297" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f5297'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8bab5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8bab5'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d81a4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d81a4'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1c227" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1c227'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b2a71" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b2a71'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-e2f8f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e2f8f'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-26ea9" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('26ea9'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-035ee" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('035ee'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-2e62c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('2e62c'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/8</link><pubDate>Thu, 07 Sep 2023 16:28:20 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 8 posted to Documents by tariq.ahmad on 9/7/2023 4:28:20 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem embarks on a captivating journey to craft an open-source Bluetooth keyboard entirely from the ground up, showcasing his passion for keyboard customization. Starting with the choice of clicky mechanical switches and a low-profile design, Clem combines elements from both English and German layouts to create a compact and highly personalized keyboard. He meticulously designs a custom PCB, integrating an ESP32 S3 microcontroller for wireless connectivity, and delves into coding the firmware from scratch. The uniqueness of his creation extends to 3D-printed keycaps with raised, durable symbols on the inside, ensuring a lasting, tailored typing experience. Despite encountering technical challenges, Clem&amp;#39;s determination prevails, resulting in an open-source Bluetooth keyboard with a distinctive layout and innovative features, ready for fellow enthusiasts to explore.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-704ee" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('704ee'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-699ee" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('699ee'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d551c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d551c'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d8802" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d8802'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0f8d4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0f8d4'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-11d04" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('11d04'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fd213" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fd213'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fef3c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fef3c'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-8a37a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('8a37a'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4a417" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4a417'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Low-profile keyboard, firmware development, Personalized typing experience, no qmk, keyboard, Keycap customization, ESP32 S3 microcontroller, Wireless keyboard project, Maker's journey, 3D-printed keycaps, Keyboard layout customization, diy bluetooth keyboard, Mechanical switches, Electronics project tutorial, DIY form scratch, mechanical keyboard, mechanical keyboard diy, DIY keyboard, Custom PCB design, friday_release, eps32s3, Open-source Bluetooth keyboard, Keyboard enthusiast, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/7</link><pubDate>Thu, 07 Sep 2023 16:23:30 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 7 posted to Documents by tariq.ahmad on 9/7/2023 4:23:30 PM&lt;br /&gt;
&lt;p&gt;In this video, Clem embarks on a captivating journey to craft an open-source Bluetooth keyboard entirely from the ground up, showcasing his passion for keyboard customization. Starting with the choice of clicky mechanical switches and a low-profile design, Clem combines elements from both English and German layouts to create a compact and highly personalized keyboard. He meticulously designs a custom PCB, integrating an ESP32 S3 microcontroller for wireless connectivity, and delves into coding the firmware from scratch. The uniqueness of his creation extends to 3D-printed keycaps with raised, durable symbols on the inside, ensuring a lasting, tailored typing experience. Despite encountering technical challenges, Clem&amp;#39;s determination prevails, resulting in an open-source Bluetooth keyboard with a distinctive layout and innovative features, ready for fellow enthusiasts to explore.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h22m40s788.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m08s210.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m38s430.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" alt="image" style="max-height:360px;max-width:640px;"  src="/resized-image/__size/1280x720/__key/communityserver-wikis-components-files/00-00-00-04-35/vlcsnap_2D00_2023_2D00_09_2D00_07_2D00_10h23m45s513.png" /&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9o732av3"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751365112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-08418" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('08418'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-e0a3d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e0a3d'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-47ac6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('47ac6'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c89ed" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c89ed'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-41f9d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('41f9d'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c85d8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c85d8'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1a47f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1a47f'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-23428" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('23428'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b98e2" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b98e2'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-3396e" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('3396e'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img loading="lazy" alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/6</link><pubDate>Thu, 07 Sep 2023 16:16:06 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 6 posted to Documents by tariq.ahmad on 9/7/2023 4:16:06 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-84229" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('84229'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-2849d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('2849d'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-121b8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('121b8'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-037ea" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('037ea'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7b03a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7b03a'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-716f4" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('716f4'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-15886" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('15886'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f1219" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f1219'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ca2f5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ca2f5'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-38742" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('38742'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background:#ffffff;border:1px solid #dadada;margin:0;padding:14px 16px 16px 18px;vertical-align:top;"&gt;
&lt;div style="display:inline-block;float:left;padding:0px 25px 8px 0px;"&gt;&lt;a href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;&lt;img alt="element14 presents" src="/e14/assets/legacy/2018/e14PresentsJune818.png" width="180px" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;/div&gt;
&lt;div style="display:inline-block;vertical-align:top;width:70%;"&gt;&lt;br /&gt;
&lt;p style="margin:0;"&gt;&lt;span&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/" data-e14adj="y"&gt;element14 presents&lt;/a&gt;&lt;/span&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/vcp-program/w/documents/3692/vcp-biography-clem" data-e14adj="y"&gt;About Clem&lt;/a&gt;&amp;nbsp; &lt;strong&gt;|&lt;/strong&gt;&amp;nbsp; &lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/project-videos/" data-e14adj="y"&gt;Project Videos&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/5</link><pubDate>Thu, 07 Sep 2023 16:02:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 5 posted to Documents by tariq.ahmad on 9/7/2023 4:02:42 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336751261112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-84b38" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('84b38'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d68e1" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d68e1'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0c62a" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0c62a'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-e76eb" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e76eb'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7f458" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7f458'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a4138" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a4138'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b7324" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b7324'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c2a9f" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c2a9f'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-64598" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('64598'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-18a23" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('18a23'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build an Open Source Bluetooth Mechanical Keyboard</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/4</link><pubDate>Thu, 07 Sep 2023 15:58:54 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 4 posted to Documents by tariq.ahmad on 9/7/2023 3:58:54 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://players.brightcove.net/1362235890001/default_default/index.html?videoId=6336749661112"&gt;players.brightcove.net/.../index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-d64f5" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d64f5'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4ae3c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4ae3c'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ed19b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ed19b'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-e4bea" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e4bea'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ad7b8" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ad7b8'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-7d90c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('7d90c'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-1fba7" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('1fba7'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9d541" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9d541'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-67658" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('67658'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-34216" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('34216'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build a BLE Mechanical Keyboard from Scratch</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/3</link><pubDate>Wed, 06 Sep 2023 21:23:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 3 posted to Documents by tariq.ahmad on 9/6/2023 9:23:25 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/challenges-projects/element14-presents/secret-element14-presents/m/files/148196" data-e14adj="y"&gt;Download Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-90861" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('90861'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-0be8d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('0be8d'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-addff" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('addff'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-4b30d" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('4b30d'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-f2a85" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('f2a85'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-dbfad" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('dbfad'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5e2cd" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5e2cd'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-92515" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('92515'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a2cd3" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a2cd3'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-cc169" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('cc169'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build a BLE Mechanical Keyboard from Scratch</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/2</link><pubDate>Wed, 06 Sep 2023 21:19:47 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 2 posted to Documents by tariq.ahmad on 9/6/2023 9:19:47 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" data-e14adj="y" rel="noopener noreferrer nofollow" target="_blank"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download Code&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-922ed" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('922ed'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-9964b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('9964b'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-cb545" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('cb545'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-21416" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('21416'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-ce50b" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('ce50b'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-25610" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('25610'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-5b445" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('5b445'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-584f6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('584f6'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-fdf45" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('fdf45'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-b0d25" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('b0d25'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: no qmk, keyboard, diy bluetooth keyboard, DIY form scratch, mechanical keyboard, mechanical keyboard diy, friday_release, eps32s3, keyboard firmware, e14p_CMM&lt;/div&gt;
</description></item><item><title>Episode 619:  How to Build a BLE Mechanical Keyboard from Scratch</title><link>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619/revision/1</link><pubDate>Wed, 06 Sep 2023 21:05:10 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:36cabc80-5e47-4066-a8c9-3f09c4e3e4d2</guid><dc:creator>tariq.ahmad</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/project-videos/w/documents/28316/how-to-build-an-open-source-bluetooth-mechanical-keyboard----episode-619#comments</comments><description>Revision 1 posted to Documents by tariq.ahmad on 9/6/2023 9:05:10 PM&lt;br /&gt;
&lt;p&gt;Keyboards. Everyday item for the average computer user and prized possession of the enthusiast. Building a mechanical keyboard from a kit is a very popular project.&amp;nbsp; As Clem spends most of his time in front of his PC, he is of course an avid user of mechanical keyboards, but not an enthusiast in that sense.&amp;nbsp; So his daily driver can be described as the &amp;quot;cheapest thing that had mechanical switches&amp;ldquo;.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4decn0"&gt;Watch the Video:&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-4tss7pzekc"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since he coined his phrase of &amp;quot;there should be an open source variant of everything&amp;ldquo; a keyboard went on the list. But not a normal one. An ortholinear, Bluetooth connected, modular keyboard with a weird mashup of keys comprised of US style QWERTY and German QWERTZ layout. The only way to build such a monstrosity is to start from scratch, even writing the firmware form scratch.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Clem decided on a 60 Button compact ortholinear layout, coincidentally the exact same size as the Blackmagic Speed Editor keyboard. So they are perfect for usage side by side on his editing workstation.&lt;/p&gt;
&lt;p&gt;The Bluetooth connectivity is achieved by utilizing an ESP32S3 as the main MCU. USB-C acts as the charging port and Serial output. 4 colorful Leds provide feedback about the current state of the Keyboard and visually indicate if SHIFT. ALT /ALTGR or SUPER/FN/GUI are pressed. The Keyboard therefore has 4 freely programmable layers available for heavy customization. A BLE Keyboard on a cord does not make much sense, So Clem made a second PCB bringing the afformentioned modularity into play. The second PCB fits right above the uppermost row of keys, it has a convenient copperless window which is iluminated by the Leds on the main pcb, a lipo with its specific charging and protection circuitry and LDO. Both PCBs are interconnected via a universal bus broken out on&amp;nbsp; a Molex premo flex connector and connected with a simple flat flex ribbon cable. This allows for varaible heights and tolerates slight missalignments. The Premo flex connectors break out all power traces, and UART connections so the keyboard could easily be used in future projects (foreshadowing) *wink *wink. The whole layout was done in Kicad and features hot swappable Keyboard switches. The flat low profile KS27 Gateron Blue switches were choosen for clickyness and simply availability, while the footprints should also fit other brands sockets and/or switches, they have not been tested yet. Builders should print out the board files to check if the holes line up for the chosen switches before comitting to a particular model. All pcbs were manufactured by Aisler with ENIG finish and had to be assembled with a hot air gun and soldering Iron as the PCB is to big to fit in Clems reflow oven. Of course for such a weird keyboard there are no ready made injection molded keycaps available. And blank keycaps would make the board unusable to Clem as he actually looks down a lot while typing to find the right keys. So the only choice is to design and 3d print custom keycaps. Clem designed his set of keycaps in Freecad and utilizes the Shapestring&amp;nbsp; function of the Dreft workbench to make easy modifications to the writing for each key. He also extrudes the writing to the inside of each keycap and paints the letter with permanent marker. This results in a flat keycap without any raised portions that can be printed super fast laying flat on the bed of a resin printer, and the lettering can never rub of as it is actually never touched by the fingers. But of course this only works with transparent keycaps, so Clem naturally prints them in his super durable MAYER MAKES Engineering Resin. The full key set is an the source files are available for download and allow for easy customization as demonstrated in the video. The Firmware was written in Arduino with the Help of the ESP32-BLE Keyboard Library and the Adafruit keypad library. To get the BLE keyboard output working on the ESP32S3 Clem had to enable NIMBLE in the librarys files and install the NIMBLE library in adition. These changes enable a more efficient usage of the memory of the esp32s3 and should also make this library work on the Esp32s2 and C3 in theory. The Firmware first tries to identify which layer the user is trying to use and then sends the correspondingg key of the active layer. It took a lot of shuffling around the code until the out put was snappy enough for real keyboard usage. Also a DEBUG option can be enabled that outputs the KEYCODE of each pressed key via USB-Serial to identify any mishaps. Clem designed a backshell for the keyboard , it was intended to be milled from aluminium but that could not be done in time for the video release. He 3d printed a shell in PETG, but it turns out the keyboard with the secondary Lipo pcb mounted is so stiff and sturdy that a back shell is not really needed, but would be a nice upgrade. At 15mm total thickness, this also might be one of the flattest diy mechanical keyboards out there.&lt;/p&gt;
&lt;h2 id="mcetoc_1h9m4kr1s1"&gt;Bonus Content:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&lt;a class="OWAAutoLink" href="https://github.com/mayermakes/00Keyboard" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="y"&gt;https://github.com/mayermakes/00Keyboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1h9m4l7im2"&gt;Bill of Material:&lt;/h2&gt;
&lt;h3 id="mcetoc_1h9m4lrvt3"&gt;&lt;/h3&gt;
&lt;table class="e14-product-bom-main"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Product Name&lt;/th&gt;
&lt;th&gt;Manufacturer&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;&lt;a id="e14-product-link-e1ef0" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900&amp;nsku=86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_BUY_KIT" class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('e1ef0'));" data-farnell="2073345~60,2807975~60,2524076,1269406,1079969,2096091,2361291,9786120,2786900" data-newark="86T3500~60,43AC9107~60,43AC9107,26M4748,99K1328,92T1549,12X8908,98K9765,NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Kit&lt;/a&gt; &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MULTICOMP PRO Zero Ohm Resistor, Jumper, 0603 [1608 Metric], Thick Film, 100 mW, 1 A, Surface Mount Device&lt;/td&gt;
&lt;td&gt;Multicomp pro&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c29fa" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2073345&amp;nsku=86T3500&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c29fa'));" data-farnell="2073345" data-newark="86T3500" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOURNS Small Signal Schottky Diode, Single, 40 V, 300 mA, 500 mV, 2 A, 125 &amp;deg;C&lt;/td&gt;
&lt;td&gt;BOURNS&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-a3d0c" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2807975&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('a3d0c'));" data-farnell="2807975" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX USB Connector, USB Type C, USB 3.1, Receptacle, 24 Ways, Surface Mount, Right Angle&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-36823" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2524076&amp;nsku=43AC9107&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('36823'));" data-farnell="2524076" data-newark="43AC9107" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;STMICROELECTRONICS ESD Protection Device, 17 V, SOT-23, 6 Pins, USBLC&lt;/td&gt;
&lt;td&gt;STMICROELECTRONICS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-68655" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1269406&amp;nsku=26M4748&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('68655'));" data-farnell="1269406" data-newark="26M4748" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 6 &amp;quot;, 152 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-57882" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=1079969&amp;nsku=99K1328&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('57882'));" data-farnell="1079969" data-newark="99K1328" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Cable, Premo Flex Jumper, 10 Core, 1 mm, Same Sided Contacts, 2 &amp;quot;, 51 mm, White&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-c3d28" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2096091&amp;nsku=92T1549&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('c3d28'));" data-farnell="2096091" data-newark="92T1549" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, 1 mm, 10 Contacts, Receptacle, Easy-On 52207, Surface Mount, Top&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-d8b03" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2361291&amp;nsku=12X8908&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('d8b03'));" data-farnell="2361291" data-newark="12X8908" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MOLEX FFC / FPC Board Connector, ZIF, 1 mm, 10 Contacts, Receptacle, Easy-On 52271, Surface Mount, Bottom&lt;/td&gt;
&lt;td&gt;MOLEX&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-efb27" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=9786120&amp;nsku=98K9765&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('efb27'));" data-farnell="9786120" data-newark="98K9765" data-comoverride="" data-cmpoverride="" data-cpc="" data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIKROELEKTRONIKA Rechargeable Battery, 3.7 V, Lithium Polymer, 2 Ah, JST&lt;/td&gt;
&lt;td&gt;MIKROELEKTRONIKA&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a id="e14-product-link-829e6" data-at-areainteracted="rte-content" data-at-type="click" data-at-link-type="button" href="https://referral.element14.com/OrderCodeView?fsku=2786900&amp;nsku=NA&amp;COM=e14c-noscript&amp;CMP=e14c-noscript&amp;osetc=e14-noscript-tracking-loss" data-at-label="PRODUCT_POPUP_OPEN"class="e14-embedded e14_shopping-cart-far e14-button" onclick="event.preventDefault();e14.func.displayProduct(e14.meta.user.country, this, 'embedded-link', e14.func.getProductLinkJSON('829e6'));" data-farnell="2786900" data-newark="NA" data-comoverride="" data-cmpoverride="" data-cpc="I used a salvaged one but this one is similar." data-avnetemea="" data-avnetema="" data-avnetasia="" &gt;Buy Now&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="xs-hide"&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1h9m4m7t54"&gt;Additional Parts:&lt;/h2&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ESP32-S3-Wroom1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keycaps 3d printed with MAYER MAKES ENGINEERING RESIN + Blue Dye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PCB provided by Aisler.net use code &amp;bdquo;thanks_mayermakes_23&amp;ldquo; for a discount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switches used are Gateron Blue KS27,&amp;nbsp; sockets are random parts i found by searching for the switches.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>