top of page

Mirakey Weekly Update (March 7th)

As product development continued, some new roadblocks in hardware were discovered. Outlined below are some of the problems encountered, and the necessary reworks and design changes that had to be implemented.


Keyboard PCB Issues

The first obstacle was the inability to connect and power the microcontroller on the keyboard PCB. Using a ST-LINK programmer, the utility tool was unable to recognize the connected microcontroller. The lack of debug tools available and uncertainty regarding the soldering process made diagnosing the problem very difficult. Pinouts and circuit schematics were verified while consulting the STM datasheet. It was determined that the crystal oscillator was an incorrect frequency and a replacement crystal was quickly ordered.



Display Serial Interface

In the meantime, while the keyboard PCB was in the midst of being debugged, work was furthered to get the displays operational. Pictured below is the 70x40 pixel OLED display that was chosen for the project. 2 displays were purchased with a breakout board for debugging and development purposes.

The goal was to successfully write and program to the onboard display IC (SSD1306) with our custom serial protocol. The SSD1306 officially supports 3 different serial protocols; I2C, 4-wire SPI and 3-wire SPI. Our project was designed to take advantage of the SSD1306's 3-wire SPI implementation to save I/O on our keyboard PCB. Despite our best efforts and the confirmation from documentation, 3-wire SPI refused to work. Shifting gears in the development phase, we were able to successfully implement 4-wre SPI which had significantly more online validation. We continued to work backwards from 4-wire SPI in an attempt to get 3-wire SPI working before it was discovered that although the display IC supports 3-wre SPI, the 70x40 display itself had 3-wire SPI disabled internally. With this knowledge, we will have to make a last minute design revision to allow for 4-wire SPI.


Changing the GND pin in our bus to a GPIO pin will allow for our 4th wire #D/C bit in the 4-wire SPI implementation.


Keyboard PCB Issues Persist & Devboard Prototype

Midway through the week, the new crystal oscillators came in for the keyboard PCB fix. However, the oscillator fix did not revive the MCU. With deadlines soon approaching, it was decided to abandon the custom PCB and attempt to make our keyboard prototype with a NUCLEO STM32 development board. Using 4-wire SPI and keyboard layering, a working prototype was successfully developed.


It was also during this prototyping phase that another design revision was made. Initially it was decided to use a QMK software package to write the keyboard logic and layers, but this proved to be more difficult to integrate with the display logic. Instead, it was discovered that an HID interface over USB would be easier to implement. Using a cut USB cable, the data and power lines were routed into the dev board and allowed the PC to recognize keypresses from the device.



Keyboard PCB Part 2

Succeeding in creating a working prototype from a dev board, the keyboard PCB was revisited and diagnosed. This time it was discovered that in addition to the crystal oscillator, the Vref+ pin on the MCU had been left floating in the circuit schematic. After correcting this error, and configuring the programmer, a connection to the MCU was finally established. This allowed us to quickly program and verify the prototype code on the main PCB.



Next Steps

With significant milestones achieved in hardware and software, next we need to 3D print our keyboard case and chassis. One of our group members is in the midst of being trained to perform resin printing at the WATIMAKE lab and we expect this next milestone to come quickly. Afterwards, keycap and display assembly will be required, but progress on this will be blocked until the keycap PCBs get shipped on March 10th.

23 views0 comments

Recent Posts

See All
bottom of page