A poket-to-laptop size microcomputer/programmable calculator, based on Arduino DUE and Terminal-BASIC
Hardware Keyboard. It interfaces via J1: 1 VDD (3 to 15 Volts are OK, the logic level will change correspondingly) 2 KBD RESET 3 KBD CLOCK 4 KBD READ 5 LED RESET 6 LED CLOCK 7 ARDUINO RESET 8 GROUND J2 is for connecting additional buttons or other devices: 1 VDD (pass-through from J1) 2-11 COLUMNS 0-9 12 ROW 7 13 ROW 8 14 GROUND
Adobe Portable Document Format - 148.43 kB - 10/11/2019 at 06:41
I have completed the keyboard design. The current version has 60 buttons (one is hardwired to the controller Reset).
The display so far is a Black-and-White 128x64 low-power Black-on-Blue LCD (Note that the original MK-90 has exactly that resolution, but the screen is much larger). This is a quick rendering for comparison:
An alternative version would be with something like <A href="https://ru.aliexpress.com/item/32900230382.html?spm=a2g0o.productlist.0.0.74332b554sPNai&algo_pvid=9cab2e0a-fd50-41b0-bcb1-1507db69df45&algo_expid=9cab2e0a-fd50-41b0-bcb1-1507db69df45-16&btsid=be79cb74-3b32-40fb-b934-aadc62349cf5&ws_ab_test=searchweb0_0,searchweb201602_9,searchweb201603_55">LG320240</A>, but they are very costly.
The keyboard is assembled on a 140x95 mm mock-up board (the actual PCB size will be 100x70). The electronics and the Arduino Mega driver are working, Now need to decide how to assign the letters...
The schematics is attached in the PDF file.
The keyboard will have 6 rows and 10 columns, 59 buttons in total (#60 is used for reset). It is operated via a 3-line interface not very dissimilar to SPI: setting RESET high brings the counters to the initial state, then CLOCK is cycled 59 times and SIGNAL reads the status of 59 buttons (HIGH means "pressed"). The CMOS 4017 decade counter addresses 10 rows and a combination of a 4520 binary counter and a 4051 analogue mux connects the rows. The clock signal is sent to the 4017. Upon reaching back to zero after 10 pulses, the ripple signal from the decimal counter advances the 4520 to the next row. Because only one button is connected between the mux and the decimal output at any given time, diodes at the buttons are not required. Any number of buttons can be pressed simultaneously (the number of your fingers - and toes - is the technical limit) - they will all register .
The second half of the 4520 octal counter drives 4 LEDs to show the keyboard status (or could be used from the Basic to do some creative blinking). One button is hardwired to ESP32 reset.
In the stand-by mode the keyboard consumes less than 10 uA (micro-amp). Each LED consumes about 1200 uA if lit.
Upon the PCB completion and testing I will put the KiCAD files on Github.
The next big design question: "To brick or not to brick?"
MK-90 is, well, a "brick". Another status symbol, MK-52, is a "wedge" (an so are B3-34!):
Here is a first variant of matrix keyboard. I choose 5x9 size as the smallest suitable to support full cyrillic charset and digits on separate keys (33+10).
It will use 2 shift keys: the red shift and the blue shift, which state will be indicated by the 2 LEDs of corresponding colors.
First prototype will consists of minimal number of modules:
The firmware is a Terminal-BASIC with UTFT output driver.
Things to be done includes support for double precision floating point arithmetics (DUE has double reals unlike 8-bit AVRs). and driver for a matrix keyboard of 45 - 48 keys.