Close
0%
0%

Euclid Keypad

Mechanical Keypad and RPN Calculator

Similar projects worth following
I'm putting together a keypad that has a built-in Reverse Polish Notation (RPN) Calculator. I have the HP 48GX calculator and the Plaid keyboard as inspiration. That makes a simple through-hole design which should be easy for others to assemble. I'm also throwing in a rechargeable lithium-ion battery so you can use the calculator standalone. I decided to name it after a famous mathematician, and based the board artwork on his famous book Elements.

Project components:

  • ATMEGA328 - the Arduino processor
  • PlatformIO instead of Arduino IDE
    • It's just better
  • Adafruit 2.0" 320x240 Color IPS TFT Display
    • Get to use the Adafruit graphics library to make development go a little faster
  • VUSB - for USB interface on a non-native USB microcontroller
    • Although, PlatformIO doesn't have VUSB as a library, so I'm using Adafruit ProTrinket keyboard library instead.
  • Maxim 1811 for battery charging
    • Couldn't find a through-hole battery charger, so this was the largest SMT footprint instead
  • Lithium Ion Polymer Battery - 3.7v 1200mAh
    • Also from Adafruit with the nice JST connector on the end.
    • Wanted the thin housing instead of the 18650 to fit underneath the PCB
  • Arduino as ISP
    • Used the Arduino for the breadboard build.  Might as well use it for the programmer

  • keycaps on

    Justin Davis05/26/2021 at 20:14 0 comments

    Put some keycaps on and it's looking pretty good.  I need to glue down the display a bit to contain the leaking backlight.  I didn't have any Enter or = keys that were one unit big, so I improvised.

    I've found that I really need a backspace key because I make a lot of mistakes while typing on it.  Also, I can use it as a "drop" function to remove items from the stack.  At some point I can try to design a base for it and 3D print it, but I've never done any mechanical CAD work before.

    One with the screen removed:

  • All switches added

    Justin Davis05/25/2021 at 16:35 0 comments

    I've cut some traces and soldered some wires, so the SPI bus uses the native port.  This made screen updates much faster.  I've checked the switch scanning code and it all works, so I soldered on the rest of my switches.  I went with Cherry MX Blues for some clack.  All switches are now sending keycodes over USB.  

    Next I need to work on the layers code to access the other calculator functions.  That also means I need to decide on other functions that I want to implement and what keys to put them on.  This is where there isn't a good stopping point since I can keep adding layers and functions to no end.

    Also, I'll add some keycaps for now to make it look nice(r).

  • Initial PCB bring-up

    Justin Davis05/21/2021 at 17:22 0 comments

    I've had the PCB in house for some time now, and just got around to assembling and doing the first loading of software.  I didn't realize I had used a different pin for the SPI interface, so it's reverted to using a much slower bit-banged version.  This significantly slows down the screen writing.  I believe I will cut and jumper wires to put it back to the fast version.  

    It took a considerable effort to figure out how to use the Arduino as an in-circuit programmer.  And then to figure out why the display wasn't working.  I guess PlatformIO include file didn't define the ports correctly.  The USB worked right off the bat though (luckily).

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates