Building a prototype – Creating Freewrite, Part 3

  • February 9, 2017

In Part 2 I discussed why and how we got to the point of moving forward with the Freewrite concept. The idea for the project was clear and both Patrick and I were committed to seeing it through to the next step, a working prototype. We wanted to create a distraction-free writing tool with a mechanical keyboard, E Ink screen, and a connection to the cloud.

The deadline for the competition was closing in fast and we needed a working prototype to show in a video for the submission.

The normal prototyping process for a new product looks something like this:

  1. Determine basic feature set by talking to potential customers and looking at similar products.
  2. Determine basic architecture of the product. This would include defining things like interface (screen, buttons, LEDs), form factor, etc.
  3. Lots of sketching.
  4. Mockups in cardboard. Get out the ole xacto knife and cut some cardboard into a design based on sketches.
  5. Refine and repeat steps 1-4.
  6. Put 1-2 designs into a CAD model with specific dimensions.
  7. 3D print variations of the design to get feel for exact size, shape, and proportions of device.
  8. Refine CAD.
  9. More 3D prints until everyone is happy with design.
  10. Make a ‘looks-like’ model that incorporates as many true materials and surface finishes as the final product would have.
  11. Merge the final ‘looks-like’ model with a ‘works-like’ model to create a finished ‘works-like’ and ‘looks-like’ prototype.

At the same time that all this is going on, there are parallel processes to develop the electronic prototype and the software prototype. Everything needs to come together at the end to form the final prototype(s).

The requirements for the prototype are relatively light compared to the finished product. It doesn’t need to robust in any way. It just needs to communicate the full product design (visual identity, interface, ergonomics, features, etc.).

All of the above steps take 6 months, at a minimum. For big companies launching a new product, it typically takes years to get to a prototype that represents a final product. Our challenge was to get to a prototype in a matter of weeks. Also there was no budget. I was in 10’s of thousands in debt and while Patrick wasn’t in the red quite so deep, he was doing freelance work on the side to pay his bills. Patrick and I were splitting the expenses for this project but I would still need to go in even more debt to build a prototype and get to the next phase, if there was to be one.

If you squinted really hard, my process looked like the above steps except with a few things missing and the rest jammed into just a couple of steps. Looking back on my archives, I did one pitiful set of drawings back in May, 2014. Then there was some googling that took the form of research. I collected images of typewriters, word processors, computers, handhelds, design objects, keyboards, and anything else I could find that looked interesting. But there were no more substantive drawings until jumping straight into CAD where I ended up doing most of my visual exploration. My first CAD models are dated august 8th, 2014.

I hadn’t done any CAD work since college (7 years prior!) which meant that I was more than a little rusty. It’s fun though and I knew where to start, by drawing something that was well defined. I started by modeling a Cherry MX keyswitch. Actually I started by looking for open source CAD models of Cherry switches and shockingly, I couldn’t find any that were suitable. Given how popular they are and how long they have been around (decades), I was surprised that the models available were either poor or in the wrong format. I went to creating my own using calipers and a MX keyswitch that I had ordered.

The overall keyboard design was loosely based off of an off-the-shelf keyboard called the Poker II. It is a 60% keyboard which means that it is 60% of the size of a full size keyboard. It lacks a ten key pad, the function key row, and arrow keys. That may seem ultra minimal, which it is, but there are even smaller keyboards, 40%ers, that drop the number row. I thought the 60% was a good choice because the general layout was well known and it had all of the essential keys needed for our software, without modifiers. We didn’t need arrow keys or home/end keys because the Freewrite’s software wouldn’t allow any cursor moving anyway. Sticking to this paradigm would require other compromises for UX, like requiring the user to perform less intuitive actions, in this case using the number keys to make selections such as a Wi-Fi network, but I liked this old-school feeling anyway. NO ARROW KEYS. The tiny designer in me also loved the 60% because it was very close to symmetrical. More on that later.

I modeled a Poker keyboard in CAD as closely as possible to make sure that the real Poker Keyboard would fit in the final fabricated housing. The keyboard also lends a lot of visual cues to the final design so I wanted to make sure it was accurate. It’s complicated with 60 keys and various key widths/profiles but getting it right informed the rest of the design.

Next was the general shape of the housing. I started with a very basic wedge and continued to refine it from there.

I am asked often why I didn’t go with a folding clamshell design like a laptop or why I didn’t make it smaller:

  1. A solid body design is much simpler. Adding a hinge would complicate the mechanics and the electronics. Snaking cables through hinges and getting the perfect hinge feel was something I didn’t want to deal with.
  2. It needed to be different than a laptop, not just in function or hardware but also in form. Why? Because everyone already has a laptop and that is what people are comparing it to. It needed an iconic design that allowed it to stand on its own.
  3. The solid body design informed the user of its purpose in a very strong way visually. If it was folding, a new set of eyes would not have understood as much about its purpose.
  4. A guiding tenet of the design was that it should be obvious and available. A clam shell is not as obvious as a solid body because it needs to be opened first. A solid body presents all the interface elements to the user right away. A solid body design is the most accessible.

From a marketing perspective, it was critical that the final product separate itself from a laptop as much as possible. The closer the design became to look or operate like a laptop, the closer it would come to being laptop, but a shittier version. Competing with Apple to make a laptop as a 4 person team is insane. It’s an unfair comparison but that’s what the average consumer wants from products they buy. Apple is the baseline fit and finish for all consumer electronics. This design thinking, to distance the Freewrite from a laptop, runs throughout the product. By separating the product from a laptop visually, it enabled it to sit in a different category in a prospective customer’s mind.

As it turns out, modeling a keyboard is not simple! We all interact with keyboards regularly and there are examples all around but the various permutations are vast. I didn’t have time to dig any deeper than required since I knew that I was going to use an off-the-shelf keyboard in the prototype anyway, i.e. I didn’t need to build my own, yet. I would just have to understand all the nuances once the product moved forward, if it moved forward.

I worked on the CAD models from mid August until mid September. In between, I sourced and modeled other components including switches, buttons, knobs, handles, screen, etc. Everything had to be modeled because I knew that I only had one, maybe two tries to get things made and to get them to fit together. Mistakes would take time and would waste materials (i.e. money).

Once I had the component placement and overall design of the housing completed, I started over. It is a lot easier to make a robust, clean (without artifacts) model when the final design is known. I also needed to put the housing through a DFM process based on the way I was intending to manufacture it.

This is where my insanity became even more pronounced. I wanted to CNC the housing out of billet aluminum. Billet is just a fancy word for ‘a big solid block’. It’s insane because generally it is considered the most technical and expensive process. It also requires a giant piece of aluminum and an even more giant machine that is capable of machining it. It also take A LOT of prep, setup, and machining time. If you’ll recall from the steps listed above, normally there are a lot more prototyping steps including drawings, mockups, and 3D prints. I didn’t have time for any of that. I also was poor. Like really poor. I had to do this thing for as few dollars a possible. As insane as it sounded, I figured it would be cheaper for me to machine a billet because,

  1. The housing was too big to print in a consumer 3D printer. I would have to send it out to a commercial printer which would cost between $500-$1000 for one print. If I messed up the design in any way, it was very hard to fix and would likely need to be reprinted.
  2. I could source a piece of billet aluminum from a friend that runs a scrap yard.
  3. I found a HAAS VF-3 CNC milling machine at a local community makerspace that I could theoretically use at my leisure for as little as $50 per month.
  4. Metal is so much cooler than 3D printed plastic. I wanted metal! I also hoped that the final product would also be metal so an AL prototype seemed more fitting. Also, metal is very durable and would survive anything we threw at the prototype.
  5. I needed a challenge and I wanted to spend time in a shop.

And a challenge I got. After I finished refining the model to make sure that I could machine it using a CNC machine, I needed to source a billet. I went to my friend’s scrap yard in Dearborn, Michigan to search for something suitable. My friend Chad, who ran the yard, thought I was insane but was happy to help. I showed up at the yard driving my mom’s old Oldsmobile Silhouette minivan and was ready to put a big chunk of aluminum in the trunk.

We scoured the yard for billets of aluminum that would be big enough for the prototype but not so big or heavy that I couldn’t get them into the car or fit them into the milling machine. It was a tall order!

The Haas VF-3 CNC Vertical Machining Center at i3Detroit is a serious machine. It is old (1990’s era) with a CRT tube but it was designed to run 24/7 in a production environment. It lacks modern niceties but it definitely doesn’t lack power or utility, especially for a hobbyist project. It has a 15hp spindle, 20 position tool changer and travels of 40” x 20” x 25”. The machine weighs 12,000lbs and has another 4000lb pallet changer attached to it. The pallet changer was donated to the makerspace with the machine which was an awesome score since they are rarely found in a model shop. A new VF-3 from HAAS starts at about $70k and the pallet changer probably added another $10k-$20k. It was super awesome to have access to this machine for such a low membership fee.

At the scrap yard, the only piece that we could find which might have worked was a gigantic offcut from a waterjet machine. The billet was about 4’ in diameter and 3.5” thick. The only problem was that it weighed 361lbs. It was too big! I paid a guy at the yard $20 on the side to have him cut it in half for me. They only had a gas powered chop saw so it was well worth my $20! That was not something I wanted to do. Once cut in half, each piece was a more manageable 180lbs. At that weight, two of us could lift it up and put it in the van. Once I got it back to my shop, I cut it in half once more (now I had two quarters of a circle) on my big band saw. I was just barely able to reach the centerline with my 20” Powermatic. Cutting 3.5” thick aluminum on a vertical bandsaw was just the beginning of the fun! Did I mention that I paid just a little more than scrap rate for the aluminum? Even with all the extra aluminum I got, it was still crazy cheap. Was it worth it? Probably not but whatever. Buying a properly sized billet from a metal supply would have been more money but it would have made my life a lot easier machining it! I learned a lot in the process. (1)

I finally had the aluminum and located a milling machine that could process it. The next problem was getting access to the machine. I could join the makerspace without much trouble but they don’t just let you jump on a giant milling machine straight away. Yes, I had some experience and am a quick learner but the machine is dangerous and a lot of damage could be done to the operator and the machine if not operated properly.

After some convincing, the manager of the CNC zone at i3 allowed me to use the machine. He reacquainted me with the esoteric controls of the HAAS machine and I started to commit the process to memory. I find the HAAS control system extremely unintuitive yet it is generally considered one of the most user-friendly CNC controls on the market. There is a lot of room for error in setting up the machine and configuring the tools/work. Error, in this case, could mean a broken tool, the spindle hitting a clamp or the vise, an imperfect part, etc. Almost always the error is catastrophic with the exception of breaking a tool.

The worst part about using a vintage CNC machine was that it was designed to have programs loaded via floppy disk. Even worse, its onboard memory was tiny. For most programs it wasn’t too much of a limitation because G-Code is very lightweight. One can do many complex operations using less than 100 lines of simple text. However, 3D surfacing a large part was a completely different story. My program had tens of thousands of lines. This presented an issue because the whole program was too big to load onto the HAAS’es onboard memory. There was a solution though. I could stream the program into a buffer onboard by using a serial cable via RS-232. There was a special software that I could run on my laptop which would stream the G-Code through a USB to Serial converter into the HAAS machine. In theory, it worked fine. In practice, it was frustrating as hell. It took a while to figure out how to get the two machines from different decades to talk to each other. Remember how to set baud rates and error checking bits? Me neither.  Once I got that going, there was an additional problem in that the line numbers could only go up to 10000, IIRC. Even after I got everything working, it was not very reliable. The only reliable thing was that the program would stall in the middle for some unknown reason. This is where it got super painful. There is no good way to start a CNC program in the middle. So the options were to either start the machine from the beginning and cut a lot of air (the metal was already gone from the previous operation) OR modify the program by hand to have it start just before where it stopped spontaneously. Both options were used with varying effect. In some cases, the program could be hours long meaning that if a glitch occurred toward the end, starting over would require that same number of hours of cutting air to get back to the same spot. I could increase the feedrate to 200% but even so there was still a lot of wasted time. And if I didn’t catch the machine to lower the feedrate back to normal before it was about to cut metal again, my tool would surely break as soon as it touched the piece which meant starting all over again.

Machining this large part with contoured surfaces required many machining operations and using many different tools from 3″ dia shell mills to twist drills to 1/32″ end mills. Prior to machining this housing I had only done 2.5D milling, mostly on Bridgeport style machines. I had to reacquaint myself with speeds/feeds and also learn about the various 3D milling strategies in a brand new CAM software. It was a very steep learning curve. These software tools try to be user-friendly but are truly only user-friendly to operators that are extremely proficient. I was a beginner and attempting to machine a very large, complicated part on my first try.

One of the logistical challenges with any machining operation is ‘workholding’ i.e. holding the metal down during the machining process. There are huge forces on the material while machining and if the work is not held to the machine properly, it will shift or if it comes loose, launch at high speed in a random direction. Use too many clamps or tighten the vise too much and they will get in the way of machining or deform the material.

The housing was machined in two different fixtures because it needed both the inside and the outside machined. This was accomplished by first machining the inside which included tapped holes for screws and reamed holes for guide pins. The partially machined billet was then flipped over and fastened to a fixture plate that I made which very accurately registered the billet based on the guide pins. My program would then use a coordinate system based on the known location of the guide pins and edge of the fixture plate. This is imperative because the machine is dumb and does not implicitly know what the part looks like. It just moves based on distances within a Cartesian coordinate system with no regard to the tool or part loaded in the machine. Yes, it calculates offsets but the operator needs to program them into the machine during setup. [Am I deep enough into the weeds for you, dear reader?]

If I did it all correctly, the resulting part would be exactly like the CNC model on the computer. In reality, it just needed to be close enough for our purposes.

My first attempt was good for a first attempt but not very good as a show piece. There was no time though and we were down to the wire. Our video of a working prototype needed to be posted by 11:59pm. It was 11:55pm and Patrick was waiting for me to take the part out of the CNC machine so that we could take a quick video and upload it as part of our submission. It was really that close.

I finally relented his call, stopped the machine, and pulled the partially finished housing out. It didn’t have any finishing passes on the contouring so the surfaces still had steps and were all jagged. I quickly washed and dried it and shoved all of the electronic parts into it. I didn’t even have time to take out the guide pins so they were left in the part while we took a quick video. We had to prop up the housing on some pieces of flat metal because of the guide pins sticking out the bottom.

After we shoved the electronics into the metal housing, it sorta, kinda looked like the thing we set out to make. It had a keyboard, an E Ink screen and thanks to Patrick, it printed typed messages to the screen. If you blurred your eyes, it was a working prototype.

Once we sent in the application at 11:59pm, we cleaned up and left the shop. I was virtually sleeping at the shop the past couple of weeks trying to get this thing made and I was in desperate need of some rest. Then we waited.

It wasn’t long before we were notified that we made it to the social voting round! That gave us a good chuckle. We submitted an abysmal application and we made it to the next round!! Honestly, I thought we had no chance. In hindsight, I think our luck came from the fact that the competition was very poorly marketed despite it being Engadget running it. They had a lack of applicants which means we made the cut. We’ll take it!

I went back to finishing the prototype that weekend. The finish passes on the contouring were looking ok and it was becoming smooth. And then I fucked up, big time. During one of those random CNC serial glitches I attempted to modify the G-Code by hand and made a big mistake. A 3/4″ end mill went through the back of my beautiful housing!! I hit stop on the machine and started laughing. It was so tragic it was hilarious.

I could fix it though. Let me rephrase, it could be fixed with the right skills and equipment. Fixing it properly would require me to make a patch that was slightly proud of the neighboring surface and then weld it into the hole. Then I could make a new program to machine that area so that it blended in. The only challenge was that I had only welded aluminum once. Also, welding aluminum is much more difficult than welding steel. I did have a TIG welder I could use but I didn’t have the right filler, tungsten, or gas. It was also a bit of a tricky weld because the patch was thin and the rest of the part was very large. Aluminum is an extremely good heat conductor which means that the big piece acts like a giant heat sink pulling the heat away from the weld location disproportionately. My first attempt at welding wasn’t bad but then the weld cracked when it cooled :( I scratched my head and did a lot of Googling and YouTubing. I don’t remember exactly what I did but eventually the weld came out satisfactory. After cleaning it up on the mill, it looked good! Note, the CNC zone warden (the guy who managed the CNC area at the makerspace) thought I was 1. totally dead in the water and 2. insane to even try fixing it. Good thing I didn’t scrap it!

That prototype, affectionately called v0.1, was okay for a few pics but it was not good enough for primetime. I learned a lot though and was ready to try again. This time I was much better prepared. I still had the second quarter of my giant billet remaining from the scrap yard.

Round 2! I got the final piece of aluminum prepared, refined my machining toolpaths and went to work building another housing. It went much faster this time and the resulting part was sexy as hell. On v0.1 I noticed that the toolpaths from the ball end mill made an interesting ‘woven’ surface finish. For v1.0, I rotated the final surfacing toolpaths 45 degrees and the resulting surface finish was a super cool pattern that caught the light in an awesome way.

There were no major screwups but there was one minor glitch that nobody would ever notice except for me. My fixture plate moved a little (it wasn’t clamped down enough) while machining the top which made the wall thickness uneven around the part. This is why I spec’ed my wall thicknesses thicker than they needed to be!

The second housing, v1.0, was finished and then anodized black by a local shop. This black beauty became our workhorse for a long time even though it was a prototype.

The final prototype served us very well as we paraded it around to journalists and potential customers. I was very happy with it but every time someone would see it in person and ask if the housing was 3D-printed, a little part of me died inside. This happened far too often! At least I knew it was billet aluminum, lol.

The majority of this post was focused on the metal housing but that is not the whole story. I also machined a handle assembly that was installed in v1.0. There were switches sourced from surplus catalogs, and selector knobs and custom keycaps made via 3D printer. I trimmed the housing of the Poker keyboard to make clearance for the fat space bar I designed and I put some holes in the side to allow the whole keyboard to be mounted in the aluminum housing. The bottom was the last thing I thought about but it needed a bottom! Actually, I REALLY wanted to make the Hemingwrite without a bottom. It wasn’t reasonable for the prototype though so I quickly laser cut a bottom out of fiberboard and used the same bolt holes in the housing that I used for fixturing to secure the bottom to the housing.

The electronics running the prototype included a small router, a hacked e-reader, a Raspberry Pi, external USB battery, 2x Wi-Fi NICs, and some breakout boards. One day Patrick will write the blog post on how he made it all work. It was quite the feat!