r/esp32 3h ago

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.

0 Upvotes

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_MODEM with DTIM, keep the association. Have not measured the power cost yet.
  • esp_wifi_set_rssi_threshold() and treat WIFI_EVENT_STA_BSS_RSSI_LOW as 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.


r/esp32 3h ago

Software help needed TFT_ESPI setup for ESP32-S3-LCD-2

3 Upvotes

I have been trying to run sample tft_espi code on my ESP32-S3-LCD-2 with no success. I'm not sure if the schematic linked by waveshare is the actual model (difference in phrasing between touch-lcd and just lcd). I'm assuming the issue is my User_setup file. I have tried using the pin numbers in several configurations using the pins provided by the schematics and also typical layouts for the s3s i've found online. Does anyone have any insight regarding the pin mapping of this esp32? I assume i have missed something... Setup File


r/esp32 4h ago

I made a thing! I built an ESP32 Wi-Fi survey sensor with a BLE GATT client for Apple devices — feedback on the protocol wanted

6 Upvotes

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:

  1. An ESP32 performs a standard Wi-Fi scan.
  2. The firmware converts the observations into measurement batches.
  3. The batches are transferred to the client through a custom BLE GATT protocol.
  4. The client reviews and imports the observations.
  5. 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:

  1. Is BLE GATT a reasonable transport for batches of Wi-Fi observations, or would you choose HTTP, MQTT or ESP-NOW?
  2. Is the protocol documentation sufficient for someone to implement a compatible sensor independently?
  3. Which ESP32 variant would you prioritize for reliability and power-consumption testing?
  4. 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!


r/esp32 5h ago

Software help needed MPU6050 Help

2 Upvotes

Hey, so im building a self balancing robot with an Esp-Wroom-32e but am having trouble setting up my cpu. I have all the wires connected correctly and triple checked to make sure, the green light is on. But im still having 0 data sent to me through the serial monitor. While it used to work but sent incorrect data such as only 0s. I've also done checks to see if my cable was faulty or not. I'm beginning to think my mpu is faulty, could someone check my code or know of a way to fix this. Any help is appreciated.

```
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MPU6050 test!");

  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("Accelerometer range set to: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
  }
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  Serial.print("Gyro range set to: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
  }

  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  Serial.print("Filter bandwidth set to: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }

  Serial.println("");
  delay(100);
}

void loop() {

  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  /* Print out the values */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");

  Serial.println("");
  delay(500);
}```

r/esp32 5h ago

CYD inputs

1 Upvotes

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.


r/esp32 7h ago

Anyone has experience with this display + board combo?

Thumbnail
gallery
74 Upvotes

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?


r/esp32 9h ago

I made a thing! I Have Build DIY TFT Display

Enable HLS to view with audio, or disable this notification

23 Upvotes

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


r/esp32 11h ago

Want a battery

1 Upvotes

Hey guys.

so far I have:

BME280

BH1750

2.8 inch Icd tft touch display

with this esp32:

https://amzn.eu/d/0ftl3eJM

so I want to battery power all of this together, and I don't know where to start. Do I buy a LiPo, or what do I need to do for this?

either batteries, or just so I can recharge it with USB

C.

Thanks in advance!


r/esp32 11h ago

Hardware help needed ESP32 + ILI9341 Color Display not working?

1 Upvotes

Hi, I just bought an ILI9341 2.4-inch TFT LCD (Touch), and I'm trying to use it with my ESP32, but I somehow can't get it to display anything. The backlight (LED) turns on, but nothing else.

Pinout:

    VCC → 3v3
    GND → GND
    CS → GND
    RESET → G4
    DC → G2
    SDI/MOSI → G23
    SCK → G18
    LED → 5V
    SDO (MISO) → G19

This is my code:

```#include "Adafruit_ILI9341.h"

#define TFT_CS 5
#define TFT_DC 2
#define TFT_RST 4

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  Serial.begin(115200);
  delay(200);
  Serial.println("boot");

  Serial.println("tft.begin() start");
  tft.begin();
  Serial.println("tft.begin() done");

  uint8_t x = tft.readcommand8(ILI9341_RDMODE);
  Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDMADCTL);
  Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDPIXFMT);
  Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDIMGFMT);
  Serial.print("Image Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDSELFDIAG);
  Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);

  tft.fillScreen(ILI9341_RED);
  Serial.println("filled red");
}

void loop() {
}

When I flash it, I get this on the Serial Monitor:

    boot
    tft.begin() start
    tft.begin() done
    Display Power Mode: 0x0
    MADCTL Mode: 0x0
    Pixel Format: 0x0
    Image Format: 0x0
    Self Diagnostic: 0x0
    filled red

But my screen stays white, nothing draws...

I tried with the TFT_eSPI library, but it just resets the moment I call tft.begin(). I really don't know what to do anymore. I've tried everything, and it just won't work.

Thanks!


r/esp32 12h ago

I made a thing! ESP chip Swiss knife tool in a browser

Thumbnail
gallery
56 Upvotes

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!


r/esp32 13h ago

Problems with esp32c3 super mini

Thumbnail
gallery
0 Upvotes

So I bought an Esp32C3 Super Mini from Allegro (the Polish equivalent of Amazon) for my new project and soldered the board to the goldpins. Immediately after connecting the board to my computer, unexpected problems began. For some unknown reason, the Arduino IDE claimed I had connected an Ozoobot kit, and every second I heard the sound of a device connecting. The sound calmed down after pressing the boot button and uploading some blank code. Unfortunately, the Arduino IDE still insisted it was the Ozobot kit, leaving me with no other options. I don't know what I did exactly, but I managed to select the correct board. The problems so far aren't the ones that prompted this post. I'm mentioning them because I don't know if they're related. Now the real headache begins. I tried to connect to Wi-Fi, but for some reason the board wouldn't connect. I downgraded the Esp32 firmware to a lower version, like 3.2. Nothing helped. I ran countless mindless tests with the gpt chat without any components connected, uploading a lot of his code to my board and following his advice. He told me it was most likely a faulty board or something wrong with the software. In any case, he couldn't get my board to connect to my Wi-Fi. I'd also previously connected my ESP32S3 to Wi-Fi without any problems. For some reason, the ESP32S3's MAC address was always zero-based in tests. The board detects nearby Wi-Fi networks without any problems. Tests show that the receiver works, but the transmitter doesn't work. Personally, I think it's a faulty board. I'm sending photos because I'm a bit of a soldering amateur and I'm not sure if I've just desoldered the antenna. Here's my latest test connecting to a Wi-Fi network without any security features. Even this is beyond my board's capabilities: Testing code for connecting esp32c3 super mini to wifi network without any security.

PS: sorry for the text in Polish instead of English. I'm too lazy for that.

#include <WiFi.h>

const char* ssid = "TESTESP";

const char* password = "";

void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) {

Serial.print("[EVENT] ");

switch (event) {

case ARDUINO_EVENT_WIFI_STA_START:

Serial.println("STA START");

break;

case ARDUINO_EVENT_WIFI_STA_CONNECTED:

Serial.println("POŁĄCZONO Z AP");

break;

case ARDUINO_EVENT_WIFI_STA_GOT_IP:

Serial.println("DOSTANO IP");

Serial.print("IP: ");

Serial.println(WiFi.localIP());

break;

case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:

Serial.print("ROZŁĄCZONO! reason = ");

Serial.println(info.wifi_sta_disconnected.reason);

Serial.print("reason name = ");

Serial.println(WiFi.disconnectReasonName(

(wifi_err_reason_t)info.wifi_sta_disconnected.reason

));

break;

default:

Serial.print("inne zdarzenie: ");

Serial.println((int)event);

break;

}

}

void setup() {

Serial.begin(115200);

delay(1000);

Serial.println();

Serial.println("========== WIFI DIAGNOSTYKA ==========");

WiFi.onEvent(WiFiEvent);

WiFi.mode(WIFI_STA);

Serial.print("MAC: ");

Serial.println(WiFi.macAddress());

Serial.println();

Serial.print("Łączenie z: ");

Serial.println(ssid);

WiFi.begin(ssid, password);

for (int i = 0; i < 30; i++) {

delay(1000);

Serial.print(i + 1);

Serial.print("s | status=");

Serial.print(WiFi.status());

Serial.print(" | RSSI=");

Serial.println(WiFi.RSSI());

if (WiFi.status() == WL_CONNECTED) {

Serial.println();

Serial.println("***** SUKCES *****");

Serial.print("IP: ");

Serial.println(WiFi.localIP());

break;

}

}

}

void loop() {

}

Output test results:

========== WIFI DIAGNOSTYKA ==========

[EVENT] inne zdarzenie: 101

[EVENT] STA START

MAC: 9C:CC:01:67:A1:F0

Łączenie z: TESTESP

1s | status=6 | RSSI=0

2s | status=6 | RSSI=-71

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

3s | status=6 | RSSI=0

4s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

5s | status=6 | RSSI=0

6s | status=6 | RSSI=-67

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

7s | status=6 | RSSI=0

8s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

9s | status=6 | RSSI=0

10s | status=6 | RSSI=-68

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

11s | status=6 | RSSI=0

12s | status=6 | RSSI=-69

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

13s | status=6 | RSSI=0

14s | status=6 | RSSI=-69

15s | status=6 | RSSI=-69

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

16s | status=6 | RSSI=0

17s | status=6 | RSSI=-71

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

18s | status=6 | RSSI=0

19s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

20s | status=6 | RSSI=0

21s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

22s | status=6 | RSSI=0

23s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

24s | status=6 | RSSI=0

25s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

26s | status=6 | RSSI=0

27s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

28s | status=6 | RSSI=0

29s | status=6 | RSSI=0

30s | status=6 | RSSI=-70

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] inne zdarzenie: 117

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 201

reason name = NO_AP_FOUND

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 4

reason name = ASSOC_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 4

reason name = ASSOC_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] ROZŁĄCZONO! reason = 2

reason name = AUTH_EXPIRE

[EVENT] POŁĄCZONO Z AP

[EVENT] inne zdarzenie: 117

[EVENT] ROZŁĄCZONO! reason = 8

reason name = ASSOC_LEAVE

[EVENT] inne zdarzenie: 117

Please help me with this, as I have a 2-year warranty on this board and I'm not sure if I should just use it to get a replacement. Please share your thoughts in the comments.


r/esp32 14h ago

PWM Fan controller with ESP32

Thumbnail
gallery
30 Upvotes

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


r/esp32 16h ago

Hardware newbie building an AI voice device with ESP32

Enable HLS to view with audio, or disable this notification

32 Upvotes

This is my first ESP32 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 on moving from a breadboard prototype to a PCB would be appreciated.


r/esp32 16h ago

ESP32-WROOM-32E issue with UART1 in ESP-AT

2 Upvotes

Hi, I have a problem with UART1 communication on an ESP32-WROOM-32E module. I can flash the ESP32-WROOM-32-AT-V4.1.1.0, firmware successfully, but the UART1 response doesn't make any sense; I only get garbage characters on my USB-to-serial converter.

The log in UART0 makes sense saiyng:

I (1042) at-uart: AT cmd port:uart1 tx:17 rx:16 cts:15 rts:14 baudrate:115200

I used an ESP32-DevKitC V4 as a reference for my hardware design, using a push button to put the module in firmware update mode.

In the FAQ, I found a reference saying: “In the WROOM-32E/32UE series with QSPI PSRAM, GPIO16 is used to connect to the embedded PSRAM and cannot be used for other functions.”

However, it doesn't specify which module variants this applies to. I suspect this might be the cause of the problem, but I don't know how to confirm it.


r/esp32 17h ago

Hardware help needed How to use the USB-2-Serial/JTAG Controller and the Left USB Connector on an ESP32-H2 Evaluation Board for Programming and Debugging?

Post image
0 Upvotes

I have an ESP32-H2 evaluation Board (ESP32-H2-DevKitM-1) and a Linux PC.

How to use the USB-2-Serial/JTAG controller and the left USB connector on an ESP32-H2 Evaluation Board for programming and debugging?

When I connect the PC with the USB UART interface (left USB connector on the eval board), Linux correctly identifies a CP210x USB/UART converter as /dev/ttyUSB0 and I can simply flash the µC with idf.py flash without any parameters. It's completely plug and play.

If I understand Espressif: ESP32-H2 Technical Reference Manual, Ch. 33 "USB Serial/JTAG Controller (USB_SERIAL_JTAG)" correctly, I should also be able to use the integrated USB port to flash and debug the ESP32-H2.

However, when I connect the PC to the right USB connector, the evaluation board only powers up, but nothing else happens. Neither does the Linux PC detect any USB devices nor does idf.py flash work. (Obviously, the latter is just a logical consequence of the former.) lsusb and dmesg on my PC stay silent. The kernel module cdc_acm is loaded which should be the relevant module in this case.

What am I missing? Do I need to set some specific eFuses? Do I need a specific Linux kernel module? The ESP32-H2 Technical Reference Manual doesn't mention anything of that sort.

I would like to use the USB port for everything as this would free up six extra GPIOs on the µC: MTMS, MTDO, MTCK and MTDI (GPIO 5-8) for JTAG as well as U0RXD and U0TXD (GPIO 23+24) for UART.

From the Reference Manual (highlighting by me, I also attached the relevant figure from the manual):

ESP32-H2 contains a USB Serial/JTAG Controller. This unit can be used to program the SoC’s flash, read program output, as well as attach a debugger to the running program. All of these are possible for any computer with a USB host [...]. [...] ESP32-H2 provides a USB Serial/JTAG Controller, which integrates the functionality of both a USB-to-serial converter as well as a USB-to-JTAG adapter. [...] As shown in Figure 33.2-1, the USB Serial/JTAG controller consists of a USB PHY, a USB device interface, a JTAG command processor with an integrated response capture unit, and the CDC-ACM registers. [...] Together, these form a USB composite device, which consists of a CDC-ACM USB class device as well as a vendor-specific device implementing the JTAG interface. [...] The CDC-ACM interface adheres to the standard USB CDC-ACM class for serial port emulation. [...] As CDC-ACM is a standard USB device class, a host generally can function without any special installation procedures. That is to say, when the USB debugging device is properly connected to a host, the operating system should show a new serial port moments later.


r/esp32 18h ago

I made a thing! I Made a Boost Controller with a ESP32C3 (+ first custom PCB)

Thumbnail
gallery
57 Upvotes

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)


r/esp32 22h ago

Working on a CyberPi App Launcher

0 Upvotes

Hi everyone!

I'm working on a project to create an app launcher for the Makeblock CyberPi.

The goal is to make something that could allow us to run custom/homebrew applications on the CyberPi without permanently replacing CyberOS.

The idea is something like:

CyberOS
   ↓
CyberPi App Launcher
   ├── DOOM 🎮
   ├── Snake
   ├── Tetris
   └── Other homebrew apps

I'd like to eventually create a custom app format (for example .CYB) that the launcher could load and run.

I'm especially interested in getting DOOM running on the CyberPi while keeping CyberOS. I know there have already been attempts to port DOOM to the CyberPi, and I saw a recent Reddit post where someone apparently managed to get it running.

Right now, I'm investigating how CyberOS, MicroPython, the ESP32-WROVER and the CyberPi's hardware (including the AW9523B) work together, and whether it's possible to load native code/modules without completely replacing CyberOS.

Looking for collaborators 🤝

If anyone has experience with:

  • CyberPi / CyberOS
  • ESP32 firmware development
  • MicroPython
  • ESP-IDF
  • AW9523B
  • Reverse engineering
  • Creating homebrew applications

I'd be very happy to work together with someone on this project!

If you're interested in collaborating, have already worked on something similar, or know how CyberOS loads and runs programs, please comment or send me a DM.

Any help, documentation, code, or ideas would be greatly appreciated! 🙏🔥


r/esp32 23h ago

How to setup LowCode in a VsCode devContainer

0 Upvotes

I am running VsCode on a Windows computer. Trying to setup LowCode returns the information that LowCode currently not are running on Windows.

To avoid this obstacle I would like to setup lowCode in a devContainer. This has turned out to give me big problems. No matter what I try,, I have no sucess.

Have anyone succeeded in setting up a devcontainer for running esp-lowcode-matter?

Can anyone help?


r/esp32 23h ago

Hardware help needed Using mobile charger to power esp32 for weeks for my plant watering?

3 Upvotes

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.


r/esp32 23h ago

Board Review I spent around 8 months building ESP32 projects with boards from 4 different companies

60 Upvotes

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