DIY Conductive Paint Attempt 1: Proof of Concept

I attempted to make conductive paint, for the BUILDS room. The end goal is to have conductive paint, which can be painted into the murals being put up in BUILDS and as such we can make the room interactive using capacitive touch sensors. Just to note this is not the final product this was just a test run. So far the best result I have is 1k?

Conductive Paint is a conductive material made up of a conductive powder suspended in a binding fluid. When dried the conductive powders will be close enough together that the material itself becomes conductive. There are different kinds of Conductive Paints, but the easiest and cheapest to produce utilizes graphite powder. Carbon Graphite is a surprisingly good conductor and is both easy to come by (as it is often used as a lubricant) and relatively easy to work with and mix into other materials. Most of my resources for this first attempt came from this awesome Instructables created by mikey77.

Continue reading DIY Conductive Paint Attempt 1: Proof of Concept

ATTiny85 Development Board (Rev. A)

I recently decided to do some development for the ATTiny85s I have laying around. I added a few of these to a Sparkfun order about a year ago to use up my Free Day money, but since I forgot about them and moved on to other electronics pursuits. However, I finally decided to start programming them and at the same time I decided to improve my prototyping skills, develop a really nice development board for them, and learn KiCAD.

The current version works and I was able to program my ATTiny85 using my Pololu AVRISP v2 Programmer and Arduino 1.0. I was able to program using Arduino thanks to the High-Low Tech Lab over at the MIT Media Lab. While I plan on programming these microcontrollers using C, my familiarity with Arduino allowed me to rapidly test my design and make sure that everything loads up onto the microcontroller just right.

More video and coverage coming later!

Links:

KiCAD: First Impressions

This weekend I decided to get some work in on learning KiCAD. I have not come very far, but I am starting to get oriented with eeschema and I have actually been enjoying it. However, I had to boot up into Ubuntu to work with it appropriately, because my Mac OS X install doesn’t quite like KiCAD, but then again I have trouble with Xilinx, iverilog, gtkwave, msp430-gcc, etc as well.

KiCAD works very smoothly for the most part with a couple of interfacing hitches. Namely you need to ctrl-drag to move multiple components, which took me far too long to figure out. Furthermore, I am not a fan of the built in library symbols for power, ground or the connectors. However, I don’t mind this so much because I am not completely opposed to making my own libraries, which will be uploaded to github, when I get a chance and open to all.

I really enjoy the way KiCAD works and the fact that it is open source, unlike EAGLE, and has no restrictions on it. Between work and past hobbyist work I have been exposed to Orcad Capture, EAGLE and EasyPCB/EasySCH. Orcad, though complicated, was my favorite of those schematic layout tools. The reason is that it has powerful hierarchies (I was doing large layouts) and very nice component making utilities, also there is a separation between the schematic phase and the PCB phase, which allows you to think about the actual functionality of the circuit during layout and the topology during PCB design. KiCAD follows a similar rule for schematic to PCB layout from what I can tell (more to come on this).

I would recommend KiCAD to anyone looking to do some schematic layout for free, with no restrictions.

Happy Hacking!

Controlling Music: Look Forward To OSC!

I have been using MIDI for quite some while now to communicate musical instrument based projects to my computer and visa-verse. My first MIDI project died, somehow and I never quite figured out how; however, before my MIDI Ribbon Controller died I was running into some troubles with MIDI. The base trouble stemmed from MIDI’s roots as a 1982 protocol for digital music communications to allow musicians the ability to mix different synths from different vendors, without needing complicated and expensive adapters. By nature MIDI is a slow, backwards compatible standard (which is what it needs to be), with rigid note structures. This means that doing sliding motions without well defined notes is actually quite difficult, because MIDI simply cant send different notes fast enough. Also, delay starts to become noticeably because the baud rate is rather slow.

So what is one to do? MIDI is still the industry standard and that doesn’t stand to change very soon. However, for personal projects there is a new standard which is starting to come into common use. Furthermore, it is faster, and more flexible than MIDI and just as open. This is OSC, Open Sound Control, and its been around for awhile, but it is really picking up speed in the realm of experimental music controllers. For example, Lemur is using it and so do a lot of Monomes. But what about the software, that’s very important too! Well Reaktor is OSC compatible and so are Max/MSP, Ardour, Logic Pro, Overtone (that Clojure based music programming language), Pure, Processing and Traktor. So the software support is there.

There is a need for a move forward for the day to day experimental music control interface hobbyist/experimenter and I plan on diving into OSC and writing more up on it. If you have some tips or tricks feel free to contact me!

Lessons Learned: Breadboards are Noisy and So Are Those 7400s

While building my 7400 drum machine for Dangerous Prototypes’ 7400 Competition I made a couple of good discoveries:

  • Those pre cut jumper wires which are very popular (the wiggly ones) are a blessing and a curse. For one they make things look messy, but they are easy to prototype with. However, their biggest negative is sometimes, combined with a breadboard, they can give noisy connections. However, these wires are awesome for prototyping! Example

  • Breadboards are noisy… I already knew this, but this project has confirmed it. While I very rarely actually get issues from the noise, it can be very frustrating when I am prototyping various parts of the circuitry which are noise sensitive. Furthermore, 7400 ICs really need two things badly: a good ground connection and a stable Vcc connection. There is however an easy way to get around this problem, or at least reduce it and that is the infamous 0.1uF ceramic capacitor to ground. Make sure you put these on all of your VCC inputs and you will reduce error propagation in your digital logic circuits… and its good practice.

Now I go back to work!

Happy Hacking!

Drum Machine based on 7400 ICs

Dangerous Prototypes is having a competition based around building awesome projects using discrete logic components (7400, 4000) as a major part of the project. I had many ideas for submissions for this competition, for example, Pong (or another basic videogame), Game of Life, a real life color detector with readout to hex and an RGB LED. However, I decided on making a drum machine for this project.

I spent this weekend designing the overall project and constructing various parts of it. Currently I have the clock and Multiplexer both up and running and I am confident I can get the rest of the circuit running by October 21st.

Here is what the project currently looks like:

More pictures can be found here

My current schematics can be found on my github here.

More information about the competition can be found here.

Happy Hacking!

WordPress Voodoo: Custom Post Templates From A Plugin

So you are writing your grand WordPress plugin and you have a custom post type which the user uses, so far so good. You write your single-awesome.php file to allow WordPress to show a view for your custom type and put it into your theme, but wait a second I want my view to be portable! What are my options?

One option is to give up and go along, write a bunch of single-awesome.php files for every major theme (and there are a lot) and on a client basis. However, this is clunky, time consuming and impractical. As the creator of a plug-in, not a theme, you are responsible to have your plugin work, mostly, as is.

There is a better option and that is to include the template files in your theme and to write a add_filter hook to catch whenever a single-*.php template is called and handle your custom post types appropriately. Kenneth Newman at unfocus.com put together a nice post, with code examples, about doing just this. Luckily the code allows for the active theme to override the plugin, which is a good idea considering your template will not fit for all the possible themes out there.

However, we can hand some control of the templates colors, fonts, etc over to the user using a settings page. Currently I am working on an elegant way to do just that and make using my plugin as easy as possible for those who need to use it. Follow up post coming soon

Projects: Reload-JS (v0.1)

Reload-JS is a javascript live loader whose goal is to be simple and light weight. I created Reload-JS while working on an Infographics Landing Page, and embedding solution, for Newlogic USA. I needed to load and check for any libraries I need (namely jQuery). The loading part has been taken care of in this version, but I am trying to figure out how to include tests for each library, to make sure no override occurs (my jQuery doesn’t break or overwrite the loaded pages jQuery).

More after the jump.

Here is the Reload-JS source code. It is simple and it doesn’t really do anything special. Most of the code has been used previously and is very popular for live loading. It accomplishes its task by using a recursive set of callbacks and has a few ways to call it.

First you can use the following:

Or this

My personal favorite is this following call:

You see Reload will automatically append the js if you don’t already have it attached. This is a nice feature to make nice simple calls like above. Reload allows you to set your primary library location and then takes care of it too. This makes loading multiple libraries pretty nice. However, what if you need to use a different host for one of your libraries? No worries! just make sure you use http:// and Reload will detect that it shouldn’t append your default library location to your URL (absolute URL handling).

Reload also has the ability to load from a variable it holds called libs. This can be risky, if multiple people try to use it and is not suggested unless you are sure no one else is using Reload.

Here is the code (and decently commented):

Enjoy!