Which ESP32 with loud enough audio and sufficient GPIO?

Hi everybody,

I am looking for an ESP32, ideally with an audio speaker shield, that I can use for my project.

Just now, I flashed ESPHome onto an m5stack atom echo trying to use its speaker, but that volume is way too low.

This is what I’d like to achieve with a single ESP32:

  • Wiegand (RFID reader and touchpad for keycodes) ESPHome link
  • Media Player (mostly for TTS and to play a chime indicating the doorbell has been triggered) ESPHome link
  • multiple GPIO binary sensors ESPHome link
    • at least 2x momentary button
    • PIR sensor

  • unlikely neopixel light (though I might use a separate WLED device for this)

The Wiegand keypad will need 2 GPIO; the media player will need 1 GPIO, I guess (except for this m5 echo I haven’t had any experience with i²s media player on ESPhome); I’ll need at least 3 GPIO for the GPIO binary sensors; then there’s 2 GPIO for ultrasonic distance, and 2 GPIO for the bmp280 (which I’d run via i²C bus).

That’s a total of 10 GPIO without the neopixel light. But yeah, I’ll likely use a separate WLED device for that, anyway. So 10 GPIO.

Is there a “plug’n’play” solution for an ESP32 media player / speaker? Since the m5stack atom echo’s volume is wayyyy too low, I cannot utilize it for this project (otherwise, I might be able to if I were to add an MCP230xx I/O Expander. But yeah, not an option due to the low volume.

I am planning to install a waterproof electronic case in front of the door. Then install the Wiegand on the cases door / front; I’ll cut out multiple holes for the momentary buttons and sensors; The ESP32 speaker will be mounted to the cases door as well and there will be tiny drill holes to allow the audio to travel; finally, I’ll cut a square out of the door, replace it with diffused acrylic glass, and mount a round neopixel to it.

The door lock will not physically be attached to this; it is a Nuki lock, so if the correct code is entered / tag is scanned by the Wiegand, Home Assistant will unlock the Nuki.

If somebody rings the doorbell (one of the momentary buttons), the led will light up, the media player will play a chime, and -if we’re expecting delivery- announce via TTS that we have given permission to deliver parcels at a chosen drop point.

Our doorbell is silent (Light and mobile notifications only) because our dogs are easily frightened and don’t like the sound. When people ring the doorbell and don’t hear a sound, they assume the doorbell didn’t work and bang on the door, which is even tougher on the dogs.

So a chime played from right where the doorbell button is and some WLED light animation ought to be enough for people not to bang on the door; plus, if delivery is expected for the day, the TTS notification should work should all else fail.

There will be two momentary buttons, one labeled and one with amazon/dhl/dpd/hermes/ups etc. logo next to it, so this TTS will not play if regular visitors ring the doorbell.

I have a Wiegand reader and (single) doorbell installed like this already, but I’m planning to move that to the garage (and provide it with a Nuki doorlock as well), and place a box with the setup described in this post in its place.

While temperature and distance aren’t important, I figured, why not just put them in there?! It’d be nice to have the outdoor temperature readily available, and perhaps the distance sensor might be a decent indicator on how long people wait in front of the door until they leave :smiley: It will be mounted in a 90° angle from the entrance, so it should be able to register people no matter if they stand right in front of the door or not.

But yeah… my main concern is the ESP32 / speaker. I have no experience wiring it up, and wasn’t able to find information on what speaker might be compatible, so I was hoping there’d be a ready to use hardware solution that only needs some ESPHome magic in order to work.

Thanks in advance for your help :slight_smile: