DIY monome compatible grid w/ Adafruit NeoTrellis

grids!

There’s been a few DIY grids over the years. Arduinome, etc… Some monome serial compatible and others not so much (midi grids like launchpad, etc.).

In recent years, szymon_k got a couple compatible grids working with SparkFun button boards and Adafruit’s original trellis boards.

The Adafruit HELLA Untztrument Grid Controller Kit was a kit of the trellis boards and buttons which looked like a good “ready to use” solution, but was still a mono-bright grid and needed some hacking to make monome serial compatible.

Over the past year+ I’ve done some work based on szymon’s and others code, and then did some hardware hacking to make a prototype of a single color variable brightness grid using the Livid Instruments buttons and modified/re-designed Trellis boards. This actually works pretty well, although it’s quite a bit larger than a monome grid. That project has been on the back burner for a little while while working on a different project.

Now we might have something a little easier…

what’s new - NeoTrellis

Adafruit has these NeoTrellis RGB driver boards which offer a bit more flexiblilty and the ability to do varibale brightness (and different colors if you like). Pair that with a modern microcontroller like a Teensy or an Adafruit M0 or M4 and you’re in a pretty good place. Add some updated code and we’ve got a nice monome compatible grid.

With some creative case design (laser cut acrylic, etc), I’ve managed to get something with the same footprint as the 128 monome grid, and only a few millimeters thicker overall.



There’s also some pix/vids on my instagram https://www.instagram.com/p/B6FbyzohJOA/

code

@szymon_k has updated his previous work with code for the Neonome128. This code is specific to a 128 button grid with a Teensy microcontroller.

My code repo supports 8x8 (64), 16x8 (128) or 16x16 (256) grids using either a Teensy or M0/M4 (ItsyBitsy or Feather) controller (M0/M4 need some additional work - see below).

compatibility

Max or other computer-based applications

At the time of writing, my code works as expected with the grid connected to a computer with Max running monome patches.

ansible/ trilogy modules

Does not work. Don’t ask (unless you know C well and can help me make changes to libavr32).

norns

Officially unsupported. Hacking required. Proceed at your own risk. May void your warranty. Prohibited in some states.

Unfortunately this code will not work right off the shelf with the stock norns codebase (norns and norns shield) due to some USB device management stuff.

But… there is a hack workaround, but it does require changes to the norns C code. It’s not hard, but steps will need to be repeated after updates, etc. See github for instructions.

For Fates devices, I have a script in my repo which will run the fix.

microcontroller choice

Teensy offers the easiest implementation because it allows you to quickly change the USB device information so you can impersonate a monome grid without having to muck about with FTDI shenanigans. The M0/M4 devices need a bit of hacking on core libraries to make that the device recognition stuff work properly.

Post a message here if you have a Feather M4 or Itsybitsy M0 and I can send you a compiled firmware for those devices.

what do i need to make one?

It’s pretty much all off-the-shelf parts from Adafruit

building:

Read the NeoTrellis Guide / Tutorial from Adafruit to learn more about putting the boards together.

Then for the teensy wiring, etc. - I have some pictures and basic docs on my github - with reference to a case design which is also in the repo. Second generation version coming soon.

GitHub repos

Either should get you started

Helpful resources

77 Likes

Wow, @okyeron did it again :slight_smile:
I have been following this project with a lot of interest after failing to get my untzs useable with my fates.
It seems by some info gathering that the untz pads might be reusable, and i might try seeing how everything fits in the old untz case, maybe ill need to do some rework on the original cases.

Thumbs up to everyone in this forum that is working on providing diy alternatives to monome devices. I think the more people that end up using the monome ecosystem, the more the community will grow as a collective and more people can share their ideas and work.

Thanks a lot!

Edited:

@okyeron can you please let know what kind of connector does the op stemma cable need?

There are 3 options:

https://www.adafruit.com/?q=STEMMA%20connector

Edited 2:

How how you wire the teensy to the neotrellis boards?

Thanks!

1 Like

I’d also like to thank @okyeron for pushing my work forward and pushing to get stuff compatible with Norns, here’s a video of my Neonome128 working with Fates:

I also have a case: https://github.com/szymonkaliski/diy-monome/tree/master/Neonome128Case/dist but it’s just topcase + bottom plate + some spacers, works for me though :slight_smile:

5 Likes

Cool - got a spare teensy as well :slight_smile: I’ll have to cost up the pros and cons of diying the boards (the neotrellis driver boards are on github) but keen to build a grid… thanks.

1 Like

@forestcaver thanks for the heads up, i might go this route too.

I cannot see a bom in the files?

Guess i have to open eagle and generate one.

Just checked the price on pcb way, its so much cheaper, and the build looks quite easy…lots of smd leds but nothing too fancy me thinks :slight_smile:

@szymon_k @okyeron thank you both for the clear instructions, I started my built 2 weeks back, off @szymon_k diy-monome repo and implemented a similar fix in matron device_monitor as the teensy is mounted as /dev/ttyACM* and passes to the crow init otherwise.
I worked on a simple case for now too and will put up the illustrator this week.

As a monome 40h Kit and later arduinome user, it feels great to finally have a 8x16
Thanks for your hard work reimplementing the protocol and compiling it for the neotrellis boards :muscle:

8 Likes

That’s what I was thinking too (price-wise)… (I may be really lazy and get a pcba run from jlcpcb…).
I’ve just finished designing and prototyping a 3340 vco and 3320 lpf (that I’m really happy with!) and used jlcpcb for building them - it came to £5 each for assembled pcb and panel (for 10 pcbs) - excluding the as3320/40 (!) so I may end up doing a lot more pcba in the future !!!
BOM is in eagle.

2 Likes

Nice work. How’s the responsiveness of the diy grid compared to your monome grid? Is there any more/less lag or latency? Are quick double presses easily detectable?

FWIW - building the neotrellis from scratch is doable, but kinda a pain (time consuming). You also need to flash the seesaw chip on each one. Stencil and solder paste make it better, but still kinda hairy.

I have like 16 bare boards and parts and will eventually make a 256… but I purchased four assembled ones from adafruit to get my prototype done. (1 of 5 that I built still won’t work right)

EDIT - pcba could be good way to go. Would wanna build a jig to flash the seesaw chip.

I’ll need to take it apart and post some tear down pics later.

I linked the cable I used above. Then cut it in half and soldered bare wires to teensy.

Will also attempt a variation using a usb breakout to maybe help people not break the usb off the teensy as they’ve done on 16n

I’ve not done much real testing in that regard yet. Button presses seem very responsive, but leds lighting up were a tiny bit laggy.

A friend is gonna help me later to probe the serial data with a logic analyzer and maybe optimize things a bit more.

1 Like

Thanks for the info - I think I’ll probably have it a go at building one. (I’m pretty happy hand soldering down to 0402 and hand soldering qfns). I suspect pcba may not be worth it for the qfn… (in terms of added expense for extended parts…). I’d only do 8 boards anyway and it doesnt look like too many parts…
Flashing may be interesting - will need to look into that - I’ve got a couple of spare jlinks anyway…
I’ll probably sit on it for a few weeks before jumping in - got way too many other projects to finish first! But I’ll order the boards anyway when I next do a pcb order (probably in a month)

1 Like

This is amazing! Is there any reason this couldn’t work on a Teensy 3.1? I have one sitting in the closet that was intended for a project that didn’t pan out, and it seems like all the interesting projects have moved beyond it at this point…

3.1 and 3.2 are interchangeable. Should work ok.

I should actually test with teensy 3.0 since I have a handful of those sitting around unused :smiley:

EDIT - Teensy 3.0 seems to work OK :+1:

1 Like

Tried to upload the neotrellis-128-6.ai file to ponoko, and it has lots of bonus layers showing the neotrellis boards etc. At some point in your spare time (as if you have any - you’re one of the busiest makers I’ve ever come across) can you put up a “ponoko ready” file? Is it 3 mm material? Are the sides the cut-out “rings” - looks like 4 of them in the image?

Yeah. That’s still my work in progress. I’ll clean it up.

3mm is the acrylic I used, but the pics above have a 5mm EVA spacer to get the height where I wanted.

Not sure I understand the side “rings” question.

A worthwhile test for led responsiveness which I used when developing vb_driver (where I considered anything less than monome equivalent performance unacceptable) was:

Using max/msp drive a message “/led/level/map 0 0 $1 $1 $1 … $1” ie 64 x $1 for each 8x8 grid with a single metro into a counter maxed at 15. So effectively an overly explicit map all levels message ramping upwards.

Bring the metro interval down as far as possible and see what speed it can handle and how it handles failure.

My 2013 grid went down to about 5ms if I recall correctly. Then LEDs stop.

This tests the throughput of the serial port and how efficiently the led drivers are being talked to.

I’m away from my computer for a couple of days, can share my patch when I get back if you would like.

4 Likes

Happy DIY family

34 Likes

been lookin forward to this! beautiful work as always, @okyeron! :grin:

1 Like

Thanks yo everyone for the detailed info and answers! @okyeron @forestcaver :slight_smile:
This is looking great.
I might just go with the original adafruit boards and try to reuse as many components from the untz as i can. The polimer pads are the same, so maybe with some luck i can reuse the case.
Looking forward to those wiring diagrams!
I can see some wiring on the teensy in one of photos posted above, but i cant see very clear what pads its connected to. Care to share. @jamesbretz?
Many thanks :slight_smile:

Just check the pinout diagram that comes with the teensy - 3.3v, ground, and the two i2c pins.

(I’ve since pulled the header and soldered they wires directly to the teensy)