electronics

2017 Jun 15

Tweaking the molds and preparing for the pilot run

By |2018-10-21T19:28:58+00:002017-06-15 20:37|agent, design, electronics, features, manufacturing, modules, news, prototype, tech talk|19 Comments

Hi there, and welcome to our monthly status update!

TL;DR: The BOM is fully finalized and ordered. The UHK prototypes have improved a ton in the EMC department. Agent and the firmware has evolved a lot. The key cluster and trackball modules have been mechanically prototyped and tested. New developers joined our forces. We've tested the molds and found some issues which will introduce some delay. We plan to ship a pilot run of 50 UHKs in July. The rest of the UHKs are planned to be shipped starting from August. Please read on!

You can always check out the expected delivery date and update your shipping address on your Crowd Supply account page.

EMC improvements

We've been visiting the EMC lab of TÜV since our first successful test. The reason is twofold. First, we wanted to improve on the results, and second, there were some further tests to be done.

The testing results that we shared with you the last time already passed, but the safety margin was only 2 dbμV/m, instead of the recommended 5 dbμV/m. Our worry was that the margin was so thin that it was possible for the final test to fail. We really wanted to avoid any potential failure, so we have been tweaking various resistor and capacitor values, and have been trying various bridge cables and USB cables to make the margin wider.

You know what made a drastic difference? The USB cable. As soon as we tried a USB cable with a ferrite choke on the keyboard end, the EMC graph changed very substantially. Don't worry, this ferrite choke is only 24 mm x 14 mm in size, and it's very light so it doesn't weigh down the cable.

The updated EMC graph

According to this graph, we went from a 2 dbμV/m safety margin to about 18 dbμV/m! (See the vertical distance between the blue mark around 100M and the red line.) Given these results, we'd be extremely surprised not to pass the final test.

We've also conducted some further tests that we haven't done before. First, we put the prototype into the test chamber and tried to disturb it with focused radiation. We were watching it with a camera to see whether the LEDs go out, and checked it after the test. The prototype didn't break a sweat and kept functioning perfectly.

In the second test, the USB cable was put into a metal cage, and got a healthy dose of radiation. The criteria for this test is that the device can go out of service, but ultimately, it must recover by the end of the test.

The first time this test was executed, the LEDs on the left keyboard half went out and it didn't recover. After that, I made the firmware much more robust, and as a result, the left keyboard half was able to recover like a champ.

Speaking of LEDs, we got so many inquiries about backlighting that it justified its own post, so here you are: Everything about UHK backlighting.

Things are looking so good in the EMC department that I fully finalized and ordered the BOM for the PCBs of 2,000 UHKs, and if everything goes well the UHK will be certified very soon, possibly in June.

Agent progress

A lot has been happening to Agent, our configuration application recently. Józsi is still involved in the development of Agent, but he told me that going forward, he cannot guarantee a fixed number of working hours per month because his life got a lot busier. This made me search for the right candidates, and I'm happy to report that I found two excellent developers.

Róbert Kiss is busy with some of the most pressing Agent issues. Agent has an initial OS-specific privilege escalation step that allows it to access the USB interface of the UHK. Robi implemented the missing Windows-specific part of the privilege escalation step. He's also set up a build process, so that now Travis generates releases for Linux and Macintosh, and AppVeyor generates releases for Windows, and these files get uploaded to the releases section of GitHub. He's also mostly finished the auto-update mechanism of Agent.

Attila Csányi will be busy with a number of important but less time consuming issues given his limited time. He's already made the macro layout more responsive and made the currently selected key highlight and animate very nicely. These seemingly small issues add up big time when it comes to user experience.

Luckily, Józsi is still involved with the development of Agent. Lately, among other things, he's implemented ISO/ANSI layouts. Agent used to display only the ANSI layout but this change will allow it to show the correct layout, be it ISO or ANSI as soon as you plug in your UHK.

Firmware progress

Substantial progress has been made with the firmware recently. The easier part was making the communication between the halves more robust. First up, I added a CRC16-CCITT checksum to the messages between the keyboard halves to improve message integrity. Next up, I implemented a recovery mechanism for LED drivers so that the LEDs also recover when disconnecting/reconnecting the halves. I also made the communication packets between the halves more efficient and smaller.

The harder part is upgrading the firmware of the left keyboard half and modules via USB. You see, it's fairly easy to upgrade the firmware of the right keyboard half because it's directly connected to the host computer. The modules and left keyboard half however are not directly connected via USB. They're connected via an I2C bus to the right keyboard half.

The plan is to implement a proxy mode for the right keyboard half, so that it can route the firmware from the USB host to the left keyboard half and to the modules via I2C. Luckily, such a protocol translator is already implemented so we can use it. It's called BusPal, and it's part of the KBOOT (Kinetis bootloader) package. Unfortunately, it's not nearly as mature as KBOOT, and it was obvious that integrating it to the UHK firmware won't be a walk in the park. I was searching for a proficient developer to make this happen but despite my best shot, I couldn't find a right candidate, so I had to try to integrate BusPal myself.

There were three variants of BusPal within the KBOOT package but I noticed that only one supported USB, so I picked it. In the beginning, I couldn't even build it because it was developed using the the proprietary IAR embedded workbench, not with the free Kinetis Development Studio that is based on Eclipse and GCC. I simply started by putting BusPal into a subdirectory of our firmware repo and trying to make it work. It was an uphill battle at first because BusPal has a huge codebase of which we need very little functionality. Just making the compiler happy has taken days, and after that it was even more work to make it functional. Luckily, over the course of about two weeks, BusPal enumerated over USB and could talk to the left keyboard half. Well, mostly.

Now, I can send protocol commands to the left keyboard half via BusPal but they don't work every time. As it turns out, the ROM bootloader of the KL03, the processor of the left keyboard half is buggy as documented by errata ID 8060, and these bugs have to be worked around. I can erase the processor and query properties, but the firmware upgrade command breaks. Given my myriad of responsibilities, I'd much rather delegate this last step, and it seems that I might have just found the ultimate developer. More about him later.

The state of modules

Up until this point, not too much has been said about the progress of the modules. That's because our primary focus is getting the UHK to market, so András only works on the modules when he has some free time.

At last, I'm happy to show you the first version of the 3D printed modules:

These prototypes were printed using a white, powder-like material, but the final modules will be offered in black color.

Originally, we created two versions of the modules, one of them being totally flat, the other one being angled.

Flat key cluster module on the left, angled key cluster module on the right

We've been experimenting with a front and a top mini trackball on the key cluster module, but concluded that the top one is much more usable, so we'll ditch the front-sided mini trackball.

Angled trackball module on the left, flat trackball module on the right

The trackball module from the inside without the PCB

The reason we've made two versions is to test them and see which version is more ergonomic. The flat modules made our thumbs stretch significantly less, so we're confident that they're a better choice. This is also very fortunate from a manufacturing standpoint as the space inside of the modules is very limited, and even more so in their angled versions, so the flat versions will be easier to design and manufacture.

We also found that it's not a good idea to use two buttons per module because the inner button which is closer to the UHK usually gets pressed when pressing the case button of the UHK. Our plan is to only feature a single button per module, the outer button that is farther from the case button of the UHK.

This is a big step forward, but there's still a lot to do in the future. These plastic cases don't contain PCBs yet, so they will have to be designed. Luckily, the left keyboard half is an module from an electrical, firmware, and protocol standpoint, so we will be able to reuse its schematic and firmware. These plastic cases of the modules are only made for mechanical testing purposes and need to be redesigned here and there because they are not manufacturable, and lack structural support.

Molding plastic parts

I'm a software developer by trade, so I have little knowledge about injection molding. A couple days earlier however, I was fortunate enough to observe the process up close in an injection molding facility where we tested our molds.

The mold of the top right case

As so many things, injection molding looks deceptively simple. Plastic flows into a mold, and the perfect plastic part falls out of the machine. Just like on this video:

In practice, lot of things can make a plastic part less than perfect, such as warping, which is the major issue we have mostly fixed.

You see, warping is a very common phenomenon, and it's usually so slight it doesn't matter. In our case however, it does. As it turns out, of all the keyboards ever created, the UHK is probably the most sensitive to warping. This is because when the plastic cases of the two keyboard halves are merged, it becomes extremely pronounced.

When the UHK is merged and the halves warp even slightly, a very slight V shape can be noticed. This shape raises the four outer legs while the four inner legs firmly touch the ground which is obviously unacceptable.

Surface finish issues, such as sink marks and surface defects are another category of injection molding issues we have to deal with which we have also mostly fixed.

One way to fix the above issues is to tweak various mold and injection parameters which we were actively pursuing quite successfully during our three-day stay at the factory. It's mind-boggling how many parameters can be tweaked, such as the injection speed, pressure, after-pressure, mold temperature, the duration of the molding process, and many more. To make things even more complicated, these parameters are not single numeric values but rather graphs, and multiple points of the graph can be set along the time axis!

The other way to fix these issues is to modify the molds themselves. This is usually more time consuming and involves machining the molds in various ways. Some of our issues can only be solved this way.

We have a rough schedule in place regarding the plastic parts:

  1. Within days, the injection-molded cases will be scanned with a 3D laser scanner to reveal the inaccuracies for the molds to be fixed.
  2. In the next week, the left and right bottom molds will be fixed according to the above results.
  3. Another week later, we'll mass-produce the bottom parts for the pilot run.
  4. Within a month, we'll get all the molds fixed, fine-tune technological parameters, and manufacture every plastic part for the pilot run.

As for the big picture schedule:

  1. In July, we'll manufacture a pilot run of 50 UHKs and send them out to our pilot testers, which include the various developers, contributors, and backers who have helped us along the way and indicated a willingness to help us rigorously test the UHKs before the main production run and work out any final kinks should they arise. All 50 pilot run units have been assigned, but if any of our pilot testers drops out and we need to fill a spot, we'll solicit volunteers. We haven't talked about the pilot run yet, but we think it's critical for the first UHKs to be tested before we actually start the main production run.
  2. In August, we'll launch the mass production of the remaining 1,950 UHKs. The goods will flow out continuously and be shipped approximately in the order they were purchased. Since we are using fulfillment centers in both Hungary and the US, there will be some variation in when your order is shipped, depending on your shipping address, but, basically, the sooner you ordered your UHK, the sooner you'll receive it.

Thank you for reading this update! As you can see, we have to deal with the molding issues which do introduce some delay, but at the same time, we're also making rapid progress. We're asking for your patience and support during these last miles. We'll make sure the UHK will be worth the wait.

As always, we'll be keeping you updated on a weekly basis on social media, and on a monthly basis in this blog and our newsletter.

Talk to you on 2017-07-13!

2017 May 18

EMC pre-compliance testing successful

By |2019-03-28T18:12:11+00:002017-05-18 14:56|electronics, manufacturing, news, prototype, tech talk|17 Comments

Hello and welcome to this month's UHK update!

TL;DR: Our most recent prototypes have successfully passed EMC pre-compliance testing. The final certification will be taking place in June and is expected to take 4-5 weeks which will push delivery to July. Manufacturing is proceeding apace. One of our prototypes has became a movie star.

You can always check out the expected delivery date and update your shipping address on your Crowd Supply account page.

EMC pre-testing

Not long after our previous update, we assembled 6 prototypes for the upcoming EMC pre-compliance measurement. These are v7.2 prototypes featuring EMC redesigns and related extra components, such as a ferrite choke.

Six UHK prototypes

This time, instead of going to T-Network, we went to TÜV which was a much better experience. Their control room is more modern and tidier.

Measurement room

They use a more sophisticated measurement software.

Measurement software

Their measurement chamber is more spacious.

Measurement chamber

We told you the last time that the laptop we brought didn't pass the test in itself, so we've made sure to bring a MacBook Pro this time to avoid such problems.

Measurement chamber table

Please note that the we don't provide a backlit UHK yet, but the prototype exists

The measurements taken by TÜV are of considerably higher resolution than those at T-Network, and they do take proportionally more time. Instead of taking around 3 minutes, they take about 15 minutes each. This time, we passed the test! You can see the result below.

EMC measurement

This may look like a fail, but it's not! There are two peaks that are above the safety zone, but as it turns out, there are two measurements involved. In the first measurement, the peaks get detected. In the second, the peaks are more closely investigated which usually results in considerably lower values. The final values are marked with blue rectangles below the peaks, and they're all within the safety zone.

This is clearly a much better result than anything we've ever measured, although admittedly, the safety margin is quite tight around 84 Mhz. Endre has an idea how to make it even better by replacing some components, and we'll test his idea in a week, but we've already booked a certification date for June regardless.

We'll send two final prototypes to TÜV Hungary by the end of May, who will in turn forward the prototypes to TÜV Netherlands where the actual certification will take place. The certification itself is expected to take 4-5 weeks. This is longer than anticipated and the PCBs can only be mass produced after the certification succeeds. Unfortunately, this pushes delivery to July.

Manufacturing news

Let's see some major news from the manufacturing department:

  • 1,000 steel plates have been manufactured and 3,000 more are in the works. Placement of the switches into the plates will begin soon.

1,000 plates manufactured

  • A pilot run of 100 pairs of the wooden palm rest parts have been ordered, and 900 pairs are set to follow.
  • The testing of the modified injection molding tools will take place in a week.

One of our prototypes has became a movie star

About a year ago, the assistant propmaster of Netflix series Sense8 got in touch with us. She told us that there'll be a hacking scene in the series, and asked us whether we could provide a prototype to be filmed. Of course, we said yes in a heartbeat. Fast forward one year, we got featured in the series!

UHK in Sense8

You can see the UHK prototype in:

  • S2E03 (Obligate Mutualisms): 20:02 (-31:13)
  • S2E04 (Polyphony): 2:11 (-55:56) multiple cuts in 10 seconds, 5:01 (-53:06)

And a couple more spots here and there. You're welcome to let us know if you notice another scene.

Needless to say, we're thrilled to be featured. Thank you so much for the opportunity, Netflix!

This wraps up our May update, Ladies and Gentlemen. A lot of things are happening in parallel as usual, and with the certification of the PCBs on the horizon, we're really getting close.

As always, we'll be keeping you updated on a weekly basis on social media, and on a monthly basis in this blog and our newsletter.

Talk to you on 2017-06-15!

2017 Apr 13

A huge influx of parts

By |2017-04-13T15:26:47+00:002017-04-13 15:26|design, electronics, manufacturing, news, prototype|12 Comments

Hello again and welcome to this month's UHK update!

TL;DR: We're inching towards mass production. We've received tons of parts from our suppliers. The design of the palm rest is finalized, and our new PCBs are being fabricated.

Our delivery date is unchanged, which you can always check out on your Crowd Supply account page.

Now let's delve into the nitty-gritty!

Big boxes galore

Not long after the previous update, a van arrived, chock full of goodies.

The majority of the boxes contain switches. Lots of them. 127,000 to be exact.

You can see all the 6 switch types including brown, blue, red, black, clear, and green.

A fair number of boxes contain 131,000 keycaps. A single bag contains 1,000 keycaps of the same type.

Yet another box contains 11,000 stabilizers and 5,500 stabilizer wires. Assembling these little guys will be quite an exercise.

When seeing all the boxes neatly arranged, I couldn't help myself, so I posted the following picture on April 1st.

You guys totally got it by immediately replying with the (in)famous 1970's Bill Gates centerfold on social media. Well done!

Small bits and pieces

In the shipments were plenty of smaller parts, too. Let's see what we've received.

A small sample of the nearly 2,000 LED displays

10,000 pogo pins

2,000 neodymium magnets

As a matter of fact, we've received another block of 2,000 magnets, but we didn't dare to put the two blocks close to each other. The combined force of these magnets is formidable, which could have shattered the magnets, or even worse, our hands.

Final palm rest design

A while back, we showed you a palm rest version we thought was very close to final. Boy, were we wrong. As it turned out, the milled aluminium base plate had a tendency to bend a little bit when the legs were flipped out and force was exerted on the palm rest. András was looking into alternative design and came up with something we're very proud of.

Now, we're using a steel baseplate to connect the wooden part of the palmrest to the keyboard. This results in a stronger connection, making flexing a non-issue. As you can see, a recess was designed right where your thumb resides, which will make it easier to press the thumb button. We think it's quite a useful feature.

The wood is more emphasized in this design, resulting in a classy minimalism. We plan to choose graphite color instead of the current brown color. We believe it will look just as beautiful as brown, and it will gel better with the black color of the keyboard.

We're waiting for yet another sample, then we'll pick a manufacturer, and launch the mass production of the palm rests.

Redesigned PCBs

In our last update, we let you know about the EMC test results of the v7.1 UHK PCBs which were a lot better than v7.0, but still not good enough. Since then, we've finished the design of the v7.2 UHK PCBs.

The PCBs were redesigned by István based on Endre's suggestions to reduce EMC emissions. Right now, they're being fabricated, and should arrive soon. As soon as they arrive, we'll assemble a half dozen prototypes and head to the EMC lab.

Speaking of the lab, instead of going to T-Network, we'll go directly to TÜV from this point on. I recently contacted TÜV, and realized that they also do EMC pre-testing for a reasonable price. Even better, they will do the final EMC testing and issue the certifications, so it's better to familiarize them with the UHK as soon as possible.

On the assembly front, we've just ordered electrical screwdrivers, screw dispensers, a glue dispenser, and a number of jigs are being made to speed up mass production.

A lots of further progress is expected soon. We'll get 2,000 metal plates manufactured in the upcoming days, and the mold is almost fully ready, too, making it possible to manufacture the cases very soon.

In our true style, we'll keep you updated on a weekly basis on social media, and on a monthly basis in these newsletters.

Talk to you on 2017-05-18!

2017 Mar 16

Improved EMC test results and incoming parts

By |2017-03-16T16:43:33+00:002017-03-16 16:43|electronics, manufacturing, news, prototype, tech talk|30 Comments

Hello, and welcome to this month's UHK update!

TL;DR: Our most recent EMC test results are much better than the previous results, but they're still not good enough. We're working hard on our new prototype to pass the tests, but this delays the project about a month. Lots of progress is happening on other fronts, too. Please read on!

Parts are flowing in

The UHK contains loads of components, and some critical ones are flowing in one by one. These are the most recent parts:

100 ANSI left, 100 ISO left, and 100 right plates have been manufactured so far. These plates will be used for the first production run. Of those plates, we have 20 of each in-hand to check their quality and accuracy.

These 2 plates were surface treated with Nickel and Zinc.

There are also loads of smaller components which arrived lately:

4,000 magnet counterparts laser-cut

A couple magnet counterparts after grinding

140,000 screws

2,100 FFC cables

We've already ordered the switches, keycaps, keycap stabilizers, and displays which are expected to arrive soon.

The manufacturing of the guides and magnet counterparts are in progress. These are multi-step manufacturing processes, and they're well under way.

The state of the molds

Currently, the molds are being tweaked, and the tweaks are mostly cosmetic by nature. All things considered, they're already in very good shape.

András showed the current case samples to one of his friends recently, who works for a contractor of a premium car manufacturer, and his friend was genuinely impressed by the quality of the case, so we're already doing pretty good.

Apart from the cosmetic fixes, we also plan to add one or two snap fits to make the case more rigid when the palm rest is attached to it. These modifications won't affect our schedule.

EMC testing, 2nd round

Here we go again. Since our last update, we've created new prototypes to be tested in the EMC lab.

These are actually 2 right keyboard halves. The left keyboard half hasn't been redesigned because according to our tests, the USB is the major culprit when it comes to EMC issues, which is located on the right half.

We were told that a 4 layer PCB should perform better when it comes to emissions than a 2 layer one, so I decided that we should create both a 2 layer and a 4 layer PCB, and see how they stack up.

The naked eye can hardly tell the 2 layer and the 4 layer PCBs apart, so I put an "L4" identifier right after the PCB identifier text for the 4 layer PCB. Now it's easy to tell.

Even though my hopes were high that we'd pass the tests with the new boards, I prepared for the worst, and was looking for expert help. That's how I found Endre Köcze.

Endre has a lot of experience behind him as an electronics engineer, and he's a pleasure to work with. He has taken a thorough look at the UHK design, and we went to the EMC test together.

The test results started off as quite a surprise. First, we measured only the laptop as a reference point, and according to the measurements it didn't pass! Go figure.

Previously, we used Robi's laptop which passed the test with flying colors. This, however, was Anna's, my wife's laptop. Admittedly, this laptop is not as fancy as Robi's laptop, but it's made by a reputable manufacturer, and it should also pass the test.

The first takeaway is that we'll bring as many laptops as we can next time, pick the least heavily emitting one, and use it in further measurements.

Next, we put the laptop under the measurement table, and then its measured emission got just below the red line. But when we added a shielded USB cable, even with a ferrite on the host end, it went just above the limit. This is clearly not ideal, but this is the best we could do on the spot. The measurements are still useful, and we'll use a better laptop next time.

In this setup, the UHK was on the table which is the center of measurement towards which the antenna points. Being under the table, the laptop didn't affect the measurements so much. Next time, we'll probably use a 5 meter long USB cable and put the laptop as far as possible.

Around the end of the measurement, the OS shut down because the battery was so low. We could still use the laptop without the OS running, but both the low battery state, and the fact that no OS was running might have affected the last 4 measurements. The lesson here is obvious: Power the laptop from a damn charger! And on that note, we'll probably put the charger as far from the center of the measurement as possible, too, and use an extension cord to power it.

As for the actual UHK measurements, the results are very promising. The measurements of the 2 layer PCB were no more than 4 dB above the limit, and no more than 7 dB above the limit with the 4 layer PCB. This is very promising compared to the first round of measurements for which even 16 and 18 dB above-the-limit values were measured.

Endre has a concrete plan regarding the redesign of the PCBs. He'd like to add a common mode choke and ferrite beads at strategic places, and István is ready to redesign the boards accordingly.

In addition to the changes mentioned above, I plan to implement a number of firmware test features, so that we'll be able to narrow down the cause of various spikes. I think of features like disabling I2C / USB / backlighting, and adjusting the clock speed of the MCU with dedicated keys of the keyboard.

I think that with all the above test procedures, test modes, and redesigns in place, we shall defeat the EMC issues with the next prototype which should be ready in a month.

Due to the EMC hurdles, we must delay delivery by a month. This is frustrating, but very much necessary to make the UHK happen. We're working as hard as we can to hit it soon.

In our true style, we'll be keeping you up-to-date in our weekly social media updates, and monthly newsletters. Thank you for tuning in, and talk to you on 2017-04-13.

2017 Feb 16

PCB redesign and firmware progress

By |2018-10-21T19:26:47+00:002017-02-16 18:16|electronics, manufacturing, news, tech talk|24 Comments

Hey there! It's February, and we have a new UHK update for you. A lot has been happening, and, barring unforeseen delays, we're on track for April keyboard delivery. Let's delve into the gory details!

Rubber feet and caps

There are small rubber feet and rubber caps on the ends of the flip-out feet of the UHK. Up until this point, we only had 3D printed versions of these caps, but the tooling has finally been created for them, so we got a couple samples.

Rubber samples

Rubber samples. The final rubber parts will be black.

Feet mounted

Feet mounted

The samples are surprisingly good for a first run. There's only a very slight modification to be done to the tool to make it fit perfectly, which will completely eliminate the parting lines that are now slightly visible.

Steel guides

The steel guides are currently being manufactured. Here are some samples before vibration grinding them.

Force measurements

András has made a number of measurements with our new force measurement gauge.

To find the optimal pull force between the keyboard halves, András has made measurements using various magnets. They must not be too strong, but strong enough to prevent the accidental separation of the halves while carrying or during a fall. Some final tests still have to be made in the coming days, then the chosen magnets will be ordered.

Right-half bootloader completed

Even though the bootloader for the right keyboard half was already working, it wasn't secured. That means that if we transferred a firmware image whose memory region overlapped with the bootloader memory region, the bootloader would have been overwritten by the firmware image.

Luckily, Kinetis devices offer hardware level memory region protection for such cases, which Santiago made a good use of. Now, with the memory protection in place, even if the bootloader would want to overwrite itself, it couldn't.

But this isn't the only safety measure that KBOOT, the Kinetis bootloader, provides. Let's say that the firmware transfer gets aborted due to a power outage or for whatever reason. In such a case, the CRC checksum of the firmware doesn't get updated and when plugging in the UHK the next time, KBOOT detects the CRC mismatch, and instead of jumping to the corrupted firmware, it stays active, waiting for a new, valid firmware transfer.

With the above protections in place, we believe that the right keyboard half is unbrickable via USB. I'm delighted that NXP offers such a comprehensive bootloader. It makes things so much easier and safer.

Santiago will make the bootloader for the left keyboard half work, too, but there's something else to be done before then.

Firmware progress

The UHK firmware has already been working for quite some time, but some things weren't exactly rock solid and optimized. This is about to change.

The reliable and resilient communication of the UHK parts is the core concern. If you think of the left and right keyboard halves, and the left and right modules, these are all separate computers, and some of them contain multiple processors. The bus via which they're interconnected offers a limited (although sufficient) bandwidth which must be utilized as efficiently as possible. To make things even more complex, any module can be disconnected, or connected any time, so hot-plugging must be seamlessly handled.

The main I2C bus of the UHK

First up, the communication should be made fully asynchronous. Synchronous communication was easy to implement because it's just a sequence of instructions, but it's highly suboptimal because it uses inefficient busy loops instead of interrupt handlers, and it's hard to do robust error handling with it.

I was aware of these problems from the get-go, but I wasn't concerned because I wanted to implement a working firmware as quickly as possible and improve it later. Now that we're marching towards release, it's time to solve these problems properly.

When changing sync code to async, the application logic changes quite a bit because instead of using a sequence of sync calls, an async callback gets fired whenever a communication event occurs, and a state machine has to be implemented inside of the callback.

I will end up implementing a scheduler state machine, so that the I2C master (the blue rectangle in the diagram above) will talk to I2C slaves (yellow rectangles) in a round-robin fashion. The purpose of these inter-module messages is to propagate state between the modules.

This will result in a very clear programming model in which the scheduler will sync the state of the modules in the background all the time, and the rest of the application logic of the master will be able to deal with the various module-specific data structures as if they were local.

I recently hit a related problem that I was unable to resolve, so in my true style, I summoned Santiago. The problem was that communication did not resume between the halves when I disconnected then reconnected them, even despite using async I2C calls. Santiago looked into the issue and concluded that the KSDK I2C driver is not very robust.

As it turns out, I2C drivers typically assume that I2C devices don't get hot plugged, but are permanently soldered onto a PCB. Obviously, our situation is different, which calls for a more robust I2C driver on which Santiago is working right now.

PCB redesign

In our previous update, we told you that the UHK prototype has failed the EMC test and that I will find a professional PCB designer who (unlike me) does know what he's doing.

I'm happy to introduce István Pánti, PCB designer extraordinaire!

István Pánti

István has been using Altium Designer over the years, a commercial PCB designer application which happens to be the number one industry standard worldwide. Luckily, he was willing, and even excited to learn KiCad, and according to his opinion it's a surprisingly powerful tool for a Free Software package.

Then he cleaned up all of my traces and most components of the right UHK board, and started to reroute the tracks, beginning with the D+, D- differential pairs of USB, which are supposed to be the most problematic according to the EMC test measurements. His design turned out to be a lot cleaner than mine.

The redesigned right side PCB

The redesigned right side PCB

Routing PCBs is not black magic, but it may seem like it to the outsider, especially when dealing with EMC issues. There are a lot of layout rules to follow. Lucky for us, István has routed his fair share of PCBs before, including a USB hub, and read plenty of USB PCB design guidelines which now he puts to good use.

He's been making great progress recently, and the end of the redesign is near. You can see his progress on GitHub.

I asked him to also create a 4 layer version of the PCBs after he finishes with the 2 layer version. Then we'll prototype both versions and put them to the test. The 4 layer PCB should perform significantly better in the EMC department, but we'll only pick it if necessary because it's also significantly more expensive. This way, we can progress as quickly as possible.

Manufacturing progress

A short overview:

  • 2,000 LED displays are being manufactured.
  • 16,000 steel guides are being manufactured.
  • 4,000 magnet counterparts are being manufactured.
  • 2,000 FFC cables are being manufactured.
  • We will order 10,000 pogo pins, 126,000 keyswitches, and 126,000 keycaps in a few days.
  • 140,000 screws are on their way to us.

Lots of stuff are about to flow in pretty soon. Expect pictures of big boxes filled with goodies!

Thank you for reading the February installment of UHKzine. Talk to you on 2017-03-16!

2016 Dec 15

Putting the (plastic) pieces together

By |2018-09-17T19:08:45+00:002016-12-15 15:45|agent, electronics, manufacturing, news, prototype|33 Comments

Hi there, and welcome to our monthly status update! Let's warm up, and see what's been happening in UHK land these days.

Mold meetup

Our mold-making contractor let us know that they're done with the molds of every plastic part, so we made a second trip to Serbia to check them out.

The best part of the meeting was snapping together the top and bottom parts of the case, and hearing the satisfying click sound, meaning that the parts fit together accurately. This is not something we've ever heard when trying our 3D printed prototypes.

Putting the LED display into the case was a similarly elevating experience. These parts are so precisely fabricated that they look like a single part from the outside.

The newly created top case parts

The assembled case without the switches and PCB

Having all of the plastic parts injection molded is a major milestone, but it's not the end of the story. Aesthetics will improve by tweaking technological parameters of the molding process. This is fully expected in the world of manufacturing, and our contractor is working on them.

Inserts

Having the injection molded parts and the final inserts in his hands, András put the inserts into the case and tested them.

As it turns out, even 16 kg can't pull a single insert out. We're about to order 16K of these little guys.

Guides

What does one do with 80 kg of stainless steel rods? Turn them into 16,000 guides to hold the keyboard halves together!

As you can see, we have already ordered the raw material, and we've also found a local manufacturer who will get the job done.

Palm rests

In our previous update, we published a picture of the wooden inlays on the palm rest but weren't sure about the final color. Now, we're experimenting with a couple of options.

Let me introduce you my mother, Klára Monda, who just happens to be a furniture painter folk artist. That's right folks, the UHK is becoming a family business! Having more than 40 years of experience behind her, she's more than qualified to dye and lacquer the wooden parts of the palm rests.

So far, a dark brown "walnut" dye seems to be the best match for the UHK case, but we will also give a graphite color a try soon. We'll keep you posted.

New PCB

10 of our 7th generation PCBs are being fabricated at Eurocircuits and will arrive at any moment.

These PCBs should fully resolve acoustic and electrical noise issues and contain lots of small improvements. They're heavily optimized for manufacturing, boast 100% test point coverage, and also include little touches like the UHK and OSHW logos. As soon as they arrive, I will assemble a couple and meet Robi to test them thoroughly.

5 of the prototype PCBs will directly go to our PCBA contractor. They're eager to do a first small prototype run so that they can create the tooling for efficient mass production.

Agent

Józsi and Nejc have been working very hard on Agent. As the fruits of their labor, Agent has become far more polished than ever before.

You're welcome to check out Agent in your browser to see for yourself. Click on any key to see the key action popover appear. Then associate an action of your desire, and see the new action displayed on the key. Then rename a keymap, or its abbreviation, set it to default, duplicate it, or delete it. All these things should work smoothly now.

We still have a lot to do, but Agent already resembles the final application pretty well, and we're making rapid progress.

All hail the Input Club

Jacob Alexander of the Input Club has been doing some mad science lately. He has created the The Comparative Guide to Mechanical Switches by doing one-of-a-kind mad science. Lucky for us, Kailh switches were rated among the top contenders, so it looks like we've made a great choice. We're extremely impressed by Jacob's work.

While speaking of the Input Club, let's give credit where it belongs. When porting the UHK to ARM and searching for the best microcontroller and LED driver we could use, we checked out their open source keyboard designs, and picked the same ARM processor and LED driver that they used.

Later on, we upgraded to a more powerful processor of the same family, and created our own schematic, PCB, firmware, and configuration application, but still, they have definitely affected our design in positive ways, so mad props to them!

More frequent updates on social media

Lately, some of you asked for more frequent updates and we're glad to comply! Since our last newsletter update, we published 3 updates on social media. The plan is to post updates on a weekly basis on social media. You're welcome to subscribe to our Facebook, Twitter, and Google Plus channels to for even more UHK goodness.

And that was it, folks! We've arrived at the end of our December update.

Let me take the opportunity to wish every one of you Merry Christmas and a Happy New Year on behalf of the whole UHK team! We're so happy that you guys are on board!

Talk to you on 2017-01-19.

2016 Nov 18

Defeating electrical noise and preparing for EMC tests

By |2018-10-21T19:24:41+00:002016-11-18 11:52|electronics, manufacturing, news, prototype, tech talk|40 Comments

Welcome to our monthly progress update! There is no shortage of news from this last month, so let's go through them one by one!

Plastic case

We've already received samples of the bottom case parts, the buttons on the plastic case, and the top left and top right parts are well on their way. The following image is the top left part of the case with the sprue left on it.

Top left case sample

As it turns out, the ejector pins of the top left mold are unable to eject the part properly, so our contractor is in the process of adding an extra pin. We shall soon receive all the plastic parts of the case to evaluate them.

Palm rest

In the last update, we showed you the 3D printed prototypes of the palm rest. We also showed you foams of different types that could go into the palm rest. In the meantime, we've been thinking about using an alternative material to foam: wood.

Wood palm rests are considered to be the most premium solution. They're nice to touch, pleasing to the eye, and last longer than foam palm rests. This is how our current palm rest prototype looks like.

Palm rest sample

You can see the base plates of the palm rest on top. They're milled out of solid aluminium, then anodized, and finally covered with lacquer. The left one was powder coated with glossy lacquer that did not change the black anodized color, and the right was covered with matte lacquer that changed the black anodized color quite a bit.

The current base plates feel extremely robust and look pretty nice, but to make them even nicer, we're thinking about powder coating them black instead of anodizing them. This would result in a solid, semi-gloss, black color. We'll give it a try later.

As for the wood parts, beech wood was used which got slightly dyed, and then a glossy lacquer layer was applied. The gloss is too much, so we plan to settle with semi-gloss lacquer, and we'll probably end up using a darker brown paint.

LED display

The last time we updated you, we mentioned that our LED display was having ghosting issues. This was caused by the white LEDs whose forward voltage was significantly higher than the other red and yellow LEDs.

We haven't found a viable solution regarding the white LEDs, so we ended up using yellow LEDs for the icons. This makes the charlieplexed LED matrix use only red and yellow LEDs whose forward voltage is similar.

Yellow LED display

This simple fix has fully resolved the ghosting issue. Ghosts busted!

Bridge cable

One would think that the bridge cable is a no-brainer. After all, it's just a simple spiral cable, so let's just pick a random cable from any manufacturer and call it a day, right? As it turns out, that's not exactly the case.

In the spirit of future-proofing the UHK for backlighting, I tested the bridge cable with all switch LEDs on to see whether it carries enough current to the LEDs.

UHK switch LEDs

It's clear that the right half is brighter than left. When connected via the board-to-board connector, the brightness level evened out the halves. It became apparent that the voltage drop of the bridge cable was very high.

I figured out that there are two factors that affect this issue, which are the diameter and the material of the wires inside of the cable. My bridge cable was made of copper-clad steel instead of pure copper, which conducts electricity much better. As for the diameter, the wires of my cable were extremely thin.

I then started contacting spiral cable manufacturers to learn more details and find the best option. As it turns out, 24-30 AWG diameter wires can be crimped to RJ jacks, so I asked for 24, 26, 38, and 30 AWG copper cable samples.

After testing them, I could confirm that the resistance of these cables was much lower than my original cables, and lighting was even across the keyboard halves with any of them. In order to minimize the voltage drop, I wanted to pick the thickest 24 AWG cable.

That's when the manufacturer warned me that 24 AWG cables may not retain their shape after stretching them moderately, which was an issue I was able to confirm. I figured that it's the plastic exterior of these cables that provide the flexibility. There was too much copper in thicker cables, which made them not retain their shape after flexing. After testing the samples, I figured that 28 AWG and 30 AWG retained their shape well. So I picked the thicker 28 AWG one, and this will be our final cable.

Lesson of the story: not all cables are created equal, and the devil is in the details!

Electrical issues

The UHK will have to pass EMC tests so that we can stick FCC and CE logos on the back, allowing for worldwide distribution. Being aware of this issue, I knew the time had come to send one of our prototypes to an electrical engineer to be investigated from an EMC standpoint.

Luckily, a friend of mine, Robi, just happens to be an electrical engineer. He's not even a mediocre engineer, but a great one, and he was very willing to take a peek at our prototype.

After receiving the prototype, Robi was eager to get his hands dirty. The first thing he did is hook his prototype up to a scope. The results were somewhat worrying.

Electrical noise before the fix

He told me that given this heavy electrical noise, there is not a fighting chance we'll pass EMC tests.

About 5 minutes later he told me that he had bad news and good news. The good news is that he managed to solve the electrical noise issue.

Electrical noise after fix

The bad news is that I wouldn't like the solution.

Huge capacitor on the PCB

The elephant in the room is the monstrous electrolytic capacitor soldered onto the PCB. If you're afraid that it won't fit inside of the UHK case, you guessed it right!

Luckily, using multiple SMD ceramic capacitors can provide sufficiently high capacitance. Robi also suggested using a ferrite bead and some extra capacitors near to the USB connector to further reduce electrical noise issues.

Acoustic noise

In the previous update, I mentioned that our PCBs were emitting some audible noise which was proportional with the number of LEDs enabled. Robi also looked into this issue and the solution has several steps to it.

First, throwing more capacitors onto the PCB drastically reduces electrical noise, which in turn also reduces the piezoelectric effect responsible for the audible noise.

Second, the ceramic capacitors will be placed in a way that they won't enforce each other's vibrating effect.

Third, we'll use higher value resistors for the R_EXT pins of the LED drivers because the current consumed by our latest prototype with all LEDs enabled is higher than the maximum current the USB connection can provide. Lower current draw will translate to lower noise, and given the logarithmic sensitivity of the human eye, the brightness difference will hardly be noticeable. LED lifespan will also benefit from this change.

We're fairly confident that the above fixes will resolve every electronic issue. Our next PCB should be ready to pass EMC tests!

Bootloader

Santiago has been extremely busy with his work at NXP (now Qualcomm). So much so that he's had hardly any time for us, but luckily, he managed to spend a whole weekend on the bootloader recently. Because of his efforts, the master bootloader is working! This means that it's now possible to update the firmware on the right keyboard half via USB.

But that's only half of the story. The other half involves implementing the proxy which will route the firmware of left keyboard half and modules via the right keyboard half. If everything goes well, Santiago be able to allocate enough time to get this done soon.

Our new contributor

Robi

I briefly mentioned my friend, Róbert Csordás, above. He has been a huge help in solving the electrical issues of our design, so this is the part where we express our appreciation.

He hasn't only helped with electrical issues, but also improved the firmware in a lot of ways. He implemented a QWERTY layout, then made the communication between the keyboard halves more robust.

Robi is already a full-time UHK user. His only wish is to receive a plastic case for his prototype, so that the bare solder joints of the PCB won't scratch his desk. We'll make sure to send him a final UHK with all the bells and whistles as soon as we can.

Thank you so much, Robi!

Project progress and schedule

Right now, the steel guides, the feet mold, the rubber mold, and the magnet counterparts are being manufactured.

The molds of the case and the steel plate cutting tool are being adjusted to meet our manufacturing constraints. This is planned, but it will take a little longer than expected.

The PCB is being redesigned as described above in order to minimize electronic and acoustic noise. It will be ready by the end of the upcoming week, and then we'll put it through EMC tests in December. We should have the necessary certificates by that time. We'll launch a prototype run for the PCBs in January and start our first full production batch in February.

By the time the boards get manufactured, we'll have all the parts and packaging in our warehouse, ready to be assembled and shipped.

We can assure you that everything happens according to the grand plan, but many things take longer than expected. We know how much you would love to have a UHK by the holidays, and we're doing everything we can to deliver as soon as possible, but we can't reasonably expect to ship sooner than February.

We'll keep these updates coming with clockwork accuracy, so you'll be aware of our progress at all time. Should you have any questions, we're always here for you.

Thank you for your continued support, and we'll talk to you again on 2016-12-15.

2016 Oct 13

Monthly progress

By |2018-09-17T19:08:26+00:002016-10-13 14:10|agent, demo, electronics, manufacturing, news, prototype, tech talk|14 Comments

You know the drill: a new month always brings a new status update. Let's delve into what's happened lately!

Tooling status

Our mold making contractor has been working on the top molds of the UHK case and are on schedule. Here are the molds of the top case parts:

The mold of the top left case part

Molds of the top case parts

At this pace, the end is near. We should be able to test the final plastic parts within weeks!

LED display

In our previous update, we showed you the mold for the LED display. Since then, our supplier baked a complete unit featuring the PCB, the LEDs, and the epoxy inside. The result is a blindingly bright LED display!

LED display shining bright

The display is so bright that it's rather overkill at night. Luckily, the LED driver ICs that we use allow us to precisely set the brightness level – which we will expose as a user option eventually.

And this is how it looks when scrolling the alphabet on it:

Actually, it looks better in real life, but not when recorded with a mobile phone under suboptimal lighting conditions.

Some problems still have to be resolved, though. The forward voltage of the white LEDs are considerably higher than of the red/yellow LEDs which results in an unbalanced charlieplexed LED matrix that has a tendency of ghosting which is noticeable, especially when only the white LEDs are on:

LED display ghosting

There are several ways of fixing this issue, so if everything goes well we'll simply throw a couple of diodes at the LED matrix and make our supplier redesign the PCB of the display. We really try to keep the white LEDs, but in the worst case scenario, we'll use LEDs of a different color instead, whose forward voltage matches that of the red/yellow LEDs.

Another issue to be resolved is acoustic noise. The LED driver ICs generate a high frequency noise that is slightly disturbing. This is due to the capacitors and inductors, which shrink and expand according to the PWM signal that drives the LEDs. There are about a half dozen ways to deal with this issue. Some of them increase costs, others increase complexity. We may end up combining multiple approaches to get the best result.

Firmware

Lots of things have been happening in firmware land lately. The FRDM dev boards that feature the processors we use have already been working for a while, but the firmware wasn't tailored to our PCBs.

First up, I tried to set up the multipurpose clock generator of the K22 MCU which made me realize how much of a hideous beast it is. It would have likely taken me weeks to make it work, so instead, I summoned Santiago who set it up like it was a walk in a park.

Then I went on to implement the key matrix scanner, made the left keyboard half send key states to the right keyboard half, implemented a rudimentary USB communication protocol, exposed the EEPROM and LEDs via USB, and made all the peripherals work.

Not being a battle-hardened firmware developer, it's always the low-level MCU programming that gives me the biggest headache. Now that these parts are in place, we can finally focus on implementing the high level architecture, protocols, features, and cleaning up the codebase.

The only major low level feature left is the bootloader, on which Santiago is working, and he should finish in November. In the meantime, we can simply use hardware USB programmers to program the firmware via the ARM SWD ports of the UHK.

Currently, the firmware is able to exercise the full breadth of hardware features, proving that our current generation PCBs work as expected. Next up, I'll send a couple of assembled PCBs to our developers and contributors, so that they can make Agent communicate with the UHK via USB, and develop the firmware further.

Agent

Jozsi and Nejc have been working hard on Agent.

Nejc implemented a data layer that persists the state of Agent into local storage. That's right folks, from this point on, all of your keymaps and macros will be automatically saved. Mad props to Nejc for his hard work!

Jozsi implemented the rendering of mouse actions, updated to the latest (and now stable) Angular and TypeScript, and removed loads of legacy code.

I've written a couple of scripts in the usb branch of the Agent repo to demonstrate USB communication by reading and writing the EEPROM and LED driver ICs of the UHK. My half-baked code will eventually be refactored and integrated into Agent.

Graz meetup

Usually, Santiago is located in Madrid, but nowadays he lives in Graz, helping a major customer of NXP. Living near us, he recommended that we should meet, and we have gladly taken the opportunity. I also asked Nejc whether he wants to join – to which he said yes. And so, the four of us could finally meet in person.

Graz meetup

There was no shortage of interesting conversation and fun times. Apart from a fair amount of geek talk, we ended up showing our apparent lack of pool skills.

And that wraps up this update! Looking forward to talking to you again on 2016-11-18.

2016 Aug 18

Updated delivery schedule and a bonus

By |2018-10-21T19:24:00+00:002016-08-18 15:57|demo, design, electronics, features, manufacturing, modules, prototype, tech talk|22 Comments

Another month has passed, and so it's time for our monthly status update! This one will contain a bad bit of news, a good bit of news, and lots of news bites on our progress.

Updated delivery schedule

Over the last few months, a lot of you have been giving positive feedback on our progress and appreciated the detailed updates. According to our Crowd Supply campaign page, the goods are expected to ship at the end of September.

We're trying our best to deliver on time, busting our ass day by day, usually even on weekends, and still, it's quite apparent that we can't meet this deadline even if we bend over backwards. So the delivery schedule needs to be revised:

  • The keyboard and palm rest are expected to deliver by the end of December
  • The modules are expected to deliver in April 2017

Please let us explain the reasons.

Our April delay that was caused by our previous bank (which we abandoned forever) has definitely contributed to this one, as it caused a lot of overhead, and we could only pay to our mold making contractor in a delayed manner.

Another reason is design delays. We have just finished the design of the feet and the palm rest. Getting the design right has definitely taken longer than expected and now the molds of the feet are about to be made. As a rule of thumb, we rather take the time to get the design right than to rush things and end up with a mediocre product.

We have to focus on the core keyboard first and implement the modules afterwards. So the mold of the modules will be created right after the mold of the keyboard. We will pay the extra shipping fees because of the separate shipment of the modules. That's the least we can do.

We're running things in parallel as aggressively as we can to hit our updated schedule. For example, a mold of our special keycaps just got ready in Taiwan, the mold of the case and the cutting tool is being created in Serbia, and our contractor for the LED display has just started to work on their mold.

We're very sorry for this delay. We understand that you can't wait to put the UHK under your hands and waiting sucks. We're asking for your patience and to remedy the situation a bit we'd like to offer something, which is an…

Anodized aluminium palm rest

There are plenty of ways to make a palm rest and we have considered various designs over time. One of the candidates involved a beautiful anodized base plate milled from solid aluminium.

Of course they come in pairs. This is the left one.

Of course they come in pairs. This is the left one.

It was clear from the get go that it won't be cheap and we were thinking about making it available as a premium product later. But now, it's our golden opportunity to make up for the delay of the project schedule. So I'm here to announce that we will provide this anodized aluminium palm rest to those who purchase the palm rest pledge before keyboard shipment! The price for the aluminum palm rest will go up afterwards.

Now that we wrapped up the bad and the good news let's move on to the rest.

Tented UHK prototyped

Since our latest update we got the feet 3D printed, screwed it onto the back of a prototype and shoot a picture of it.

Tented UHK prototype

Everything feels right about the feet and we're satisfied with the overall design. The palm rest is yet to be fabricated. We'll make sure to show it to you as soon as it gets ready.

The state of the mold

The molds of the bottom cases are complete. This is the left one.

The molds of the bottom cases

The remaining molds are also in the works, and in our true style, we'll be posting more pictures as they get made.

Injection molded UHK keycaps

The UHK features two keycap types that are non-standard. One is a concave-shaped, 1.75U, row 4 keycap used by the Mod and Space keys, and the other is convex-shaped, 1.5U, row 1 keycap used by the backspace key.

I'm happy to let you know that recently, our keycap supplier got the molds ready for these keycaps and sent us a couple of samples:

Injection molded Mod and Backspace keycaps, take 1

Injection molded Mod and Backspace keycaps, take 2

These custom keycaps are impeccable and totally consistent with the rest, just as expected. They put a smile on our faces because custom parts like these are major milestones for the project.

The state of the modules

Not much has been said about the modules recently, so it's time to share some information on them. We've actually made a couple of videos of them in action, so that you can get an idea how the modules feel and behave.

Please note that the plastic case and electronics of the modules are not ready yet. So far, the key components have been chosen so we show you the guts of the modules directly connected to the PC.

If you are curious about the exact ICs that we use inside of the UHK, or in the modules then you're welcome to delve into our datasheets repository.

As for the number of buttons of the right-handed modules we're not exactly sure yet but we're aiming for two buttons per module.

Let's see what we have!

Trackball module

The trackball module features an ADNS-3530 optical sensor which is remarkably tiny and communicates over SPI. This demo board translates SPI to USB but we'll use a KL03P24M48SF0 microcontroller to translate SPI to I2C which is spoken by the UHK.

Trackpoint module

The trackpoint module features a sensor of an unknown part number (our supplier signed an NDA with the manufacturer so we don't know) but it's remarkably similar to the now defunct SK8702 trackpoint module which features the SK7102 controller. Our supplier only provided an incomplete datasheet to us, which is not a major problem because the module speaks PS/2.

We'll use the FlexIO capability of the KL03P24M48SF0 microcontroller to implement a protocol translator which will translate from PS/2 to the I2C protocol of the UHK.

Touchpad module

This is an Azoteq ProxSense TPS43 touchpad driven by the Azoteq IQS572 capacitive controller. The touchpad is connected via the Azoteq CT 210 configuration tool to the PC.

Being an I2C device, the controller will directly connect to the UHK. We'll have to design a custom-sized touchpad, however, featuring the IQS572. Luckily, Azoteq provided a design guide for that.

It's not a coincidence that I mentioned the name of Azoteq a fair number of times above. Back in the day I blogged that we're looking for a suitable part, then they contacted to us and provided the most awesome support ever!

Key cluster module

The key cluster module features a couple of keys and buttons which are simple to scan by the microcontroller. The tiny trackball is a Blackberry trackball which uses hall effect sensor along the 4 axis. We haven't yet hooked up the Blackberry trackball to control the mouse pointer but you can find plenty of videos on YouTube of its various applications. I recommend watching Sparkfun's video of their trackballer breakout board which explains it in detail.

Introducing our firmware developer

A while ago, we reached out to you looking for a firmware developer. We've gotten quite a few excellent applications and please let me take the opportunity to thank every one of the applicants for contacting us.

Without further ado, let me introduce you our firmware developer, Santiago González Fabián from the sunny city of Madrid.

Santiago González Fabián

My name is Santiago González and I've been playing with electronics and computers since I can remember, but I discovered the amazing world of embedded systems in the Electronics Engineering Bachelor where I felt in love with 8051 and ASM code.
I've programmed 8 bit and 32 bit MCUs in C and Assembly mainly, and my focus the last 4 years has been the Cortex M world, working at Freescale and NXP as Field Application Engineer trying to solve all kind of issues with Embedded Systems all over Spain, from Automotive to Industrial equipments, from 8 Kb Flash devices toggling LEDs to 2 MB Cortex M7 doing Ethernet, Motor Control and RTOS scheduling at the same time.

Embedded systems are my job and my hobby (Although I also climb mountains in the weekend) so in my free time I look for new challenges in several places (Stack Exchange, HackADay, Electronic Forums…) and that's how I met László and UHK, in my weekly check of NXP Community. After having a look into the project and the open source philosophy behind it, I decided I would love to help if possible. Now the UHK PCBs have arrived to Spain, so I can begin the Bootloaders development :). I cannot wait to start coding!

The new prototype sitting on Santiago's desk

The new prototype sitting on Santiago's desk

Since first getting in touch with Santiago, I've exchanged almost a hundred emails with him about deep technical stuff. It's apparent to me that he's highly knowledgeable, a truly excellent communicator, and his enthusiasm clearly shows. We couldn't ever wish for more than that.

The bootloaders of the UHK are a lot more complex than those of regular keyboards (not that most keyboards have a single bootloader to begin with). This is because our design is highly modular, composed of separate keyboard halves and modules, each running separate firmware images. So naturally, we want to enable you to upgrade the firmware of every module over USB with a click of a button.

The idea is that the right keyboard half will run the master bootloader that will directly upgrade the application firmware from the PC. The left keyboard half and the modules will run the slave bootloader which will connect over I2C to the master bootloader, which will in turn relay the firmware image from the host computer over USB.

KBOOT 2 already supports the above scenario, but a fair amount of customization has to be done by somebody who really knows what he's doing.

Apart from implementing the bootloaders, Santiago will be working on parts of the firmware that require deep knowledge of the Kinetis platform, like the FlexIO based PS2 to I2C protocol translator of the trackball, and such.

Still reading? Then pat yourself on the back because you deserve it! Talk to you on 2016-09-15.

2016 Jul 14

The feet and palm rest design is nearly complete

By |2018-10-21T19:22:02+00:002016-07-14 16:12|agent, design, electronics, features, manufacturing, tech talk|29 Comments

Howdy all! It's time for our regular monthly progress report. Let's get right to it!

Feet and palm rest design

András has been busy designing the feet and palm rest of the UHK. The current design is close to final, so we're excited to show it off.

But first, please fasten your seatbelts. The UHK is highly modular and configurable in nature and the feet and palm rest are no exceptions. There are a lot of combinations of feet configuration so let's dive in!

The design

There are 4 feet mounting positions per keyboard half located in the corners of the halves:

feet mounting positions without palm rest

When using the palm rest, the number of feet mounting positions (4) is unchanged, but their location spreads across a larger area because the bottom 2 feet per keyboard half are mounted to the palm rest:

feet mounting positions with palm rest

A foot can be mounted with 3 screws and can be rotated in 90 degree increments:

foot-degree-animation-640

In any of the 8 positions, a feet can be unmounted (no elevation), mounted and closed (slight elevation), or mounted and opened (large elevation):

foot mounting animation

The bottom of the feet are rubberized, even sideways, and the UHK has its own small rubber feet so the keyboard won't slide in any configuration:

Rubberized foot

The palm rest is fixed to the keyboard with 2 screws per keyboard half, screwed into the stainless steel inserts of the UHK:

palm rest screws

Given the number of combinations, we can't go over every possibility, but we'd like to highlight the most popular ones.

Positive tilting

4 closed feet are used in the top positions of this configuration. The palm rest is not featured on these pictures but you can use it if you want to.

Side view

Side view

Isometric view

Isometric view

Bottom view

Bottom view

Negative tilting

In this configuration, 4 closed feet are used in the top positions and another 4 opened at the bottom positions mounted to the palm rest.

Side view

Side view

Isometric view

Isometric view

Bottom view

Bottom view

Tenting

4 opened feet are used in the inner positions and oriented towards the center of the keyboard.

Side view

Side view

Isometric view

Isometric view

Botttom view

Botttom view

There are so many possibilities that we'll surely end up writing a manual just on this topic. Stay tuned!

Mold and cutting tool progress

It is apparent that our Serbian contractor is hard at work. This is the sheet metal contour cutting and bending tool. It's already functional, but we have to wait for the assembly of the rest of the tooling so that the holes of the MX switches will be cut, too.

sheet-metal-contour-cutting-and-bending-tools

And this is the injection molding tool of the case buttons which is also functional:

injection molding tool of the case buttons

We're happy about the progress of our Serbian contractor and can't wait to see even more hunks of steel.

The 6th generation PCBs are being fabricated

Lately, I've been working on redesigning the schematic and PCBs of our latest prototype. These are the fruits of my labor:

The back side of the right PCB

The back side of the right PCB

The back side of the left PCB

The back side of the left PCB

The improvements are plentiful, featuring:

  • the super powerful MK22FN512VLH12 and MKL03Z8VFK4 MCUs
  • IS31FL3731-SALS2 LED driver ICs per keyboard half allowing for per LED backlighting (we can't provide LEDs and translucent keycaps yet but the ICs will be on board)
  • 2×5 0.05" ARM programming header + Tag-Connect TC2030-NL header + TC2030 header per board for extra developer goodness
  • optionally solderable reed switch per board to reset the MCU without disassembling the case to make it easy to hack the firmware even if jump to bootloader feature gets screwed
  • optionally solderable I2C breakout header for developing modules in a breadboard friendly fashion
  • optionally solderable test LED per board for debugging purposes
  • pogo pins and I2C (versus the previous UART protocol) between the keyboard halves enabling the use of modules mechanically and electronically

A small batch of these boards are being fabricated right now at Eurocircuits and can arrive in any moment. I'm also about to order loads of components real soon which will be soldered onto the boards. These PCBs are supposed to resemble the final production boards very closely, so we'll make sure to give them a fair amount of testing.

If you are one of those people who grok electronics please don't hesitate to check out our electronics GitHub repo and give us feedback about the schematic and boards. We consider every single suggestion as we really want to get the design right.

Progress on Agent

Agent has been heavily refactored lately as we port the legacy jQuery codebase to Angular 2 step by step. This is one of those things that's hard to notice by looking the application but it's very significant regarding the long-term development of Agent.

This brings me to the star of the month. Give it up for Mr Nejc Zdovc from the beautiful town of Celje, Slovenia!

nejc

My name is Nejc Zdovc and I have been programming for the last seven years. I have a Master's degree in Computer Science and Information Technologies. I was drawn to Angular 2 community last year and ever since, I've enjoyed pushing its boundaries. At the beginning of this year, I was having wrist problems and that's why I was looking for a new ergonomic keyboard. I stumbled on the UHK and, with a little research, I found out that this is an awesome project, so I decided to start contributing. For the last few months I have been helping József with Agent.

Nejc has been helping out a ton with the Angular 2 port. Previously, only keymaps were managed by Angular 2, but he made the whole application governed by Angular 2 by componentizing it. He ported the side menu to Angular 2 and wrapped select2 into a component. This is serious progress and requires a lot of dedication. The work is not over yet but his help has been a quantum leap forward.

You know what's crazy? Nejc and Sam don't have a UHK at their hands yet and still, their contribution has been above and beyond expectations. I wouldn't have expected developers contributing substantially before we deliver the hardware, but apparently it's already happening. This is Free and Open Source at its best, folks! I can't even imagine what will happen after delivery. I'd love to see our GitHub repos blown away by contributors!

As a token of our appreciation, Nejc and Sam will get a well-deserved developer unit soon, then eventually a final UHK with all the bells and whistles. It's really the least we can do for them.

We've just arrived to the end of this update. I hope you enjoyed it, and talk to you on 2016-08-18.