The second iteration is working quite well. You can see below a typing test done with Boba U4 silent tactiles:
At the time of writing this log, I'm still waiting for new memory displays.
After testing the second iteration of the board, there are a few issues that should be improved on for the third iteration:
- Control over EXTCOMIN and EXTMODE pins for the memory displays, to toggle the VCOM signal as recommended per the datasheet.
- Add a button to short the battery negative terminal and the board's ground. In the current iteration, the AP9101CK6-ANTRG1 protection is used to disconnect the battery in the case a fault condition is detected. This chip requires the battery negative terminal and system ground to be shorted together when the battery is first inserted. This is not very practical from a user perspective as he needs to manually short pads together when first inserting the battery.
- Add hardware debouncing on the navigation switches. In the current iteration, there is a quite heavy chatter on the UP, CENTER and DOWN positions of the 5-way navigation switch. This can be solved by increasing the debouncing time on press and release from a software side, but as the current firmware doesn't support setting different debouncing parameters for different keys in the matrix, a hardware solution would be better. I still need to investigate this solution and see if it impacts battery life in any way.
- It could be interesting to revamp the way hotswap switches /encoders are designed. Using pogo pins instead of a JST-SH connector could be an interesting option.
I've also mentioned it before, but I also plan on developing a development kit for the nRF52840, with different hardware components to maximize power efficiency. The parameters that could be tested are:
- Type of regulator: switching vs LDO vs internal DC-DC converter. The switching regulator should be more efficient than the current LDO solution. However, as the current keyboard only uses the LDO for its memory displays, it could be a good solution to use the internal DC-DC converter instead.
- External pullups in the switch matrix. The nRF52840 uses 13k pullups, which would give a current of 3.3V / 13k = 250uA of sinking current when a key is pressed. Replacing these with external pullups could decrease the current consumption on each keypress. The rising and falling times for each edge would be increased however (tau = RC for a simple RC circuit).
- Choice of ICs: different fuel gauges, different protection and charging circuits, ... Using a SPI device instead of I2C might reduce power consumption as no current would be dissipated in pullups.