Introduction: Mini Web Radio (ESP32)

Originally designed as a charity project, the MWR is a simple single-station battery powered internet radio. The design features a combined power-volume dial and 3.5mm headphone socket, utilising a 3D printed case


Firmware, documentation and STL files: https://github.com/AllanGallop/mini-web-radio



Don't want the battery? follow the steps below omitting the battery, battery LED, power circuit and connect the switch side of the potentiometer between 3v and GPIO 33 pins, finally use the "no-battery" branch firmware files found here:

https://github.com/AllanGallop/mini-web-radio/tree/no-battery

Supplies

Parts

  • 1x WeMos Lolin32 Lite (ESP32)
  • 1x MAX98357A
  • 1x 10K Linear Potentiometer with SPST switch
  • 2x 47K 1/4W Resistor
  • 2x 330R 1/4W Resistor
  • 2x 3mm LED
  • 1x18650 Battery and Holder
  • 2x M1.7 5mm pan head screw
  • 1x M2 5mm flat heat screw
  • 1x 3D Printed Case Shell
  • 1x 3D Printed Case Face
  • 1x 3D Printed Volume Knob
  • Various guages of wire
  • Various sizes of heatshrink tubing

Tools

  • Soldering Iron
  • Wire Cutters
  • Hot-Glue Gun

Step 1: Prepare ESP32

  1. Carefully desolder the battery connector and clean the pads
  2. Solder ~4" of wire (Red and Black preferred) onto the battery pads as pictured
  3. Install 2x 2.54mm header into pads labelled 13 & 15

Step 2: Prepare Max98357A Module

  1. Cut one pin of the supplied 2.54mm header so that only 6 pins remain
  2. Locate the header onto the module so that VIN pin remains unpopulated
  3. Solder the header to the board
  4. Solder ~6" of wire (red preferred) to the VIN pad of the module
  5. Attach the 2 pin screw terminal to the module

Step 3: Prepare Battery Holder

  • Solder a 47K resistor to the studs at either end of the battery holder
  • Cover each resistor with a length of heat shrink tubing
  • Carefully bend the resistor legs around the body of the battery holder
  • Solder the ends of the resistors together along with 4" length of wire
  • Carefully heat the tubing to shrink it

Step 4: Connect Audio Module to ESP32

  • Carefully align the Max98357 module so that the Gnd pins align
  • Solder the module in place
  • Flex the flying lead under the module and solder to 3v3 pin
  • Place a small blob of hot glue to retain the flying lead if needed

Step 5: Connect Switch

  1. Cut a short length of tined wire and create a bridge on the potentiometer between one of the switch legs (rear) and one side of the potentiometer as pictured
  2. Attach red battery wire to the leg bridged previously
  3. Attach red ESP32 wire to the opposing switch leg (pictured)
  4. Cut a 2" length of black wire
  5. Locate both black wires from the ESP32 and Battery holder
  6. Slip a short length of heatshrink over the bundle of 3 wires
  7. Solder the bundle to the opposing leg on the potentiometer as pictured
  8. Attach ~4" of wire (yellow preferred) to the wiper leg of the potentiometer
  9. Secure Potentiometer to faceplate

Step 6: LED's

  1. Secure LED's to faceplate with hotglue
  2. Flex cathode legs of the LED's so that they overlap and solder them together
  3. Solder black wire from Step 5 (Switch) to LED cathode
  4. Trim LED cathode legs to ~10mm
  5. Attach a ~4" length of wire to each LED cathode
  6. Solder flush & upright both remaining (330R) resistors into pads 5 & 18 respectfully as pictured
  7. Trim the exposed resistor legs to ~10mm
  8. Attach LED wires created ealier to each resistor
  9. Solder Battery sense wire to pad 33 on the ESP32
  10. Solder Volume sense wire to pad 34 on the ESP32

Step 7: Finishing Touches

  • Cut 2 lengths of wire and attach to headphone socket
  • Install battery holder and ESP32 into the shell
  • Install headphone socket onto the faceplate
  • Connect headphone wires to the Max98357 terminals

Follow instructions on github to upload firmware and configure the Mini Web Radio