Hacker News new | past | comments | ask | show | jobs | submit login
Chromatron Wi-Fi Pixel Controller (chromatron.io)
80 points by luu on March 29, 2020 | hide | past | favorite | 36 comments



This seems like way overcomplicated design - why do they need two CPUs? They claim "real time control", but this doesn't check out: their main CPU, esp8266, has a DMA that can emit stable protocol timings. And the higher level effects don't care about millisecond or ten of jitter.

I am running two such simple strips right now, and it works very well.


Hi there! Project creator here. Hindsight is 20/20 - the dual CPU design did prove to be overly complex. It does in actuality work quite well, but it was extremely difficult to implement and it's a lot of extra parts for features that turned out to be less useful than anticipated. There's some major reasons why I designed it that way at the time though:

1) I already had an OS that ran on the AVR, and didn't want to spend the effort porting it entirely to the ESP8266. That being said, I've since mostly ported it over anyway. The ESP8266 is indeed wayyyy harder to use than an AVR. But, as it turns out, not harder than dealing with two extremely dissimilar CPUs.

2) The ESP8266 doesn't have great I/O. In particular, I wanted to run PWM LED strips and the AVR allowed me to do that (the LED driver circuit can run PWM or digital output on the same pins). However, I realized pretty quick after selling a few of them that nobody else cared about PWM and not long after that, neither did I. Only a handful of my projects still use the PWM circuit.

3) The AVR has a much, much better DMA than the ESP8266. There's a fast LED style dithering feature available for some LED strips, and the Xmega DMA is what made it possible to do that. Yet another feature than turned out to be less useful than I'd thought - most strips I use clock too slowly to dither anyway.

4) It also has more analog I/O, which I use in my own projects, but probably no one else does.


ESP8266s aren't very pleasant to work with, and in my experience it can be hard to accomplish much in program logic while keeping the WiFi stable.

But the cottage industry around these addressable LED driver boards is getting pretty ridiculous. The PixelBlaze already does a great job of controlling them from an ESP8266. And the LEDs aren't that hard to use with generic hardware like Arduinos, even for people with zero prior experience.

There's no doubt about it, this world caters to the hucksters and the unrealistically optimistic.


Regarding "in my experience it can be hard to accomplish much in program logic while keeping the WiFi stable".

I've had the same; sorting a big list of numbers or doing any action that takes a few seconds can make the WiFi unstable, disconnect, or not respond.

I'm curious though, there are some dual-core designs with ESP8266 compatibility out there, would that help?


I have no problem using coroutines to keep Wifi working fluidly on ESP8266. This just requires attention, its not too difficult to keep the ESP8266 pumping data.


Genuinely curious what you find unpleasant about the ESP8266 to work with?


From my experience, and this is compared with AVR and most ARM parts I've worked with.

1) Generally poor documentation. Non-existent at the register level - you are entirely at the mercy of the SDK and what other people have reverse engineered.

2) Crashes on unaligned pointer access. This is something that ARM generally handles with ease (though there are exceptions). Porting code from ARM or 8 bit machines to the ESP8266 can take a fair amount of effort in tracking down all of the unaligned access exceptions that come up. It's extremely frustrating.

3) To that point, the SPI flash access is also beholden to 32 bit alignment. That really complicates things if you port code that relied on a typical SPI flash's ability to access at a 1 byte granularity.

4) Poor compiler support. I think the latest GCC they support is 5.something. It requires a custom backend so it is vendor maintained. Contrast with ARM support in GCC which is generally outstanding.

5) No hardware debug support. You can run GDB over a serial port, but that's no where near as powerful as having an actual JTAG/SWD port.

6) The program memory architecture is complex and difficult to use (poor documentation is part of the issue here). There's no on-chip flash - code streams from a SPI flash into a RAM cache. Some code has to run out of RAM and must be placed by the linker as such.

All that being said - the chip works. The Wifi is excellent (I run dozens of these at a time, they are more reliable than my Unifi routers they connect to). For a $2 FCC certified module it's unbeatable. I have really come around to like this part in spite of its many flaws - it was built to do one thing very well at a price point no one else could touch - and by and large it succeeded.


I have run into a few of these, I do have to admit, but I don't find any of these to be show-stoppers, necessarily .. like you I like the ES-series, in spite of the flaws. It's comfortable, once you move in.

One last question, platform.io? Pretty good ecosystem in general - and with the wide variety of assets to select from, a lot of your points become less painful ..


ESP32 has the RMT peripheral which is very well matched to manipulating LED strips:

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/...


Anyone looking into this (seems you can't get your hands on the hardware just now, skimming the comments?) may want to look int WLED...

All you need is a NanoMCU / ESP8266, a power source and LED-strips of you choice... There even are iOS (and i think Android) apps to control the strips via Wifi, options to sync N strips etc. etc...

https://github.com/Aircoookie/WLED


+1 for WLED. They have an Android app that works quite nicely. Apparently WLED also implements ways to sync to systems like Philips Hue and offers alternative interfaces like MQTT. The community is also great and will help you out where they can.


Very awesome demo. I want to do more DIY LED lighting in my office (because it makes for a great video conference backdrop) and I am perfectly capable of buying and programming ESP8266's or ESP32's.... But it's a PITA. Doing it totally DIY is a lot of tinkering with a lot of different things (power, the vagueries of LED strips you get from Aliexpress, etc).

I'd totally be down for buying like 5 of these units to test with, provided they weren't unreasonably more expensive than what I'd expect to pay for an ESP8266 and related gear.


I've heard good things about those (but no firsthand experience myself!): https://www.tindie.com/products/electromage/electromage-pixe...


I've played with the Pixelblaze and it's pretty sweet. As far as going from nothing to being able to control a string of LED lights with a series of pre-programmed effects, it is really easy.

That said, I ended up abandoning the project I was going to use them for: permanently installed Christmas lights that doubled as just normal outside lighting when it wasn't a holiday. I ended up, just this weekend in fact, installing just a white LED strip light for that. Which I just did on a whim yesterday afternoon, after someone was prowling up the street looking for open cars that morning.


Amusing you say that. At one point I went through the effort of running an entire set of RGBW LED strips, in aluminum channel, along the gutter of my mothers house (I was living in an appt in the city). So that we could have some nice programmable lights for xmas and other holidays. Man, that was so much more work than I expected... and while it worked at first water or other things kept futzing up the system (even with heavy doses of sealant near all electrical connections). Haven't tried turning the system on in more than a year now.


What pain point(s) made you abandon the project? I like the idea!


Things kind of just spiraled out of control...

- Wasn't clear if Pixelblaze with it's add on board could drive multiple strips at high refresh rates, or I needed multiple pixelblaze. Then there are synchronization issues.

- If I'm gonna do that, I might as well go with one of those Falcon LED controllers that can do shows, for $200.

- I have power in the garage at one end of the house, but need to branch off the middle of the house. But to get acceptable voltage drop, I'd probably need to run 12/2, but I need to figure out DC code, or I need to find a place to stow the power supply.

- I'd like to use some or all of them as a "porch light", but just switching off/on had some issue. I don't recall, it either took a long time to get to the point where the lights were on, or required also poking the control port or something.

- And it was maybe 6 weeks from Christmas with a lot of building to do to get there.

If I end up deciding to do it, I might install a dual track with white non-addressable strip AND the color addressable AND go with the Falcon controller. Maybe running conduit from the center of the house into the closet, where I put the power supply and Falcon. I recently ran a receptacle into it to drive the LED light strip that is in there, because that closet was a dark pit that you couldn't find anything in, so that makes it a bit easier than it was last holidays.


Wow, well thought out post! Thank you for the tips, future me will benefit greatly.


Also have a couple pixelblazes, very good product.

In my case I was trying to integrate with a DMX-driven show, which is tricky and required more time than I had to invest in the project, but as standalone pixel controllers they are quite good. You can also use a separate package called firestorm to tie them together, also pretty useful.


WLED is a quite cool project that works very well on the ESP8266/32. It supports multiple chipsets, has an Android app and multiple ways to control it.

If you plan on actually using it as a lighting source, I'd recommend you buy some LED strips with a dedicated white source since the RGB only white often looks weird on video. Also, if you want a longer strip, get one with 12V instead of 5V.



Awww, that's very unfortunate. Found the repo ( https://github.com/sapphireos/chromatron ) since it's open source and there are no commits in the last 2 years.


Hi! I'm the project creator. While it's true the Kickstarter boards have all sold out, the project is still alive and well. Check out the dev and esp8266 branches, there's commits as of today ;-)

My long term goal for this year is to get a port running on some stock ESP8266 boards (such as NodeMCU and the Adafruit Feather Huzzah). My original hardware design was too complex to build in a cost effective way, but I'd really like to get the software in the hands of those who are interested.


Did I just miss it, or is there no information about price, where to get it, whether it's available now, etc?

It looks interesting, and if it were the right price I might actually want one.

As far as I can tell there's only the signup for more info (no, thanks) - or some links to github and some social media.


Hi, project creator here. Sadly, the poster was a little behind on catching this... The Kickstarter boards shipped over 2 years ago, and as the hardware didn't really sell well after that, it's mostly just a personal project that this point.

That being said, I am actively working on a port for some stock ESP8266 boards (Adafruit Feather, NodeMCU, etc). I don't really want to sell hardware, but I'd love to see someone else using the software.


A custom virtual machine and wifi. As a user, I'd much more appreciate exercises of modularity than featurefullness. Not that I don't sympathize with the maker. Over-engineering can be fun.


Over-engineering is indeed fun - that was part of the point of the project, it was (and remains) a labor of love.

Modularity was actually a design consideration I really struggled with, but at the end of the day, I realized I didn't want to do just another Arduino clone where you put the whole thing together yourself. I designed Chromatron under the assumption that you'd eventually end up with a lot of them, in which case the Wifi and live coding are really useful features - I wanted and all-in-one solution. But for most people who only need 1 or 2 projects, it's overkill. I think that's part of the reason it didn't sell that well.


Easy modularity can be hard, so can't blame you for going for an AIO.


I have two of these. Way faster than an Arduino if you just want to set up some dynamic lighting, and still plenty of room for tinkering.


where did you buy it ?



I love that it has a terminal block. Secure connection and no soldering.


Why is there a 300 LED limit?


Memory and the available CPU time to run the virtual machine. There's also a fader engine to do timed fades per pixel, that eats a fair amount of RAM as well (but it's a nice to have).

It was designed for smaller, but highly dynamic, projects. I figured large scale installations were already well served in the DMX/pixel mapping space.


This one needs some love www.heroicrobotics.com PixelPusher


I worked with Wizard23 to produce something similar, called the MagicShifter:

http://magicshifter.net/

Its an open source, portable battery powered pocketable light synthesiser with multiple built-in programs for doing a variety of different things - from Persistence of Vision effects (very popular), to accelerometer-based level meters, vibration visualisers, and disco/strobe effects.

I added MIDI to it - meaning the whole thing can be sync'ed over rtpMIDI (MIDI over Wifi is awesome and supported out of the box by most operating systems), and I also built an Arpeggiator for it too - meaning you can have your dancers wired up with shifters on their bodies, an Arpeggiator on stage with you on your synth stacks, and MagicShifters all over the place synchronised to your drum machine. ;)

We (Phillip, the hardware inventor, and myself the software guy) also designed the latest-gen MS3000 PCB to be easily useful for longer LED strip experiments, and included both 5v and 3.3v onboard, with a UART breakout, for extra hacking purposes - wire it up to a console and use it as a build indicator, or just use plain old Wifi too. We have a light strip with 200 LED's wired up to a single MagicShifter and used it to create a wall clock. Pins for wiring up longer strips are exposed on one end of the board, and you can solder the strips directly without requiring further driver hardware - just change the constants in the MS3KOS to tell it how many LED's you're driving ..

EDIT: Have a look at the PCB here:

https://magicshifter.github.io/magicshifter.net/img/new/ms30...

You can see the UART breakout as well as the 4 contact points for longer LED strips...

It includes a REST-based interface for changing the LED effects modes, as well as presenting a web-based Pixel Editor to create your own POV images.

Sources here (100% open source) for anyone who might glean some use out of our project:

https://github.com/magicshifter

Some other nice demo videos:

https://www.youtube.com/watch?v=-xoYjA06XkQ

https://www.youtube.com/watch?v=syP8_lccIQA

https://www.youtube.com/watch?v=Shac_DN2ZrU

https://www.youtube.com/watch?v=rcGrRuRuhYU

EDIT: you can get an MS3000 from http://hackerspaceshop.com ..




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: