****************************************************************************************************************************
I have designed a framework for making affordable and stylish modular controllers. You can use the content of this Instructable to make a wide range of controllers for a wide range of applications relevant to artists, DJs, VJs, gamers, producers, and the like. The DJ controllers I showcase in this document serve only as examples of (more conventional) interfaces you can create within the framework.
I focused on making this project affordable, stylish, and most important, builder friendly. The controllers can be re-programmed to send serial, MIDI, or HID messages. The modular design allows you to plug the controllers into one another, thus requiring only one USB port on your computer. Each module can have approximately 28 digital inputs/outputs, 23 analog inputs, and 4 rotary encoders. Those more savvy could add components such as touchscreens, sensors, pressure pads, etc., to the controllers using this framework. No special tools or equipment are required to build these controllers beyond a basic soldering iron and wire stripper.
I truly feel this is the most effective and (conveniently) economical way to build DIY controllers at the moment. I hope this Instructable document will become the standard.
****************************************************************************************************************************
If you like this Instructable, vote for me so I can win a ShopBot and build more! I am a student of design & technology (Parsons), and an avid supported of DIY.
More info here.
These photos and more found on my photostream.
**Remember to read this entire Instructable before beginning any of the constituent steps**
Remove these ads by
Signing UpStep 1Components
I have spent endless hours searching for the best and most reasonably priced components from around the world. I ordered many different components to test out and compare, most of them were rubbish and were not used in project. Here is the list of the best stuff I found.
Microprocessor
- Teensy++ @ PJRC (USA)
- Arcade @ DJ Tech Tools (USA)
- Translucent Arcade @ Adafruit (USA)
- Many arcade button options @ Twisted Quarter (USA)
- Square plastic & large/mini round @ Futurlec (China)
- Stainless steel fancy pushbuttons @ Sunshine (China, shipping is >40$ to USA, I have some extras so message me if interested)
- Mini arcade @ Newark (USA)
- Many unusual pushbuttons @ All Electronics (USA)
Faders (If these are out of stock, they may also be available at digikey.com or newark.com. If you are a scratch DJ you probably demand a 'frictionless' fader. DJ Deals sells them for cheap, and they are simple enough to use with the DIY controllers.)
Slide knob
- Many options available at Newark.
- Very smooth D shaft @ Digikey (USA)
- Smooth knurled shaft @ Sparkfun (USA)
- Machined, aluminum, set-screw, 6.4mm @ Newark (USA) in 3 sizes, black or silver
- Smooth, aluminum, set-screw, 6.4mm @ Newark (USA) in 3 sizes
- Knurled, rubber, 6mm @ Newark (USA) many colors
- Soft touch rubber, 6mm D shaft @ Mouser (USA) in many colors
- Knurled, metal @ SparkFun (USA) black or sliver, one size
Encoders
- D shaft, 18 ppr, switch @ Newark (USA)
PCB
- Super nice PCB @ Sure Electronics (China)
- Protoboard 777 @ Futurlec (China)
- Mini (for jogwheels) @ Sparkfun (USA)
- Pre crimped 12", Pre crimped 24" @ Pololu (USA)
- Module connectors @ All Electronics (USA)
- Crimp connector housings @ Pololu (USA)
- Wire @ All Electronics (USA)
- CD4067BE @ Digikey (USA)
- Available from All Electronics, Sparkfun, and Adafruit
- Female @ Sparkfun
- Many 6-32 options @ All Electronics (USA)
- Many LEDs @ Super Bright LEDs (USA)
All hardware (nuts and bolts) can be found at McMaster (USA)
Other
Soldering iron, wire cutters/strippers.
There are many other components you may want to include in your interface such as LCDs, touchscreens, trackballs, pressure pads, proximity sensors, etc. SparkFun and Adafruit are the best resources for these kinds of components. Although the controllers I showcased in this Instructable are somewhat conventional, I encourage you to get crazy. DIY gives you the power to do anything you can imagine - just wait till you see the next controller I am going to build!
Read the datasheets carefully before buying components.
Discount/surplus stores like Futurlec & All Electronics have some components which are totally bogus so be extra careful before buying from these stores.
Note that all these components are panel mount (with exception to the LEDs). There is an important distinction between surface mount and panel mount components. Surface mount components fasten directly to the printed circuit board (PCB) while panel mount components fasten to the top panel and connect to the PCB via wire and solder connections. It is usually not possible to use surface mount components unless you fabricate custom PCBs and have expert soldering skills. Using panel mount components makes this project accessible to anyone.
So how much do these controllers cost? I don't kow how much your controller is gonna cost but mine were cheap, really cheap!
| « Previous Step | Download PDFView All Steps | Next Step » |











































































I have a question though... The encoders he sent me are these: http://www.bitechnologies.com/pdfs/en11.pdf
Are they too high quality (too many pins/detents) for the Teensy++ and this framework?
Pushbutton8: clk off
Pushbutton9: clk off
Pushbutton20: clk off
Pushbutton21: clk off
Pushbutton22: clk off
Pushbutton23: clk off
Pushbutton24: clk off
Pushbutton25: clk off
Pushbutton26: clk off
Analog0: 36
Analog1: 36
Analog2: 35
Analog3: 35
Analog0: 34
Analog1: 34
Analog2: 33
Analog3: 32
Analog0: 31
Analog1: 31
Analog2: 30
Analog3: 29
Analog0: 29
Analog1: 29
Analog2: 28
Analog3: 27
Analog0: 26
Analog1: 26
Analog2: 25
Analog3: 25
Analog0: 24
Analog1: 24
Analog2: 23
Analog3: 23
Analog0: 22
Analog1: 22
Analog2: 21
Analog3: 21
Analog0: 20
Analog1: 20
Analog2: 19
Analog3: 19
Analog0: 18
Analog1: 18
Analog2: 18
Analog3: 17
Analog0: 17
Analog1: 17
Analog2: 16
Analog3: 16
Analog0: 15
Analog1: 15
Analog2: 15
Analog3: 14
Analog0: 14
Analog1: 14
Analog2: 13
Analog3: 13
Analog0: 12
Analog1: 12
Analog2: 12
Analog3: 12
Analog0: 11
Analog1: 11
Analog2: 11
Analog3: 10
Analog0: 10
Analog1: 10
Analog2: 10
Analog3: 9
Analog0: 9
Analog1: 9
Analog2: 9
Analog3: 8
Analog0: 8
Analog1: 8
Analog2: 8
Analog3: 8
Analog0: 7
Analog1: 8
Analog3: 7
Analog0: 7
Analog1: 7
Analog2: 6
Analog3: 6
Analog0: 6
Analog1: 6
Analog3: 6
Analog0: 5
Analog1: 6
Analog2: 5
Analog1: 5
Analog2: 5
Analog3: 4
Analog0: 4
Analog3: 4
Analog1: 4
Analog2: 4
Analog0: 3
Analog2: 3
Analog3: 3
Analog1: 3
Analog0: 3
Analog3: 2
Analog1: 2
Analog2: 2
Analog0: 2
Analog3: 2
Analog1: 2
Analog0: 1
Analog2: 1
Analog3: 1
Analog1: 1
Analog0: 1
Analog2: 0
Analog3: 0
Analog0: 0
Analog1: 0
Analog2: 0
Analog3: 0
Analog1: 0
Analog0: 1
Analog1: 2
Analog2: 6
Analog3: 25
Analog0: 25
Analog1: 25
Analog2: 19
Analog3: 24
Analog0: 24
Analog1: 24
Analog2: 21
Analog0: 23
Analog1: 23
Analog3: 23
Analog0: 23
Analog1: 23
Analog3: 22
Analog0: 21
Analog1: 21
Analog2: 20
Analog3: 20
Analog0: 20
Analog1: 20
Analog2: 19
Analog3: 19
Analog0: 18
Analog1: 18
Analog2: 18
Analog3: 17
Analog0: 17
Analog1: 17
Analog2: 16
Analog3: 16
Analog0: 15
Analog1: 15
Analog2: 15
Analog3: 14
Analog0: 14
Analog1: 14
Analog2: 13
Analog3: 13
Analog0: 12
Analog1: 12
Analog2: 12
Analog3: 12
Analog0: 11
Analog1: 11
Analog2: 11
Analog3: 11
Analog0: 11
Analog1: 10
Analog2: 10
Analog3: 10
Analog0: 9
Analog1: 10
Analog2: 9
Analog3: 9
Analog0: 9
Analog1: 9
Analog2: 8
Analog3: 8
Analog0: 8
Analog1: 8
Analog2: 8
Analog3: 7
Analog0: 7
Analog2: 7
Analog3: 7
Analog1: 6
Analog2: 6
Analog3: 6
Analog0: 6
Analog2: 6
Analog0: 5
Analog1: 5
Analog2: 5
Analog3: 5
Analog2: 4
Analog3: 4
Analog0: 4
Analog1: 4
Analog1: 4
Analog2: 3
Analog3: 3
Analog0: 3
Analog0: 3
Analog1: 3
Analog2: 3
Analog3: 3
Analog0: 2
Analog1: 2
Analog2: 2
Analog3: 2
Analog0: 1
Analog1: 1
Analog2: 1
Analog3: 1
Analog0: 0
Analog1: 1
Analog3: 0
Analog1: 0
Analog2: 0
Analog0: 0
Analog3: 0
Analog2: 0
Analog1: 0
i dunno if it is the wiring or something else but thanks for the help
the midi is spiting out constant data and you can see it is very random and not normal which makes it unsuitable for a dj controller since the value of the midi data is changing even when no pot of n.o. mom push is connected thanks again
The guy on djtechtools forum is not using my code so i can not say if his problem is identical to yours.
How many analog inputs have you hooked up? Just four (0,1,2,3) or all 16. Cause If you have all 16 hooked up, but are only having problems with the first four, that suggests you have an error with the wiring. Please email me the code you are using and I will look at it this weekend. Let me know if you fix it before then. Don't worry, DIY electronics NEVER work the first time. Always troubleshooting to be done.
//ANALOG IN MUX
//CD4067BE - http://www.ti.com/lit/ds/symlink/cd4067b.pdf
//'1' for multiplexer inputs you want to read, else enter '0'
int toReadMux[16] =
{ //IC pin number are written below
1,1,1,1, //0-3
0,0,0,0, //4-7
0,0,0,0, //8-11
0,0,0,0 //12-15
};
I have seen controllers with a headphone connection. How do i get an analog signal back from the PC through a serial link?
Thx
but there are many online.
here is one example.
http://blog.makezine.com/2008/05/17/diy-usb-sound-card/
Just to make one thing clear. You can easily use both a controller and sound card independently with Traktor (and probably all other DJ/production software). I use my controllers with an M-Audio Fast Track Pro I got for 70$ on Craiglist. I bought this sound card cause I wanted conventional USB in/out. I'm sure there are much cheaper options.
i will fix that
SSG
I have a (very beginner?) question though... I know you use an analogue multiplexor in your design, but what about LED, switch and Encoder multiplexors? Is it possible to use these with the Teensy as well?
My ideal design is slightly multi-purpose, so having 8 encoders will be a big help for me - it would be great if I didn't have to buy a 2nd Teensy++ module just for that.
With all these encoders it might be nice to have LED indicators too... You can see where this is going...!
So yeah - will Teensy++ work with multiplexors for these things and do you have any recommendations on particular ones?
Thanks again!
I know where you're coming from regarding buttons. The thing is - buttons is what I need! :) Where your controller is mostly pot's, mine will be mostly buttons, as I already have an external mixer.
I'd like to make my dj experience as expressive as possible - while I'm not going to so far as to build a full on DJ controller - I'm really looking to eliminate my need to touch the keyboard of my laptop as much as possible. Being a poor college student, myself, I'm hoping to narrow the cost as much as possible...
I've read a little about the ATmega line of chips... Do you think something like the ATmega128 would be a good solution?
Teensy++ uses the AT90USB1286 chip and Teensy uses the ATMEGA32U4.
If you use a standalone chip your gonna have to use extra hardware to enable usb-midi.
I particularly enjoyed your use of I2C and the beautiful enclosure design tips, I hope you consider capitalizing on the interest you've got so far by making a kit out of this (let the customer select number of pots, switches, buttons and so on to "build their own" controller based on a common set of parts)!