[posted] Quantum Jungle: My new installation with 12000 LEDs+touch+Teensy 4.1+eth


Hi all!

I've just installed my new interactive installation Quantum Jungle in Pisa! Here's a video of it:

It is my newest and largest installation by far, it was quite a crunch to get everything finished for that exhibition!

I designed, built, and soldered it all together by myself. Perhaps you've seen my previous installations - [Quantum Garden](https://www.reddit.com/r/arduino/comments/9z5rdw/ive_just_finished_this_interactive_installation/) is pretty much the predecessor to this. It's been commissioned by several universities (Aalto, Helsinki, and Pisa), who provided the quantum algorithm and found the venue in Pisa.

Here's some details:

Hardware: Lets go from software to LEDs:

1. First, there's a PC (a nice Ryzen Laptop in this case) running a custom C# application that handles all the visual effects and LED info. There's also a Python script that has all the science code (it uses numpy with complex matrix operations, which I couldn't easily port to C#), and it talks to C# over local socket connections. The LED data is then encoded and sent as UDP packets over Ethernet to 3 Teensy 4.1.
2. The Teensy 4.1 use their native 100mbit ethernet capabilities to receive the data and render it. In this case I'm using a neat library called [TriantaduoWS2811](https://github.com/wramsdell/TriantaduoWS2811), which can render up to 31 LED strips in parallel *without using any CPU cycles*, giving me a smooth 85+ fps.
3. Each of the springs (they're just door stopper springs!), is connected at its base to the PCB and then to a capacitive touch sensor, I'm using the cheap-and-cheerful MPR121, which has 12 touch channels. Four of those (because they can have up to 4 different I2C addresses) are connected to an ESP8266.
4. The ESP8266 reads all the touch data and sends it to a primary ESP8266 via ESP-Now, a fast and simple protocol based on the wifi frequencies (a bit like xbee but cheaper). I planned to use the Teensies for the touch data as well, but I couldn't get it to work reliably (the I2C address limitation was a bit of a headache). Using a wireless connection here isn't ideal, but hey it was already less than a month to delivery at that point, and I had plenty of ESP8266 lying around. The primary ESP that receives all the touch data is connected to one of the Teensies, which sends the touch data to the PC over Ethernet.

Quantum stuff:
So the algorithm is Schrödinger's Equation, which simulates quantum particle movement, here on a 2D grid where each node is a spring. The video captions explain it as well as I understand it, since I'm not a quantum physicist either. Just know that it's not running on a quantum computer, but is using a 'classical' computer to simulate quantum particle behaviour. This part of the code is written in Python (specifically numpy), by the quantum physicists in Helsinki.