Tracking web radio idea - soldering the first PCB and preparing for slip casting

Catch-up

  • I had an idea and rather than waiting a year after I finished (or abandoned) the project I decided to keep track of the project from inception of the idea to completion/abandonment - the first post covering the initial idea is here
  • After a few months of elapsed time, I wrote another blog post with updates on the progress including PCB design, ceramic holder design, etc - that second post is here
  • At the end of the second post I had sent out the first PCB out for manufacture and had ordered a bunch of new components to actually build the final circuit (at least the first revision - I had assumed I’d need another revision of the design at least)

tl;dr;

I got the electronic components in the mail, the PCBs, and soldered up the first board.

solder paste stencil dropping down on the web radio PCB

I ran into some issues with the very fine pitch DAC IC, but after some drag soldering was able to get everything working (with a few small exceptions).

soldered board

Everything is basically working, a small miracle really, and I’m moving forward with the last printed design for the ceramic PCB holder.

Read on for more details / rambling.

Parts in the mail

It took about 13 days from the day I ordered the PCB in China until the day I received it here in Michigan. I believe there may have been a holiday in there delaying shipping time a bit. I am sure I’m sticking my head in the sand re: JLCPCB as a company, I’m guessing there is some human or environmental cost for the affordable price and relatively fast shipping. That said, I feel really lucky to be able to get such a high precision thing made custom, so quickly. It’s really one of my favorite things I can do as a person who makes things.

bagged web radio pcbs from the mail

Along with the PCBs I also got a bunch of components in the mail. I’m always a bit conflicted when I order parts because finding parts that I might already own can be really annoying (or occasionally impossible), and often times the hardest to find parts (passive components like resistors and capacitors) are two or three cents each. So it’s always a question ā€œdo I just buy 50 more 4k7 resistors for a buck or two, or do I look through the many, many plastic bags I’ve got and try to find the parts I already have?ā€

Normally I try NOT to order parts I have, and force myself to keep somewhat organized and maintain a of components I have in this spreadsheet:

parts list

This GENERALLY works pretty well, but although I keep track of which parts I’ve ordered, I have not gotten into a habit (at all) of writing down which components I’ve used. Anyway, not very interesting to read about I know, but keeping parts somewhat organized is one of the biggest challenges for me when it comes to actually populating / soldering a PCB.

Anyway, here are all of the parts used on this project so far in one photo:

Electronic components spread out on desk used for web radio

Soldering the PCB

solder paste stencil dropping down on the web radio PCB

You’ve already seen this gif above, but here it is again with a bit more context in case you aren’t familiar with the process of applying solder paste with a stencil. This is a stencil, which is used to apply solder paste 😃. As you can hopefully see in the gif, the little holes in the stencil line up with the pads on the PCB. After lining up the template you squeeze a bunch of solder on the top of the stencil, then use something (in my case an old credit card) to pull the solder paste across the template, then when you remove the template, bam, solder is left behind in all of the right places.

Next it’s a matter of using a very fine pair of tweezers to carefully put all of the right pieces on the board. This is fairly tedious but I don’t mind it, although it would be easier to do a few boards at a time. Spoiler alert I’ve done two boards now, but one at a time, because I wasn’t sure if the board would work. So that means finding the right part bag (probably 30 or so different individual parts), opening the bag, carefully getting out the tiny components, twice.

This is the board with all of the components populated (besides the USB-C port, which is the only part that needs to be hand soldered so isn’t added until the very end):

Here is a closeup from this same photo, you can see the unmelted solder paste:

close up of components on PCB on solder paste

After this the board goes on hot plate that heats up to ~220C-ish following a heating profile (sort of - if I’m honest this big hot plate takes so long to come up to temperature it’s not the heating profile that you’re ideally supposed to follow).

Testing, and debugging

After soldering, the board looked like this:

freshly soldered pcb

There were a few cold solder joints that I cleaned up with a soldering iron and flux, but after that the board looked OK. I plugged the USB-C cable into my computer and was thrilled to find that all of the voltage test pads I had (1.8V, 3.3V, and 5V) showed good power, and I was also thrilled when my laptop prompted me to connect to the device the first time I plugged it in. This mean that most of the ā€œknownā€ / ā€œeasyā€ things were working, which to be honest is pretty great for the first attempt.

Then I flashed the firmware I had written to actually use the radio, plugged in a speaker to the speaker port, and… nothing.

This is a bit scary or maybe not so much scary as intimidating and anxiety inducing because at this point the issue seemed to be that the audio chip wasn’t working. I did notice SOMETHING was working because when I pressed the volume up / down buttons in the combination required to switch between different outputs, the speaker would ā€œpopā€ when the speaker output was selected.

I started debugging at this point and honestly AI tools were really helpful here - I figured perhaps the issue was with the radio streaming feature (very possible as it was completely unknown territory to me), but I was able to create a simple tone generator to start narrowing down the issue. This actually felt really good, even when the tone generator failed, because when I first realized the audio wasn’t working I felt a bit helpless, but once I started narrowing down the potential issues I felt a bit better. At this level dealing with the hardware, there are only so many things that can go wrong and I had control over all of them.

The issue

After I was pretty sure the tone generator was working, before going back to the schematics which meant figuring out what I’d done wrong with my circuit design, I took another look at all of the solder joints around the audio chip. At least I did my very best. It’s pretty difficult in words or even photos to really get across how small the solder joints / the tiny pin pitch on this chip, but even with a magnifying glass it is tough to see exactly what is going on. BUT I thought I saw a bridged solder joint (basically two neighbor pins were soldered together, which they shouldn’t be). You can see it here a bit with the arrow pointing to it:

solder bridge

I added a bunch more flux and quickly ran my iron over this to try to clean it up, and bam - the audio worked.

Current electronics + software state

Not only did the audio work, but everything worked. The audio output worked, the status LEDs worked, the built in speaker worked.

I did make a few updates to the firmware:

  • Added over the air (OTA) firmware update support - this is something supported pretty well by ESP-IDF already, but now I have a ā€œfactory resetā€ you can do, and on startup the device will check a remote URL for firmware updates and install them if they are available
  • Tweaked via trial and error some audio settings - one thing I noticed, and I think this is something I’m going to have to continue to experiment with (AI was helpful here again) is different options for audio streaming / playback - initially the audio quality from the stream was bad, it was mono, and overall pretty unpleasant to listen to. It’s now significantly better, but still degraded from listening on my Mac I believe. Room for improvement here, but i think I need to really focus on this. This was part of the reason I added the OTA support because I know I’ll want to improve this.

One hardware bug that I’m not super pleased with is I didn’t do a good job debouncing the buttons in hardware. Basically when you press a button currently, sometimes it registers two button presses. I have capacitors next to the buttons that are, in theory, supposed to prevent this by soaking up some of the noise when you press a button, but perhaps it’s not good enough. It’s POSSIBLE this is a software bug, I have to look a bit more into it.

Overall I’m extremely pleased that I was able to get a fully working, nearly perfect hardware (based on my requirements - obviously PLENTY of room for improvement in general!) on the first shot. Honestly this is about 90% luck, 10% the fact that I’ve gone through this process a few times now.

Ceramic base

There isn’t a ton to report here, but I decided to use the design I showed in the last update. It’s bigger than I’d ideally want, but I think it’s big enough to not be impossible to make, and not sooo big that it’ looks incredibly dumb. I might iterate on this and come up with a completely different design at some point, but for now I’m happy enough with it.

With this in mind, I 3D printed two molds to pour plaster into. In the below photos you can see these after I filled the layer lines (pretty quickly) with Bondo paste + acetone mixed together, then spray painted with filler primer:

3D printed plaster molds for web radio holder

After this photo I added a second coat of primer, then sanded / buffed the important surfaces and ended up with something that I realize looks very bad and unfinished, but has a decent enough surface finish (this is just the mold to create the mold that will be plaster, which I’ll then use to pour the clay slip):

buffed mold mold

I use Autodesk Fusion and it makes it pretty easy to calculate the volume in enclosed areas, so I was able to see the exact volume of my mold. I had to adjust the actual volume calculation up with a cube of the increased size as the molds need to be sized up 112.5% and 115% for the different clay slips I’ll be using to account for shrinkage (this shows the original volume before these adjustment):

volume

After figuring out how much plaster I’d need to mix up, then adding a decent margin of error because I didn’t feel like mixing up plaster twice tonight (using USG No. 1 Pottery Plaster, FWIW), I measured out my water, divided by .7 to get the weight I needed of plaster:

plaster setup

…and finally poured the plaster. This looks like a huge mess… and it sort of is, but the big spill was actually intentional as I had quite a bit of plaster left over and it’s easier to clean it off of a plaster sheet then have a very thick puck in the bottom of the bucket. OK I’ll admit that this was still a fairly big mess but the mold itself I feel will be of decent quality and work well.

mess of plaster

I have started drying out a bunch of speckled stoneware clay I use because I need to make some new slip. The clay slakes down / breaks down / mixes easier if it’s dry first, even though I’m going to add a bunch more water. Actually to be totally honest I’m not sure it’s worth going through the process of fully drying out the clay before making slip, but it is a bit easier I think to get little chunks out when you let it dry out and break it up a bit before adding water.

clay drying

Next steps

So that’s about it. That’s where things stand as of tonight. The mold needs to be taken out of the 3D printed mold-mold, then I have to let it dry for I’d GUESS a week. Meanwhile I’ll make sure my slips are all ready to go / mixed well / proper specific gravity / viscosity / etc. Then it’s actually going through the slip casting process, trimming, cutting all of the features in the leather hard clay for fasteners, etc. Then two firings (bisque and glaze), final assembly, and bam, done!

I am guessing, realistically, because I’ll be traveling for a while this summer (~2 months), I may not actually be able to finish this project until September. We’ll see!

Thanks for reading!