You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Torsten Stauder c34f10cd18 Now using arduino-esp32 v1.0.6 4 years ago
..
Gerber Still renaming and deleting stuff... 4 years ago
Infos Added PSRAM-flag to Lolin D32 pro 5 years ago
Pictures Still renaming and deleting stuff... 4 years ago
_Archiv/rev1 Uploaded Lolin32 rev2-PCB 5 years ago
README.md Bringing dynamic button-layout finally in place 4 years ago

README.md

ESPuino-PCB based on Wemos' Lolin32

Introduction

After I've been asked many times to provide a PCB, I finally did so :-) It makes use of Wemos' Lolin32 which is the predecessor of Lolin D32. D32's advantage over Lolin32 is especially, that a voltage-divider for measuring battery's voltage is already integrated (fixed-wired to GPIO 35). However, as I wasn't aware of that when buying Lolin32 and because of now, that multiple Lolin32 are here on my desk, my reasonable intention was to use them. So things would have been a bit easier with D32 but in the end it works the same way with Lolin32. As per rev2 of the PCB, I added a 10 uF-capacitor to smoothen the battery-measurement. Ii's optional but be advised values measured are a bit more volatile without capacitor-stabilization.

Features

  • Fits Wemos Lolin32 (not Lolin D32, Lolin D32 pro or Lolin 32 lite!)
  • Outer diameter: 56 x 93mm
  • JST-PH 2.0-connectors for buttons, rotary encoder, Neopixel, RFID, reset and battery (not 2.54mm pitch!)
  • 2.54mm-connectors for MAX98357a and µSD-card-reader. In contrast to my pictures: better solder them directly onto the PCB without having a female-connector (as socket) in between. In turned out that especially plugging MAX98357a into a female connector can lead to connectivity-issues!
  • Mosfet-circuit that switches off MAX98357a, Neopixel, headphone-pcb, RFID-reader and µSD-card-reader automatically when deepsleep is active.
  • All peripherals are solely driven at 3.3V! Keep this especially in mind when choosing µSD-reader. If in doubts use one without voltage-regulator (link below).
  • If headphone-pcb is used, MAX98357a is automatically muted when there's a headphone plugged in and vice versa.
  • If HEADPHONE_ADJUST_ENABLE is enabled and a headphone is plugged in, an alternative maximum volume is activated. I added this feature because headphone-pcb makes use of an amp that (probably) "allows" children to damage ears. This maximum volume can be set and re-adjusted via webgui.
  • rev2: Reset-pinheader added. Can be used to connect e.g. a micro switch to it, so you can reset ESPuino even in battery-mode from the outside of the enclosure. Micro switch can be placed somewhat hidden at the enclosure.

Prerequisites

  • If no headphone-pcb is connected, make sure HEADPHONE_ADJUST_ENABLE is disabled.
  • I used 130/130 kOhms-resistors as voltage-divider for MEASURE_BATTERY_VOLTAGE. However, make sure to use a multimeter to determine their exact values in order to achieve a better battery-measurement (was 129 kOhms in my case). They can be configured in settings-lolin32.h as rdiv1 and rdiv2. Initially, I used 390/130k because I thought it's a good idea to have a greater signal to measure. But as it turned out analogRead() with a greater voltage than 3 V is a bad idea because of the flattened curve. So better use a voltage-divider with 50%/50% potential drop.
  • In my tests, measured values were around 0.1 V too low. If you encounter such a difference you can adjust the offsetVoltage accordingly. But make sure to measure in battery-mode (disconnect USB!).
  • referenceVoltage is the voltage between 3.3 V and GND on the develboard in battery-mode
  • Make sure to edit settings.h (HAL=1) and settings-lolin32.h according your needs (see table below).
  • Disable SD_MMC_1BIT_MODE and SINGLE_SPI_ENABLE as these are not supported by this PCB.
  • Enable RFID_READER_TYPE_MFRC522_SPI as other RFID-reader-types are not supported by this PCB.
  • Enable USEROTARY_ENABLE.
  • Enable buttons for previous, next, pause/play.

PCB-Wiring (2 SPI-instances: RC522 + SD + 3 buttons + rotary encoder)

Uses two SPI-instances. The first one for the RFID-reader and the second for SD-card-reader. Please refer Schematics for reference.

ESP32 (GPIO) Hardware Pin Comment
MFET 3.3V SD-reader 3.3V
GND SD-reader GND
15 SD-reader CS
13 SD-reader MOSI
16 SD-reader MISO
14 SD-reader SCK
MFET 3.3V RFID-reader 3.3V
GND RFID-reader GND
21 RFID-reader CS/SDA
23 RFID-reader MOSI
19 RFID-reader MISO
18 RFID-reader SCK
MFET 3.3V MAX98357 VIN
GND MAX98357 GND
25 MAX98357 DIN
27 MAX98357 BCLK
26 MAX98357 LRC
--- MAX98357 SD Info: if pulled down to GND amp will turn off
--- MAX98357 GAIN Pullup with 100k to 3.3V to reduce gain
34 Rotary encoder CLK Change CLK with DT if you want to change the direction of RE
35 Rotary encoder DT Change CLK with DT if you want to change the direction of RE
32 Rotary encoder BUTTON
3.3 V Rotary encoder +
GND Rotary encoder GND
4 Button (next)
GND Button (next)
2 Button (previous)
GND Button (previous)
5 Button (pause/play)
GND Button (pause/play)
MFET 3.3V Neopixel V
GND Neopixel G
12 Neopixel DI
17 N-channel Mosfet Gate
33 Voltage-divider / BAT Optional: voltage-divider to monitor battery-voltage
22 Headphone jack Optional: if pulled to ground, headphone-volume is set

Things to mention

  • RFID: In order to avoid buying a 6pin-JST-PH-connector I used 2x3pin instead. This is because I already had ten of them (see link below).
  • In contrast to Lolin D32, Lolin32 doesn't feature an integrated voltage-divider. That's why on the lower left there's a JST-PH2.0-connector to connect the LiPo-battery. Make sure to connect (+) to the left und GND to the right. From there you need to solder two short wires (5cm or so) onto the pcb with a JST-PH2.0-connector attached on the other side. This one needs to be plugged into Lolin32 (see pictures-folder). Please note: Lolin's JST-PH2.0-connector needs (+) left side and GND right side. Don't be confused if black/red-colouring of the JST-wires used seems "weird" because is reversed (black => (+); red => GND).
  • Better don't solder Lolin32 directly to the PCB. I recommend to make use of female connectors (as socket) instead (link below).
  • When ordering a LiPo-battery, make sure to use one with deep discharge protection! This is really really really important!!!
  • Doesn't (currently) support SD-MMC and RFID-reader PN5180. Another OCB will be released that provides these features. Stay tuned!

Hardware-setup

The heart of my project is an ESP32 on a Wemos Lolin32 development-board. Make sure to install the drivers for the USB/Serial-chip (CP2102 e.g.).

Parts

  • 1x IRL3103 (N-channel MOSFET)
  • 1x NDP6020P (P-channel MOSFET)
  • 1x 1k resistor
  • 1x 10k resistor
  • 2x 100k resistor
  • 2x 130k resistor (can be replaced by 100k + 100k)
  • 5x JST-PH2.0-connector (2 Pins)
  • 3x JST-PH2.0-connector (3 Pins)
  • 1x JST-PH2.0-connector (5 Pins)
  • Female connector as socket for Lolin32
  • (optional for headphone-PCB) 1x IDC-connecor female (6pin)
  • (optional for headphone-PCB) 1x IDC-connecor male (6pin)
  • rev2: (optional) 1x 10 uF capacitor (2.0mm-pitch)

Where to order?

I ordered my PCBs at jlcpcb. You have to order at least 5 pcs, which is only at 2$ + shipping. It took two weeks to arrive. If you want to have a look at the PCBs first (without having KiCad installed), visit Gerberlook and upload gerber.zip from the Gerberfiles-folder.

Do I need to install KiCad?

Unless you don't want to change anything: no! All you need to provide are the gerberfiles (gerber.zip) to your manufactur (e.g. jlcpcb). However, all Kicad-files used are provided as well.