Aurora Commander

Well, necessity is the mother of invention. I lost the remote control for my SmartMatrix, so I needed another way to control it. I whipped up a quick little Python/Tk application that controls Aurora using the new json serial commands supported in the master branch. The basic UI emulates a remote using the numeric keypad, while displaying a key map on screen. It also allows selecting Patterns, Animations, and Palettes using the menu bar. Check it out on my github branch here: https://github.com/jblang/aurora/tree/master/commander.

I also fixed a few bugs in the Aurora firmware while I was at it. There was a memory leak where the readSerialCommand function wasn’t cleaning up the aJson root object after it was finished, so the SmartMatrix would run out of memory and crash after processing several commands. Also, the indexes for the Pattern and Animation menu items were wrong in the setPattern and setAnimation functions in Aurora.ino, so I fixed that. Lastly the PaletteSmear pattern was missing a name so I added that.

Next up, my plans are to extend this with a mobile web interface (probably using Flask) so that SmartMatrix can be controlled via a smart phone.

2 Likes

Hi JB, this sounds great! I don’t have time today but I’m excited to check it out.

Sounds great! I’m out of town right now, but hope to check it out tonight. Here’s the web app I made using Java: GitHub - jasoncoon/aurora-web-server-application: Web server application for controlling a SmartMatrix display running Aurora via the USB port.

Just got home and reviewed your changes. Thanks for finding and fixing the memory leak, I’ll get that merged to 1.5 as soon as I can. If you get a chance, I would recommend you pull my changes from the Aurora 1.5 branch (Audio Patterns, new Patterns, USB-MSD support, bug fixes, etc). I plan to finalize the 1.5 release soon and merge it to master.

Thanks!

I had run into problems getting 1.5 to build before so that’s why I made my initial changes against master. I’ve finally gotten it to compile after installing new versions of Arduino, Teensyduino and FastLED. It would be helpful if you put the current versions required to compile somewhere in the readme. I had to look at your comments in the commit log to figure out what I needed to install.

Anyway, 1.5 is looking good, but I don’t have the hardware set up to play with the Audio stuff unfortunately. I like a lot of the new patterns but I also miss some of the older non-smeared versions. I haven’t really looked at the code yet… is the smearing something you could toggle on via a setting, or is it too ingrained in each pattern to easily do that?

One other thing I noticed is that the rainbow smoke pattern currently resets before it’s finished drawing. Maybe this was intentional, but I kind of liked it when it fully filled the screen and then displayed for a few seconds.

I didn’t realize you had already built a web-based controller. I will check it out. I don’t really want to create a competing project if you’ve already made a lot of effort on yours. Once I check it out, I can start helping with that instead. Mine is less than 100 lines of code, so it’s not really that much wasted effort if I ditch it.

I updated the Compiling wiki page a while back, but good idea on including that in the readme. I trimmed the readme because I was tired of maintaining the same info in it and the wiki.

Thanks. If you want to try out Audio patterns, I highly recommend these MSGEQ7 breakout boards for $15.90 shipped.

The noise smearing should be easy to comment out, or to make an additional non-smeared version. Louis and I decided to disable or remove a few of the ‘weaker’ patterns before Maker Faire and the Kickstarter, but it wouldn’t be difficult to add them back in.

That sounds like a bug with the rainbow smoke pattern, I’ll investigate.

I haven’t spent a lot of time on the web app, am completely open to suggestions, and would welcome any help and/or alternatives.

Thanks!

Can the MSGEQ7 modules connect to the existing headers on the SmartMatrix shield or does it require soldering? Are there instructions somewhere for setting it up?

Oh, and on the readme, my thought is that since there are differing dependencies for different versions of Aurora, it would be easier if they are documented along with each version. Then in the wiki you could refer to the readme instead of maintaining the versions in two places.

I know it can be added to the SmartMatrix SD shield (I have one), but I’m not sure about the non-SD shield. There is a bit of info and some pictures here: http://www.instructables.com/id/SmartMatrix-Dynamic-LED-Art-Display/step7/Add-Remaining-Electronics/

Good point on the readme, I’ll probably just include it in both for good measure.

I fixed the bug with the rainbow smoke pattern restarted before it finished and paused: Fixed rainbow smoke pattern restarting before it finished and paused. · pixelmatix/aurora@cae78c3 · GitHub

Cool, I’ve got the SD version so I should be able to use the module although it does look like I’ll have to solder some additional header on the shield. I don’t currently own a soldering iron but I can pick up a cheap one. It may be a while before I get around to it though.

One alternative implementation that comes to mind is if you can program a spectrum analyzer on the computer that feeds the data to the micro via USB. The spectrum analyzer in Jinx already does this by generating frames and sending them over TPM2 but I’m wondering if I can whip something up that would feed the raw levels so I can take advantage of the built-in visualizers. I might take a crack at this if I get bored :).

1 Like

Pulled your changes and the rainbow smoke is back to normal.

On the SmartMatrix Shield (the one sold by Adafruit through May 2015) the MSGEQ7 breakout needs to be connected to the pins on the end of the Teensy, plus pins 0/1 on the expansion. I have pictures but haven’t published them yet.

On the SmartMatrix SD Shield (the one sold through our Tindie store and Hackaday - and Adafruit starting this month), you can follow the Instructable.