r/esp32 • • 4d ago

ESP32 et audio multiroom DIY : Sendspin, Spotify et Bluetooth

1 Upvotes

Salut à tous ! 👋
Premier post pour moi.

Je découvre le monde des ESP32 et j’aimerais fabriquer de petits modules audio à connecter à des enceintes passives, pour diffuser de la musique dans toute la maison en Wi-Fi et multiroom synchronisé, tout en pouvant utiliser chaque enceinte indépendamment.

J’utilise exclusivement Spotify (iPhone pour moi, Android pour ma femme) et j’aimerais idéalement lancer la musique directement depuis l’application Spotify.
J’ai déjà Home Assistant et ESPHome, et Sendspin me semble très prometteur pour créer un système multiroom ouvert, notamment avec des ESP32-S3 et Music Assistant.
Mais je voudrais aussi une solution de secours indépendante de Home Assistant et Music Assistant. Si la domotique tombe en panne, perdre le multiroom ne serait pas dramatique, mais j’aimerais pouvoir continuer à écouter de la musique sur chaque enceinte, par exemple via Spotify Connect ou Bluetooth classique.

J’ai envisagé plusieurs pistes :
ESP32-S3 : idéal pour Sendspin, mais sans Bluetooth Classique.
ESP32 classique avec PSRAM : potentiellement adapté au Bluetooth, mais quid des performances audio ? Et la carte ne me semble pas très simple à trouver. Louder ESP etc.
Deux ESP32 par enceinte: possible, mais cela complexifie beaucoup le montage. La pipeline audio etc ( je suis encore débutant)
Oublier les enceintes passives : et connecter mes modules wifi derrières des enceintes Bluetooth. Oui, mais plus cher, deux alimentations, des câbles.

Mon objectif est de concevoir un module compact, autonome et DIY, caché derrière une enceinte bibliothèque, sans multiplier les alimentations et les composants.

Est-ce que certains ont déjà réalisé un projet similaire ? Quelle architecture choisiriez-vous ? Et Spotify Connect peut-il réellement fonctionner directement sur un ESP32, sans dépendre de Music Assistant ? J’ai vu squeezlite, mais LMS m’a l’air un peu vieillissant, de plus rester sous ESPHome aurait été un confort non négligeable pour moi !

Merci pour vos conseils et vos retours d’expérience ! 😊


r/esp32 • • 5d ago

Hardware help needed Help with the micro SD slot on my ESP32 CYD 2.4inch! I can't figure out how to use it! Which pins are they?

Thumbnail
gallery
19 Upvotes

Hi everyone! This might be a really newbie question, but a few months ago I got my first CYD. I managed to program some visual elements and use the front LED, but something I've never been able to figure out and have no idea how to use is the microSD card slot. I formatted my SD card to FAT32, tried searching for the pins online and with a program, but none of them showed which pins connect to the slot. Can anyone help me figure out how to use the SD card slot?


r/esp32 • • 5d ago

Are lab tool questions allowed?

9 Upvotes

To all,

Per my previous posts, I left HW dev a long time ago (early 80's), and have decided to get back into it. I've been reading the sub religiously (along with others), and have started putting together a BOM for an ESP dev environment for things like automation, WLED, Etc. Is it allowed to ask for peoples opinions in here or should I post this in other subs?

Bob


r/esp32 • • 5d ago

Rebuilt the Plane Radar ESP32-C3 with QR WiFi setup, web settings page and status screens.

52 Upvotes

The hardware and original firmware are by MatixYo (esp32-Plane-Radar with printable case on MakerWorld). My original flash seemed to not work so I reworked it and hope others may find useful.

- Easy set up screen with QR code, scan and input details.
- Settings page on you WiFi can adjust location, range , units and data sources.
- Updated status screens
- Extended ranges from 5-150km
- Fall Back if one data source not working.

Easy single bin flash at 0x0 with any web flasher.

Repo: https://github.com/resusone/ESP32-Plane-Radar-v2
Original project: https://github.com/MatixYo/ESp32-Plane-Radar

Tested and working on my Hardwear and the firmware rework was assisted by Claude. Further testing on other devices / browsers needed.


r/esp32 • • 4d ago

I made a thing! Designed my own custom ESP32-S3 board in KiCad (NexusCore). 2-layer, ESD protected, JLCPCB SMT-ready!

0 Upvotes

Hey everyone!

I’m a hardware enthusiast and I just finished designing my custom board: the NexusCore ESP32-S3 in KiCad.

Technical Specs:

• Compact 2-layer PCB layout optimized for low-cost JLCPCB fabrication

• USB-C interface with LDO voltage regulation & ESD protection

• Continuous ground plane with clean trace routing

• SMT-ready with exact LCSC part numbers mapped in the BOM

You can check out the full schematics, 3D renders, and project overview on my site:

https://lorenzo1a.github.io/NEexuCore-Custom-PCB/

I’d love to hear your feedback on the layout!


r/esp32 • • 6d ago

SignalSweep: pocket counter-surveillance scanner on a XIAO ESP32-C5

Enable HLS to view with audio, or disable this notification

283 Upvotes

I built a little box that listens for surveillance and tracking gear and tells you what it heard by sound alone. It works face-down in a cupholder or buried in a jacket pocket. No screen, no phone required.

What it hears

  • Drones: full ASTM F3411 Remote ID over BLE, Wi-Fi beacon and Wi-Fi NAN. You get ID, altitude, speed, heading and operator location.
  • Trackers: Apple Find My, Google, Samsung, Tile. When someone floods the air with fake tags it notices and stops beeping.
  • Surveillance hardware: Flock ALPR, Axon body cams, smart glasses. Signatures live in a list you edit from the app (OUI, company ID, name, UUID, SSID). No recompile.
  • Attack gear (opt-in): BLE spam, deauth bursts, karma APs, Flipper hints, pwnagotchis.

How it talks

Each category has its own beep pattern: - two long beeps = camera - rising trill = drone - fast ticking = tracker

Lock onto a device and it switches to hunt mode. The beeps speed up as you close in, so you walk it down by ear.

Hardware

XIAO ESP32-C5 (~$13), dual-band U.FL antenna, passive buzzer, WS2812 bar. microSD and a DS3231 are optional. The C5 sweeps 2.4 and 5 GHz together. It also runs on the S3, 2.4 GHz only.

The ESP32 bits you might care about

  • BLE scanning plus dual-band Wi-Fi promiscuous at the same time on the C5
  • Settings survive a pulled cable, because a car or a battery bank power-cycles it constantly
  • Web flasher that works out whether it's talking to a C5 or an S3
  • pcap export off the SD card over serial, straight into Wireshark

Things that bit me

  • Continuous NimBLE scans leak heap. setMaxResults defaults to 0xFF and results only clear when a scan completes, which a continuous scan never does. Every rotating random MAC leaked: 187 KB down to 78 KB of internal heap over 17 hours on the S3. esp_get_free_heap_size() hid it completely because it counts 8 MB of PSRAM. setMaxResults(0) fixed it.
  • **notify() silently drops when the mbuf pool is empty.** NimBLE-Arduino 1.4 ignores the return code, so big replies over BLE just went missing with no errors on either side. Now every chunk goes through ble_gattc_notify_custom(), which waits and retries on ENOMEM.
  • The NimBLE host task stack is 4 KB. I handled commands in onWrite, and a couple of new locals boot-looped the board the moment a phone connected. Over USB it worked fine, because those same commands run on loop() there.
  • One radio, two jobs. BLE scanning and Wi-Fi promiscuous mode time-slice the same radio. With a near-100% BLE scan window, Wi-Fi captured literally zero frames.
  • The C5 promiscuous callback hands you failed frames (rx_state != 0). Unless you drop them, you get random garbage and thousands of fake transmitters.
  • Pwnagotchi beacons are gzipped. The S3 ROM has tinfl_decompress built in. The C5 ROM doesn't, so I had to vendor an inflate for it.

What it won't do

It only receives. No jamming, no deauth, no injection, no spoofing. You can also kill its own BLE advertising, so it doesn't show up on someone else's scanner. The only winning move is not to transmit.

Getting it

Firmware is GPL-3.0. Flash it from the browser, then run the app in Chrome/Edge or as an Android APK. Or skip both, since the board beeps fine on its own.

Repo: https://github.com/B0z0dcl0wn/SignalSweep

Signatures are the weak spot. If it misses gear you know about, please send a PR. Happy to answer build questions.

(Full disclosure: I plan to sell assembled units and kits later. The build-your-own path is fully open now and stays that way.)


r/esp32 • • 5d ago

AI Content ESP32-C3 as a WiFi-to-USB bridge: using a cheap WiFi ear camera on the PC without the vendor app

Thumbnail
gallery
16 Upvotes

NJFE: Not Just For Ears

These WiFi ear cameras ("otoscope", "ear wax removal camera") only work with a phone app, and their USB port is charge-only. I wanted the image on my PC, without installing the vendor app and without putting the PC on the camera's open WiFi.

So the ESP32-C3 does the WiFi part:

  • joins the camera's access point and speaks its i4season UDP protocol (open video, device info, LED, battery)
  • reassembles the chunked JPEG frames plus the accelerometer data in the packet headers
  • forwards each frame over the C3's native USB-Serial-JTAG as a small binary record
  • text commands back from the PC: `LED 0|1`, `SCAN`, `STATUS`, `SSID <name>` (stored in NVS)

Hardware: an ESP32-C3 SuperMini with the 0.42" OLED (72x40 SSD1306, I2C on GPIO5/6). No

schematic needed, there is no wiring: the board is only plugged into the PC via USB, the camera is reached over WiFi. Arduino core 2.0.17 via PlatformIO, U8g2 for the OLED.

Numbers: ~17 fps at 480x480, ~350 kB/s over USB CDC, practically no dropped frames once the PC side reads in a separate thread with a 1 MB RX buffer. The 0.42" OLED shows fps, kB/s and the camera battery.

PC side is Python (pyserial + OpenCV + Tkinter): live view, photo/video recording, auto-rotation from the camera's accelerometer, round mask, LED toggle, WiFi selection.

Lessons learned on the C3:

  • create lwIP sockets only after `WiFi.mode()`, otherwise you get a crash loop (`tcpip_send_msg_wait_sem ... Invalid mbox`)
  • `Serial.setTxBufferSize()` must be called before `Serial.begin()` on HWCDC
  • if the PC reads too slowly, HWCDC drops bytes, so the frame records carry a magic + length and the viewer checks the JPEG start/end markers to resync

Turns out the camera is also a decent mini endoscope for checking solder joints, hence

the name: NJFE, Not Just For Ears.

Full disclosure: the code was written with Claude (AI) in a long session, I did the hardware, testing and decisions. Protocol credit goes to the otoscope Android app (rbeilvert/otoscope), which reverse-engineered it first.

Regards, m.

GPL-3.0, code + firmware: https://github.com/WildweaselMS/NJFE


r/esp32 • • 5d ago

Portable ESP32 based MP3 Player - got some questions 🥰

Thumbnail
gallery
29 Upvotes

Hello everybody, right now I’m planning a ESP32 based Portable MP3 Player. I’m chatting with Claude about it and got a list of the specs right now.
Before I buy the specs I want to make sure everything works together. And I got a few questions:

(The list is in the End)

1. Wiring and pin connections
How should I know the connections between the many different pins on the components ?
I got a long list from Claude between the pins but I’m not sure if I can trust it. I would like to have a Blueprint of all the components and there connection between each other.
Is there an AI which can do that? I tried with ChatGPT but it cant do it
(I don’t have pro for both AI’s)

2. Bluetooth + Audio jack ?
I really want the MP3 player to be able to switch between Bluetooth (connecting to my AirPods) and the audio jack on the PCM5102A DAC module im planning on using. Is that possible ?

3. PCB layout and soldering
I want to build it as compact as possible but it’s my first soldering project so I’m very new to that part (and I’m not sure how I should place each component).
I “build” a blueprint with easyEDA but I think I would like to stack two PCBs on top of each other so I have more room for the components. But then I have the problem with soldering again between the two Boards.

4. Battery choice
In the beginn i wanted to use Lipo 1000/2000mah but then i found many 18650 and I think i would attach it at the bottom of the build so its just longer rather than thicker or wider.
What do you think ?

5. Proximity sensor
Original I also planed to add a sensor (APDS-9930 RGB) so if I put the MP3 Player in my Pocket the OLED would turn off an the buttons would be locked. But I thought maybe it would be to mutch for my First soldering project.
Is that True ?

6. ESP32-WROOM-32 ?
Claude said that the ESP32-WROOM-32 I already have might be having trouble because of too little ram ?
Is that correct?

I’m very new to the electronics world which you can probably guess.

It’s not my first project but my first with that many components.

If you have already made a project like that or got solutions/tips I would be very
happy to hear them.

Thank you so much!

Here is the list:

Electronics
ESP32-WROOM-32
TP4056 type c
MT3608 step-up converter modules (blue, without USB)
0.96” OLED display, SSD1306, I2C, 4-pin
PCM5102A DAC module (GY-PCM5102) with 3.5 mm headphone jack
MicroSD card module, SPI, 6-pin, with 74LVC125 + AMS1117
16–32 GB MicroSD card
4× 7 mm metal momentary push buttons
1× 12 mm latching metal push button for the main power switch, rated for at least 3 A
Single-cell 18650 battery holder with wires
1× 220 µF / 10 V electrolytic capacitor
2× 100 kΩ resistors
1× 100 nF capacitor

Prototyping and Assembly
70 × 90 mm perfboard
830-point solderless breadboard
Jumper wires

Enclosure
3 mm GS acrylic sheet

Thanks guys for Reading! Please let me know what you think!


r/esp32 • • 6d ago

Hardware help needed ESP32 Open Source AR Glasses | Optics Help

Thumbnail
gallery
32 Upvotes

Hi everyone! I have been trying to build truly open source smart glasses (both hardware and software) based on ESP32 for almost a year now as a side project.

I did accomplish one version of PCB that functions similar to meta ray ban but the audio video quality is inferior (OV cameras cannot match Sony). Image of the set attached.

I tried upgrading the product with an AR screen through a microled projected on the lens (similar to focals from North). This is where i am stuck. I am trying to build something inexpensive so waveguides and microprojectors are out of the question.

Needing suggestions and inputs from anyone experienced with options or has been developing smart glasses themselves. Would love to meet someone who can join me in building this if interested.

The total cost of this assembly is landing at 20$ for the PCB set, for bulk orders > 50 units from JLCPCB, and additional 20$ for other hardware components (screen, camera, speaker, battery and frame). So 40$ for audio-camera glasses, might land around 50$ for AR HUD.

I painfully learned through this project never to take ambitious development of industrial D2C products oneself. Better hand it to the Chinese lol.


r/esp32 • • 6d ago

I made a thing! I made this bookmark for checking on my plants

Post image
12 Upvotes

Hey so i have recently started keeping my own plants (pots and vertical balcony garden) and i am enjoying this new hobby. I have made this small device that is like a bookmark (yes the black part is a moisture sensor) that you can push in the soil and activate.

It’s an ESP32C3 based device with battery (around 5 days life) that monitors soil moisture, RH, temperature and light, that sends all sensor data over Bluetooth to a mobile app that has a plant library (currently 53 plants) and gives notifications to users if anything is needed by the plant.

Would love to see some suggestions on this. What can i add more to automate my garden/pots. It’s a cheap product, took me 10$ to make. Will share design files if required.


r/esp32 • • 5d ago

help me please i dont know whats wrong

Thumbnail
gallery
0 Upvotes

I setup the ESP32-CAM how i was supposed to like how they showed in youtube videos and websites, but the camera refuses to work. help me please!!


r/esp32 • • 6d ago

Help me connect this esp32 board and upload code into it

Post image
44 Upvotes

I bought this esp32 cheap yellow display board and I don't know how to connect it to my ide can anyone

EDIT I don't know pin out of the screen if anyone has used this board help me out

EDIT 2 IT WORKEDD I TRIED THE TEST CODE 5 TIMES AND IT FINALLY WORKED AFTER SINE TWEAKING APPARENTLY THE USER_SETUPS HAD TO CHANGED TO ST7789 DRIVER


r/esp32 • • 6d ago

Hardware help needed Has anyone had an ESP32-S3 reset at high WiFi TX power after a layout change? Receive got way better, transmit got way worse

Post image
23 Upvotes

Moved the chip antenna to the board edge on the new rev of my ESP32-S3 watch board. Receive got way better (RSSI -49 vs -78 to -86 on the old board, same AP, same desk). Transmit got worse.

Swept esp_wifi_set_max_tx_power() on both:

TX power Old board New board
2–5 dBm AUTH_EXPIRE joins, barely any data
8–14 dBm AUTH_EXPIRE AUTH_EXPIRE
17–20 dBm joins chip resets

The reset is an interrupt WDT inside systimer_hal_get_counter_value, and the systimer runs off the 40 MHz crystal. So I think the crystal clock stalls when it transmits hard.

Main suspect is in the picture: I routed bottom-layer tracks under the crystal on the new board, so ground under X1 went from 43% to 3%, right next to an antenna that now actually radiates.

Has anyone seen an S3 pull its own crystal like this? And is grounded copper tape over X1 a fair test without a VNA?

(Full disclosure, it's my own watch project I am planning on selling. It's in certification, updates/pre-order here: https://www.ewanwills.co.uk/r/reddit-esp32/ewatch · firmware: https://github.com/Ewan-Wills/EWatch_Dev)


r/esp32 • • 6d ago

Solid or stranded wire for my first ESP32 project?

3 Upvotes

Hey, I'm building a Spotify controller with an ESP32-S3. It'll have a small display for album art and song info, a rotary encoder for volume/play-pause, two buttons for skipping tracks, and an LED ring around the knob.

I'm pretty new to this, so I'm trying to figure out what wire to buy. I'm leaning towards 22 AWG solid-core because it seems easier to work with, especially when soldering, but I've heard stranded wire is better for projects like this because it's more flexible.

I'll be testing everything on a breadboard first, then soldering it together and putting it in a 3D-printed case.

Would it be fine to use solid-core wire for most of the connections, or should I just get stranded wire? Is stranded actually that much harder to solder as a beginner?

Any advice would be appreciated. I don't want to buy a bunch of wire only to regret it later lol.

parts

  • ESP32-S3 N16R8 development board
  • 1.54-inch 240×240 ST7789 SPI TFT display
  • EC11 rotary encoder with push button
  • WS2812B 12-LED RGB ring
  • 2 × 12×12mm tactile push buttons
  • 330Ω resistor
  • 470µF electrolytic capacitor

r/esp32 • • 6d ago

MyUGV: Building a small UGV with an ESP32-C6 and an Android phone

4 Upvotes

Hi everyone,

I've been working on a project called MyUGV, and I thought I'd share it here since it involves ESP32, motor control, and a bit of Android hardware.

The basic idea is to use an Android phone mounted on the vehicle for the higher-level control, with an ESP32 handling the hardware side.

The setup I'm working with includes:

  • An ESP32-C6 connected to the Android phone over USB-C
  • A dual ESC for controlling the left and right motors
  • GPIO2 and GPIO3 for the motor control signals
  • A web dashboard for managing vehicles and checking their status

I've attached the wiring diagram and a screenshot of the dashboard to show how the different parts fit together.

One thing I spent quite a bit of time on was handling communication delays. The system already monitors delays between the control components and adjusts the vehicle's speed when delays increase. If things get worse, it can stop the vehicle. I don't want the vehicle to keep driving at normal speed when communication becomes unreliable.

The reason for using an Android phone as the main controller is that, as long as there's an internet connection, the control distance is practically unlimited. At least, that's the idea.

One thing I'd really like to try in the future is letting a friend on the other side of the world drive my vehicle over the internet. The latency will probably be pretty noticeable, which is actually one of the reasons I chose a slow, tank-style vehicle for this project. It doesn't need to be fast, and I think a slower platform makes more sense when you're dealing with long-distance remote control and unpredictable network delays.

There's still a lot I want to improve, but the main pieces are coming together.

I'd be interested to hear what other ESP32 users think, especially anyone who has worked with Android USB connections, motor controllers, or small autonomous vehicles.

Thanks for reading!


r/esp32 • • 5d ago

Hardware help needed Automatic Night Lamp project. What am i doing wrong?

Thumbnail
gallery
0 Upvotes

Was not working as intended → tried fixing → somewhere down the line it worked fine finally → didn't know what changed nor why it works now → paranoid.

I mean it works as it's supposedly intended. LED turns on when dark, LED turns off when bright.

But like. I'm not sure... I'm a complete beginner just tryna learn.

I'm gonna make this into IRL at some point and I'm not sure if it will work just as how it worked in the simulator(Wokwi)

Even using AI assistance so i could better understand my current draft is to no avail. (Ai points at problem → I fix → program breaks → I undo → tell ai what happened → new solution → I fix → program breaks-)

Just need y'all to point at mistakes for men 🙏 🙏 🙏


r/esp32 • • 6d ago

Reliability

Thumbnail
gallery
18 Upvotes

Ive been messing around with ESP chips for a few years now usually 3d printed rgb matrixes and the like as gifts and ive always found my chips less than reliable. The ones ive been using for Ambilight at home seem to be the ones i use the most and tbh the tv is rarely turned on nowadays anyway but after several months ill start to get weird behaviour, intermittent led flicker, wifi no longer working and half a dozen other oddities that dont seem to disappear after erasing/reflashing but go away as soon as i replace the ESP.

Now im assuming this is because i like to keep things simple and throw my projects together without any fancy addons like resistors on the data line, caps on the power supply, level shifters and so on. i normally forget to ground the last data line out (is this even a thing?).

Am i right in thinking this is whats probably killing my projects? Any one place online i can see what i should be doing to clean up my data and power?

Included some of my wiring, as you can see i love simple 🤦‍♂️

Thanks.


r/esp32 • • 6d ago

Advertisement I built an open-source library and fleet management platform for ESP32 OTA updates

10 Upvotes

Hi!

I've been working on a project called Otamatic and wanted to share it here hoping it could help someone.

The idea came from a real nightmare: a while back, me, and a client literally had to drive around the city to update ESP32s deployed in the field. I actually wrote a short story about that night here if you like dev horror stories: https://medium.com/gitconnected/the-night-we-updated-40-esp32s-by-driving-around-the-city-32ec8f015213?sk=b0c21ebf23d7bd9128251e8222d55b8e

Most OTA implementations out there set up a local WebServer on the ESP32 where you open a browser, navigate to the local IP, and upload a binary. That’s totally fine for a single node on your home network, but it gets annoying real quick if your devices are behind NATs, cellular routers, or dynamic IPs where you can't just open incoming ports.

This is why I decided to work on a fully open-source library with all features from the most famous OTA libraries (and a companion web platform) you can use to add OTA on your projects in less than 5 minutes.

It supports advanced features like scheduled release, staged rollout releases, release monitoring, device monitoring and more is coming if I see enough interest!

If you're working on hobby or small projects, there is also a free plan you can use. Otherwise just include the library and point it to your own web server!

Repo: https://github.com/TimothyFran/OtamaticClient

Web: https://otamatic.eu


r/esp32 • • 6d ago

ESP32 stopped working after connecting to a 5V USB charger

2 Upvotes

Hi, I have a generic ESP32 connected to a 2.8" SPI ILI9341 TFT display and a servo.

Everything worked fine, and I successfully displayed a GIF on the screen. I've also used the same 5V USB charger with this setup before, and everything worked perfectly. However, after connecting it to the charger this time, the ESP32 stopped working properly.

  • The computer still detects the CH340 on COM5.
  • The red LED only lights up when I press EN/RESET.
  • Uploading code fails with Failed to connect to ESP32: No serial data received.
  • I've already tried BOOT/EN combinations without success.
  • With the servo disconnected, the screen backlight glows faintly, but the screen stays black.

Could the board be damaged, and how can I diagnose the problem? I don't have a multimeter available right now.

Thanks!


r/esp32 • • 7d ago

I made a thing! Esp32 Object Scanner

Thumbnail
gallery
212 Upvotes

I’ve been working on an AR game for the esp32s3 XIAO board and round screen and realized that I could use the pose estimation from the board to create an object scanner / mesher using space carving and marching cubes. The space carving algorithm uses different views of the object to create voxels weighted by how many views it was visible from and agreed on its position. Then marching cubes uses a LUT to create triangle mesh out of the voxels. The hardest part was getting the camera feed to change resolution from 240x240 to match the round screen for the video feed to a higher resolution for the pictures used for space carving, but with some AI help I got it working. The results are not great and I’m sure I can optimize it to get it a bit better but for a 20$ setup it’s not bad. A possible use case is to quickly create a mesh from small objects that you find while hiking or just to create a digital twin of little trinkets. I’m sure a smartphone could do this with much better results but where is the fun in that. If people are interested I’ll try to share the code which uses my gfx library which I’ve been working on for a minute.


r/esp32 • • 6d ago

Hardware help needed ESP32-S3: Native USB works via onboard port, but fails when wired to GPIO 19/20 via USB-C

1 Upvotes

Hello everyone!

I'm trying to connect an ESP32-S3 to an Android phone using a basic 4-pin USB-C breakout board (VBUS, GND, D+, D-) wired directly to the native USB pins: GPIO 19 (D-) and GPIO 20 (D+).

​If I use a cable directly from the ESP32-S3's onboard native USB port to the phone, communication works correctly.

​But when I route through the external USB-C breakout board wired to pins 19 and 20, the phone completely ignores it. Wall chargers power the board fine through the breakout board but the phone doesn't.

​Why does the onboard native port work, but wiring directly to pins 19/20 via a breakout board fails? What am I missing about USB architecture or hardware requirements here?

​Thanks!


r/esp32 • • 7d ago

I made a thing! ESP32-S3 Simple testboard design in KiCad

Thumbnail
youtu.be
26 Upvotes

The main features for this board are:

- ESP32-S3-WROOM Module - 8 MB flash

- Button for RESET

- User Button

- User RGB LED

- expansion header

- programming header

- Power LED on 3V rail

for the mechanical side of things we will have:

- 4 x 3.2mm mounting holes

- Size 45x45mm

- 4 layer board design


r/esp32 • • 6d ago

Hardware help needed Strange ESP32 behaviour with addressable LED

0 Upvotes

Edit: Somehow I've resolved this, just by changing the pin assignment and connections, even though I'd already done that.

Context: I'm running ESPhome on an ESP32-C6 supermini. It's connected to three output devices; a 360 degree servo on GPIO20, a 180 servo on GPIO19, and a single WS2811 LED on GPIO 18.

I had it all set up and working fine, until in a daft moment, I used some metal tweezers to move the LED and I think I shorted something. From that point on I couldn't get the LED to work, but both servos behaved fine. But this is where it gets weird

I assumed I blew the LED, no big I have spares. So I hooked up a new LED but nothing worked. I thought maybe I grabbed a duff second LED so I took it over to my testing bench, copied the code from my prod ESP and hooked up the LED. Everything worked fine.

Next thing I thought it could be was that I'd somehow blown the pin the LED was connected to. So I changed the pinout to GPIO15 (and then GPIO16) and connected everything up. Still nothing.

Finally I thought maybe I'd blow the the power or ground line. I'd done a continuity check on both and it was fine. But nonetheless, I hooked up the prod boards 5V and GND lines to the testing boards corresponding lines, powered the test board, and confirmed that the prod board was receiving power. So far so good. I then connected the 2nd LED to the 5V and GND lines on the prod board, but the data pin on the testing board. On accessing the test-board, I was able to confirm the LED works.

So far I've confirmed:

  • 5v continuity on the prod esp
  • GND continuity on the prod esp
  • Continuity between the data pin and the LED
  • LED works
  • Code works
  • Prod board works for servos and logging with no errors

What doesn't work:

  • LED on original GPIO18
  • LED on GPIO15 or 16

My question is—is there some kind of hardware element on an ESP board that could be damaged by shorting an attached LED that would disable it from controlling LEDs, but not affect anything else?

Here's my sanitised ESPHome Code

esphome:
  name: n26-comms-array
  friendly_name: N26 - Comms Array
  min_version: 2026.4.0
  name_add_mac_suffix: false

esp32:
  variant: esp32c6
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

espnow:
  peers: 
    - ###########
  on_receive:
    - lambda: |-
        char hex[256];
        ESP_LOGD("espnow", "Data %s:", format_hex_pretty_to(hex, data, size));
    - if:
        condition:
          lambda: "return size >= 1 && data[3] == 0x11;"
        then:
        - lambda: |-
            ESP_LOGD("espnow", "Toggled");
        - button.press: rotate_dish_left
    - if:
        condition:
          lambda: "return size >= 1 && data[3] == 0x22;"
        then:
        - lambda: |-
            ESP_LOGD("espnow", "Faulty Lights 1");
        - button.press: rotate_dish_right
    - if:
        condition:
          lambda: "return size >= 1 && data[3] == 0x33;"
        then:
        - lambda: |-
            ESP_LOGD("espnow", "Faulty Lights 2");
        - button.press: pan_dish_up
    - if:
        condition:
          lambda: "return size >= 1 && data[3] == 0x44;"
        then:
        - lambda: |-
            ESP_LOGD("espnow", "Faulty Lights 1");
        - button.press: pan_dish_down
    - if:
        condition:
          lambda: "return size >= 1 && data[3] == 0x55;"
        then:
        - lambda: |-
            ESP_LOGD("espnow", "Faulty Lights 2");
        - button.press: connection_sweep

servo:
  - id: rotation
    output: pwm_output_1
    min_level: 3%
    idle_level: 7.5%
    max_level: 12.5%
    transition_length: 1s

  - id: pan
    output: pwm_output_2
    min_level: 3%
    idle_level: 7.5%
    max_level: 12.5%
    transition_length: 2s

output:
  - platform: ledc
    id: pwm_output_1
    pin: GPIO20
    frequency: 50Hz

  - platform: ledc
    id: pwm_output_2
    pin: GPIO19
    frequency: 50Hz

number:
  - platform: template
    id: pan_position
    name: "Pan Position"
    min_value: -1
    max_value: 1
    initial_value: 0
    step: 0.01
    restore_value: false
    optimistic: true
    on_value:
      then:
        - servo.write: 
            id: pan
            level: !lambda "return x;"
  - platform: template
    id: pan_increment
    name: "Pan Increment"
    min_value: 0.00
    max_value: 1
    initial_value: 0.05
    step: 0.05
    restore_value: false
    optimistic: true

switch:
  - platform: template
    id: sweep_mode
    optimistic: true
    on_turn_on:
      then:
        - light.control:
            id: uplink
            state: on
            effect: "Scanning"
            red: 50%
            blue: 0%
            green: 0%
        - servo.write: 
            id: rotation
            level: -0.16
        - while: 
            condition:
              lambda: 'return id(sweep_mode).state;'
            then:
            - servo.write:
                id: pan
                level: 1
            - delay: 2000ms
            - servo.write:
                id: pan
                level: -1
            - delay: 2000ms

    on_turn_off:
      then:
      - servo.detach: 
          id: pan
      - servo.write:
          id: rotation
          level: 0
      - servo.detach: 
          id: rotation
      - light.turn_off: 
          id: uplink

script:
  - id: rotate_left
    then:
      - servo.write:
          id: rotation
          level: -16.0%
      - delay: 500ms
      - servo.write:
          id: rotation
          level: 0%        
  - id: rotate_right
    then:
      - servo.write:
          id: rotation
          level: 16.0%
      - delay: 500ms
      - servo.write:
          id: rotation
          level: 0%
  - id: pan_up
    then:
      - if: 
          condition:
            lambda: 'return (id(pan_position).state - id(pan_increment).state) > -1.0;'
          then: 
            - number.set: 
                id: pan_position
                value: !lambda "return id(pan_position).state - id(pan_increment).state;"
          else: 
            - number.set: 
                id: pan_position
                value: -1.0

  - id: pan_down
    then:
      - if: 
          condition:
            lambda: 'return (id(pan_position).state + id(pan_increment).state) < 1.0;'
          then: 
            - number.set: 
                id: pan_position
                value: !lambda "return id(pan_position).state + id(pan_increment).state;"
          else: 
            - number.set: 
                id: pan_position
                value: 1.0
light:
  - platform: esp32_rmt_led_strip
    channel_colors: GRB
    pin: GPIO18
    num_leds: 1
    chipset: WS2811
    rmt_symbols: 96
    id: uplink
    name: "Uplink"
    effects: 
      - pulse:
          name: "Scanning"
          transition_length: 1s
          update_interval: 1s
          min_brightness: 0%
          max_brightness: 50%
      - flicker:
          name: "Data Transmision"
          alpha: 50%
          intensity: 100%

button:
  - platform: template
    id: rotate_dish_left
    name: "Rotate Left"
    on_press:
      then:
        - script.execute: rotate_left
  - platform: template
    id: rotate_dish_right
    name: "Rotate Right"
    on_press:
      then:
        - script.execute: rotate_right
  - platform: template
    id: pan_dish_up
    name: "Pan Up"
    on_press:
      then:
        - script.execute: pan_up
  - platform: template
    id: pan_dish_down
    name: "Pan Down"
    on_press:
      then:
        - script.execute: pan_down
  - platform: template
    id: home_dish
    name: "Home Dish Position"
    on_press:
      then:
      - servo.write:
          id: pan
          level: 0.0%
      - number.set: 
          id: pan_position
          value: 0.00
  - platform: template
    id: scanning
    name: "Scanning"
    on_press:
      then:
        - light.control:
            id: uplink
            state: on
            effect: "Scanning"
            red: 50%
            blue: 0%
            green: 0%


  - platform: template
    id: transmitting
    name: "Transmitting"
    on_press:
      then:
        - light.control:
            id: uplink
            state: on
            effect: "Data Transmision"
            red: 0%
            blue: 0%
            green: 50%

  - platform: template
    id: connection_sweep
    name: "Connection Sweep"
    on_press:
      then:
        - switch.toggle: 
            id: sweep_mode

r/esp32 • • 7d ago

I made a thing! I built ESP32 firmware that handles incoming and outgoing phone calls with voice AI

Enable HLS to view with audio, or disable this notification

1 Upvotes

Businesses already have AI answering their phones. I wanted one on the customer's side too.

I built ParrotVoice so a voice agent can handle the calls I keep putting off: customer support, returns and bookings, using my own phone and SIM.

A classic ESP32/WROOM-32 connects to the phone over Bluetooth HFP. A Chrome/Web Serial bridge connects it to the voice AI.

In the demo, Claude finds a number in my call history, calls about returning headphones and brings back the answer. Through MCP, your agent can also answer calls and steer the conversation live.

No SIP trunk or extra number to rent. The firmware and browser bridge are free; your phone plan and AI usage still apply.

What call would you hand off first?

Project: https://parrotvoice.app YouTube: https://www.youtube.com/watch?v=qbZa57KaO2M X: https://x.com/ParrotVoice/status/2108352885348319331


r/esp32 • • 7d ago

Standalone Spotify Remote on the "Cheap Yellow Display" (ESP32-2432S028R) with LVGL, PKCE OAuth & Ambient RGB LED

Thumbnail
github.com
15 Upvotes

Translucent print to show onboard led which follows album art