
r/esp32

Where am I going wrong? I am trying to get this independent usb c point to run from the same power source as my TV backlight.
I have an ESP32 running a TV backlight on a 10A power supply. I split the power line to try to siphon off approx 2A to power a small usb c that can be used for a separate Led lamp or even another small LED strip.
The TV LED still turns on but no sign of life in the USBc connector. I've plugged in a C6 mini just to test for a power LED.
How do I trouble shoot this? I've reseated the wires a few times but hasn't done anything.
The connector between the USB c piece and the larger power cable could be a point of failure.
Or have I just misunderstood how to connect a usb c to a set up like this and there is something missing?
Please help!
Anyone has experience with this display + board combo?
Seems too good to be true:
- 4" IPS with capacitive touch
- Built in esp32 s3
- SD card slot
- Mic and speaker and battery ports
And it cost less than $20:??
What's the catch? The only thing that popped was that there's no mention of PSRAM (msged the seller, let's see what they say). But I can't find any reviews on it which makes me worries.
They market it for use with AI chat bot, but I don't care. Seems like a good deal if you don't need the extra GPIOs or stereo sound.
Anyone has it and can share their experience?
The NM-CYD-C5 external version board is coming - thanks for your feedback
Since launching the NM-CYD-C5 (the ESP32-C5 based CYD variant with dual-band WiFi 6), the single most common piece of feedback has been:
"Could you make a 1u variant that I could connect an antenna to?"
"Does it have external antenna connector"
"Will an external antenna be supported this time, or is a DIY solution again required to attach an external antenna?"
Fair point. 5GHz attenuates much faster than 2.4GHz, and a small PCB trace antenna surrounded by a display and ground planes has its limits.
So: the NM-CYD-C5-Colorful-Ant is coming.
• IPEX-1 connector + bundled dual-band 2.4G/5G antenna • External antenna only — no onboard PCB antenna on this version • Same ESP32-C5 (dual-band WiFi 6, BLE 5.3, Zigbee/Thread), same 16MB Flash + 8MB PSRAM, same CYD-compatible footprint • Still works with Bruce / Marauder / ESPHome, etc as before
The default External Antenna Parameters
- Frequency range: 2400-2500MHz / 5000-5800MHz
- VSWR: 2400-2500 ≤ 2.5, 5000-5800 ≤ 2.5
- Efficiency %: 2400-2500: 83.3 AVG; 5000-5800: 73.8 AVG
- Peak Gain (dBi): 2400-2500: 3.2 AVG; 5000-5800: 3.7 AVG
- Radiation Properties: Omni-directional
- Polarization: Linear
The 3D printed shells (see from the picture) will be released on GitHub repository soon.
I Have Build DIY TFT Display
Guys I have built a DIY 1.8 inch TFT Display ST7735 Module With Only 50Rs/0.5$ The PCB Is Totally Hand Made Using Toner Transfer Paper And Working Quite Well The All Source Header Files For different ESP Boards are in the github repository with schematics diagrams, Pinout Of the module, Proper documentation has been in the video and github repository please follow it, it use TFT_eSPI Library
Github Repo:-https://github.com/samiralam5755/DIY-1.8-TFT-Display
Full Video:-https://youtu.be/EqtmMCGdx98
Can a dead TWS earbud be repurposed as a Bluetooth data modem for microcontrollers?
Dead TWS earbuds still have a working Bluetooth receiver + amp — only the battery, buttons, or mic usually fail. So I tapped the analog speaker output and built a 3-tone FSK modem to send data over it.
Signal path:
Phone/PC → Bluetooth A2DP → TWS earbud → analog speaker out → MCU ADC → Goertzel FSK demod → packet + CRC
Key details: TWS output is BTL/differential — do NOT ground the second speaker terminal, it'll short the amp (as did) .
ADC sample rate assumption (8kHz) was wrong. Measured actual rate was 5.8kHz. 3 sparse tones (700/1100/1700 Hz) survive the earbud's bad frequency response better than GGWave's multi-tone scheme, which failed to decode payloads reliably on this path. Built a small packet protocol: preamble, length, payload, CRC-8, end marker. Keeping the A2DP stream open, instead of closing/reopening it, fixed intermittent decode failures.
Results: 95%+ packet success in integration testing. 4/4 packets decoded clean with valid CRC in controlled tests.
~3.2–4.5 bit/s effective payload rate. Not competitive with SPP or a real wireless modem — that's not the point. The point is turning e-waste into a $0 Bluetooth-to-MCU bridge.
Next: testing this with a Bluetooth-less MCU (CH32V003) as the actual receiver. Source: https://github.com/Ishu1519/TWS-A2DP-Mode
Curious if anyone's got a better modulation scheme that survives A2DP codec distortion at a higher bitrate.
I built an ESP32 Wi-Fi survey sensor with a BLE GATT client for Apple devices — feedback on the protocol wanted
Hi r/esp32,
I’m the developer of OmniPulse, a project that uses ESP32 boards as external Wi-Fi survey sensors for native clients on iPhone, iPad and Mac, with a companion Apple Watch app.
The engineering problem I was trying to solve is that iOS applications do not receive unrestricted information about surrounding Wi-Fi networks. Instead of attempting to bypass the operating system restrictions, I built firmware that lets authorized ESP32 sensors collect standard Wi-Fi scan results and send the observations to the Apple device.
I found several general BLE debugging applications and ESP32 Wi-Fi scanning examples, but I wanted a workflow capable of combining measurements from multiple sensors, reviewing them before importing, and associating them with locations or floor plans.
### Try OmniPulse
- Source code and ESP firmware:
https://github.com/tiburonns/OmniPulse
- AltStore source:
https://raw.githubusercontent.com/tiburonns/OmniPulse/main/source.json
- Latest release — OmniPulse 1.0.1:
https://github.com/tiburonns/OmniPulse/releases/tag/v1.0.1
In AltStore, open **Sources → +** and paste the AltStore source URL.
ESP32 implementation
The current design works as follows:
- An ESP32 performs a standard Wi-Fi scan.
- The firmware converts the observations into measurement batches.
- The batches are transferred to the client through a custom BLE GATT protocol.
- The client reviews and imports the observations.
- The measurements can then be used for channel analysis, maps, floor plans, PDF reports and CSV exports.
The application can maintain simultaneous connections with up to eight ESP32 sensors. The firmware also includes BLE OTA support and a 4 MB OTA partition layout.
Current PlatformIO environments cover:
- ESP32
- ESP32-S3
- ESP32-C5
- ESP32-CAM
- XIAO ESP32S3 / Sense
There is also a separate local HTTP implementation for ESP8266 and Wemos/LOLIN D1 mini boards.
No custom PCB is required; the current implementation runs on off-the-shelf development boards.
Safety and privacy boundaries
This is intended only for surveying networks and locations the user owns or is explicitly authorized to analyze.
The firmware does not:
- Deauthenticate clients
- Jam or disrupt radio communications
- Inject packets
- Attempt to decrypt networks
- Capture network payload traffic
- Transmit observed MAC addresses in clear text
BLE identifiers stored by the application are converted into session-specific pseudonyms.
Source and documentation
Main repository:
https://github.com/tiburonns/OmniPulse
ESP32 firmware:
https://github.com/tiburonns/OmniPulse/tree/main/firmware/esp32-omnipulse
Firmware source:
https://github.com/tiburonns/OmniPulse/tree/main/firmware/esp32-omnipulse/src
BLE protocol specification:
https://github.com/tiburonns/OmniPulse/blob/main/docs/ESP32_PROTOCOL.md
Architecture documentation:
https://github.com/tiburonns/OmniPulse/blob/main/docs/ARCHITECTURE.md
The project is free and source-available for inspection. There is no subscription or paid plan.
I would appreciate feedback specifically on these engineering decisions:
- Is BLE GATT a reasonable transport for batches of Wi-Fi observations, or would you choose HTTP, MQTT or ESP-NOW?
- Is the protocol documentation sufficient for someone to implement a compatible sensor independently?
- Which ESP32 variant would you prioritize for reliability and power-consumption testing?
- Are there additional scan measurements that would be useful without crossing into packet capture or disruptive behavior?
I’ll monitor the comments and would appreciate honest technical criticism. Thanks!
Is there any issues with this delay circuit to enter download mode with a single button?
My handheld device is limited to 2 tactile switches, one of which is used to wake the device up from deep sleep & the other one I want to use to enter download mode.
After looking into the datasheet, I found that logic level high & low voltages are 0.75 * VDD & 0.25 * VDD respectively (2.475V & 0.825V).
I came up with the following circuit where after toggling the button, RST goes "HIGH" (above 2.475V) at ~16 ms and after that, IO0 stays "LOW" (below 0.825V) for about ~24 ms.
Here's the falstad circuitjs link if anyone wants to try: https://www.falstad.com/s.php?s=XXFnBH
I want to know if there's any issue with this circuit or if there's a better alternative?
This device will be updated OTA for most of the time, but this is a fallback mechanism to ensure the device isn't bricked in an bad update.
Edit: The MCU is ESP32-S3
Six ESP32-S3 WiFi bugs that I think are one bug. Here's the list and the fix I'm planning, tell me where I'm wrong.
ESP32-S3, IDF 5.4. It's a desk terminal I built: WiFi STA, a WebSocket to my PC, another to a relay. Disclosure, it's headed toward being a product, but there's nothing to sell and no link, I just want the radio to stop embarrassing me.
I've been filing WiFi bugs against this thing for months as if they were unrelated. Last week I lined them up and I don't think they are.
1. It dies overnight. On a plain USB charger, usb_serial_jtag_is_connected() sees no host, so my "it's plugged in, stay awake" exemption never fires. Ten minutes after the last interaction, standby calls esp_wifi_disconnect() then esp_wifi_stop(). After that a duty-cycle poll opens a 2500 ms window to get back on. My socket layer retries on a 3000 ms timer. 3000 > 2500, so the window shuts before the retry lands, every time, forever. One night's logs: ~660 polls, zero successes. Dead 22:24 to 09:30. Touch it in the morning and it's back in a second.
2. It can't survive booting while the router is down. Every saved network gets 5 tries at boot. If they all fail I set a fail bit and stop. Forever-retry and roam only arm once s_wifi_ever_connected is true. So "AP wasn't ready at boot" means offline until a human power-cycles it.
3. It won't leave a weak mesh node. Three nodes, one SSID. scan_method on defaults, so FAST_SCAN takes the first match instead of the strongest. Reconnect by SSID, never pinning BSSID. Roam only fires on a disconnect event. Result: parked at -80 with a -45 node in the same room.
4. Roaming is directionally asymmetric. Coming back to the office it reconnects. Coming home it doesn't. Same two saved networks, same code path. I still don't have a clean repro and that bothers me more than the bug.
5. Half-open sockets. Keepalive send failures weren't counted as failures. A socket could be dead for 75 seconds while the UI just greyed out instead of reconnecting.
6. WiFi buffers are tiny. STATIC_RX 4, DYNAMIC_RX 8, DYNAMIC_TX 8, AMPDU off. I cut those to claw back internal RAM back when BT was still in the build. BT has been gone for months. The numbers stayed.
What they have in common. Every one of these fires a recovery attempt exactly once and then nothing checks whether it worked. The retry timer, the roam trigger, the standby poll, the keepalive counter: all ignition, no supervisor. When it works I never notice. When it doesn't there's no second attempt and no log line, so the device sits there looking perfectly healthy and is simply not on the network. #1 lived in my house for weeks disguised as "wifi is bad in that room."
What I'm planning:
- One connection manager task that owns the radio, with explicit states. Everything else asks it for connectivity instead of calling
esp_wifi_connect()itself. At least four places currently do. - Arm forever-retry on "credentials exist", not "has connected at least once".
- Standby stops tearing down WiFi.
WIFI_PS_MAX_MODEMwith DTIM, keep the association. Have not measured the power cost yet. esp_wifi_set_rssi_threshold()and treatWIFI_EVENT_STA_BSS_RSSI_LOWas a roam trigger, so "associated but bad" becomes a state I can act on instead of a blind spot.- ALL_CHANNEL_SCAN with CONNECT_AP_BY_SIGNAL, and pin the BSSID.
- Put a boot-id in the frames I send upstream. A good chunk of my earlier log analysis was wrong because I couldn't distinguish a reboot from a reconnect.
Where I'd like to be told I'm wrong:
- Anyone regret MAX_MODEM plus DTIM on an S3? Wake latency is what I'm nervous about, this thing is supposed to be always-listening.
- What WiFi buffer numbers have people actually landed on for sustained WebSocket traffic on an S3 with esp-sr resident? I have very little internal RAM to spend and I'd rather steal someone's tested numbers than binary-search my own.
- Is one connection-manager task the right shape, or does it just relocate the problem into a bottleneck?
Mostly I want to know whether "one-shot ignition with no supervisor" is a named mistake that everyone else already learned to avoid, or whether we all write it once and pay for it.
Is it possible to use LED PWM with open-drain output or will it always be push-pull output on an ESP32-H2?
The question is already in the title: Is it possible to use LED PWM with open-drain output or will it always be push-pull output on an ESP32-H2?
Neither the EDF-IDF documentation nor Espressif: ESP32-H2 Technical Reference Manual is explicit on this aspect. Chapter 35 of the Reference Guide doesn't say anything about what happens to the output configuration of the GPIO when one routes the PWM channel to the GPIO. The API documentation about GPIO IO Configuration only warns about the correct order of configuration steps, but doesn't say anything whether the PWM signal will change the output to pull-push:
> In some applications, an IO pin can serve dual purposes.
> For example, the IO, which outputs a LEDC PWM signal, can also act as a GPIO input to generate interrupts or GPIO ETM events.
> Careful handling on the configuration step is necessary for such dual use of IO pins cases.
> gpio_config() is an API that overwrites all the current configurations, so it must be called to set the pin mode to gpio_mode_t::GPIO_MODE_INPUT before calling the LEDC driver API which connects the output signal to the pin.
> As an alternative, if no other configuration is needed other than making the pin input enabled, gpio_input_enable() can be the one to call at any time to achieve the same purpose.
Anatomy of My Six Legged Robot
Hi folks,
I finally got around to finishing the documentation for my hexapod robot dog, The hardest part to figure out was powering the servos directly from buck converters and setting up the common ground bus to PCA boards, I believe this might be a pain in the neck for many first timers so I am sharing the full wiring diagram here for anyone to benefit.
I also put together a detailed documentation for the robot itself. I contains information about the parts I used for the robot and how the joint servos are wired across the two PCA board pins.
You can download the diagram, documentation and the design file form the links below if you are interested in building one yourself or would like to use it as reference for a similar project.
Documentation and Diagram:
https://www.patreon.com/PrintedRobotics/posts/hexadog-zbd-and-167021077
https://app.cirkitdesigner.com/project/0a1ee9f8-8495-4f33-9e41-12ed67207672
CAD and 3D printing files:
https://makerworld.com/en/models/3181404-hexadog-zbd
https://www.patreon.com/PrintedRobotics/posts/hexadog-zbd-and-165170615
ESP32 Scripts and Android Controller app APK:
https://github.com/serdarselimys/HexaDogZBD-ESP32Scripts
https://github.com/serdarselimys/HexaDogZBD-AndroidControllerApp
I do have a question for you all, should I design and build a mini version of the robot with SG92R servos? If I can manage to keep the weight down enough it might be even more agile and cost under 100 bucks? has anyone tried building robot dogs or hexapod robots with SG92R? how was your experience with them??
I also share simulation tutorials along with my robot's other videos on my youtube channel youtube.com/@printedrobotics check it out if you are interested in simulation side of robotics, I share all my scripts for free so you can download them and experiment on your own.
As always, your comments and suggestions for my robot are most appreciated.
Is it possible to run ESP32 off of one of those phone chargers that plug into 12V out in a vehicle?
I'd like to run my digital dashboard without hard wiring it somewhere in the car or messing around with diy buck converters so I'm hoping I can run it off of one of these:
Doesn't have to be this one in particular, this is just a reference image.
I Made a Boost Controller with a ESP32C3 (+ first custom PCB)
What this basically is is a PID controlled PWM Solenoid driver, running on a C3 SuperMini. Designed my first PCB for this (with some mistakes ofc) and decided to use a TC4422 mosfet driver. Also included a 5V supply to be able to plug it into my cars 12v system. Code was mostly written by an LLM, including the Webserver which this is running for setting Target and PID parameters. (I'm a real newbie with all of this) I'm already working on rev2 which I'm gonna post on GitHub solving all my issues with this one. (https://github.com/ziraw).
I've tested the perfboard prototype on my car already (1989 200SX CA18DET) with a BMW N75 Boost Valve strapped to my waste gate and it seems to work perfectly, just not getting enough air through the OEM Airbox though atm, hitting a ceiling of 0.9bar. Gonna install this soon and see what it does. I/O: 12v,5v,sensor(i/o), valve.
The only thing this doesn't include ATM is a pressure sensor, I'm grabbing it off of my boost gauge. But the IO has a 5V supply for any type of sensor to be hooked up directly, the code might need adjusting through. It's currently Ov=-1 / 5V=+4 bar (Scaled to 3.3V and divided by 1.1 since that seems to reflect what my gauge is saying more accurately).
I don't specifically know why I made this, just thought it couldnt be that hard and I haven't seen anything like this, besides what maybe Speeduino and rusEFI are doing. If this already exists I'd love the be informed :-)
Cheers
(disclaimer: might blow up your engine)
ESP chip Swiss knife tool in a browser
Hello,
I wanted to share my project that I've been working on that is aimed for debugging and flashing everything around the esp chip from the browser only without anything to install. I got frustrated with the current tech that for a lot of basic things esp-idf is needed while I don't have my regular device at hand. There are couple of other projects allowing to flash the board from browser or open a terminal but most of them are very basic and not sufficient to do something more advanced. I got into the internals and realised the tech is ready (Webserial api, webassembly and browser support) and exists but there is no tool to leverage it so I built the ESP Swiss knife tool.
All of this runs in a browser as a static website with no installation (browser must support Webserial, recommended choice is chrome/edge)
Here is a quick rundown of features:
- flash and chip identification
- read and write memory (in bootloader mode) interactive terminal
- inspect security status of efuses and configuration (secure boot) read and browser partition table flash any partition or whole chip, verify on flash, sanity check for alignment and compatibility, dump chip/partition or edit any flash data via builtin hexviewer
- inspect bootloader details
- edit otadata status, reflash apps and change their ota status
- browse and modify NVS keys in nvs partition
- browse and modify with full file browser for supported FS partition types (littlefs, spiffs, fat32) read and decode coredumps directly in browser
The tool is available for free at https://esp.sourcecode.ai . Please share any feedback or ideas for improvements. Thank you guys for trying and I hope this helps you in debugging as much as it does me on daily basis!
For now on, I'm soldering with the chip in the breadboard.
For years, I've been stupid and soldering using my "helping hands" thing. 🤦♂️
This made is so much quicker and easier. Literally 30 seconds to do both sides! Hopefully one person doomscrolling sees this and it helps them.
Hardware newbie building an AI voice device with ESP32
This is my first hardware project: a voice AI device connected to a local server running Agora Conversational AI. I’m new to hardware and don’t have any soldering experience yet, so I’m starting with a breadboard prototype based on this idea.
I’ve decided to learn soldering and PCB design, with the goal of eventually turning this into a real product. Any advice?
PWM Fan controller with ESP32
I made a PWM fan hub/controller for my passive cooling gpu. Support DS18B20, NTC, manual as temperature source, Curve-based controller, scheduling,... Temporarily closed-source for development, open-source soon.
For PWM, I'm using an NPN open-collector driver, combined with a tachometer level-shifter/divider which I found from here
CYD inputs
What is the best way to add inputs to a CYD? I need to add three motor controls (PMW) with RPM sensors. Temp too but IC12 can carry those. Tie in another ESP32 or use signal splitters?
Thank you.
I spent around 8 months building ESP32 projects with boards from 4 different companies
I started playing around with ESP32 boards about 8 months ago, mostly because I wanted to automate a few things around the house. I thought it would be a fun weekend project
Turns out there were quite a few weekends after that lol
I made pretty much every beginner mistake you can think of:
- I bought random sensors that weren't compatible with each other
- I assumed that every ESP32 board was basically the same until I realized they arent
- Spent hours debugging code only to realize I'd selected the wrong board in Arduino IDE
- Building something that worked perfectly on my desk... and then completely failed once I put it inside an enclosure (that was the most frustrating part)
After building things like Home Assistant sensors, MQTT devices, a garage parking assistant, an e-paper dashboard, and a few environmental monitoring projects, I ended up trying boards from four different companies.
This isn't sponsored by anyone, just sharing what I've personally used and what I liked (or didn't) and the list isn't going in any particular order
If you're working on similar projects, feel free to DM me too. I'm always curious to see what other people are building
1. Soldered
I probably ended up using the NULA Mini ESP32-C6 the most because I really liked the simplicity of it
The project that really sold me on it was an e-paper dashboard that pulled data from Home Assistant over MQTT. Before that, I'd spent way too much time fighting with random hardware issues instead of actually building the dashboard I wanted
What I liked:
- Arduino and MicroPython both worked nicely
- Wi-Fi 6 is a nice bonus
- documentation answered most of the questions I actually had
- everything just felt... predictable
The biggest compliment I can give it is that I mostly forgot about the board itself and focused on the project instead
I think I paid around $17.50 for the Nula Mini, which I thought was pretty fair and decent in price
2. Espressif
I used an official ESP32 DevKit while building a small web dashboard to control a few devices around my apartment and test different Wi-Fi features.
Whenever I wasn't sure whether a problem was my code or the hardware, I'd usually grab an official Espressif dev board
I used it mostly for testing Wi-Fi features and building a simple ESP32 web server
Things I appreciated from this provider:
- official hardware that was really easy to navigate
- loads of examples online
- almost every tutorial assumes you're using one so it was pretty easy
- great for learning the ESP32 ecosystem
If you're completely new, it's hard to go wrong with an official board.
Price for this one depends on the series, but its in the $15-18 range and the one I bought cost me 18$
3. Adafruit
I picked up one of their Feather boards for a portable environmental monitor that measured temperature and humidity while running from a battery.
The hardware was solid, but honestly the documentation is what impressed me the most.
Every time I got stuck, there was usually already a guide explaining exactly what I was trying to do.
Big positives that surprised me:
- fantastic documentation
- really polished libraries
- CircuitPython support
- lots of beginner-friendly tutorials
It feels like they spend as much effort on teaching as they do on building hardware
The one I used for this project cost me $19.95 - Adafruit ESP32 Feather V2 – 8MB Flash + 2MB PSRAM
4. Seeed Studio
My experience with Seeed mostly came from putting together a quick office monitoring prototype using Grove sensors
I wanted to see how quickly I could go from "idea" to "working prototype" without spending half the evening wiring everything together
The Grove ecosystem was honestly pretty fun for that
Things I liked:
- Grove makes prototyping ridiculously fast
- huge selection of sensors
- swapping modules takes seconds
- easy to experiment with different ideas
I probably wouldn't build every long-term project around Grove, but for testing ideas it's incredibly convenient.
Anyway, those were my experiences
I'm curious what everyone else has settled on after building a few ESP32 projects
I think I spent around $50 for the initial setup (board + a few Grove modules), then most extra sensors I added later were somewhere in the $5–20 range. You can definitely build the same thing for less if you buy generic sensors, but for prototyping I really liked the convenience of just plugging everything together.
Is there one ESP32 board you keep coming back to, or do you switch depending on the project?
EDIT: I added prices to all projects because of a recommendation from a comment, thank you
Using mobile charger to power esp32 for weeks for my plant watering?
Hello everyone, I went through all the posts and understood that chargers are fine as they output 5v with esp32 having voltage regulator to accept 3.3v. However, I have a question. I am going away for 4-5 weeks, and I want to remotely operate esp32 to turn on water pump(through another constantly on 12v adapter plugged into a wall socket). Is it okay to keep these 2 unattended for 5-ish weeks? Anything I need to take care of for safety measures?
Clarification: I want to plug my phone charger with micro usb cable to esp32, and keep the wall socket on for weeks.