<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>The Monticello Drive</title>
  <link href="http://whatthefuck.computer/my/atreoid"/>
  <link rel="self" href="http://whatthefuck.computer/my/atreoid.xml"/>
  <updated>2024-08-08T16:20:00Z</updated>
  <author>
    <name>Ryan Rix &lt;garden@whatthefuck.computer&gt;</name>
  </author>
  <id>http://whatthefuck.computer/my/atreoid</id>
    <entry>
    <title>Revision 1.1 of the Monticello Drive is a successful build</title>
    <link href="http://whatthefuck.computer/my/atreoid#20240808T161147.864698"/>
    <id>urn:uid:20240808T161147.864698</id>
    <published>2024-08-08T16:20:00Z</published>
    <updated>2024-08-08T16:20:00Z</updated>
    <content type="html">&lt;article&gt;&lt;h2 id=&quot;20240808T161147.864698&quot;&gt;Revision 1.1 of the Monticello Drive is a successful build       &lt;/h2&gt;&lt;p&gt;After my last update, I spent some time making two revisions of the PCB which I ordered from &lt;a href=&quot;//www.pcbway.com/&quot;&gt;PCBWay&lt;/a&gt;. They have a nice efficient system and some good guidance on their documentation site on the design considerations and kicad configuration/etc you need to properly export to their platform.
&lt;/p&gt;&lt;p&gt;Revision 1.0 was a good first approximation of what a keyboard needed, but had some issues that I needed to rectify. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/arcology/attachment/dca6bce9f88bc034a9883c0366144918f3757669e693fb259e62e99a8b29e592-2160.png/html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/attachment/dca6bce9f88bc034a9883c0366144918f3757669e693fb259e62e99a8b29e592-1080.png&quot; alt=&quot;2025-07-07_22-01-48_dca6bce9f88bc034a9883c0366144918f3757669e693fb259e62e99a8b29e592.png&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;In the first revision the OLED hookup is placed incorrectly, and the battery circuit did not include a switch. I left some drawings on the board to estimate where the trackpoint could go in the future but did not have any slots cut in to it or anything like that. I had to scrap some other keyboards for projects, i need to order some parts from boardsource or someone to rebuild them, but this was a nice quick prototype to show that the PCB design was feasible.
&lt;/p&gt;&lt;p&gt;I took that and quickly iterated on 1.1, re-generating the board with a smoother rounded plate outline, integrated switch and battery circuit, a better OLED layout, etc. Using Ergogen it&amp;#39;s also possible to generate STL case files for 3D Printing.
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/arcology/attachment/de3d95802423086e14a067660060d63485575a43ab54626fdfd8be096e5db04d-2160.jpg/html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/attachment/de3d95802423086e14a067660060d63485575a43ab54626fdfd8be096e5db04d-1080.jpg&quot; alt=&quot;2025-07-07_22-01-04_de3d95802423086e14a067660060d63485575a43ab54626fdfd8be096e5db04d.jpg&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;I also took an attempt at adding some silkscreen art to the back of it and made my 3D printed case open in the middle to show the silkscreen art. I haven&amp;#39;t taken it out too far from my desk yet, but I think it&amp;#39;s solid enough to fit in the bag that my laptop travels in.
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/arcology/attachment/ccee75317123aa619988ca1a4c974493bd2c91893d426c28d6704213cc4fd4b8-2160.jpg/html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/attachment/ccee75317123aa619988ca1a4c974493bd2c91893d426c28d6704213cc4fd4b8-1080.jpg&quot; alt=&quot;2025-07-07_22-01-15_ccee75317123aa619988ca1a4c974493bd2c91893d426c28d6704213cc4fd4b8.jpg&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;It&amp;#39;s thin and lightweight and basically solid/rigid enough to use while sitting or standing, even lying down on a lap-desk in bed. So far I am quite pleased with this thing, and it&amp;#39;s very easy to do if you feel like doing it.
&lt;/p&gt;&lt;p&gt;Nix lets me describe the dependencies and build a development environment you can replicate, and so you could go and look at &lt;a href=&quot;//whatthefuck.computer/my/atreoid/rev0&quot;&gt;The Monticello Drive Revision Zero&lt;/a&gt; and start to 3D print base-plates for a matrix layout that works for you. If you build one let me know.
&lt;/p&gt;&lt;p&gt;If you decide you like it and want a low-profile bluetooth portable ergonomic Atreus-like keyboard you can make one by reading and following &lt;a href=&quot;//whatthefuck.computer/my/atreoid/rev1&quot;&gt;The Monticello Drive Revision One&lt;/a&gt;. You have the ability to generate PCBs, route them beautifully, and have them manufactured in about the same amount of time it would take to get the bill of materials filled and the case parts printed. If you do that let me know.
&lt;/p&gt;&lt;p&gt;There&amp;#39;s no fine surface mount soldering or fiddly keyboard matrix soldering required outside of placing the power switch and reset button, though you can solder surface mount diodes in to the keyboard matrix if you&amp;#39;d like.
&lt;/p&gt;&lt;p&gt;I was really intimidated at the start of this project, for many years I felt like it was beyond my ability to build a high quality mechanical keyboard with my own design, and over the last six months I&amp;#39;ve disabused myself of this notion. I still am a long way from being comfortable with it or working on circuit design starting from data sheets and schematics, but this is a nice time learning how all this works or doesn&amp;#39;t, and it&amp;#39;s definitely something the average computer wizard could pull off.
&lt;/p&gt;&lt;p&gt;I would love to have a better case made some day from metal, but for now this thing is definitely good enough to keep using for a while! Don&amp;#39;t ask me about the final cost of the project please, just follow and try it out yourself maybe.
&lt;/p&gt;&lt;/article&gt;</content>
  </entry>
    <entry>
    <title>I can generate custom PCBs for my ergonomic mechanical keyboard</title>
    <link href="http://whatthefuck.computer/my/atreoid#20240515T204927.971701"/>
    <id>urn:uid:20240515T204927.971701</id>
    <published>2024-05-15T21:05:00Z</published>
    <updated>2024-05-15T21:05:00Z</updated>
    <content type="html">&lt;article&gt;&lt;h2 id=&quot;20240515T204927.971701&quot;&gt;I can generate custom PCBs for my ergonomic mechanical keyboard  &lt;/h2&gt;&lt;p&gt;Over the last few days I&amp;#39;ve been starting work on Revision One of the Monticello Drive keyboard, a low-profile PCB-sandwich ergonomic keyboard. Ergogen supports generating &lt;code&gt;kicad&lt;/code&gt; PCBs but first I wanted to familiarize myself with kicad a bit by trying to implement the keyboard myself by constructing a schematic, mapping the symbols to footprints, and then laying the footprints out on a PCB. I did that, and it was mostly fine, but I came back pretty quickly to wanting to generate the PCBs.
&lt;/p&gt;&lt;p&gt;Ergogen supports this, but I never quite understood how to make it work and generate a &lt;a href=&quot;//electronics.stackexchange.com/questions/10866/why-ratsnest-is-called-so&quot;&gt;rat&amp;#39;s nest&lt;/a&gt; until I spent some time playing around and studying &lt;a href=&quot;//github.com/search?q=ergogen+row_net&amp;amp;type=code&amp;amp;repo=&amp;amp;langOverride=&amp;amp;start_value=1&quot;&gt;other example configurations&lt;/a&gt; I found. To get a working matrix, you need to label columns and rows with variables like &lt;code&gt;row_net&lt;/code&gt; and &lt;code&gt;column_net&lt;/code&gt; that can then be used in the footprint generator along with an auto-generated &lt;code&gt;colrow&lt;/code&gt; variable that is used to define the network between the switch and its column, the switch and its diode, the diode and its row.
&lt;/p&gt;&lt;p&gt;You end up with a bunch of components but no routing, kicad&amp;#39;s &lt;code&gt;pcbnew&lt;/code&gt; can then be used to manually lay out the routes.
&lt;/p&gt;&lt;p&gt;Ergogen also lets you easily drop in other components that are commonly used when building a keyboard, like the keyswitch footprints, diodes, MCU, buttons, etc. These have the same auto-placement and layout engine which the keys themselves have so you can say &amp;quot;oh, uhh, just put that midway between the left hand and right hand homing keys, and move it up 20 mm&amp;quot; and the system will handle placing it for you. I had to fork ergogen to add a footprint for the &lt;a href=&quot;//nicekeyboards.com/docs/nice-nano/pinout-schematic&quot;&gt;nice!nano v2&lt;/a&gt; since it has some extra pins I need to use, and I added a &lt;code&gt;flake.nix&lt;/code&gt; to it along the way.
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/arcology/attachment/ea2f254dcd6dfc1bc7f6f7fb135b14ff0a901899dd9beb1ce42ff2c9f699f208-2160.png/html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/attachment/ea2f254dcd6dfc1bc7f6f7fb135b14ff0a901899dd9beb1ce42ff2c9f699f208-1080.png&quot; alt=&quot;2025-07-07_22-03-20_ea2f254dcd6dfc1bc7f6f7fb135b14ff0a901899dd9beb1ce42ff2c9f699f208.png&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;All of this is laid out above in this document, the neat thing about this is that you can follow some &lt;a href=&quot;//whatthefuck.computer/my/atreoid/rev0#20240515T203805.911164&quot;&gt;straightforward if laborious directions&lt;/a&gt; to generate and 3D print your own keyboard, and then maybe even have PCBs made for it if you like typing on it. We&amp;#39;ll see if I decide to do that.  I saw some really cool low-profile switches which Kailh is demoing on &lt;a href=&quot;//old.reddit.com/r/ErgoMechKeyboards/comments/1cfg3vr/mikefive_a_kailh_pg1316_keyboard/&quot;&gt;reddit&lt;/a&gt; which can be used to make 5mm thick keyboards with real mechanical switches, I would love to use those instead of Chocs for this, but for now I might ask &lt;code&gt;pcbway&lt;/code&gt; for a few of these to play around with.
&lt;/p&gt;&lt;p&gt;I&amp;#39;m really happy with how easy it would be, in theory, for someone to clone this doc&amp;#39;s repo, change a YAML file, run some &lt;code&gt;nix run&lt;/code&gt; commands and have all the materiel necessary to make a custom Atreus-like keyboard.
&lt;/p&gt;&lt;/article&gt;</content>
  </entry>
    <entry>
    <title>First post on the new Atreoid prototype</title>
    <link href="http://whatthefuck.computer/my/atreoid#20240418T174752.530312"/>
    <id>urn:uid:20240418T174752.530312</id>
    <published>2024-04-18T18:03:00Z</published>
    <updated>2024-04-18T18:03:00Z</updated>
    <content type="html">&lt;article&gt;&lt;h2 id=&quot;20240418T174752.530312&quot;&gt;First post on the new Atreoid prototype&lt;/h2&gt;&lt;p&gt;On &lt;time&gt;2024-04-18&lt;/time&gt; I got the first prototype of my Atreoid build booting with the &lt;a href=&quot;//zmk.dev&quot;&gt;ZMK&lt;/a&gt; keyboard firmware package! I&amp;#39;m writing this post on it  now, it&amp;#39;s nice to finally be able to see if my original finger position guess-work at the top of this page was any good. It&amp;#39;s pretty good, though. I still need to wire up my old QMK configuration on to it and get all the layers wired up and on top of that I have two or four more keys to work with on each layer than I did with the Atreus. 
&lt;/p&gt;&lt;p&gt;It took only a few days to get it soldered together once I had the new BOSL2 models validated. after that, getting ZMK running on it was fairly straightforwrd but i had a late-night soldering think-o where i forgot that most pins on a controller like the arduino pro micro or nice!nano serve a purpose and had wired a bunch of the matrix lines up to ground, confident i had enough pins to get it done. Five minutes after I finished, the word &amp;quot;pinout&amp;quot; popped in to my head and i had to desolder the whole mess, bridge the rows across the middle of the board, and more carefully route this all out. 
&lt;/p&gt;&lt;p&gt;And at the end of that, I still had a bit of a SNAFU where the default i2c pins where used in the matrix grid and I spent quite some hours today trying to figure out how to trick ZMK and Zephyr in to running i2c on a different set of pins, two of the three extra pins in the middle of the microcontroller where the blue and green wires lead up to to the bottom of the center hinge of the board.
&lt;/p&gt;&lt;p&gt;After quite some google and careful GitHub searches, I found &lt;a href=&quot;//koen.vervloesem.eu/blog/how-to-change-the-default-i2c-pins-in-zephyr/&quot;&gt;Koen Vervloesem&amp;#39;s blog post on how to change the default i2c pins in Zephyr&lt;/a&gt;, the RTOS which ZMK is built on top of. This included an example device-tree include file which let one override the pins used, and this thankfully worked with ZMK&amp;#39;s display drivers.
&lt;/p&gt;&lt;p&gt;Overall, I am pretty excited with how this feels already. I&amp;#39;ve been planning already a &amp;quot;rev1&amp;quot; board which is a manufactured PCB for low-profile choc keyswitches and less soldering, perhaps a return to through-hole for the diodes, the most painful part of the soldering job. The &lt;a href=&quot;//mechboards.co.uk/collections/components/products/switch-biscuit-pcb-x25&quot;&gt;switch-biscuits&lt;/a&gt; I bought to prototype this did their job wonderfully, they&amp;#39;re a great prototyping tool for keyboards like this. I need to do a bit of work organizing the code for the models and the board before I publicize the code for this thing.
&lt;/p&gt;&lt;/article&gt;</content>
  </entry>
    <entry>
    <title>Updated my Atreoid project model to use BOSL2</title>
    <link href="http://whatthefuck.computer/my/atreoid#20240403T230510.318940"/>
    <id>urn:uid:20240403T230510.318940</id>
    <published>2024-04-03T23:18:00Z</published>
    <updated>2024-04-03T23:18:00Z</updated>
    <content type="html">&lt;article&gt;&lt;h2 id=&quot;20240403T230510.318940&quot;&gt;Updated my Atreoid project model to use BOSL2                    &lt;/h2&gt;&lt;p&gt;I finally got around to adding BOSL2 to my &lt;a href=&quot;/404?node=openscad&quot; class=&quot;unpublished&quot;&gt;OpenSCAD&lt;/a&gt; repository and re-wrote the keyboard model to use it.
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;/arcology/attachment/6ba8a397dffcf717e5cc0cac1ade5ce7978bc49013d99e55bba6022785362649-2160.png/html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/attachment/6ba8a397dffcf717e5cc0cac1ade5ce7978bc49013d99e55bba6022785362649-1080.png&quot; alt=&quot;2025-07-07_22-03-36_6ba8a397dffcf717e5cc0cac1ade5ce7978bc49013d99e55bba6022785362649.png&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;It has some nice utilities for building &amp;quot;real-world&amp;quot; objects like these hinges that I added, but more importantly it makes it easy to lay out and arrange objects and define attachments without it turning into a soup of magic numbers added and subtracted to each other, but it requires you to re-think some of the ways you are building your models.
&lt;/p&gt;&lt;p&gt;Compare &lt;a href=&quot;//code.rix.si/rrix/scad/src/branch/main/atreoid-bosl.scad&quot;&gt;this&lt;/a&gt; to &lt;a href=&quot;//code.rix.si/rrix/scad/src/branch/main/atreoid.scad&quot;&gt;this&lt;/a&gt; and besides the &amp;quot;magic&amp;quot; numbers which are spat out from the &lt;code&gt;ergogen&lt;/code&gt; yaml doc at the top of this document it&amp;#39;s much simpler and easier to reason about, neat stuff.
&lt;/p&gt;&lt;p&gt;I did recently solder the keyboard&amp;#39;s wiring in preparation for wiring up the microcontroller. I&amp;#39;m going to re-print this BOSL2 version tomorrow and transfer the build over to that. I still have to lay out the center cluster where the microcontroller and LEDs will live, but once these prints work out and I&amp;#39;ve verified the hinge mechanism I&amp;#39;ve changed to from the nut-and-bolt setup it used previously, it&amp;#39;ll just about be time to start working on ZMK support for the base board. I&amp;#39;ve decided to get the basic grid working before I tackle the trackpoint module and necessary &lt;code&gt;ps/2&lt;/code&gt; support.
&lt;/p&gt;&lt;p&gt;Exciting stuff!
&lt;/p&gt;&lt;/article&gt;</content>
  </entry>
  </feed>