Close

Decreased Battery LED Brightness

A project log for Wireless BLE Kinesis Advantage (Custom Controller)

Replaces the stock controller with an nRF52 BLE SOC and MCP23S17 io expander. BLE Kinesis with great (few months) battery life.

mike-wMike W 11/16/2018 at 14:521 Comment

Totally slipped my mind that I could just PWM the led(s) to lower brightness. They were previously burning around 2mA each and we have 4 of them (8 + 3 = 11mA with everything on!). So even with a shorter 30 sec timeout, I still lost 25% (roughly) in about 3 days. Guess my keyboard was sleeping / waking more than I thought.

Now we're PWM'ing them for 10/255 (still bright enough to see in the day) and they only use 0.06mA each! All together, with the board on + blue power button LED + 4 battery LED(s), we're at around 3.45mA. NOT BAAAD.

3000 / 3.45   = 869  / 24 = 36 *  0.7 (safety factor) = 25 days of continuous use. 

Considering I have other stuff that keeps me away from the computer, like sleeping and eating, I'm expecting at at least 50 days of real-world usage until a recharge.

If the battery still only lasts 10-15 days, I'm definitely getting a new LiPo, because I'm out of ideas on how to further reduce power consumption.

Discussions

Kyle Stemen wrote 02/25/2019 at 04:08 point

Hi, I've got an old Kinesis essential keyboard I recently tried to repair. I got everything to work on it, except the fn keys double press. So I decided to try making a new controller. I'm going to use your blog as a guide.

I'd like the keyboard to work over BLE and USB. Your controller is using an Adafruit NRF52. I read that it doesn't support native USB. Does that mean it shows up as a serial port instead of a keyboard when you plug it into a computer? I haven't ordered the parts yet, but I'm planning to try the Adafruit NRF52840 Expess instead, because it supports native USB.

You report that the power led is using a lot of power. A normal Kinesis keyboard doesn't have a power led. Why do you need one? Without thinking about it, my keyboard usually has the scroll lock or num lock led on. So I could tell if the keyboard is on from that.

In one of your posts you describe how for power savings the CPU does a matrix scan in 0.8ms then goes to sleep for 9ms. That's a good fallback strategy for when keys are held down on the keyboard, but I think you can do better when no keys are pressed, and that's the common case. Can you just power on all the key row output lines, configure the CPU to wake up when any of the column input lines turn on, then put the CPU to sleep? With all the row lines powered up, you won't be able to tell exactly which key was pressed, but you'll know some key was pressed. When the CPU wakes up, it can do a full matrix scan to figure out which key it was.

I've tried reading the NRF52840 docs, but I can't tell. When the CPU goes to sleep, does it keep the GPIO output pins active? If not, I'll have to use the I/O expander for all the output pins.


You've connected a lot of the FN lines together. I haven't found any diodes in the FN switches of my Kinesis essential. I also own a Kinesis Advantage Pro, and I don't see diodes in its FN row either. Do you have ghosting problems when you press certain combinations of 3 FN keys at the same time, or does your model of keyboard have diodes?

In your pictures, your thumb keypads are using a removable flex connector. My keyboards have a different non-removable cable. Did you switch the cable, or do you have a newer model?

  Are you sure? yes | no