Ask Slashdot: Physical Input Devices For Developers?
First time accepted submitter paysonwelch writes "I am a developer and entrepreneur and I am considering developing a very graphically rich and custom interface for my latest application which does charting and analysis of large data sets. The application would feature lots of gauges, knobs and levers. As I was thinking about this I said to myself, why not hook up physical knobs and levers to my computer to control my application instead of designing them in 2D bitmaps? This could potentially save screen space and provide tactile feedback, and a new way of interacting digitally with one's application and data. So my question is whether or not anyone out there has advice for building a custom solution, perhaps starting with a mixing board, or if there are any pre-fab kits / controllers for achieving this?"
Go and hire someone who can do Human Factors designs for user interfaces.
The dogcow says "Moof!"
I don't want an arbitrary number of custom input devices for various applications.
To offset political mods, replace Flamebait with Insightful.
I would do some research into inputs for Flight Simulators and I'm not talking about the big commercial ones. The hardcore fans build quite sophisticated flight sim setups in their home all with custom controls to match their aircraft of choice with all the knobs, switches and levers. There are quite a few companies that cater to them as well.
This sounds like a great idea to me, but don't expect a lot of takers. You might start out with one of the gaming mice that have buttons and other controls all over them, to see how you like using many non-keyboard inputs.
Another place to start might be model airplane radio control consoles--USB output is provided to practice flying your model plane in a flight simulator. Same for radio control model cars--this driving game is a simulation of an RC car [disclosure, I did a small project for this company] http://www.vrcpro.com/start.aspx see tab, "USB Adaptor".
Arduino ... with some analog to digital converters, and some old fashioned pots ( sliders and knobs ) and buttons, with the arduino sending the events via USB, to the linux kernels input subsystem, would make for a simple real world control panel, so I second your suggestion.
lots of dials and knobs via midi boxes.
sound cards used to be able to import midi control data.
alternately, if you are into diy, arduino for the pure hardware interface and then send serial rs232 data up to the host (via usb but its still serial inside). you can read knobs via the a/d pins on the arduino and you can read buttons via port expanders or local pins.
--
"It is now safe to switch off your computer."
Electronic musicians have been demanding high-quality tactile interfaces for many years. There are various USB MIDI controllers on the marked with various arrangements of knobs, buttons, keys and other moving things. Check out M-Audio and Alesis and other big names, and you might get some good ideas.
X-Keys or Monome or any one of a million Control Surfaces, for starters. Or Arduino obviously. Personally I think that for a lot of applications the best solution is to drop the knobs and switches, take apart an old USB keyboard, and build a custom button-based interface using the matrix board. Interface it with hotkeys built into your app, and this way it shows up as a regular HID without needing specialty drivers.
"Once in Hawaii I had sex with a 102 year old male turtle. It is difficult to argue that it was consensual." - Steve Ma
People who use software for music production like tactile controllers as well. There's a range of products out there from the korg nanokontrol (~59US) series up to the euphonix line (~1000US+). Most nowadays use USB and older ones tend to use MIDI. Motorized knobs are hard to come by in this market, but lots of products use LED rings to provide visual feedback since the encoder is endless. Motorized faders on the other hand (is this a lever? lol) are rather plentiful and not too expensive. Start your search with "control surfaces" and possibly some other terms like 'DAW' or 'MIDI' or 'USB'
The electronic music/DAW/DJ crowd has been all over this sort of stuff for some years.
Something like the Aurora is an open source hardware example; but there are a large number of devices at various price points and levels of openness that boil down to a whole bunch of knobs, buttons, and sliders, with some sort of computer-compatible interface(often MIDI or USB-MIDI device, sometimes with a driver or plugin for Ableton or Max specific to the device).
The audio guys may not map 100% to your requirements; but they have the advantage of being a reasonably large, reasonably active, community with a fair amount of existing hardware available off the shelf.
As an alternative, many contemporary microcontrollers are capable of serving as USB slaves. Something like a teensy is pretty cheap and makes it dead easy to turn inputs from buttons and sliders and rotary encoders and things into USB HID keycodes.
While the Guitar Hero guitar was a PITA for retailers (huge box, took up space), it wasn't the game itself that sold people, nor the controller. It was when people put the controller on, that it conveyed a feeling of "I'm a rock star".
That feeling itself is what made GH a great game. Same holds true to flight sims, driving games with steering wheels and plastic guns. They add an emotion to the game that isn't there with a gamepad/joystick/keyboard+mouse.
I got a chance to meet Kai Huang at a class I was taking and he was telling me that when they brought the controller to the VC guys. The VC guy put on the controller and before even playing the game told Kai and his brother that he was sold on it. The VC guy said, "I don't know how to play guitar, but I feel like a rock star!"
If you really want to do a custom interface and have a little hardware skills you should try an Arduino. You can interface to any hardware device and feed the data to the computer over serial USB.
The easiest approach to prototype or make a small number of devices is to hack existing devices such as USB game controllers (or HID devices of any sort, really). Tear them open, wire up your own switches and knobs. Then you can typically use the controller's own software to map each button to a keystroke or other action.
http://www.trossenrobotics.com/p/phidgets-encoder.aspx?feed=Froogle
A cheapo Arduino board ($35) has 6 10-bit analog inputs and is fairly easy to program. You could send the data back to the computer through the USB port (or network or even bluetooth with the right add-on cards). Nice pots would be about $8 each perhaps. The wiring is very simple.
You could use a multiplexing selector arrangement to increase the number of analog inputs at a cost of some complexity. Just be aware that AIs tend to require a settling time.... so like I said - it depends on the throughput.
It would certainly make your project very distinguished. It would take some time to sort this solution out, so allow extra time.
Griffin Powermate. Been around a while, affordable.
http://store.griffintechnology.com/powermate-1
Let the net do your shopping to save $bucks.
Lots more out there, this has easy interface via USB.
Red
JazzMutant has some pretty nifty stuff.
http://www.3dconnexion.com/products/spacepilot-pro.html
Probably not exactly what your looking for, but its top notch hardware with a reasonably nice SDK. Depending on exactly what your app does, the multiple axiseses of control might also be beneficial.
You wouldn't need the A/D converters. The atmega328 (main chip on the arduino) has them built-in.
Sounds almost like a (musical) synthesizer controller is what you need.
e.g. something like:
http://www.behringer.com/EN/Products/BCF2000.aspx
Analog knobs for digital information.
Well, well.
Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
Surely it doesn't have an infinite number of them, hence, the reason Jesus invented multiplexing and data buses.
Buy the switches and knobs you need and solder them to the terminals of keys on your destroyed keyboard. Thats the cheap way.
http://michaelsmith.id.au
http://greatestprobowlsever.files.wordpress.com/2008/12/old-computer-thumb.jpg
s/[stupid comments]/[intelligent discourse]/gi
More than that, how about a touch screen display ie tablet to control the application whilst the output remains on the main screen, no feedback but readily customisable input.
Chaos - everything, everywhere, everywhen
Somewhere in my collection of stuff I have a box of SGI knobs, and I think some buttons as well. SGI made them as serial devices to hook to their workstations, probably in the Indigo days, maybe as recently as Indigo 2.
I think these days you would look either to the music world or the arcade cabinet builders if you were looking for something that would give tactile input and didn't require a lot of hardware hacking.
"Proximity to wonder has blunted our perception and appreciation of it" --Tim Hartnell in 'Exploring ARTIFICIAL INTELLI
Correct - in fact, it only has one, which it already has multiplexed over six input pins.
<sig> </sig>
Physical dials and switches aren't exactly a new idea...
http://www.hardware-reselling.de/ProductLinks/sgi_dials_and_buttons_box.shtml
http://www.phidgets.com/
I've used Phidgets in the past for exactly this application (research into UIs for large data). Lots of premade USB controls available and easy to hook up most analog controls to their IO boards. I went to the local electronics shop and bought a slew of buttons, knobs and slides and had no problem hooking them up with phidgets.
For programming, I wrapped the C library in Python using SWIG.
-Chris
Physical knobs work much better than touch screen 'knobs'. Also, red and green are the worse colors to use. Out of the color blind or partially colored blind people (and there's more than you think), red-green color blindness is highest percentage.
Making dynamic GUI in the sense that the controls move around is a great way to confuse users. They can't build muscle memory when you do that and have to take a moment and think about what they're trying to do instead of just doing it.
Vibration, really? Cheap touchscreens don't vibrate, it sounds like the user doesn't/shouldn't be holding the device (so they won't fell the vibrations only hear them), and if you mean visible vibrations in the GUI that's bad too: the user's finger will be covering the control and watching a whole screen vibrate is annoying (and gives some people headaches). Real controls provide real feedback. Knobs and slides can have notches or bumps in them.
Pop-ups are one of the best ways to annoy users. Avoid them as much as possible.
If you're concerned about needing to customize things after the product is build, create prototypes first. If your final product requires UI changes, it wasn't created properly.
Your way is much more complex with the additional software, sounds like it would cost more money, and requires high tech which has a greater change of breaking or having something go wrong. Stay with KISS, go with the hardware controls.
There was this a few weeks ago. Nice analog feel with a digital output.
http://www.engadget.com/2011/10/07/knowles-electronics-mems-joystick-for-samsung-galaxy-tab-ninten/
I'm developing features for software defined radio. Higher end radios, for those of you who don't know, tend to have a lot of controls. Bandwidths, IF shift, notch filter(s) with frequency and Q settings, AGC decay, intercept and knee, frequency, band, memories, panadaptor controls, waterfall controls, demodulator type, demodulator settings... it really goes on for quite a while.
Initially, I mapped a whole bunch of functions to keys, but eventually ran out of keys. Sure, there are on-screen controls, but they're not as nice as physical knobs. Essentially similar to the problem the submitter faces, at least in some respects.
So, my solution? First, a Griffin Tech Powermate knob for tuning -- because that's what you do most of with a radio. Big knob, very precise, easy to use. Then, a Behringer BCR2000 B-control rotary control deck. Cost was about $156 from Amazon. This is a MIDI device that can map any of 32 knobs and 24 buttons to arbitrary functions. Coding to the device was relatively simple; implement a MIDI learn function, then map whatever seemed fun to a physical knob or button. The board will remember several scenes, too, so you can set up a bunch of controls all at once. Works great. There's another version of the board with a somewhat similar price but a different complement of controls, works similarly, though I think it's a bit more biased towards audio concepts (faders, specifically.)
There are other physical control solutions that utilize MIDI out there as well, but I have found none as economical as the BCR2000. BTW, I don't have anything to do with Behringer other than as a satisfied customer.
I've fallen off your lawn, and I can't get up.
Aircraft only use EFIS for secondary controls. The *important* stuff - throttle, control surfaces, flaps - is still done by good old traditional mechanical interfaces.
So, in other words, you're agreeing with the OP.
Lots of levers and knobs? Can i simply say... yikes?
No, don't use knobs .. what's wrong with using a 2nd display .. with a touch based UI.
Touch based UIs only work if you are looking at them.
Car analogy: imagine a car with all of the controls on an iPad, which you put on your lap. Try driving while watching the road.
I like this idea a lot. And it seems like an excellent project for an Open Source Hardware community to develop a flexible platform for sliders, knobs, and switches to interface with a PC or Mac. Then anyone who wanted sliders, knobs, and/or switches wouldn't have to re-invent the wheel.
lol high tech is getting modded down! EFIS is used for primary flight controls and has been since the Boeing 767 in the early 1980s. I know the US FAA requires "Steam gauges" to be in the aircraft, they're certainly not used to monitor N1 and TOT! Nobody uses them to monitor fuel and "adjust for altitude" lol. Garmin has recently upgraded its series to allow for touchscreens and remove buttons. I don't know who the OP is anymore but "knobs and buttons" and other mechanical actuators have been soundly rejected by pilots, boaters, and military men.
No need to make anything by yourself. Just get a Korg NanoKontrol, and you'll have enough knobs. It's very cheap too: about 30USD.
"That's what she said"
Nobody so far pointed that out. I'm doing electronic R&D and manufacturing in small quantity, and I can tell you that while the R&D for your thingy is ridiculously simple (I can do it within a few days easily) you will lose your shirt on manufacturing it.
Another issue is flexibility. Unless your product is a control for a nuclear power station, which is designed once and then used for 25 years with no changes, you will experience different needs. With GUI changes are easy. With hardware they are between hard and impossible.
Customization is part of that problem. Some people are righties, other are lefties. You can remap controls only if your physical knobs are laid out symmetrically. Are they? What if they aren't, and can't be? Then you have a problem.
All in all, I think hardware controls are good only in a fixed, closed system. You still have limited flexibility because every knob can be mapped to do whatever, but if knob A only rotates 270 degrees but you need at least 3600 degrees (or continuous rotation, with an optical encoder) then you are out of luck.
You should go to Japan, or at least cater their market.
http://www.sankakucomplex.com/2011/11/11/the-usb-onacon-8-times-better-than-using-your-hand/
NSFW
Do a google search for "pic usb hid" and you'll see dozens of projects that use the 18F series of pic chips configured to be keyboard/mouse like devices. From there it's simple to interface your application to the device. Easy peasy.
I've got a back burner project for something like this for a MAME cabinet I'm planning. Yes, I know you can just buy USB pinboards for mame cabinets already. I want to build my own.
Weaselmancer
rediculous.
The op is right, such things are easy to design, but the per copy cost for software controls is near zero while a controller box will cost you a minimum of $100 or so including labor with no upper bound depending on complexity and materials.
However, you will have no piracy issues or weird DRM code to irritate your customers. Also a lot of folks are more willing to pay big bucks for tangible objects. Even when not in use it might be a nice status symbol to have on a desk or in a doctor's office. I see more medical equipment than I want to, and most of it consists of a small computer in a big fancy box with maybe a custom sensor or two.
Others have already mentioned MIDI stuff, flight sim stuff, and the Griffin Powermate. But nobody has mentioned a jog/shuttle controller yet.
Depending on what you are doing, one or more of these might be useful. Contour has two different models and I am sure there are other brands out there too.
http://retail.contourdesign.com/?/products/5
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Others have described where to get the knobs, sliders, switches, and indicators, and how to hook them up. For the panel itself, there's Front Panel Express, which makes nice looking front panels with any desired cutouts and permanent lettering.
If this is to be a commercial product, the device should present itself as a collection of USB Human Interface Devices. That spec covers everything from a steering wheel to a touchpad.
I personally think this is rather retro, but it's certainly buildable.
a controller box will cost you a minimum of $100 or so including labor
There are other headaches that a pure software guy is likely to not be aware of. For example, hardware requires shipping; sometimes that is expensive. Hardware wears out and breaks - and tell me about breakage of things that are designed to be handled all day long! Spills of coffee and other funny liquids, hits with massive objects, cords ripped out - he will see it all. Worst of all, he will replace all that stuff essentially for free. Maintenance on this level (below Dell and IBM :-) is not a profit center.
But as you say it's not rare when an otherwise dull business plan is saved by a smart piece of custom hardware that nobody has. Or perhaps not saved (just ask the CueCat about that.) You are right that often hardware is sold where, in truth, no hardware is needed. But it makes many people happy. The seller gets to eat that day, and the buyer knows that the entire set is supported, and if something fails it's not his problem but the manufacturer's. The manufacturer is also comfortable knowing that no weird, bottom rung hardware is plugged into his carefully tuned system.
With regard to DRM, though, it's a mixed bag. First of all, hardware dongles can be had for a few dollars if you want them. But more and more ISVs don't want them. Why? Because they are that very hardware that get lost, breaks, and requires physical handling. The cost of an incremental copy that was zero suddenly becomes $20 + shipping, and that's something that can be tolerated only if your software is sold for much more than that.
Today's computers are loaded with unique IDs. If you want you can get serials of a bunch of serialized parts (CPU, m/b, video card, HDDs) plus MAC address (forgeable but hardly anyone knows how to,) and all the other hardware information that is not unique within the make and model but is different across many customers. If you combine just a few of those identifiers you get an excellent dongle, and you don't need to pay even a cent for it. All you need to do is just a simple RSA code to encrypt and to check signatures, all neatly provided to you within Windows. Your biggest problem is not false positives, it's false negatives.
But, one says, how do I move the license from box to box? It's easier to do by individually licensing each box, or issuing a site license, or maintaining your own license server for floating licenses. Rare is the software that is so impossibly expensive that every single copy has to be counted. And if your s/w is truly that gem, get a dongle, hire a team for support, and still you will be rolling in dough. Everyone else should stop quaking in their boots. Besides, most of specialized software is never cracked; and software that is cracked is cracked regardless of how hard it was supposed to be :-)
Does this help ? https://secure.wikimedia.org/wikipedia/en/wiki/SpaceOrb_360 Descent and Quake II do are "large data sets", aren't they ?
Totof
The idea of playing with electronic circuit boards and joysticks to create a cool avionics-like interface is really cool. But in reality the application of this will become a nightmare.
I would suggest to the OP to stick with the keyboard. It already has more than 100 keys with tactile feedback, everybody is used to it, and they are cheap to replace.
What he could do is create a keyboard sheet like those available in early flight simulators. That way he could lay all the controls on the keyboard (and leave the mouse to "enter" or "leave" the keyboard control mode).
Ubuntu is an African word meaning 'I can't configure Debian'
This might work on the cheap, but you'd have to be able to figure out how to get it to work with your software: http://www.behringer.com/EN/Products/BCR2000.aspx
"Don't meddle in the affairs of a patent dragon, for thou art tasty and good with ketchup." ~ohcrapitssteve
Let your interfaces speak MIDI and experiment with some conrollers, they start at about $50 (Korg Nanocontrol). There's not much risk in trying as MIDI has been there for a long time.
Oh, the beautiful gloss of greality!
MIDI-over-USB controllers are cheap as dirt these days. MIDI itself is an 8bit serial protocol.
Audio recording control surfaces already have the tactiles that you would want. All you would really need to do is to subvert its core purpose to your needs. This is a somewhat pricey but very popular device: http://www.musiciansfriend.com/pro-audio/mackie-control-universal-pro
ralpheo
MIDI Controllers are definitely the cheapest and easiest. Livid uses a Class-Compliant driver, so you don't need any drivers. The Code Controller is nice and small for Desktop Use, but has 32-EncoderKnobs all with push-buttons. One really helpful apps for MIDI Controllers on Windows is: -Bome's MIDI Translator because it'll allow you to interface your controller with programs that don't accept MIDI Input. I haven't found a Linux/Mac equivalent, yet, but I'm sure someone's done it!
I have a Roland Midi controller PG-300 designed for a 1970's Roland Alpha-Juno2 analog/digital synth keyboard. It is an optional box with 1 push button and 36 sliders customized for the Alpah-Juno2. Its not for sale, just an example of a controller with lots of physical controls. Visit a professional music store, you might find just the controller you want used.
Knobs, levers, buttons, tons of them in a 20+ year old standard. You can get USB-based MIDI controllers for $100-$500 depending on how much you want and need, but I think something like the Akai MDP-16 or MDP-24 would be a really good starting place. Faders, knobs and large buttons -- all unmarked -- for you to start with.
Maybe you can make some kind of cardboard cutout with labels that you can overlay on top to make it look custom and match the UI of your app.
I went to eat some animal crackers and the box said, "Do not eat if seal is broken." I opened the box and sure enough..
I sometimes too want to use a tactile UI in data modelling applications with fast moving output signals. Knobs and sliders are quite intuitive ways to "dial in" biases, levels and offsets, or to navigate timelines and playback velocities or any other such parameters.
However, it is extremely rare for a software application to command a sufficient premium to justify the price of adding a physical controller with it. The price must cover the upfront development cost which is often ten times more than novice product managers might expect.
Also, the user benefit of this interface may be less than you think. How many users do you think would like to add a special thing to their crowded desktops and letting go of their mice and trackpads just for dealing with your application?
If you just want results fast to validate your basic concept then get a MIDI multicontroller such as one of the AKAI MPD or MPKs. These are typically used for Ableton performers and other digital musicians and prices are going down as they become more popular, and they include a number of sliders and knobs (potentiometer and encoder-types both) as well as oversize tap-pads, the signals from which can be readily piped into your app through the simple to use MIDI APIs.
You may also wish to prototype the physical UI logic with a thing like Max from Cycling'74, which lets you wire doodle the signal flow and tweak constants and preprocessing logic in realtime without recompiling your main app.
In many cases I prototype whole applications using a Max patch when it comes to highly specialized data modeling or signal synthesis / analysis and feedback like for robotics or industrial control.
Have gnu, will travel.
Many people have already pointed you to prefab solutions like you asked for, but some of them are a bit pricey; If you are going to have "lots of knobs" and the phidgets encoder gives you a single USB knob at 20 bucks, you might want to considering building your own or contacting an Arduino enthusiast who can pull off a custom model. As you can see, There are plenty of AVR based USB projects out there. A single ATMega has 6 a/d converters which you can use for rotary knobs, and at least 8 binary inputs which can be used for switches.
Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book