Marc's Public Blog - Arduino Hacking


vvv Click on the categories below to see other topic specific pages vvv



Table of Content for arduino:

More pages: March 2025 January 2025 November 2024 June 2024 August 2023 June 2023 May 2023 April 2023 March 2022 January 2022 January 2021 December 2020 March 2020 January 2020 May 2019 April 2019 March 2019 January 2019 July 2018 May 2018 April 2018 January 2018 June 2017 April 2017 January 2017 February 2016 January 2015 September 2013 January 2012 December 2011 May 2011 January 2011





π 2025-03-07 01:01 in Arduino, Clubbing, Electronics, Festivals
This is the untethered update to my v5 and v6 outfits. Please see LED Pants and Shirt v5 on ESP32 and Raspberry Pi with P2 RGBPanels and Wifi for how the entire setup works, and for the new LED strips on arma and legs, you can see Party LED Outfit Version 5.5: Flexible P15 LED Strings, LED Fanny Pack, Rez Inspired LED Goggles, LED Laces and LED Shoes

And if you want even more details and history >>> See this full article on the why and evolution of my LED outfit <<<

Prototype of new version:


The previous v6 was an attempt at simplyfying v5 by integrating the batteries directly to the back of the panels. In the case of Lipo batteries that I cannot let run flat or they'll be damaged forever, and need for extra wiring for the balance connector, it was simpler to attach everything to the back of the panels, but it made the panels quite heavy and more bulky looking.
That outfit served me well, but outside of bulk and weight, one issue was getting the lipo batteries through airports. They are totally legal and allowed, but they had to be removed from the outfit every time I flew, which was a pain in unwiring/re-wiring, but even then, I would get stopped more than half the time I went through Xray while they got a supervisor to confirm that yes indeed the batteries were fine. A few times, I got less educated people who reacted in lesser ways, and called more people, a few times causing delays of 30mn or more. To be more specific:

  • I met the bomb specialist of the day at SFO airport, twice. Very nice guy both times, for 30mn+ delay
  • In Thailand my first trip was fine, but my last flight of the 2nd trip, I got 12 people including the army asking me why would I fly with this?
  • more than once, I was told my lipo batteries had a simliar shape to C4 explosives, which I guess is true, but not my fault. I have learned however that once people say "it looks like [something scary]", even if they agree it's not, I have still lost
  • Another time in France, I had to argue with the police who were mostly being dicks that day and told me I had too many batteries because I could only carry as many as I would need in flight (which was entirely untrue and made up, but they had the guns)
  • The batteries are in green below, they showed up pretty reliably on Xrays and the whole thing would get flagged and then they would have to look at them and the wires, and often were not super happy:


    So, I ended up making a removable battery pack that was wired correctly, and putting it the right way was tricky, so set it up to be correct and in one piece that could be removed and re-added with less work for each flight:


    But it didn't take long to find out that even carrying the batteries separately that way still made TSA unhappy at times, and unless I unplugged absolutely everything and rebuild the whole thing every time, they would not be very happy and that was a pain for me to take apart and rebuild every single time. They still occasionally said it looked like C-4.

    I wasn't being a contratrian for fun, and see how many world TSAs I could win an argument with, I just didn't really have many other options, I did need those big batteries because my outfit does need lots of power, and 5V USB battery packs simply do not output enough amps.

    tried with USB packs
    tried with USB packs

    it was not fun, I had to segment power use in different busses plugged into different ports of battery packs, very cumbersome and the first tone to die could shut down everything
    it was not fun, I had to segment power use in different busses plugged into different ports of battery packs, very cumbersome and the first tone to die could shut down everything

    But after multiple years (and to be fair, it was many flights and most were fine, but the 5-10% that were not, were _not_ fun), technology finally evolved into whas that gave me better options: using less scary looking USB powerbanks that were finally able to output enough watts to power my panels without dipping power enough to cause reboots and crashes from the CPUs.

    so I built a new system with dual 20V input (each one is sufficient on its own)
    so I built a new system with dual 20V input (each one is sufficient on its own)

    I have 2 USB-PD selector boards that output into a diode to avoid backfeed, and this goes into a DC-DC converter that takes the 20V down to 5V at up to 20A although probably only 5A max is really needed
    I have 2 USB-PD selector boards that output into a diode to avoid backfeed, and this goes into a DC-DC converter that takes the 20V down to 5V at up to 20A although probably only 5A max is really needed

    It of course runs fine from a single battery:


    At the same time, I made a big upgrade on the panel side by using flexible PCB panels that are differnetly thinner. At the same time I switched to RPI0 2W which is slightly more powerful than an RPI3a while being much smaller:


    Now the whole thing looks nicer and lighter:


    I did switch the big ESP32 to a smaller smaller ESP32 C3 (2 shown in this picture), which can still output to an LED strip if I really want/need. I also tried to switch to a smaller electrodragon passive-3 board that was custom designed to fit the RPI0 2W. It doesn't have the room for the level shifters, but turns out for an ABCDE panel, the passive board worked just as well (top on the picture vs the bigger red one in the middle):


    The old setup had 300Wh of battery capacity, and that was real capacity, no BS. I measured it to give me a bit over 18H of runtime, which was very nice indeed, and helpful for places like tomorrowland where I had to camp and go 3 nights without ability to recharge.

    This new setup differs a good amount because:

  • the panels are similar resolution and size, but they are a new design with flex PCB panels that are much thinner
  • they are still not as thin as LEDs inside the clothing, but in order to make it lighter and thinner, the batteries were moved back out
  • at the time of my original design, USB batteries were just not really on par with what I needed. My setup does use 5V, but it needs a lot more amps than any battery pack can take, and last I tried, it required an awkward setup where I used 3 different USB ports. But 3 years later, there are finally USB battery packs that can output 100W on a single port as 20V/5A via USB-PD, and that is more than plenty to run the panels as well as than run a Raspberry Pi without the voltage dipping and causing a reboot.
  • the new battery packs, while sold as almost 100Wh, all deliver around 75Wh of real power, which unfortunately is only good enough for 5.5h of runtime per battery. The loss of capacity is due both marketing lies, and the capacity that is given is the ideal capacity of the lithium batteries inside the USB pack, but that power has to be up-converted to 20V and losses happen in that process. Later I confirmed that up-converting to 15V was sufficient, so that helped a little bit. On the plus side, 11H is enough for most uses, and worst case I can hot swap an empty battery without even shutting down/rebooting the system
  • I also changed the rPI3a for a smaller rPi0 2w and a smaller ESP32 replaced with ESP32 S3. The rPi+ESP used 28% of the power, while the 6 panels used 72% of the power. The smaller Rip0 2w + ESP32 S3 probably takes probably just a bit less power, but it's a small enough percentage that I didn't go measure it.

  • End result

    Same on youtube:

    But of course, nothing can be simple, this new design brought some new issues:

    After using it the first time at ASOT NL 2025 the wooden frame got detached in no time, failure of the 2.5mm screws

    very early version without clips on both sides
    very early version without clips on both sides

    just a bit of tape to hold things together, clips on sides and top
    just a bit of tape to hold things together, clips on sides and top

    it was built until the flight and I didn't have time to add a protective frame
    it was built until the flight and I didn't have time to add a protective frame

    the panels were so cheaply made that the screws receptacles came unglued
    the panels were so cheaply made that the screws receptacles came unglued

    Another issue I didn't like with these ABCDE panels is that the screws were 2.5mm instead of 3mm for unknown reasons and it was hard to attach to something that small.

    Switching to a different 128x64 P2 Flex Panel vendor, but ending up with ABC panels that barely worked with rpi-rgb-panel

    The ABC panels had 3mm screws, which was better, but I found out even those things also popped out. I had to carefully re-glue them in without leaking glue on the panel pixels:


    Sadly those ABC panels had different chips that required huge gpio slowdowns or suffered from noise and display issues:



    new chips
    new chips

    It took a few weeks, and very kind help from board707 and multiple issues to make a new line addressing shift register pusher that was faster and didn't have the noise/corruption issue:

  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1725#issuecomment-2757492829
  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1773
  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1774
  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1788 where I found subtle timing issues. between chips, kernel and compilation options causing -led-slowdown-gpio to have to be changed between 1 and 2 to get a stable output
  • while doing all this, I did confirm that the smaller electrodragon passive-3 board does pick up more noise and isn't able to drive as fast as the bigger active-3 board
  • once I figured all that out, finally got the ABC panels to work almost as fast as ABCDE and now have a nice screet/pixel protector
    once I figured all that out, finally got the ABC panels to work almost as fast as ABCDE and now have a nice screet/pixel protector

    USB powerbank failures

    It didn't take long before I found out that many powerbanks do very badly at outputting 20V long term, and some of their ports half die and only do 5V after a while, which is not enough for me:


    It took some tracking down to catch real time failures:

    Flexible PCB solder point failures

    This is now the biggest and unsolved issue with my new setup. Anything that moves and flexes, fails, and sure enough the same law applies here:

    flexing the PCB can cause any of those points to fail, causing the above
    flexing the PCB can cause any of those points to fail, causing the above

    and they fail in different ways :(
    and they fail in different ways :(



    Oh no, it looks terrible when it fails in the wrong place
    Oh no, it looks terrible when it fails in the wrong place

    Easier Replacing of Panels

    I wish I could say I have a great solution to those panels that fail due to flexing and solder point failures: 5165*|2 different failures 5165*|by hand flexing the panel, it brings the connection back, but it's not a solution 5164*|my new design makes swappping panels faster, and not requiring a soldering iron

    This is not a great long term solution, but I have no better idea for now outside of going back to bigger and bulkier non flexible panels.

    New Pants

    I redesigned the pant straps to use smaller black loops first glued and then sown into the pants:


    looks more tidy
    looks more tidy

    end result
    end result

    New LED Hats

    this was my old Dreamstate Hat, it looks cool but it's heavy
    this was my old Dreamstate Hat, it looks cool but it's heavy

    so I made new ones that are much lighter
    so I made new ones that are much lighter

    funny thing is the very first time I flew with the new hats, I was detained because of them :)
    funny thing is the very first time I flew with the new hats, I was detained because of them :)

    Upgraded LED Shoes with bright Shoelaces

    I got new brighter shoelaces but the batteries didnt even last a day
    I got new brighter shoelaces but the batteries didnt even last a day

    So I made a connector to plug into the shoe's bigger batteries I upgraded
    So I made a connector to plug into the shoe's bigger batteries I upgraded

    End result:

    Extending battery life

    Originally I setup my battery packs to output 20V, which means the power is upconverted to 20V and then downconverted to 5V but with 10A (way more than needed), Trial and error showed that my battery packs do seem to output more energy when I lowered the voltage to 15V, and after modifying my code a little bit, I was able to make it run off 12V (the battery pack only outputs 3A at 12V, or 36W. Normally my code should not use 36W, I've measured it to use around 8W average, but in peak use situations it can draw more, and if the 5V voltage dips a bit too much as a result, the rPi will crash and reboot).

    I have a "few" battery packs, different sizes and weights, but the weight adds up:


    The good news is that I'm now able to use smaller packs that can still output 60Wh, but only up to 12V. The bigger packs can do 100W at 20V and output up to 75Wh on a good day, although most of mine often seem to do less (they are of course rated for 99Wh)


    in the process, I found out the Wh totalizer in these meters, is garbage and can't be trusted
    in the process, I found out the Wh totalizer in these meters, is garbage and can't be trusted

    nicer/bigger 100W capable pack (more than I need) with better totalizer
    nicer/bigger 100W capable pack (more than I need) with better totalizer

    new test at 15V instead of 20V (the red boards can be changed to ask any voltage) with diodes to prevent backfeed
    new test at 15V instead of 20V (the red boards can be changed to ask any voltage) with diodes to prevent backfeed

    measuring the loss between 15V input and 5V output
    measuring the loss between 15V input and 5V output

    trying again with 12V, we can also note the voltage drop at 1.4A
    trying again with 12V, we can also note the voltage drop at 1.4A

    some surprising results, some 75Wh packs emptied quicker than expected, only got 65Wh from thsi one
    some surprising results, some 75Wh packs emptied quicker than expected, only got 65Wh from thsi one

    a fun part of this exercise is figuring out if the Wh totalizers are even good
    a fun part of this exercise is figuring out if the Wh totalizers are even good

    Here are the results I got so far:

  • small 60Wh pack, pack #1: 49Wh, pack #2: 56Wh, 12V meter: 108Wh, 5V meter: 98Wh, 12h28 total, 7.8W avg (5v), 8.6W avg (12V)
  • big 75W pack (12V), pack #1: 63Wh, pack #2: 53Wh, 12V meter: 110Wh, 5V meter: 99Wh, 12h23 total, 7.8W avg (5v), 8.9W avg (12V)
  • big 75W pack (12V), pack #1: 63Wh, pack #2: 73Wh, 12V meter: 125Wh, 5V meter:114Wh, 14h30 total, 7.8W avg (5v), 8.5W avg (12V)
  • big 75W pack (20V), pack #1: 70Wh, pack #2: 68Wh, 20V meter: 120Wh, 5V meter:108Wh, 13h30 total, 8.0W avg (5v), 8.8W avg (20V)
  • So, what comes out of this is:

  • I'm getting a bit longer runtime by only using 12V intead of 20V and this allows using smaller battery packs that only do 12V
  • I'm pretty disappointed in those 100W/99Wh packs that seem to output as little as 55Wh at 12V
  • on the plus side I can now get 14.5h with the bigger battery packs, but I should be getting a lot more if they did output 75Wh
  • There is a 10% loss from down converting from 12V to 5V with my DC-DC converter, probably acceptable
  • The smaller packs seem to work almost as well for a much smaller size, their main downside is they don't charge nearly as fast (the 100W packs can charge in 1.5h at max speed given the proper power supply).

    π 2025-01-17 01:01 in Arduino, Electronics, Linuxha

    got a few extra colorful yard lights ;)
    got a few extra colorful yard lights ;)

    To debug some early issues I had with the pixelblaze, I soldered a few extra wires to add serial monitoring:


    the serial port is temporarily going to a rPi3a which in turn makes it available over an ssh connection
    the serial port is temporarily going to a rPi3a which in turn makes it available over an ssh connection

    up left if the pixelblaze pro expansion board that gives 8 channels, handles power distribution and converts the 12V to 5V for the pixelblaze itself
    up left if the pixelblaze pro expansion board that gives 8 channels, handles power distribution and converts the 12V to 5V for the pixelblaze itself

    For the pixels, I picked rolls of 1000 pixels at 5cm and 10cm pitch from Ray Wu, trusted seller of blinky stuff, and one bonus of not doing this installation a few years earlier is that new pixels have been designed: WS2818.

  • WS2813 were a improvement for having a backup data line but still running on 5V which would have clear voltage drop issues.
  • WS2815 are the 12V version, which is good for dealing with voltage drop
  • WS2818 is yet another improvement over WS2815, still 12V with a backup data line, but more reliable and efficient
  • The last bit "more efficient" actually worked to my advantage as I was able to make a string with 600 pixels and not have to re-inject power anywhere. I measured line voltage at the end and it was only 5V but the pixels still worked great at the reduced voltage.

    The advice I got on the leds are awesome group was to try hot glue, and it was a good idea. Thankfully I had a battery powered hot glue gun, which was a must have. The other important bit was a solder reflow hot air gun, which did have to be plugged in the few times I had to unglue strips to move them after I found a better routing or visual pattern:


    And in all, I actually need 3 tools, the 3rd one was a battery operated air can replacement which allowed me to blow cold air on the hot glue points and have them dry in 10 to 15 seconds instead of 1mn. That was a lifesaver:


    After laying strips, house looked like this:



    After the first 2 days of work, I had 4 strips, around 1500 LEDs:

    or on youtube:

    But it really got better once I added 2 more strips and upp'ed the count to 2000, which was a lot more visually pleasing:

    or on youtube:

    This is my current demo list:

  • Blink fade
  • Color twinkles
  • Fireflies
  • Honeycomb
  • Matching rainbows
  • Rainbow melt
  • Show color shift
  • Sound blink fade
  • Pew pew
  • Sound rays
  • Spark center
  • Static random colors
  • These look interested but are too fast:

  • Millipede
  • Pulse 2e
  • Spin cycle
  • π 2024-11-10 01:01 in Arduino, Computers, Electronics
    I attended Pasadena Hackaday Supercon, so I figured I'd put my pictures into a quick blog entry, shouldn't take long...


    1) Oh, I need to finish writing code to get the SAO badge holder to do something fun

    2) Mmmh, why does this python global variable thing doessn't work in the function

    3) Goes to re-learn python, with help from gemini and how python forks global variables by default in functions so what you write to them isn't saved at local scope (oh my, why did they do that?)

    4) after more hacking, get a proper demo working:

    5) publish code https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/blob/main/README.md (actual code is here: https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/blob/main/software/software/main.py )

    6) Oh, I need to make a video demo of the SAO, but...

    7) oh yeah, there was that hat on my desk I needed to add LEDs on for an upcoming party, start hacking on that

    8) mmmh, the hat won't work long enough with a USB battery, start hacking on a lipo solution

    9) ah, lipos work, but the front LED panels rated for 5V start failing around 3.5V, so I need to make a dual lipo solution, one for the neopixels and one for the RGB panels

    10) test and measure the dual lipo solution and figure out it will last close to 12H, that's good. Ok, hat works mostly, post that https://www.instagram.com/p/DCYEl1jJd_-
    11) Ah yes, the SAO video I was supposed to work on: https://www.youtube.com/watch?v=z7MSywf7js4

    12) During that time, I get interesting distracting packages on my doorstep, like lovely flexible LED panels that will hopefully power my future outfit: https://rpi-rgb-led-matrix.discourse.group/t/rpi0-2w-speed-compared-to-rpi3a/913/2

    13) While I'm testing them, also try some new rPi0 2w chips and microcontrollers to see if they can power my LED outfit with a smaller form factor (and yes they can): https://rpi-rgb-led-matrix.discourse.group/t/rpi0-2w-speed-compared-to-rpi3a/913 . In the interest of briefty, I'm going to skip the part that included migrating from raspbian to a new dietpi linux distro and port back all my custom changes on it :)

    14) That said, I had a long-ish discussion and planning with the electrodragon folks in China on how to make a new 3 channel daughter board that is much smaller and would decrease the over footprint of all new picture frames like the one I built, and of course my LED outfit.

    15) but wait, now I also find out there is a new beaglebone solution that does 6 channels output instead of 3? Ok, make a post about it: https://rpi-rgb-led-matrix.discourse.group/t/interesting-6-port-board-beaglebone-pocketcroller-v2/918/2

    16) and file a couple of RFE bugs to look into it: https://github.com/hzeller/rpi-rgb-led-matrix/issues/1733 + https://github.com/FalconChristmas/fpp/issues/2054

    17) Oh, I just found this old video on my laptop, why did I never post it? Ok, fix that: https://marc.merlins.org/perso/linux/post_2021-01-23_Linux_conf_au-2021-LED-Talk.html

    18) Mmmh, so when I quickly posted those pictures from Neil deGrasse Tyson who just gave a talk, I got a reminder it was annoying for my blog system not to be able to link to videos directly without having to upload them to youtube.

    19) Ok, learn about html5 video tag, hack my blog system to support videos, and push a new blog with my first video tag: https://marc.merlins.org/perso/outings/post_2024-11-14_Neil-deGrasse-Tyson-back-at-San-Jose-Center-for-Performing-Arts_-An-Astrophysicist-Goes-To-The-Movies_-the-Sequel.html

    20) ok, but why did I have to rescue my video from my phone because the H265 recompressed version did not work in the blog? Ah, because of royalties on H265 being too high, most browsers refuse to add support for it: http://marc.merlins.org/perso/linux/post_2024-11-17_Vidrename-Script_-Clean-up-Normalize-Video-Filenames-and-Add-Codec-And-Container-Format-With-Mplayer.html

    21) Ok, sure, but now I need to upgrade my vidcomp script to support VP9 and AV1: http://marc.merlins.org/perso/linux/post_2024-11-17_Vidcomp-Script_-recompress-videos-on-linux-with-mencoder-or-ffmpeg-to-div3_-div4_-div5_-xvid_-mpeg4_-h264_-h265_-VP9_-and-AV1.html

    22) then I find an Email from a chinese engineer who is willing to talk to me about making better LED shoes. That's exciting, let me reply to him first

    23) ok, now I can recompress my videos to VP9, which I benchmarked to somehow be faster to compress and still smaller file size than AV1 (not supposed to be the case, but that's what I'm getting). On the plus side, VP9 works with more browsers than AV1.

    24) what as I doing again? (now days have passed). Oh yes, I was supposed to write a blog on hackaday supercon: http://marc.merlins.org/perso/electronics/post_2024-11-01_Pasadena-Hackaday-Supercon-2024.html

    25) of course the ridiculous amount of time spent to allow these 2 videos in that post, is a bit hard to justify, but it's really solving a problem I've had for over 10 years, and never got to the top of the pile, because, well, you see what happens when I try to put something on top of the pile :)

    26) and I was good, I didn't even play with the micropython rpi micro I received in the mail this week, or the electromage pixelblaze and I/O board, or more LED panels that somehow showed up at my doorstep :)

    27) mmmh, and there are all those webcams I ordered and need to configure, but now it's clear I'm going to have to re-install my camera controller, shinobi, from scratch, and that's yet another rabithole...

    28) in the meantime I have to finish my LED hat, and design my new shirt and pants for Dreamstate in 4 days... Wish me luck :)

    π 2024-11-01 01:01 in Arduino, Electronics
    After having such a great time at the linux.conf.au Open Hardware Miniconfs over the year, and missing them after the last one where I built those badges, I somehow missed a local-enough Hackaday Supercon that had been going on for years. Oh noes!

    It was very cool that I got to wear my LCA SAO badges for the first time:


    This post, because of its 2 video inserts, a new addition to my blogging software, was also an interesting exercise in non linear time and tasks, more on this page: Getting Things Done in an ADHD World

    Day 1, Friday

    Thanks to Anthony for letting me know about it, and I was able to attend. Went there early on friday for the pre-conf to work on the badges:


    the conference badge was this 6 port micropython rPi micro with a couple of SAOs.
    the conference badge was this 6 port micropython rPi micro with a couple of SAOs.

    they nicely provided food all 3 days
    they nicely provided food all 3 days

    essential geek survival food :)
    essential geek survival food :)

    They gave us a quick primer on how the badge worked, although it would have been better on a webpage with links and info for total beginners who had never used micropython and thorny or knew what thorny was (that included me):


    I'm glad I took pictures of these slides, they only made sense many hours later. They should have been online
    I'm glad I took pictures of these slides, they only made sense many hours later. They should have been online

    finding fellow LED geeks :)
    finding fellow LED geeks :)

    learning blinkies for beginners, scan this
    learning blinkies for beginners, scan this

    While I was there, I 9ound out they had a wonderful 4 bit computer some years back. I actually really regret not having been there that year, programming that in hand crafted assembly would have been epic:


    someone hacked a basic I2C on it
    someone hacked a basic I2C on it

    people now hard at work
    people now hard at work

    I used the opportunity to bring previous LCA toys and show them off (and fix a few)
    I used the opportunity to bring previous LCA toys and show them off (and fix a few)


    People came with plenty of SAOs:



    some came more ready than me :)
    some came more ready than me :)

    SAO extenders, cool!
    SAO extenders, cool!

    SOA badge holder bag, sweet!
    SOA badge holder bag, sweet!

    I found Tom Verbeure, the person who had been hacking on RGB Panels with open source FPGAs (colorlight). Cool project for sure. See: https://github.com/q3k/chubby75?tab=readme-ov-file#colorlight-5a-75b and https://github.com/lucysrausch/colorlight-led-cube/tree/master


    Also, finally got to meet Henner Zeller, the rpi-rgb-panels author I've been working online with for years:


    epic watch!
    epic watch!

    Also got to meet Daryll Strauss from precision insight, later acquired by VA Linux some 25+ years ago:



    People still hacking at night:


    I was lit up enough not to get lost :)
    I was lit up enough not to get lost :)

    Day 2-3, Saturday & Sunday

    Saturday and Sunday were the main conference days:


    went to attend a few talks
    went to attend a few talks

    hacking radio sound and B&W video from a chip, super cool!
    hacking radio sound and B&W video from a chip, super cool!

    learned about an online microcontroller emulator, wokwi, very nice
    learned about an online microcontroller emulator, wokwi, very nice


    who thought SAOs were a simple standard? :)
    who thought SAOs were a simple standard? :)


    I got to see a pick and place machine, nice to see them work and glad we don't have to do this by hand:


    this is what the machine was 'printing'
    this is what the machine was 'printing'


    I tried the SMD challenge, that was hard as hell:


    we got old and fat irons, making things harder :)
    we got old and fat irons, making things harder :)


    I couldn't get the last 2 LEDs working, they were so stupidly small
    I couldn't get the last 2 LEDs working, they were so stupidly small

    I had someone help me fix mine :)
    I had someone help me fix mine :)

    and they all worked, thank you to the master solderer!
    and they all worked, thank you to the master solderer!

    added the result on my badge :)
    added the result on my badge :)

    Random fun shots :)


    people hard at work
    people hard at work



    During the weekend, the SAO wall got populated:






    Fun to see this SAO based on this burning man sign

    Original from Burning Man
    Original from Burning Man

    more and more
    more and more

    and more :)
    and more :)

    Saturday evening party had a nice real time AI image generator:





    some were far out :)
    some were far out :)



    The conf ended with a presentation of best SAOs:



    This guy won the contest of biggest SAO, he had a printer working off USB, run by his SAO
    This guy won the contest of biggest SAO, he had a printer working off USB, run by his SAO


    Sunday ended with a party at a bar, thankfully I had my battery soldering iron :)


    This was loads of fun, and I definitely learned some good stuff. Sad I didn't go earlier but glad I went this year. Thanks bunch to all the organizers and attendeers who contributed!

    And I also made 2 pages on SAOs:

  • Pasadena Hackaday Supercon 2024 SAO Badge Page.
  • Pasadena Hackaday Supercon 2024 Yo Dawg Micro SAO and SMD Soldering
  • More pictures: https://photos.app.goo.gl/2hYRaaB5dF5mvv4N8

    See more images for Pasadena Hackaday Supercon 2024
    π 2024-11-01 01:01 in Arduino, Electronics
    SAO stands for Shitty Add Ons, all explained here:
  • https://hackaday.com/2019/03/20/introducing-the-shitty-add-on-v1-69bis-standard
  • https://hackaday.io/project/52950-shitty-add-ons
  • In 2021 I got my first SAO Conference Badge from Linux.conf.au (clickme for more) That LCA board had 4 SAO ports and came with 2 little cute penguins that I hacked a bit:


    one of them was then in charge of running a neopixel necklace
    one of them was then in charge of running a neopixel necklace

    I got a few spare SAOs to attach to my heavily hacked LCA badge :)
    I got a few spare SAOs to attach to my heavily hacked LCA badge :)

    Anyway, back to Pasadena Hackaday Supercon 2024, they gave us a 6 SAO badge also running a micropython chip:

    attendees nicely donated a few extra SAOs to me, which I wrote code for
    attendees nicely donated a few extra SAOs to me, which I wrote code for


    even got an SAO extender :)
    even got an SAO extender :)

    I had to solder it from parts at the after party in the pub
    I had to solder it from parts at the after party in the pub

    Oh, and has homework, I got a micro-SAO (Yo Dawg) with SMD Soldering to do at home (click me) [*SMD*/209*]

    Back to the conf SAO and code I wrote, here is the result:

    Micropython Code:

  • https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/blob/main/software/software/main.py
  • Main repo:

  • https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/tree/main
  • This was loads of fun, thanks to the organizers!

    π 2024-06-29 01:01 in Arduino
    I had a bigger stack of returned P5 RGBPanels that Azerone was nice enough to send me, it came to completment an existing stash of 12 panels I already had to make a 4x3 128x192 P5 array (pictured on the left):

    This is what I started with, 128x192 in P2, P4, and P5 panels
    This is what I started with, 128x192 in P2, P4, and P5 panels


    Now let's look at the back and my old (left) vs new mounting method (right). On the left is my "up to then" McGuyver's method of attaching things: using some metal rails with holes, I was somewhat able to aligh enough holes to put some screws in, which kind of held everything together, but not securely:


    On the right, a new way to put things together thanks to Marc Estes who laser cut connecting pieces so that each panel could be more securely and correctly attached to the one next to it. Also, note each panel being upside down from the previous one to allow for short ribbon cables and less signal loss, clock drift and crosstalk


    Here is the end result of the new panels I put together, the code to reverse panel directions worked:

    but the colors were broken, see below
    but the colors were broken, see below

    So here is my old 3x4 P5 array next to the new 3x5 array I was building, just testing signal would work:


    then rewired everything nicely to be the same orientation
    then rewired everything nicely to be the same orientation

    took a while to add power and all the connector bits that Mark Estes made for me
    took a while to add power and all the connector bits that Mark Estes made for me

    I found those nice power concentrators from amazon
    I found those nice power concentrators from amazon

    Here are 2 videos that explain the build:

    But the colors were wrong. Why? Well, turns out some of the panels were badly wired from the factory and had reversed colors:


    So it was all nice and good, until I turned it on:

    oh great, some of the panels have broken color order
    oh great, some of the panels have broken color order

    yeah, that's because I got those panels for free as returns, and they are different generations, some with broken colors. I used the orange and blue labels to tell them apart.
    yeah, that's because I got those panels for free as returns, and they are different generations, some with broken colors. I used the orange and blue labels to tell them apart.

    Ok, so since I had a couple of damaged panels and I wanted a nice row of matching panels so that the color intensities would simliar enough, I bought 3 more panels. They came with the orange label, so I wired the orange together, and got this:


    Son of a.... The 3 new orange label panels lower left, have fixed colors, so they are not the same as the older orange label panels....

    they looked similar enough but they were not
    they looked similar enough but they were not

    after getting what was going on, I re=wired everything a 3rd time to get bad color panels together
    after getting what was going on, I re=wired everything a 3rd time to get bad color panels together

    I briefly considered fixing this by swapping the color channels in the ribbon cables but then I figured out it would be less work to fix it in software. rpi-rgb-panel allows for swapping colors on a per panel basis, but not on a per panel basis. Thankfully the code was written well enough to allow very easy remapping of colors per pixel and of course per panel. I also fixed a prior patch of mine that had an unfortunate behavior with Zmapper:v that swapped the order around every time you added a row of panels. Here are the 2 patches:

  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1672
  • https://github.com/hzeller/rpi-rgb-led-matrix/pull/1664
  • which fixes https://github.com/hzeller/rpi-rgb-led-matrix/issues/1663
  • color patch

    And after these fixes, finally the panels are oriented the correct way and the colors are fixed:


    After more days than planned, it was finally time to mount it on my wall, and that was not trivial, partially because I didn't put enough time into getting proper mounting hardware. I did have some leftover rails I used for added structural integrity, but found out under the wait and stress, they would bend too:


    the mounting location was also challenging, made measurements and marks
    the mounting location was also challenging, made measurements and marks

    I used electrical wire as the best hanging wire I had around and put 4 layers just to be sure. Also I found out I had to attach it to the frame in the middle to stop the frame from bending under weight
    I used electrical wire as the best hanging wire I had around and put 4 layers just to be sure. Also I found out I had to attach it to the frame in the middle to stop the frame from bending under weight

    getting all the attach points under the wire, was totally not trival, but done!
    getting all the attach points under the wire, was totally not trival, but done!

    The last thing I had was the native display orientation was portrait, so I wanted to switch to landscape. Turns out rPi3 is too slow to handle an array that big, the data exceeded some internal CPU cache and became very slow, and even more so if I tried the driver's 90 dgree rotate function. So, I tried an rPi4 instead, which showed other interesting electronic bits: the panels on the left are newer and can handle faster update speed while the ones on the right are slower refreshes. This is why it looked like this below. I had to add some delay fasctor in the rPi4 output and then everything was well. Fix was the expected --led-slowdown-gpio=4


    See also this page that discusses the cache overflow issues on rPi3, switching to rPi4, and how led-slowdown-gpio can be a bit counter intuitive:

  • https://github.com/hzeller/rpi-rgb-led-matrix/issues/1674#issuecomment-2216512501
  • And here is the end result:

    π 2024-06-27 01:01 in Arduino
    I received more panels in the mail thanks to Azerone, just the right amount to make another array, and make another copy of my LED outfit display in a different size. Nice to compare all 3:




    What it looks like from the back:



    π 2023-08-29 01:01 in Arduino, Bm, Electronics
    It was great to be able to attend my 3rd Illuminaughty LED Meetup, a great way to see other cool LED stuff built by like minded LED maker geeks. Several had really cool LED builds I had never seen and looked very well done, happy I got to see them :)

    Just like last year, Illuminaughty was about as far across the playa as a camp can be, so it was nice when we arrived :)






    Ran into a bunch of people will cool gear:



    Very cool hat:


    Impressed that the newer panels can bend pretty well
    Impressed that the newer panels can bend pretty well


    i21*

    a lot of work went into these patterns
    a lot of work went into these patterns

    Anthony had a lot of cool gear he built, I was very impressed:








    Obligatory group picture:


    Thank you to Chuck for organizing this year again, it was lots of fun.

    π 2023-06-16 01:01 in Arduino, Clubbing, Electronics, Festivals
    This is the untethered update to my v5 outfit. Please see LED Pants and Shirt v5 on ESP32 and Raspberry Pi with P2 RGBPanels and Wifi for how the entire setup works, and for the new LED strips on arma and legs, you can see Party LED Outfit Version 5.5: Flexible P15 LED Strings, LED Fanny Pack, Rez Inspired LED Goggles, LED Laces and LED Shoes

    And if you want even more details and history >>> See this full article on the why and evolution of my LED outfit <<<

    For all these years, my outfit has relied on a fanny pack filled with batteries, and with an unslightly tether from the fanny pack to the panels, bringing 2 feeds with 5V (as backup and to spread out the amps over 2 wires). That system worked for many years and would survive the failure of one of the 2 5V connections, or even the 16V connection meant to feed the rPi from its own power source stepped down to 5V on the panels (so that it doesn't see a voltage dip on the remote 5V rail when the display sare fairly bright). All in all, it worked, but the fanny pack tether and wires were cumbersome, and some security folks didn't like all the wires.

    After switching to a new neopixel controller that is directly USB powered, it made more sense to power the panels locally and put the batteries on the panels:



    For comparison, the old panel on the left only has the rPi and a small 16B to 5V converter and than relies on that tether cable to the white box on the left which has the DC-DC step down and the ESP32:


    finished design with padding, power routing from 3 lipos or 2 USB attery packs
    finished design with padding, power routing from 3 lipos or 2 USB attery packs

    While this was not new for v6, made sure the camera still worked, it turns out to not be super reliable on batteries, but when it works, it's a crowd favorite:


    The new version works like the old one, but with batteries directly attached to the panels, which in turn makes them much heavier, but oh well. Video with Lipos and DC-DC converter:

    However, the more interesting upside is that I could also replace the 16V lips that get stepped down to 5V, with 5V USB Battery packs. the reason I never did that at the time is that the entire system takes way more than the maybe 2.5A you can get from USB packs on a good day. A somewhat cumbersome workaround to this problem is to use 2 USB battery packs with 2 independent outputs each, meaning 4 independent 5V busses able to put out up to 2.5A depending on the battery pack. So, I split my power system in 4:

  • front LED panels (3 panels) (1A or more depending on pattern)
  • rPi (about 1A depnding on CPU load, but must be a nice consistent 5V or the rPi will complain)
  • Neopixel string run by the ESP32 output if desired. This one might brown out but can be put on a separate USB pack to avoid taking other things down with it
  • Rear LED panels (also about 1A).
  • In total it means the whole thing uses about 3A at 5V, or 15W, which means 180Wh for 12h. In theory 2x 99Wh battery packs would work for 10H, but in real life, the first battery pack gets a lot more load since it runs the rPi, so it only really lasts about 7H before I have to replace it. Not ideal, but still nice that I can run from USB instead of lipos if needed:



    Video of the USB version:

    After some unfortunate feedback soon after I built the new version, I added a makeshift back cover with duct tape, mostly to hide the "scary" electronics, while still giving me accesss to them since this is still a prototype that needed occasional work and tweaks:


    Since the original design with lipos, the good news is that lipo chargers have finally become much smaller. They are now small enough that I can simply leave one in my travel backpack forever:


    Now I don't need this "custom made" battery box ;) which worked for its time, but didn't allow bigger batteries being an issue during 12H festivals (2 batteries wasn't enough), and was an issue during airport inspections when they wanted to "see inside the box":


    I however found out over time that some airports really didn't like to see the panels in X-Ray with batteries attached. All airports were fine with the panels on their own, and the batteries on their own, but if I left the batteries in the outfit, which honestly is a lot more convenient to me, some airports really freaked out in totally irrational ways and now complained about "too many wires" "looks like a bomb" and all that good stuff. The 2 airports that delayed me enough that I barely made my flight (bangkok and Ontario, CA), literally said they would have been fine if I had packed the batteries together and still carried everything I was carrying, just not plugged in (of course everything was off, and plugged in is actually safer since you don't have loose power connectors that could somehow short).
    So I'm not interested in missing a plane due to this and honestly nonsensical and irrational reactions (after all, no one said fear was rational or logical), so I eventually made a "battery pack" that I can more easily slide in and out before and after each flight:



    Oh yes, it's still home made looking, could somehow get/make a box for it, but if I do they'll want to open it to see inside, going back to the original box I had earlier, so I'm not sure there is a good way to win this. Also if I make it look too much like one battery instead of 3, they'll complain it's 290Wh (over the limit) instead of 3x 98Wh (under the limit).

    And to show how things evolved, this was the v3 outfit with neopixels and only 24x32 instead of 128x192, but much brighter. I did use v3 a couple of times again at day festivals, as it can be made bright enough to work in full daylight, but after doing this a few times (and that required extra batteries), I decided not to bother anymore, and skip the LED panel during day hours (I still have LEDs on arms and legs that can be made bright enough if need be):


    Separately, I often have to explain to people, that my outfit is actually a scaled down version of the RGBPanels you see on stage. Once you have the display, it can scale up:


    And another question I get is "how long does it last?". 2 batteries of my old 5Ah 4S lipos, was a bit short for an all night 12H festival (EDC), but back then I was also powering the LEDs on my arms and legs, which took an additional non trivial amount of power. For wiring ease, the LEDs are now on a separate battery, which allows the main system to run longer. I also upgraded the batteries from 5Ah to 6.7Ah. As a result, I found out a bit after the fact that actually 2 batteries would have been enough, since I put 3 as per my old setup, I ended up with a full runtime of just under 19H (I stopped the test before the batteries were totally drained since it's not great for them to do so). As I'm writing this, I now realize that with just 2 batteries, I could last 12.5H, which is still more than enough (and it would remove some weight, so I may want to consider that.

    310Wh out of my 3 batteries, more than I thought, and almost 19H
    310Wh out of my 3 batteries, more than I thought, and almost 19H

    because all meters have measurement errors, recharging pushed back in 20.4Ah instead of 21.2Ah which doesn't quite add up, but close enough
    because all meters have measurement errors, recharging pushed back in 20.4Ah instead of 21.2Ah which doesn't quite add up, but close enough

    π 2023-05-17 01:01 in Arduino, Clubbing, Electronics, Festivals
    This is an upgrade of v5, keeping the same panels and controller, see LED Pants and Shirt v5 on ESP32 and Raspberry Pi with P2 RGBPanels and Wifi for how that part works.

    Version 5 was a bit upgrade with my P2 run rPi run RGB Panels for a resolution of 128x192 per side. The oldest part of the outfit at this point were actually the Neopixel strips I've had for about 5 years, and despite being more reliable WS2813B with backup data line, the PCB traces would break and the chips solder points would eventually break too. The amount of time I've spent fixing and replacing LED strips is more than I'm willing to talk about, but there was just no good alternative, until now.
    In the past, flexible LED strands with wires between each pixel did not have enough density, maybe one pixel every 5cm, which was not acceptable for my use. And after many years of waiting, a company finally made P15 flexible strands, one LED every 1.5cm, which looks much better and is even a bit more dense than my previous strips that were P16.6.
    Here there are: https://www.aliexpress.us/item/3256804447608449.html . Update, don't buy these, they are shit and broke within hours. See at the bottom

    While I was at it, I added a small programmable 16x32 panel to my fanny pack, because why not (the existing fanny packs didn't have sufficient storage, so I ended up decking out mine), and here is the end result:




    I have no idea how reliable the strips will be, and unfortunatley they are WS2811 without the backup data path that WS2813 had, but time will tell. I'm bringing it to EDC and we'll see what happens :)
    Update: these broke within hours, they were crap.

    Version 6.5.1: Ray Wu Strips

    Update #1: after the terrible failures of the first strip from the first vendor (the internal wires broke almost instantly), I picked this new one from Ray Wu: https://www.aliexpress.us/item/3256805296356090.html

    It ended up being more solid, but the flexing and occasional pulling on the bare strips that were attached with safety pins (I didn't want to glue or sew because it would then be unwashable), eventually caused the strips to fail, although it was more slowly. It worked for 4 festivals in Europe and required some resoldering, but it was not terrible. Still, it wasn't a long term solution either.

    Version 6.5.2: Full LED Tubing Protection

    So, I tried one more way to do it, this time I put the LED strings inside water tubing of the exact right diameter (fishing them in was a bit tricky), hot glued them on each side, especially the side they are soldered to RC servo connectors which I use for all the electrical wiring.
    The next challenge was how to fasten this, and clothes safety pins didn't do the trick, so I used rolls of velcro cut to the right size, and the glue is so good that I was able to glue the velcro strips directly to the fabric. If somehow it won't hold, I'll superglue it. End result looks like this:



    This is now going to burning man, I hope it will hold, especially with lots of biking :)


    More pages: March 2025 January 2025 November 2024 June 2024 August 2023 June 2023 May 2023 April 2023 March 2022 January 2022 January 2021 December 2020 March 2020 January 2020 May 2019 April 2019 March 2019 January 2019 July 2018 May 2018 April 2018 January 2018 June 2017 April 2017 January 2017 February 2016 January 2015 September 2013 January 2012 December 2011 May 2011 January 2011

    Contact Email