Showing posts with label soldering. Show all posts
Showing posts with label soldering. Show all posts

Wednesday, June 04, 2025

my crystal neopixel lamp

The Concept:

This started from the idea of making a lamp with flashing, coloured LEDs inside. The inspiration here was seeing such a lamp made by Robin at Hackerspace for his grand-daughter. I learnt then about the ESP32 board which enables control of the flashing LEDs, aka Neopixels, from your phone.

Previously, I had made a Sierpinkski sieve a Sierpinski pyramid lamp with transparent PLA filament and lit it up with a couple of Circuit Playgrounds in the base. Up until then that was my favourite make! This background partially determined my direction for this project.

So, I found a crystal lamp on printables, here, which had been partially hollowed out and printed it with transparent filament.

This pic is from Printables: I plan to improve it with changing coloured neopixels that go to the top of the central pillar (see video near the bottom of this article)

Then began a complex process of research and buying of materials. I had to determine what to buy and the voltage and current requirements. Adafruit has a comprehensive uberguide about NeoPixels. Some helpful pointers from the adafruit uberguide were:

  • NeoPixels are usually described as “5 Volt devices” ... (but) ...Lower voltages are always acceptable, with the caveat that the LEDs may be slightly dimmer. There’s a limit below which the LED will fail to light, or will start to show the wrong color.
  • NeoPixels don’t care what end they receive power from. Though data moves in only one direction, electricity can go either way. You can connect power at the head, the tail, in the middle, or ideally distribute it to several points.

I also consulted with Robin at Hackerspace about which strips and ESP32 to purchase.

My plan became something like this:
  • purchase a cuttable RGB+IC 144LEDs/m WS2812B LED Strip. I then cut 3 strips, cutting at the copper dots, each 14 LEDs long and arranged them around a triangular prism so there will be lots of flashing lights from all directions.
  • design and 3D print a hollow triangular prism support for the LED strips after they had been cut
  • design and print a base with a cavity to hold the batteries and the ESP32 board
  • purchase a SuperMini ESP32-S3, 23mmx18mm, keeping it small so as to keep the cavity small
  • power the whole thing with 3xAAA batteries in a cylindrical holder (55mm long x 22mm diameter), amounting to 4.5 volts

In retrospect, this is or was a reasonable plan. Of course there are alternatives, eg. rather than the bulky battery holder run a cable to a 5v power supply. I was muddling through. Doing things for the first time is always hard.

Understanding the circuit and how the LED strip works

Initially I didn’t understand how the Neopixel strips (WS2812) worked. I hadn't grasped the significance of the comment in the adafruit uberguide, that "NeoPixels don’t care what end they receive power from." As it turns out each LED has its own processor. One side is positive, the other side negative and the data flows in one direction marked by an arrow on the strip. My understanding now is that the circuit(s) are made up on the fly as the current flows across through each LED.

Triangular prism designed with SCAD

I wanted to upgrade my 3D design skills so this time I opted to learn SCAD, which has a mathematical approach to design. I found it to be fairly intuitive after looking at a couple of beginner’s tutorials.

SCAD design of triangular prism onto which the LED strips are mounted (I printed this with transparent PLA filament too

Fastening the LED strips, wiring up, soldering and testing

I wanted a transparent hollow triangular prism to fasten the LED strips onto, with small holes at the top and bottom to run wires through to the inside. I designed this with SCAD. It was surprisingly easy and elegant!

I cut three strips, cutting at the copper dots 14 LEDs / strip. I wired up the positives at one one end and the GND and data the other end. The idea here was to avoid clutter at one end.

It took me a while and help from Robin to understand the circuit and data flow

  • the circuit goes through each LED (where is this explained?)
  • the arrows on the strip show the data direction

For stripping the wires I needed the right tool, although the experts can do it by feel. Before soldering I removed one LED from each strip with a heat gun. I did this because the copper dots when cut in half were very small.

I tested the strip using my Sunfounder kit and it was successful!

Design and redesigns of base with SCAD

I had to do a few redesigns along the way after I decided to insert a relatively bulky cylindrical battery holder (55mm long x 22mm diameter) into the base.

SuperMini ESP32-S3

I found helpful information about the SuperMini ESP32-S3 Development Board here.

  • some simple tests to check if the board was working
  • pin layour and which pins were safe to send data through

Then I had to figure out how to flash micropython onto the board. Once again help was there online: Instructions

Coding in micropython

I opted for coding in micropython which I find easier to understand than arduino C++. I bought a Sunfounder ESP32 starters kit, installed Thonny IDE and started working through their online micropython tutorials. They did have a micropython WS2812 tutorial for an 8 LED strip, which gave me a good start for the code.

I thought an effect where the colour grows stronger then fade and then changes to another colour would look good. It took me a while to figure out how to modify the code so it was both elegant and did what I wanted. This involved writing efficient functions and looking up the RGB values for different colours.

The Thonny code tested alright on the LED strips but then I had to figure out how to run it from the ESP32 board. With a Save As... I could download it to the board and then found an article which explained that it had to renamed main.py and then it would run.

There is also the WLED option which provides tremendous variety but you miss out on the joy of coding ;-)

Not the final version, but it does show the neopixels burning brightly!

Trouble shooting / Problem solving: Suitable wire thickness.

You need the right materials. The experts can wing it but mere mortals like me need the right materials.

"For the lack of a nail a kingdom was lost" - Shakespeare
For the lack of 26 AGW wire a crystal neopixel lamp was compromised - Kerr

During my near the end soldering session I suddenly discovered that two out of three LED strips no longer lit up. The problem was that I had used very thin wires and with a little twisting some of them broke. So, I went back to replacing the broken wires with thicker ones (22 AGW) and resoldering. But my problems persisted because now the wires were too thick and it is hard to twist three thick wires on the one side and solder them successfully to one thick wired on the other side. So, what I have planned here is to get some 26 AGW (in between thickness) wires and do the whole thing again!

Also my design lacked an important component given that I'm powering off three AAA batteries. A switch! This will be part of my new model

This experience has taught me to improve my soldering skills (use the third hand, flux and the solder sucker when required) and design skills (the wiring was far from elegant). Such is life. I've learnt a lot.

SUMMING UP: WHAT HAVE I LEARNT
  • Thonny python IDE upgrade and use
  • micropython for loops and functions
  • WS2812 Neopixel strip function (power, data), cutting procedure
  • Supermini ESP32 function and testing
  • OpenSCAD skills (designed and made tri prism and base)
  • Circuit or wiring design
  • Soldering skills (wire to wire, stripping, tinning, third hand, solder sucker, heat shrink)
  • Heat gun, to remove one of the LEDs from each strip
  • Problem solving and receiving help
  • Checking parts carefully before buying (eg. bought momentary switches)
REFERENCE

Tuesday, July 13, 2021

learning to solder at 74 yo

Well, you have to have a good reason, the right frame of mind, to learn something new.

Slowly it dawned on me that maker ed was the way to go for both school and community reform for the 21st C.

Soldering, although not absolutely essential, was a highly desirable skill, that would extend my ability to make new things. I'm still at the stage of making things driven by microcontrollers and soldering is required quite often for that.

So, right frame of mind, tick.

Next, you need good tools. I wasn't too sure what tools exactly but over a period of time of exploring the adafruit site, that became clearer. I have now ordered these tools for myself. In the interim because we setup a new Artbotics course at school and ordered tools for that I have access to those tools right now (all prices in USD)
  • Hakko FX 888D soldering station $129.95
  • Hakko 20-30 AWG wire strippers $14.95
  • Flush diagonal cutters CHP170 $7.25
  • Helping third hand magnifier $6.00
  • solder sucker $5.00
  • Multi coloured heat shrink various sizes $4.95
  • solder wick $3.00
  • Simple pliers $3.00
  • TOTAL USD$174.10
  • ROUGHLY AUD$226 (multiply USD * 1.3 exchange rate)

Good tools, tick

There is still a lot of hands on learning to do. Fortunately, there are excellent resources including YouTube videos out there.

I read the Hakko Soldering Station Instruction Manual and took notes. I read some online tutorials and watched some YouTube videos.

I did the same for wire stripping techniques. Check the leads you have bought for wire thickness in AWG (American Wire Gauge)

I practised with joining 2 bits of copper wire together, using the helping hand.

My first real soldering job was wiring up a GEMMA M0 to a neopixel LED dots strand for the neopixel fairy crown project. This one is relatively easy since the holes on the GEMMA are so big.

My next job was to achieve through hole soldering for the neopixel jewell 10 minute necklace. The holes on the jewell are much smaller and the solder is meant to fill the holes. If you are a beginner, like me, don't be fooled by the racy video which shows the whole thing being made in 10 minutes. It took me 2 days!

By the time I started the neopixel jewell soldering I had become a little complacent and overconfident and so made a complete botch of it. There were 3 leads of hook up wire to solder. One of them I fluked but for the others the solder didn't go into the holes and there were big blobs on the surface. I wish I had taken a pic to show you but probably it was too much of a shame job!

I hadn't learnt the technique. It's a matter of paying ATTENTION, close attention to what is being displayed in the YouTube videos.

Initially, I thought it was a disaster. But luckily I had a thin blade in my flat and realised I could clean up the mess with a bit of scraping.

In attempting to learn the technique, I drew some pictures in my notes. From what I had read and watched I thought I was meant to simultaneously heat up the metal pad around the hole, the lead or wire going into the hole and the solder itself. ie. don't just heat the solder, heat all the parts that need to join together.

I tried this a few times but it didn't work! The solder didn't melt even when I turned up the temperature of the iron to 400 degrees C.

Eventually, I realised, that the tip of the iron didn't generate enough heat to warm everything up. The instructions hadn't said this but when I went back and rewatched the videos I could see it was more like this, heating with a broader section of the iron.

This was the biggest hurdle I had to jump (so far) in learning to solder.

I learnt to slow down, take it step by step and refer back to the experts on YouTube whenever a problem arose.

My final neopixel jewell, wired up to a GEMMA M0, looks like this.

The final product of course doesn't show the trials and tribulations I went through.

At the end my feelings were part punching the air triumphant and part relieved that I had jumped what was for me a high hurdle.

Ultimately, to learn a new technique, to learn something new, you need to be motivated by a goal you want to achieve. For me that goal is to become a 21st C maker. That goal is a motivator to persevere and keep learning when difficult problems arise.

I'm wondering how I can communicate these lessons to my students when I go back to teach.