modHCI Panel - The Ultimate CPU Control Panel

"Modular Human Computer Interface Panel" - An easy open source control panel for anyone and everyone - and it fits on a desk!

Public Chat
Similar projects worth following
The goal of this project is to design and create a modular or partially modular control panel consisting of several independently operable subsystems, each connected via a USB hub to a computer in order to enable increased productivity and functionality. This particular system is intended to be used alongside a conventional keyboard and mouse, although the mouse can be replaced by a joystick or trackball on the panel.

The subsystems will each have an independent control board; in some cases we will use recycled parts from old electronics and their dedicated control boards, and in others we will be using an Arduino Micro for a more customizeable interface.

The design also includes RGB LEDs and/or NeoPixel-type strips, allowing for custom color schemes and perhaps even reactive lighting (this is a possibility I will consider based on how the rest of the project goes).

The modHCI Panel is designed to make CAD and gaming faster and easier through the use of preconfigured shortcut buttons and switches, as well as giving your computer a boost in aesthetics with custom RGB lighting and other such novelties.

This project was inspired in part by the massive overhead control panel by smashcuts on reddit, but my aim is to make this system smaller, easier, and desk-friendly, i.e. you don't need to hang it from the ceiling. Mine also probably won't look as cool, because I prefer a simpler lighting setup (less soldering = happier hacking). 

To increase portability and make it easier to convert to different desks, I've decided to make this a partially modular system - the left and right panels can be removed from the center panel, and are capable of independent operation (provided you have enough USB ports without the central hub).

The panels will be built from 1/8th inch plywood/MDF, with mounting holes cut in the top and some recessed areas for LED strips.

A quick overview of the subsystems we will possibly be making/using:

     Number pad - for CAD, where the right hand is on the mouse. Used to input values for extrusion, shifting, etc. where the right hand is unavailiable. Self-contained.

     Function Buttons - used for a variety of functions, can be assigned to any shortcut or key combination, i.e. CTRL-C or FN-F2 (Volume down on most keyboards). Powered by Arduino.

     LED Controls - consist of a 5-way switch (from old electric guitar), and assorted buttons for queuing effects. Powered by Arduino.

     USB Hub - combines all subsystems into one unit, allowing the use of other computer peripherals. Self-contained.

     Function Buttons - Another set for any function, I intend to use these for play/pause and other sound-related controls. Powered by Arduino.

     Buttons - used for "Jump" and "Fire" commands in MAME software, reconfigurable for other games as well.  Powered by dedicated USB game controller.

     4-Way Joystick - for MAME games, can also be reconfigured for other games as WASD or the Arrow keys. Powered by dedicated USB game controller.

     RFID Unlock System & LCD - For unlocking various things across the computer. Powered by Arduino.

     Rotary Knob - for selecting options within the RFID Unlock sytsem. Powered by Arduino.

A few of the subsystems within a single module may share control boards, especially the Arduino systems.

View all 18 components

  • Center Panel Wires and Lights!

    E. Grames08/27/2018 at 14:00 0 comments

    So, today I wired up the center control panel. I added an Arduino Nano to control the EL wire and NeoPixels because I was having a hard time trying to make a proper display matrix. And I was running out of wires. 

    First off, I rewired the EL wire DC/AC converter to run from the 3V3 port on the Nano, instead of the original 2 AA batteries. I was correct in my previous assumption that I could wire the button directly into an IO pin from there, and it works pretty well (but only in solid state. Blinking and fading tend to half-work and then the Nano decides to reset itself. Probably something to do with the transformer. I also added NeoPixels.

    Then, I wired all of the buttons up, the function buttons to a Micro and the two smaller buttons to the Nano along with the 5-way switch. I was pretty much out of wire by that point, so I used up the last of it to wire the LEDs for the small function button panels in groups. (to reduce pin numbers, I didn't have enough of those either).

    The converter for the EL wire. Note the jumper where a chip used to be.

    I didn't remember to get any pictures of the wires on the back of the center panel, I'll take those and put  them in the next log, which should be detailing the wiring of the right panel. 

    And here is the panel, with lights on and in action!

    So, see you in the next log! (however that works...)

  • Soldering and Wiring the Left Panel

    E. Grames08/26/2018 at 18:04 0 comments

    So, I just finished wiring the Left panel. I have the 8 buttons on pins D4-D11 and the lights on pins D12, D13 and A0-A5. Everything has a common Ground, and the buttons are Active Low so that I can fully utilize the INPUT_PULLUP feature of the Arduino boards.

    Looking at the underside of the left panel.

    None of the wires touch the desk...

    So, after wiring it, I decided to run a quick test code to make sure the LEDs all work. Since it's a bit late, I didn't bother with adding the buttons to the code just yet. I'll do that tomorrow, as well as wire up the center panel. If I have time I may also consider wiring the right panel, but that one will be more complex anyway so I'm going to leave it for later. With that one I'm actually going to use custom-crimped Dupont cables, just to make it easier to interchange wires if something is incorrect.

    The left panel, with all lights on.

    If you want it, here is the code. Just a very simple light sequencing sketch, nothing too fancy.

    Read more »

  • The Next Part

    E. Grames08/23/2018 at 09:34 1 comment

    So I know this log has been a long time coming, and that is entirely my own fault. I tend to be a little overambitious on my time estimates, and there were other things I had to do before I could get back to this.

    Side note for any of my long-time followers on Instructables: Part of the delay was because I finally ordered a 3D printer! Yay! we can expect whole tons of new projects from this development!

    Anyhow, back to the topic. This log will be primarily discussing the wiring of this project and how I'm going to go about it. 

    I have 3 panels, each will have their own Micro. 

    The Left panel has 8 buttons and 8 corresponding LEDs. I have 12 I/O pins (well technically there's more but I'm in a habit of leaving the TX and RX pins open) and 6 Analog pins. 

    There would be a total of 16 pins needed for this configuration. now, I could reduce that to 8 by using a matrix. Problem is, it's really hard to use a matrix as a sensor grid at the same time as using it for an LED display. So, I'll wire it the traditional way.

    The Center (or Centre for our friends in Britland) Panel has 16 buttons, a 5-way switch, and EL wire. I was going to add NeoPixels, but it's a bit too much to try and handle that as well. 

    Since I don't need a display matrix, I can go ahead and wire the buttons in an 8 pin matrix. The 5-way switch and the EL wire will populate the analog pins.

    For the EL wire, I think I need to use a transistor (it has a button-activated circuit) but I might be able to get away with rewiring it into the 5V from the Arduino and then just pulling a pin High/low with the common ground allowing it to work like a button. I did actually mod my power supply previously, it use to have one of those circuits where you press the button to cycle through modes. I since removed that chip, added a jumper where it used to be, and changed the button out for a switch.  Now the EL wire is a solid On/Off deal.

    For the right panel, I'm not going to bother until I finish the other two, because the RFID and LCD are just such a pain to wire correctly, and then I still have to compile the libraries and write what will end up being an insanely long code to get a "menu" of sorts going... Yeah, I'm just going to forget about that for now. I'll see if anyone else has published a code for something similar to draw some tips. 

    Anyway, Ill get to it, and I'll publish another log with the results soon.

  • Days 5, 6 & 7

    E. Grames07/26/2018 at 15:56 0 comments

    So it took me a while, because I was multitasking, but I did finally finish building the central panel. It has 2 sections with function buttons, some controls for NeoPixels which I have yet to add, and a USB Hub to bring the entire set of panels together as one. 

    I used a bit of blue EL wire to block off the big function buttons, to great effect, and added some stripey caution grip tape to make the whole thing seem more industrial and sci-fi ish since I didn't go all out with lasercut parts and acrylic and LEDs everywhere, partly because I prefer a more minimalist setup and partly because I just don't have the tools, time or budget to even bother. 

    To those of you who may follow my work on Instructables (and yes, this will be appearing on there too) you will already know I am severely limited in tools and materials, so it will come as no surprise to you that I have cut this entire project out using just a mini jigsaw and a rotary tool, both of which I acquired just a few weeks ago. 

    Anyway, without further ado, let's get straight into the pictures:

    The function button panel.

    Fully assembled.

    Rear view. The backs of all the panels are open so that I can rewire things as necessary.

    The entire setup.

    The center panel, with the EL Wire activated.

    Now all I need to do is wire up the buttons and LEDs to the Arduino Micros, and program them. And add NeoPixels. I might use an Arduino Nano for the NeoPixels because this won't need to interface with the computer. I'm on a trip next week, so I might not finish this until early August. 

    Another thing I need to consider is whether I'll be labelling the buttons, or just leaving them blank so I can reconfigure them later with less hassle. We'll see.

  • Name Change!

    E. Grames07/23/2018 at 11:07 0 comments

    So I decided to change the name of this project. I never really liked the original, it just didn't roll with the feel of the project. Now, instead of being the m.i.A.C.C.E.S.S. (Modular Interface Arduino Computer Control Enabled Super System) it is the modHCI Panel, a shorter, more sensible name that better fits the project in a more concise way. 

    Sorry if the change confuses anyone, I know the original design sketch and a few of my logs still refer to the project by the old name, I'll be leaving them that way to keep a sense of overall development about the project (which I think is the point of the logs).

  • Day 4: Completing the Right Panel

    E. Grames07/22/2018 at 15:55 0 comments

    Today I finished up building the right panel, and while doing so I modified my original plans (like I always end up doing) and added a LCD instead of the analog joystick. 

    The purpose of the LCD is to give a little more purpose to both the the rotary encoder and the RFID reader. Now, instead of just unlocking my computer, I can scroll through a list of "locked" options and select one, for instance if I spent enough time to program it I could scroll down to "hackaday" and choose "login" and it will open up Hackaday and log me in. More on this when I start programming.

    I also added a smal incandescent bulb as a "warning indicator" which I will program for something random later.

    Here's a few of the photos:

    Once I finish the center (I'll do that tomorrow) all I'll have left to do is wire the whole thing up, add any embellishments (Neopixels, EL Wire) and them program the three Arduino Micros. Then we're done! I estimate the whole thing should be complete by this Wednesday (but don't quote me on that).

  • Day 2 & 3: Building the Faceplates, Completing the Left Module

    E. Grames07/22/2018 at 09:14 0 comments

    (For those of you wondering, I will type out the step-by-step process when I'm done with the whole thing.)

    So, I went out to get plywood, came back with a 1/8th inch sheet of MDF instead. While I was out, I saw a USB Number Pad and some cheap speakers, I got those too. 

    I decided to discontinue my efforts with the matrix idea because I still have my concerns about how well it will work and how long it will take for a key to register, plus the fact that I would have to spend forever writing a code to debounce the whole thing and then give me the accurate keypress value. 

    I cut out my faceplate for the whole thing after sketching it several times and making slight modifications. I "test fit" everything and then cut off the plates for the left and right modules. 

    After that, I cut out and painted a raised platform for the function buttons on the left module, and after painting that I glued it all together with the number pad, LEDs, and buttons. 

    Then I created the base for the left and right modules. They have a 10 degree tilt away from the keyboard and a 15 degree tilt towards the screen. These are also painted, and I glued the one for the left onto it's module. I'll be working on the right module tomorrow, and the center after that.

    Here's some of the pictures.

    Right now I'm using hot glue for everything to make sure it all fits, later I'll install some angle brackets. More updates will be posted as I finish each module.

  • A New Module - RFID Unlock

    E. Grames07/19/2018 at 17:26 0 comments

    I just had an idea for another module to add to our control panel, on the center module. It is very simple, and does not require very much in terms of wiring and hardware, which is why I like it.

    Enter the RC522 RFID Reader. I found this while digging around in my Arduino kits, and I remembered a computer unlocker project I had seen some time ago using one of these. The principle is, you swipe the card/dongle/RFID chip thing and it unlocks your computer. Cool. But we can make it better. 

    My idea is to use a similar setup, except with a small tray/slot for the card or dongle to sit in. Then, we have two buttons next to this slot. Press either button, and the Arduino will check to see if the proper card is in the slot. If it is, it will either enter the password and unlock the computer, or it will lock the computer, depending on which button was pressed. If neither button is pressed, nothing will happen, so you can leave the card there for the duration of your computer use, then use it to lock the computer and remove it. 

  • The New Matrix

    E. Grames07/19/2018 at 16:51 0 comments

    Okay, I've determined my new button configuration and the matrix setup. It will be a 10-pin matrix, with the 17 button number pad and 8 additional function buttons. Here's the sketch with each button labelled with its respective position in the matrix array. Pins will be labelled A-E and 1-5, with 25 possible combinations, one assigned to each key.

    Also seen in this picture is my planned layout for the 8 function buttons, complete with LEDs and "glowing traces" on their panel. These will either be EL wire or painted, and if I can figure out how I might use recessed NeoPixels instead. As with most of this project, we'll just have to see what works out.

  • Finding Good Work Music

    E. Grames07/19/2018 at 16:02 0 comments

    Just a short note, but I found some awesome music that I like to play nonstop while I'm working, it really helps me concentrate and I think my work comes out better for it. That, and it's soothing enough that I don't get frustrated, fed up, or stressed out quite as easily when I hit a hard patch of working. I'll link each as a video from YouTube. 

    Note: These are not my videos, nor do I claim them to be mine in any way. I have put them here for entertainment and/or educational purposes. All rights belong to their respective owners. If you own the rights to any of the works in these videos and want them taken down, contact me and I will oblige.

    A lot of the music YouTube will recommend that is similar to this is equally good, and I enjoy many of those as well.

    So, if you want something good to listen to while working, these three are probably the best mixes IMO. I seriously have played each of these at least five times all the way through while working on various things.

    That's all for this log. Have a listen. Hope y'all like it.

View all 13 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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