Marc's Public Blog - Clubbing and Trance


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Dining | Diving | Electronics | Exercising | Flying | Hiking | Linux | Linuxha | Monuments | Museums | Public | Rc | Sciencemuseums | Snow | Solar | Trips

Ok, so I like electronic dance music, more specifically Trance. When I started in the 1990's, the US was a bit behind in that department.
Still, with San Francisco and San Jose nearby, I've had some opportunities to see some great EDM/Trance DJs. Back in the early 2000's, they sadly played club music in the US that was nowhere close to the hits they had composed and were known for, but over the years, as Trance started becoming more popular, those DJs finally started playing their good tunes in the US too, and maybe from 2004 on, it's only been getting better.
Popsicle Halloween 2004 was really the beginning of great music parties in the San Francisco Area, and thankfully things have gotten even better since then

As a matter of fact, after another 10 years (2015 and beyond) the good news is that Trance has grown quite a following in the US, and places like the SF Bay Area, and while Trance has been declared dead a few times in the last 10 years, it's still going strong here.
Trance Family SF is definitely strong in the area, we've been getting more big trance parties every year, including many top DJs that come visit us what feels like every other week now (as of 2018-2019), and through those events, I made many friends in Trance Family SF. Thanks to you all.

Over those years, I got the chance to meet a few of my favourite DJs, including Armin more than once, and my last hobby has been to work on lights for my shirt and pants (version 3) and (version 4)



You can find all the pictures here

>>> Back to post index <<<

2019/04/08 Clubbing, EDM Festival and Burning Man LED Pants and Shirt v4 on ESP32 with RGBPanels and SmartMatrix::GFX
π 2019-04-08 01:01 in Arduino, Bm, Clubbing
Show me the code:
  • https://github.com/marcmerlin/NeoMatrix-FastLED-IR (same code than my previous shirt, but upgraded for the higher resolution)
  • https://github.com/marcmerlin/SmartMatrix_GFX (API on top of SmartMatrix from Louis Beaudouin, without which this new shirt wouldn't have been possible)
  • https://github.com/marcmerlin/AnimatedGIFs (also original from Louis Beaudouin).
  • https://github.com/marcmerlin/FastLED_NeoMatrix_SmartMatrix_LEDMatrix_GFX_Demos (includes Aurora from Jason Coon, and Table code from Mark Estes)
  • Related pages:

  • Shirt V2
  • Shirt V3
  • SmartMatrix GFX I had to write (including Teensy with SmartMatrix v4 shield vs ESP32)
  • Using FatFS on ESP32 to store Animated GIFs
  • Diffusers for RGBPanel
  • Details: After version 3 of my shirt with a neopixel matrix, I had good fun, but was hoping to do more. Its resolution was only 24 x 32 pixels, enough to display fun patterns, but it's really not a lot of pixels.


    After months and months of work, here is version 4:


    Video demo:

    Sadly, going up in resolution with addressable pixels, is not that easy. While in theory you should be able to fit at least 2 addressable pixels per centimeter (aka P5). Currently my premade panels are P10, which is the only thing I could buy pre-made.

    What allowed me to switch were those flexible P4 RGB Panels from Azerone: https://amazon.com/gp/product/B07F87CM6Y


    With their P4 resolution, I'm able to fit 96x64 on my body using 3 panels of 64x32 chained together. The 3rd panel is then chained to the 2nd set of 3 panels in my back:


    On the old shirt, I put the rear panel inside the shirt, using the shirt as a diffuser, but with the RBGPanels, they were too thick for this to be practical, so I had to put them on top of the shirt. As a result, I ended up uing a black shirt which matches the color of the panels. I had to attach velcro to the new shirt, and confirmed that supergluing them was so much faster than sawing, and worked just as well:


    I unsoldered the power connectors that were too thick, and used small metal wire to connect the panels together (see top middle of the picture). Turned out those metal wires were a mistake as they can cause shorts on the LEDs on the other side of the board:


    Another thing I learned was that the holes I was using to put a metal wire to carry the panels over my shoulders, can't actually take the load, and the wire can cause damage to the copper trace that is just next to the hole. As a result, I replaced the metal wires with fishing wire and didn't use the bigger holes for load bearing:


    Speaking of removing thickness from the board, I removed the top of the ribbon connectors to make them a bit thinner. Sadly, RGBPanels still require 15 wires to send the video signal:


    I then took one panel and covered it with defusing foam (the rear panel, so that it's not too sharp and blinding to people behind me), while the front panel only has the plastic cover to protect the panels and offer a bit of extra diffusion:




    you can see the difference between the diffusion levels
    you can see the difference between the diffusion levels

    I then protected the rear of the panels given how much electronics were exposed:


    Small details had to be solved, like making sure I had enough amps going through the wires (use thicker wires). Without that, my brightest pattern that uses 8 amps, didn't quite make it:


    For fun, I made a pattern that scrolls my C++ scrolling code on the screens:


    As for the CPU that runs it, I picked the ESP32 since it's dual core and can do refreshes on one core while running code on the other core. My SmartMatrix::GFX page has more details on using ESP32 with SmartMatrix


    I went from a breadboard prototype to Jason Coon's ESP32 level shifter board, much more tidy
    I went from a breadboard prototype to Jason Coon's ESP32 level shifter board, much more tidy

    This video shows how things are wired from the ESP32 to the panels:

    Here is what the whole power system looks like:

  • 2 4S Lipos, 5Ah, 80wh, giving a total 160Wh of energy
  • Amp meter in line with the lipos and cell tester with low voltage warning buzzer
  • On off/switch
  • Amp gauge with timer to know how much energy flowed from the batteries (you can't run lipos down or they'll die)
  • Tobsun DC-DC converter to take voltage down to 5V
  • 2nd voltage regulator to bring the voltage further down to 3.3V for the El Wire glasses
  • 5V goes to RGBPanels via separate thick wire to carry the amps
  • ESP32 with level shifters from 3.3V back up to 5V for the RGBPanels (6 channels for the colors to level shifters, 4 address lines to do 16 scan line refreshes). CPU runs SmartMatrix::GFX and NeoMatrix-FastLED-IR
  • 16th data line is used for the Neopixel strips on my arms and legs, running the same code than the previous shirt
  • Walk through video:

    I have around 60 demos running on the panels, including some Animated Gifs on ESP32 FFat with the library I was able to improve:





    Here is an example of 3 levels of diffusers, including a raw set of panels with no diffusers:










    After going to Luminosity Beach Festival, a underpaid and undertrained security guard at the entrance freaked out at the wires, so I made boxes to hide the wires and hopefully remove the "OMG, it's a bomb" reflex that some people might have:

    2 batteries, fuse, meters and output
    2 batteries, fuse, meters and output

    adapter box that takes 16V down to 5V and measures current used while distributing power
    adapter box that takes 16V down to 5V and measures current used while distributing power

    both boxes together are bigger than my previous setup, but looks a bit better
    both boxes together are bigger than my previous setup, but looks a bit better

    You can see a demo of the outfit being worn:

    If you don't have time for all this, and are ok with 64x64, you can try this backpack from gearbest with everything built in and a very thin board. Just not fun for me because I can't run my own code on it:




    More pages: August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 December 2018 November 2018 October 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 November 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 December 2016 November 2016 September 2016 August 2016 June 2016 May 2016 January 2016 September 2015 August 2015 June 2015 September 2014 August 2014 May 2014 September 2013 May 2012 May 2011 December 2009 November 2009 April 2009 March 2009 October 2008 June 2008 October 2007 September 2007 July 2007 May 2007 April 2007 November 2006 October 2006 September 2006 June 2006 May 2006 January 2006 December 2005 October 2005 September 2005 August 2005 June 2005 May 2005 February 2005 December 2004 November 2004 October 2004 September 2004 June 2004 August 2003 July 2003 February 2002 November 2001 October 2001 September 2001 July 2001 June 2000

    >>> Back to post index <<<