New RGB/Pressure sensitive Arduinome with 8x8 PCB

  • Hey everyone, I've been working on making an 8x8 RGB/Pressure sensitive Arduinome called the Chronome using an Arduino Mega.

    http://flipmu.noisepages.com/2010/11/28/chronome-prototype/

    I'm hoping to finalize all the PCBs, enclosures, and firmware this week. The goal is to have build instructions available as soon as possible (maybe early January). We will also host all of the firmware, software, and schematics on the site.

    The final version can behave either as a traditional Monome/Arduinome or as the new RGB/Pressure sensitive version. Its also fully compatable with ArduniomeSerial, and we are looking at implementing it in OSCSerial.

    The Chronome owes a lot to help from a ton of different people, and other Monome variations... Brad Hill, the Octinct, the LUMI, Matthew T. Pandina, Adrian Freed, Jordan Hochenbaum and many others that helped out with advice over the last year.

    I can't wait to see what people can build with these. Happy early christmas :)

    Owen

  • you are crazy and this is fucking awesome.

  • Well played sir!

  • damn it. i though that i would be done spending money for a little while. damn it.

  • @active
    we could probably graph the advancement of music technology against our bank account balances and be very disappointed in the outcome. may we live in debt forever.

    @owen
    you are effing awesome.

  • Cool!

    Spreading task mode: on

    ;)

  • yowsa. good werk!

  • is the pcb going to be for sparkfun pads?

  • @oOotini - the current PCB design is indeed for the sparkfun button pads...

  • i'm definately going to get on this. will there be pcbs for sale?

    i noticed in the video that the proto pcb looks like it's a good deal bigger than the buttons, will the foot print be made smaller for the final pcb, similar to the bibo boards?

  • well done! this has finally came.

  • and i just literally promised myself yesterday - while working on my starfire board based 256 - that i was going to stop spending so much money and time building these things.

    a pressure sensitive rgb monome may be too tempting to resist.

    well done!!

  • @oOotini - when we collate everything nicely on the FlipMu website, the PCB files will indeed be up for pcbs to be printed at a destination of your choosing. We highly encourage PCB printing to be done locally, as per our shared production practices and beliefs with Monome. We're going to have our first run of pcb's printed shortly, now that everything has been fully tested, and well try to set up easy-ordering, locally in the US like we have going with the unsped Arduinome shields through 4pcb. We of course encourage group buys, and other local suppliers.

    The footprint is slightly bigger than the Bibo boards to accommodate the chips and everything, I believe about 1cm on each side respectively, although I haven't yet seen it in person myself as I came to the US to work on some research projects, and Owen just got his hands on the proto-pcb from the lab this week. While talking with Owen the other day, I think he was thinking about tightening up the board a hair, but I don't think it will make a huge difference on the final design size...

    cheers!

  • Any chance you'd consider going with a minimal footprint w/ the driver logic on a separate PCB? The current MK keypad/driver/logic design seems fairly elegant.

  • Hey Guys,

    Thanks for all the kind words :) As far as the questions about size and moving the chips to the Shield...

    The trick is that each TLC5940 has 16 out, and if these were on a shield, then we would need 4x16pin connectors/ribbon cables. The wiring would get pretty hectic. The way I have it right now has a single 8x1 cable to drive the button Rows, and 2x10 cable to do the RGB and read the button cols.

    Secondly, the current prototype board is slightly larger that the production PCB will be. The final PCB will only be 1-1.5cm wider than the Bibo boards (and uses the exact same hole layout for faceplates)... I think that if the enclosures are done correctly, the final Chronome shouldn't look that much larger than a SparkFun Arduinome.

    Also, I tried to shrink the PCB by using the Livid buttons, but the RGB LEDs are 5mm and won't fit into anything but the SparkFun buttons at this point.

    The last little thing to consider is the amount of info/voltages flying around. The Chronome is running at ~1Mhz. This means that things like noise are starting to be a consideration for the ADCs and logic circuits. This makes placing the components a little tricky.


    ...I'm excited to see if people can make the design better. I used Altium Designer to make the PCBs, but I'm going to see if I can make an Eagle version for others to work with. I also used the Arduino IDE, but at this point its mostly straight AVR code...


    If there are any other questions, or thoughts on how to tighten things up pass em along :)

  • is pressure midi 0-127 or osc reals?

  • I tried to enable the use of both MIDI and OSC, but obviously OSC is going to be much higher resolution for this stuff.

    Via MIDI the Chronome sends the pressure as 0-127 and receives 8 different colors (with intensity) using velocity. That way each of the 64 buttons can have a different color.

    Via OSC the Chronome sends the pressure as 0-1023 and receives separate R, G, and B messages of 0-224. So OSC gives you 3x224 different colors.

  • OSC RGB messages are between 0-254 (giving a possibility of 3x254 different colors) unless you changed something recently Owen? I'm hoping that was just a typo and I haven't been confused for the last year! Perhaps that means you should stop shifting bits and rest up buddy, hahah ;)

  • am i mistaken, or does the ability to set r, g and b each between 0-254 give you 254x254x254 = 16,387,064 different colors?

  • I think you're right, Bongo.

  • Hats off mate!

    This looks awesome. Some really interesting ideas going into this development.

    I can't wait to see a monome that looks like a TV!

  • @bongo - yes! silly mistake, meant to write 254^3... ;)

  • @bongo
    one byte each for RGB gives you 24 bits of colors. 2^24 == 16,777,216

  • @visinin - others have noted color values 0-254. based on this i should have used 255^3, rather than 254^3. not sure why values aren't 0-255 though.

  • either way, that's a lot of colors.

  • @jordan :) yep, 0-254 haha

    as far as the only using 254, i made a serial protocol that uses the LSB to determin start messages.

  • rather than ribbon cable connecting an arduino shield to the 8x8 grid (which has no logic on it, its just routing signals), how about the option for two rows of IDC pins to directly interface the Arduino into the underside of the chronome board so the board itself becomes a shield.

    It could coexist with the ribbon cable edge connector on the chronome board and the extra holes needed in terms of drilling/tooling cost would be trivial.

    Possible difficulty would be running tracks into the button grid area but a thought nonetheless. I'm looking at the board layout in the images and *think* it can be done. This would make for a low profile and tidy solution.

  • @ Tanais: interesting idea :) I'm going to post the PCB files online with the rest of the info, so we'll see what happens.

    Also, here is a video showing Ableton driving random MIDI color at 999 BPM. I also implemented the Test and Clear buttons


    http://vimeo.com/17309536

  • good lord, this is exciting.

  • bump

    whatever happened with this project?

  • Sorry for the silence on the project front. I have been traveling since Early December, as well as working on some Machine Learning research (which will hopefully make for some cool Monome apps :)

    I brought the Chronome with me to finish it up, but I'm trying to improve the pressure buttons before officially releasing it. I am currently using a 100k pull down resistor network before the A2D, but its causing the sampling capacitor to bleed over into the next reading... basically the 100k gives a wider range of values (0-900), but creates more noise. I am experimenting with changing to the recommended max pull down of 10k before the A2D, but this brings the range of pressure values down (0-600)... which is still a lot, and might be better if the noise disappears.

    In addition, I'm doing some minor changes to the PCBs to improve noise as well, and looking at adding plug and play support for the other 8 A2Ds on the Arduino Mega.

    I had thought of releasing it as is... but after talking with some friends I think it needs to be just a little more stable first. Its really only a few weeks of work, but I've just been swamped with other stuff.

    If anyone has ideas, thoughts, suggestions, I'm all ears. Really looking forward to putting all the info out there for people to mess with.

  • thanks for the update!

  • Finalized the firmware. RGB and pressure are working now. Looking to put everything up this week, along with a new app (see picture below). Its currently using a custom version of ArduinomeSerial (supporting the /grid OSC calls), and we are looking into adding support in serialOSC.

  • glad to read some new words here.

    the new app looks JUCEy.. =)

    have you considered putting a voltage follower before the ADC and putting your pulldown on the input to the op amp? it adds another part (boo) but could fix your readings right up?

    also, +1 for eagle files.

    i've been working on an RGB board that fits series sized buttons using surface mount RGB leds. a bit of a pain, since the only ones i could source are common anode and most driver chips are for common cathode...

  • Hi Owen,
    I'm glad to see new improvements!

    The last night I was thinking about chronome and I ask myself...

    Why not use the regular midi system for velocity? Just two triggers and speed calculation between them? It is for use the regular rubber pads?

    It will be easy to implement (more demux).

    In other hand if you need any help/documentation from hangar.org you are welcome! We can help with case design if you need it too.

    Cheers!
    -m!

  • Those all sound like good ideas to take a look at. I did manage to get super stable values now from 0-890 or so using the fabric method and mutliplexing the ADCs. The trick ended up being a switch from the 100K pull down to a 10k pull down (the 100k messed with the sample capacitor in the ADC circuit). In addition I had to read and throw out the value when switching rows. The noise was picked up by the ADC, but it doesn't seem to affect the performance in any way. If anything, its sending out too much information, lol.

    I'm going to post everything this week "as is" for right now. This should include the original Altium PCB projects, and hopefully an eagle CAD exported version. The firmware is almost 100% Altmel calls at this point... even the ADC function. The downside is it will be a little tricker to read, but hopefully will be easier to optimize. It runs a little different than the Octinct firmware as I needed to free some clock cycles to handle the ADC reading. It currently uses a hardware interrupt pin that clears itself to clock the TLC5940 chips. This frees a lot of stuff up. I also added support for the other 8 ADCs on the Mega Shield. This should mean plug and play for 8 more ADC devices on the Chronome. I also think the serial speed could be increased to as fast as the Arduino would go... but I started to drop data so I've left it where it is. Might just need a few tweaks though.

    I am really looking forward to seeing what everyone does with the project. I would totally be up for finding a way to get rid of the conductive fabric if its possible. I'm actually hoping you guys take it and make it the community's own in the same way as the Arduinome.

    Also, Jordan and I have been working in JUCE for the last year or so, and so we are planning to develop a few different cross platform apps for the Chronome. In addition, we are trying to integrate the Chronome with the new serialOSC.

    Lots of fun stuff ahead :)

  • This kills!

  • very epic project by the way folks!

  • Cool!

    Owen you have got my email?

    I want to help as much as I can and I have the octinct presentation to show you!

    ;)

  • ;) you just blew my mind

  • @ Mudo

    I'll pass along everything to you in the next day or so. Would love the help, and any input/changes would be awesome. Can you take the PCBs as Altium? or should they be Eagle CAD?

    I also thought about your MIDI timing suggestion for getting velocity. Although I agree that it would greatly simplify the build by removing the conductive fabric, I think that it would only give a single value per press. The fabric on the other hand allows for continuous pressure, and can behave more like "after touch" data. But as I said, I am totally up for changing things and modifying the design... in fact I'm hoping it happens :)

    Looking forward to seeing the Octinct presentation.

  • I'm looking for a good way to convert the Protel/Altium files into EagleCAD files. Any suggestions?

  • It seems no luck...

    http://forum.sparkfun.com/viewtopic.php?f=20&t=21726

    For case design maybe a simple 1:1 pdf will be enough...

    In the other hand I will add you to a dropbox folder with the presentation and so on (in pages format sorry). Maybe you (or someone) could give a hand to trace all the steps in octinct history. I was talking with Jonathan in the past (mellow person :) ) but I still need to improve the pages for next workshops and so on.

    You are free to use it anytime you need!

    -m!

  • update. We were pushing through on completing the JUCE app when we noticed some noise on the ADC from the LEDs lighting up :( Looks like the ADCs are picking up the transistor switching, or the logic, or who knows, lol??

    Either way, going to head over to the engineering school tomorrow and see if I can scope out the source of the noise. Looks like I will have to most likely re-route the PCB boards to try and isolate the ADC buttons as much as possible. Hopefully don't end up having to add any additional chips... but maybe, who knows.

    Hopefully not too big of a deal, maybe a day or two of reworking things. In the mean time we are going to keep trying to push forward with getting the web info ready.

  • Check Dropbox.

    -m!

  • Looks like the noise is mostly coming from the transistors switching off and on while on USB power. An external supply seems to alleviate most of the noise, but it still happens (2-3 bits worth). Pretty tiny values, but it would be nice if the ADC didn't get any interference. Going to the EE school this week to try and scope it out.

  • So after a good week of troubleshooting, I have narrowed down the noise. Turns out the TLC5940s create a lot of high frequency noise from the PWM, and that gets picked up by the ADCs. I also managed to clean the power supply up a lot, which helped, but it looks like I need to add some filtering caps to the ADC inputs.

    I tried 100nF, but that was too large and caused the readings to bleed over to the next ADC. Next I tried 50pF (that was all we had lying around) and that solved the bleed, but let a tiny bit of the noise through. I'm going to by a range of pF caps tomorrow and find the value that works best....

    Interesting side note, it seems that you get pressure form the sparkfun buttons even without using the resistive fabric. The range is not as smooth, but I imagine that this may be an easier option for people when they build it.


    So Close!!! ahhh, lol.

  • turns out 600pF is the magic number! Time to get these things out there.

  • Awesome. Very very cool project. +1 on working the little bugs out before release.

  • any progress in the last two months or so? I'm really excited about building a chronome

  • I was just thinking the same thing!