Author Topic: Building a macro-keyboard, joystick and 3D-Mouse all-in-one named CIMDIT  (Read 1006 times)

0 Members and 1 Guest are viewing this topic.

Offline grumpydeveloperTopic starter

  • Newbie
  • Posts: 1
  • Country: de
    • My personal blog on my public, ad free blogging/crowdfunding site
Hi,
as the title said, I'm currently building a monster.
The name is an acronym for "Completely Insane Multi-Input Device Thingy".
Yes, I already did a reservation for a room with a nice view in my local mental asylum.
Let's start with a picture, yes this thing does exist and does work:
1438273-0

Features:
  • up to 64 buttons (8x8 keyboard matrix)
  • up to 16 analog axis
  • up to 8 rotary encoder
  • switchable profiles (for apps, games, whatever), switchable on device, support for profile icons
  • profiles can be reprogrammed over serial port, no re-compiles
  • primitive all-in-one-file html page for profile configuration in json
  • shows graphics sent by serial connection
  • fully open source
  • shows up as a keyboard, a mouse, a joystick and a serial port
  • no drivers needed on target device
  • should work with any modern OS
  • insanity level on a scale of 0(harmless) to 10(total crazy): a 11 or 12
Used components (all off-the-shelf)
  • 128x32 OLED monochrome display SSD1306 based
  • Arduino Pro Micro (clone)
  • 2x MCP23X1 16-port IO-Extender I2C
  • AT24C256 32kB EEPROM I2C for profile storage
  • CD74HC4067 16-to-1 analog multiplexer
  • 26 mechanical keyboard switches
  • 3-axis joystick
  • diodes
  • 5 rotary encoders with knobs
  • small pieces of perfboard with individual dots
  • 1 linear potentiometer, those used in mixing consoles
  • Way too many wires in a too small and badly designed custom 3D-printed case, might explode and spit internal any second like a reversed electrolytic cap...
  • To save a lot of hassle, use normal push-buttons with the round mounting hole and a ~13€ 200mm x 120mm x 55mm case and drill holes in it

Some hurdles I had:
  • Program size
  • because of program size, had to write my own OLED graphic library, existing ones were too big, bit level graphic functions over I2C, yeah
  • Mix of programming languages and areas (C++ for the devices, Typescript, less/css, HTML), Graphic program, hex editor)

The build series starts at https://contentnation.net/en/grumpydevelop/cimdit_1 currently 4 articles.
Full source and electronics (KiCad 6) in the git repo, link in article. 3D-model (FreeCAD 0.19) following soon, I'll fix some of the issues of the built one first.
Looking for feedback and ideas to fill up the remaining 2012 bytes of flash program memory ;)
Maybe I'll cancel the reservation of the room depending on feedback.

If anyone wants to help by expanding the in-repo profile generator, from the current json to binary thing to a noob usable editor, get in touch. I have ideas but ran out of motivation for now.

Cheers

Grumpy
Self employed full-time developer, from electrical wire to pixel on screen, literally. Specialized on "impossible" performance application on backend-servers. Full time grumpy. Full time nerdy, full-time crazy.
 
The following users thanked this post: thm_w


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf