r/esp32 • • 2h ago

I made a thing! ESP32S3 Graphics Accelerator Cluster

Thumbnail
gallery
8 Upvotes

ESP32S3 Graphics Accelerator

I’m working on a ESP32S3 cluster project. I’ve been really impressed with the S3 chip, after slowly moving from the arduino uno, to the ESP8266, to the ESP32C3, and finally the ESP32S3.

These two boards (ESP32S3, 4MB flash, 2MB psram), are currently working together. The main board is the controller, and receives scene instructions from my Raspberry Pi, along with running the display. The second board is the accelerator board. Only the main board has WiFi active.

In some circumstances, I’m able to get roughly twice the frame rates for math heavy scenes, but performance suffers in others. The bus link speed is only 2.37MB/s currently, which is the main limitation. I’m working on increasing the link throughput at the moment. As far as power consumption goes, it’s pulling 1.5w> for the entire setup.

So, current plans are to work on the bus / link architecture, and add in some more graphics scenes, for now! If I can get the link speed fast enough, I’d like to add some more boards into the cluster. Overclocking the accelerator board may help too, haha.


r/esp32 • • 2h ago

Hardware help needed Question About This esp32-s3 HMI display

Thumbnail a.co
1 Upvotes

Good day all.

I have been tinkering with ESP32s for a couple years now and have had my eye on this display

Before I purchase it, I’m wondering if anyone here has experience with this one or others like it. I’ve seen mixed reviews of it and just wanted to get some opinions before I purchase one.

I will be using it to control some custom lighting and other future projects.

Thank you!


r/esp32 • • 4h ago

I think I have a problem...

Post image
45 Upvotes

...It's that I don't have more.

Believe it or not, I have a project for every single one of these. The displays will be gifts for friends and family. With the atom lights, projects for around the house.


r/esp32 • • 4h ago

Hardware help needed Did I fry my MAX98357A? Getting static and buzzing from my ESP32-S3

6 Upvotes

Did I fry my MAX98357A? Getting static and buzzing from my ESP32-S3

Hello everyone,
I’m trying to get a MAX98357A I2S amplifier working with my ESP32-S3, but I’ve been having a lot of trouble figuring out what’s wrong.

# I’m using:

ESP32-S3
MAX98357A I2S amplifier
8Ω, 0.5W speaker
Arduino/PlatformIO

# My current wiring is:

DIN → GPIO 15
BCLK → GPIO 16
LRC → GPIO 17
VIN → 5V
GND → GND
SD → 3.3V
I’m testing it with code that generates a tone, but instead of a clean tone, I get static, buzzing, or silence. The behavior changes when I move or touch the wires, which makes me wonder if I also have a loose connection somewhere.

# A few things I’ve checked:

The speaker measures around 8Ω across its terminals.
The amplifier’s VIN-to-GND resistance is around 5 MΩ when disconnected.
There’s no continuity beep between VIN and GND.
The amplifier doesn’t seem to get hot.
I’ve tried different sample rates and checked the wiring, but I still can’t get a clean tone.
I only have this one amplifier, and I don’t have an oscilloscope or logic analyzer. I do have a multimeter.

# My questions are:

Is there any reliable way to tell whether I’ve damaged the MAX98357A without replacing it?

Can the reversed power connections cause this kind of behavior even if VIN and GND don’t appear shorted?

What should I test next before buying another module?

I’d appreciate practical troubleshooting advice. I don’t want to replace the module unnecessarily, but I also don’t want to keep changing code if the hardware is already damaged.
Thanks!


r/esp32 • • 7h ago

is it possible for developer to query the broadcasting sate in BLE mode directly by measuring the current passing via the radio-broadcasting part ( I guess it is a RAM address )?

1 Upvotes

when using ESP32, if programmer wanna check whether the ESP bluetooth is advertising or not, they have to check the existence of historical event like Advertise_Started / Advertise_Stoped which is generated by some function like startAdvertising() and stopAdvertising() .

but ,why we can't just check the current passing through the Radio Emitting Part inside of the chip and provide the developer some foolproof function like isBLE_Advertising() ?

is it just physically impossible or logically risk ?

and according to the answer of AI (not sure whether it s correct) :
because code made by developer is running at the CPU, but the fundamental function like connecting and advertising is executed in the co-processor ,and they communicated under HCI protocol ,
so ,the CPU sending the msg to the co-processor and ask "are you advertising " sounds very trouble (e.g. it may block the CPU ,and simultaneously interrupt the co-processor ), but ,
is it really physically impossible to just link a pin of CPU to the physical address inside the co-processor that indicating the current through the Radio Emitting Part ?


r/esp32 • • 8h ago

I made a thing! [OPEN SOURCE] Turned my ESP32 into a touch-capacitive polyphonic synthesizer: No more breadboard !

189 Upvotes

Hey everyone!

A while ago, I shared the first version of my TYPE-2 Synthesizer project. The goal was to build a studio-quality DSP audio engine using just an ESP32-S3 and some cheap components .

The feedback was amazing, but many of you pointed out that building it on a breadboard with capacitive copper tape and dozens of jumper wires was a bit of a nightmare for stability and I2S audio noise.

So I decided to go pro and designed a dedicated motherboard PCB in KiCad!

Everything is still 100% open-source (C++ source, KiCad files, and Gerbers are all up). You can find the full repo here:

https://github.com/Alxdreee/TYPE-2

I routed a 2-layer board that eliminates all jumper wires. It embeds the touch-sensing pads directly into the layout and provides a rock-solid ground plane for the PCM5102A DAC, completely isolating the audio out from the high-frequency digital noise of the ESP32.

(Fabrication note: These prototype printed circuit boards were manufactured by PCBWay, which is now sponsoring the project! The quality of the screen printing and the conductive traces proved to be flawless for this type of sensitive I2C routing.).

Thanks to the ESP32-S3’s native USB-OTG port, the synth is now a plug-and-play MIDI device. Even better: I wrote a Python bridge that lets you stream the 16-bit/44.1kHz raw PCM audio directly over USB to your PC speakers !

I swapped the old Moog ladder filter for a much more stable trapezoidal State Variable Filter (SVF) that handles extreme resonance without blowing up the DSP core. You can now save and load your custom patches (filter cutoff, overdrive, delay, analog slop) directly into the ESP32’s non-volatile memory via a dedicated OLED menu. Core 1 is still strictly locked to the DSP audio loop running at 44.1 kHz, while Core 0 handles the I2C OLED grid animations and the MPR121 capacitive touch pooling without causing a single audio dropout.

If you want to build one yourself, you can either grab the Gerber files and solder the modules onto the PCB, or stick to the good old breadboard prototype (I kept the wiring diagrams updated in the repo).

I’ve also updated the full step-by-step build guide on Instructables:

https://www.instructables.com/DIY-35-Polyphonic-Synthesizer-the-TYPE-2/

Let me know what you think of the new board and features! I’m still planning to design a 3D-printed enclosure next.


r/esp32 • • 12h ago

I turned the $5 “Cheap Yellow Display” (ESP32-2432S028R) into a self-running pixel aquarium — fork with a ~100-species reef guide, sharks, and a follow-cam

169 Upvotes

I turned the $5 “Cheap Yellow Display” (ESP32-2432S028R) into a self-running pixel aquarium — fork with a ~100-species reef guide, sharks, and a follow-cam

Posting a fork of the CYD aquarium (upstream: Lagerpun/esp32-cyd-aquarium, itself an adaptation of Livegrid OpenMatrix). It boots straight into an autonomous little pixel tank on the 2.8" ILI9341 — moving water, fish, turtles, snakes, octopuses, boids, plants, drifting food and a 12h clock — rendered with a dot-grid so it reads like a tiny LED matrix.

What this fork adds on top of upstream:
- ~100-species reef roster (SpeciesCatalog.h) with weighted spawn rates, family silhouettes and six size classes
- In-tank Reef Guide — paged and touchable, records which species you've discovered to LittleFS (/field_guide.json)
- Large fauna — sharks, whale sharks, reef mantas
- Tank camera — tap a creature to follow/zoom it, tap again to zoom out
- Panel fixes — TFT_INVERSION_OFF so colors read correctly on common CYD panels, and TOUCH_INVERT_X = true to fix the inverted XPT2046 X axis
- Manual backlight — touch the top strip (left dims, right brightens); auto-brightness from the GPIO34 light sensor still works
- Arduino core 3.x pinned via pioarduino so ledcAttach() PWM backlight works; safer 115200 upload baud for CH340 boards

Quick start (PlatformIO):
pio run -e esp32-2432s028r
pio run -e esp32-2432s028r -t upload --upload-port COMx

Wi-Fi is optional — NTP time sync when present, compile-time clock fallback otherwise. Docs cover hardware variants and troubleshooting.

Repo:https://github.com/francistse/esp32-cyd-aquarium (AGPL-3.0)

Only have the common ESP32-2432S028R to test against — happy for hardware reports on other CYD variants.


r/esp32 • • 13h ago

Hardware help needed Project Component

1 Upvotes

I want to create a portable device that tests optical, gas, and temperature values. I tried the image processing with a ESP32S3 N16R8 WROOM Cam but the frame rate is too slow and I am worried about the processing time if combined with the gas and temperature sensors. I am thinking of using a XIAO ESP32S3 Sense dedicated to image processing, while the ESP32S3 N16R8 focuses on the machine learning. I considered the Raspberry Pi modules but it's a little bigger and the power supply is a problem since I want it to be portable. Is this idea possible or is it too complicated.


r/esp32 • • 20h ago

CYD-white screen

1 Upvotes

Hey guys, I have a ESP32-2432S028R (Cheap Yellow Display). After getting it it worked for like 30 mins and then suddenly went white screen since then I’ve tried a lot of things and nothing worked, I tried to use a ultrasonic distance sensor and it showed the distance for less than a second and went white again. Static tests like showing a text does nothing. I’ve set different drivers but it doesn’t work, the serial monitor shows esp32 is booting fine, and since it showed the distance for even less than a second means the hardware is working properly. 

Can someone please help me ? I would appreciate it very much. Thank you.


r/esp32 • • 1d ago

Solved Setup an ESP32-S3 4" display on my inverter/battery backup

Thumbnail
gallery
52 Upvotes

Finally finished the status display for the inverter/battery backup I've been building. It's a 4" 480x480 ESP32-S3 panel, magnet-mounted to the front of the inverter, running ESPHome + LVGL and pulling everything live from Home Assistant. It shows combined SOC with a per-pack breakdown for my 10kWh bank (two 48V server rack batteries), along with solar production, net grid import/export, battery power in/out, inverter temp, and a big clock.

Also replaced the inverter's loud stock 92mm fans with a quiet 140mm Noctua. Home Assistant toggles it from a YoLink temp sensor. Went with YoLink because the steel chassis is basically a Faraday cage - WiFi doesn't get out, but LoRa does.

Happy to answer any questions if anyone's interested in this build.


r/esp32 • • 1d ago

GC9B72 screen stopped working on ESP32 after switching to jumper wires – backlight is on, but screen is blank

1 Upvotes

Hi everyone, I'm working on a digital gauge project using an ESP32 Devkit and a GC9B72 display, which is a bit uncommon but similar to the GC9A01 with a different driver. Yesterday, I wired everything up using raw copper wires and tested it with the LovyanGFX library. Everything worked perfectly-| started with a simple color loop and then uploaded code to display custom images for my gauge. Today, my new jumper wires arrived, so l disconnected the copper wires and rewired the board with the jumpers. However, when I powered it on, only the backlight came on while the display itself remained completely blank. I tried pressing the reset button and re-uploading the working code, but nothing changed. I then tried changing pins both in code and physically for signals like CS and DC, but still got no results. On a side note, whenever I tried assigning GPIO 2 to DC or CS in code, l got a compilation error like "exit status 2," (this didn't happened yesterday and it worked fine with the GPIO
2) though other pins compile fine. I checked the jumper wires for continuity and tested for short circuits both on the esp32 and the screen with a multimeter, (i also changed the esp32 with another one i had) and everything passed. I even inspected the board under a microscope to make sure there were no tiny pieces of copper or solder bridge, but it was spotless. Finally, I even tried going back to the original raw copper wires that worked yesterday, but the screen still stays blank while the backlight illuminates. Since the wiring tests fine and the backlight is on, I'm completely stuck and can't figure out why it suddenly stopped working. Has anyone experienced something similar or have any idea what might be going wrong? Thanks in advance for any advice!


r/esp32 • • 1d ago

I made a thing! Follow-up on the tiny ESP32 sports scoreboard I built

Post image
63 Upvotes

My first post about this got removed because it was basically “look at my thing” without enough of the actual ESP32/build details. Fair enough, so here’s a better explanation of what’s going on inside it.

This started because I wanted a little screen I could leave next to me during a game instead of checking my phone every few minutes. I used a LAFVIN ESP32-S3 board with a built-in 1.69” 240x280 ST7789 display.

I picked that particular board mostly because it already combined the ESP32-S3, display, USB-C and LiPo charging on one small PCB. I knew I wanted the finished thing to be tiny, so avoiding a separate display board and charging circuit made the physical build a lot easier.

The display is driven with Arduino_GFX using the ESP32 SPI/ST7789 drivers. I originally just needed something that worked reliably with this board and gave me direct control over drawing the scoreboard UI, and it has done the job well enough that I never had much reason to move to a heavier UI framework.

The device runs off an internal 3.7V LiPo. I designed the enclosure around the PCB and battery and went through several prints getting that right. The first one didn’t hold the board securely, I managed to put some of the button access on the wrong side, and there were a bunch of smaller clearance problems that only became obvious once I had the actual print in my hand.

On the software side, I decided pretty early not to have the ESP32 talk directly to every sports/fantasy API.

There’s an iPhone app that handles the API calls, authentication, fantasy roster logic, etc. It reduces everything down to the small amount of information the display actually needs and sends that to the ESP over BLE.

A typical game update is basically just league, away/home team, away/home score, status and clock. The ESP receives that, keeps track of the current game/league and renders it.

That split has worked pretty well because the ESP doesn’t need to know anything about whether the original data came from an NFL feed, fantasy provider, golf leaderboard, etc.

BLE caused more trouble than I expected once I started using the thing normally. I had to fix queue/race issues between received packets and the rendering/navigation side, and at one point USB logging itself could block long enough to interfere with navigation and BLE callbacks. Those are the kinds of bugs I never saw when I was just sending one test packet at a time.

At this point it can show live sports scores, fantasy football scoring alerts and golf leaderboards. The fantasy part is probably my favorite — the phone knows my roster, so instead of sending every event happening in every game, it can surface an update when somebody I actually have scores.

I’m also experimenting with adding Wi-Fi as an alternate mode. I still don’t really want the ESP handling provider APIs and credentials itself, so the direction I’m leaning is having it connect to a backend that sends the same sort of small normalized payloads the phone does now. Bluetooth would still be there for people who want the phone-driven version.

Firmware and the current enclosure .3mf are here:

https://github.com/againstthespread/scrbrd

iPhone app:

https://github.com/againstthespread/scrbrd-mobile

There’s still plenty I want to clean up, but it has crossed the line from “prototype I can make display a score” to something I can actually leave running and use.

If anyone sees something in the ESP/BLE architecture that you’d have approached differently, I’m definitely interested. This project has mostly been me finding the next thing I didn’t know I needed to learn. Thinking about adding a wifi option for anyone wanting to keep it on their desk/in the same place instead of taking it with them.


r/esp32 • • 1d ago

Esp32 stopped working and I found short between 3v3 and gnd so is it dead?

4 Upvotes

Hello everyone!

So I was working on motor controller using esp32, l298 motor driver, 7.4V ( 2 li 18650 batteries) and buck converter I made to supply 5v to esp

Project is motor controller via wifi, it was working fine and suddenly I get no WiFi from esp32 so I unplugged the batteries Gnd of esp32 and kept the rest (motor driver in1,in2 and enB)

Tried connecting it usb and still doesn't work but noticed that the micro processor chip was heating a bit so I unplugged everything and connected esp32 to USB alone then I noticed voltage regulator was really hot, removed everything and talked to chat got which suggested checking resistance between 3v3 and Gnd which was very low then used the diode test and it was a short circuit so my questions

1- what was the cause of that?

2- is it dead?


r/esp32 • • 1d ago

I made a thing! Quake, Quake II, Command & Conquer, Duke3D ported to ESP32-S3

69 Upvotes

Videos:

Quake 2: https://streamable.com/w3ra8l

Command & Conquer Red Alert: https://streamable.com/ug41o9

Github:

https://github.com/recrof/Quake-ESP32S3

https://github.com/recrof/Quake2-ESP32S3

https://github.com/recrof/Duke3D-ESP32S3

https://github.com/recrof/CommandConquer-ESP32S3

Games are mostly working on Seeed Studio Tracker L2 Pro and LilyGo T-Deck, but other (dyi) boards can be easily added


r/esp32 • • 1d ago

HELP WITH BATTERY CHARGING PADS IN ESP32 s3 super mini

4 Upvotes

Hi guys so basically im building something and i i have this esp 32 s3 super mini and it has battery pads named "B+" and "B-" behind it ... one small question i have is that if i connect the battery directl y into the pads then i can charge it with the esp's own usb .... but chatgpt is not particularly good with answering this and i dont see proper docs with this ... im in the software industry and tracking the pin and battery circuit diagram for this board is too tough of a process for me rather ask to the "WISE PEOPLE OF REDDIT" so pls . help me yalllll .


r/esp32 • • 1d ago

Has anyone ever experienced ghost taps/swipes on a Waveshare touch screen?

Thumbnail
gallery
1 Upvotes

I have this: https://www.waveshare.com/esp32-touch-lcd-3.5.htm

I've delevoped a small product on it that has buttons you can touch and screens you can swipe through.

During my testing I thought I was going crazy in that screens appeared to change by themselves. I asked Claude Code to spin up a test rig which it's run over the last two nights, unattended, for seven hours each and lo and behold it's finding both swipes and touches are happening whilst I'm asleep.

What's strange is they all fit within the 150-160 pixel range in the vertical direction (bars on the right), and seem to be concentrated in two patches to the left and the right of the screen (bars at the top).

Coincidentally (or maybe not) if you draw an imaginary line through the USB port it appears to fall exactly on this "ghost line".

Has anyone ever experienced this and/or have a fix? Is this just hardware noise you have to come to expect with these boards?


r/esp32 • • 1d ago

Software help needed ESP32-S3+Arduino error messages: Where?

3 Upvotes

I am going through the tutorials for the Freenove board described in my first post, and have encountered a run-time error. I would like to look up the error message myself, but I cannot find a manual for the Arduino IDE and e-mail to the address [support@freenove.com](mailto:support@freenove.com) gets refused as spam!

The particular tutorial is for manipulating an SD card. On running the sketch, I get the following message in the Serial Monitor:

E (3206) vfs_fat_sdmmc: mount_to_vfs failed (0xffffffff).
Card Mount Failed
mkdir failed
Failed to open file for writing
Failed to open file for appending
Failed to open file for reading
�Rename failed
Failed to open file for reading
�
SD card info:
Total space: 0MB
Used space: 0MB

The error presumably comes from the line of code

// Initialize the SDMMC interface with the specified pins
sdmmc_init(SD_MMC_CLK, SD_MMC_CMD, SD_MMC_D0, SD_MMC_D1, SD_MMC_D2, SD_MMC_D3);

The pins are #defined as

SD_MMC_CMD 40
SD_MMC_CLK 38
SD_MMC_D0  39
SD_MMC_D1  41
SD_MMC_D2  48
SD_MMC_D3  47

(If I leave the define in front of one of these, "Clippy" gets in the way and won't allow me to post.)

My question is, where do I look up that error number to see what is being complained about???


r/esp32 • • 1d ago

My first electronics project, building a little AI robot from scratch

0 Upvotes

Hi everyone!

I recently started my very first electronics project with absolutely no prior experience. I'm using an ESP32-S3 along with a small display, an INMP441 microphone, a MAX98357A amplifier, and a speaker.

I've managed to put everything together, and so far, everything is working! The display, microphone, and speaker are all up and running. I'm honestly surprised I got this far as a complete beginner.

My goal is to turn this little setup into a talking AI robot that can have conversations, respond with a voice, show expressions on its display, and maybe even have its own personality.

Now I'd love to hear your advice!

Would you recommend running the AI locally/offline or connecting the ESP32 to an online AI API?

I'd also appreciate any tips on how to approach the next steps, what technologies I should look into, and what challenges I might run into.

I'm still learning everything from scratch, so even basic advice would be really helpful.

Thanks! I'd love to hear your thoughts and learn from your experience.


r/esp32 • • 2d ago

Esp32 Agent Harness

Thumbnail
gallery
24 Upvotes

I built an agent chat interface into ESP32. It has tools and functions connected to it. So you can plug things in and ask questions. It's designed to be as a starting point for your projects. I can't do electronics anymore my eyesight isn't what it used to be. But I think ESP32 is great.

https://github.com/8perezm/esuyo-esp32-agent


r/esp32 • • 2d ago

Support for developing Yamaha ECU applications on ESP32

Thumbnail
gallery
3 Upvotes

Hello everyone. I am currently working on a project to read data from a Yamaha motorcycle ECU. I’ve spent a week trying to figure out the exact method to "wake up" the ECU—specifically the wake-up frame/code and the data request frame—but I haven’t had any success yet. I don’t have access to any professional debugging tools, so I’ve been relying on research and reference materials.

The ECU is from a 2017 model; I’m still investigating whether it uses the K-line protocol based on ISO 9141 or KWP2000. I’m posting this in hopes of getting some help. Below, you can see the hardware setup I’ve been using for some of my other projects.

Everything is running on an ESP32, and I’ve already built an interface, but I haven’t been able to get the data to load into it yet. :((


r/esp32 • • 2d ago

I made a thing! Ghost triggers - ESP32 PC power controller

2 Upvotes

I got tired of dealing with flaky Wake-on-LAN packets and smart plugs doing dirty shutdowns, so I built a small, fully isolated remote power and reset controller for my PC using an ESP32-C6-Zero and ESPHome.

It plugs directly into the motherboard's front-panel header (⁠F_PANEL⁠) and gives me reliable power-on, soft shutdown, 5-second forced power-off, hardware reset, and live power status inside Home Assistant - so I thought…

I built an optoisolated PC power switch for Home Assistant using a Waveshare ESP32-C6-Zero and LTV-816S optocouplers connected to the motherboard front panel ⁠PWR_SW⁠ header.

The issue: The PC randomly powers on or triggers a shutdown signal without any command sent from Home Assistant. It happens sporadically (sometimes seconds apart).

Current setup:
• MCU: ESP32-C6-Zero powered via 5VSB internal
USB header.
• Optocoupler: LTV-816S. ESP32 GPIO -> 330 ohm resistor > Optocoupler Pin 1 (Anode). Pin 2 (Cathode) to ESP GND.
• Motherboard Side: Pin 4 (Collector) to Motherboard PWR_SW (+), Pin 3 (Emitter) to Motherboard PWR_SW (-) / GND .
• Firmware: ESPHome with a standard GPIO momentary pulse output.

What I've already tried:
• Added a current-limiting resistor directly after the
ESP32 GPIO pin (in series to the optocoupler anode).
• Added a resistor directly before the
motherboard PWR_SW connection to limit leakage current / dampen ringing.
• Neither stopped the sporadic random triggers.

ESPHome snippet:

esphome:
name: pc-power-controller
friendly_name: PC Power Controller

esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf

# Optocoupler triggers
output:
- platform: gpio
id: pwr_switch_pin
pin: GPIO2

- platform: gpio
id: rst_switch_pin
pin: GPIO3

# Momentary controls exposed to Home Assistant
button:
- platform: template
name: "PC Power"
icon: "mdi:power"
on_press:
- output.turn_on: pwr_switch_pin
- delay: 350ms
- output.turn_off: pwr_switch_pin

- platform: template
name: "PC Hard Power Off"
icon: "mdi:power-off"
on_press:
- output.turn_on: pwr_switch_pin
- delay: 5500ms
- output.turn_off: pwr_switch_pin

- platform: template
name: "PC Reset"
icon: "mdi:restart"
on_press:
- output.turn_on: rst_switch_pin
- delay: 350ms
- output.turn_off: rst_switch_pin

# Reads motherboard PWR_LED state
binary_sensor:
- platform: gpio
pin:
number: GPIO4
mode: INPUT_PULLDOWN
name: "PC Power State"
id: pc_power_state
filters:
- delayed_on: 100ms
- delayed_off: 100ms

What I'm wondering:
1. Could the ESP32-C6 GPIO be floating or pulsing
HIGH during an unlogged Wi-Fi reconnect or silent brownout reset?
2. Does the optocoupler anode need an explicit pull-down to GND (rather than just an inline series resistor to drain capacitive noise/EMI?
3. Are there specific GPIO strapping pin glitches on the
ESP32-C6 that default HIGH on boot/sleep wake?
Has anyone run into this with optocouplers on PC motherboard headers, and what was the actual fix?
Thanks!


r/esp32 • • 2d ago

PELLETINO 2: 27 arcade games on a $20 ESP32-C6, including an emulated Street Fighter II

109 Upvotes

The original PELLETINO only played PacMan. I'm pleased to announce version 2.xx, which has grown by quite a bit.

It's a launcher for the Waveshare ESP32-C6-LCD-1.69. You get a wheel of game logos with a screenshot behind each one. Tap to spin, hold to pick, and it boots straight into that game from then on. You play by tilting the board, since the accelerometer is the controller. No SD card, no PSRAM, just the 16 MB of flash on the board.

The lineup is 27 games: Pac-Man, Ms. Pac-Man, Galaga, Galaxian, Space Invaders, Donkey Kong, Mario Bros., Frogger, Dig Dug, Mr. Do!, Burger Time, Root Beer Tapper, Joust, Moon Patrol, Rally-X, Centipede, Missile Command, Asteroids, Tempest, Lunar Lander, Gyruss, Time Pilot, Arkanoid, Pole Position, Star Wars, Empire Strikes Back and Street Fighter II.

PR's are welcome if you want to add your own favorite game.

How it works:

- Every game is its own firmware. Each one sits in its own flash slot and the launcher chain-boots it, so a game gets the whole chip while it runs. Hold the middle button five seconds and you're back at the menu.

- ESP-IDF allows 16 app slots. That makes the limit 17 games per build, because Pac-Man and Ms. Pac-Man share one image. You pick which ones go on.

- Everything is generated from the ROMs you have. The partition table, the artwork and the menu all come out of that. Drop zips in `roms/`, run `./install.sh`, and it builds and flashes the lot.

- Plus the stuff that makes it feel finished. There's an attract mode when nobody's touching it and high scores that survive power-off. The screen dims instead of turning off, and there are three volume levels.

Street Fighter II was the hard one. For a long time it was just a video of the attract mode, because I figured a CPS-1 on this chip was out of reach. Turns out it isn't, mostly.

- It's a lot of machine. A 10 MHz 68000, a Z80 for sound, a YM2151, an OKI MSM6295, three tile layers and 256 sprites. All on one 160 MHz RISC-V core with 512 KB of RAM.

- Musashi wanted 576 KB of RAM just to start. That's its opcode tables, which it builds at boot, and it's more RAM than the board has. I worked them out at build time instead and packed them into 30 KB, mostly in flash.

- The 68000 spends most of its time waiting. Skipping the game's idle loop took the 68000 from 671 ms of every second to about 300. Putting the 147 instruction handlers the game actually uses in RAM got the rest.

- The ROM is 7.6 MB. It gets read in place from its own flash partition, memory mapped. The C6 can only map 8 MB at once, and that has to include the program. So everything that has to be mapped goes first, and the sound samples come after and get read as needed.

- RAM is still tight. The machine's own work RAM and graphics RAM are 256 KB together. With sound on there's about 45 KB of heap left. Moving the Z80 core into RAM would have helped, but then the graphics RAM doesn't fit. It was short by 4 KB.

- Sound is the expensive part. With sound off it holds full speed easily. With sound on it draws 1 frame in 4 and runs at 99% of real time at 11 kHz. Even reading the accelerometer cost 84 ms a second, so SF2 doesn't read it.

It runs its attract mode. The top button drops a coin and the middle button is a jab, but a six-button fighter isn't happening on two buttons and a tilt sensor. It's a showpiece. I measured all 56 combinations of video mode, frame skip and sound on the board, and they're all in the project's README if you're into that.

The catch is flash. That 7.6 MB partition means a build with SF2 fits about 13 games instead of 17. Mine has Ms. Pac-Man, Pac-Man, Donkey Kong, Galaga, Star Wars, Frogger, Centipede, Burger Time, Joust, Pole Position, Dig Dug, Mario Bros. and Street Fighter II.

Why would I put Street Fighter II on this medal if it's attract-mode only? Cause it's awesome, that's why. Also, this is meant to be a wearable first, so something just for looks fits into the mission statement nicely.

No ROMs, artwork or music are included, you bring your own. The code written for it is 0BSD, but most games use a non-commercial Z80 core, so the bundle is free to share and not to sell.

Repo: https://github.com/aedile/PELLETINO


r/esp32 • • 2d ago

Hardware help needed EC11 encoder outputs stuck low

0 Upvotes

Hi all, I've been fighting a rotary encoder problem all day and I'm running out of ideas.
I'm using an ESP32-C3 SuperMini on a custom PCB with a brand new EC11 from AliExpress. A and B each have a 10k pull-up to 3V3, with no series resistors or caps, and I'm just reading them with digitalRead().
Originally A was on GPIO1 and B on GPIO0, and I made the dumb mistake of wiring the pull-ups to 5V instead of 3V3. B seemed fine, but A got stuck low and sometimes flipped between 0 and 1 without me touching anything. So I cut the trace to GPIO1 and moved A to GPIO21, which had never been used before. It worked for about 5 minutes and then got stuck low again. Now B is dropping too: its idle voltage went from 3.3V to 2.1V and then 1.6V.
What's weird is that everything looks fine with the board off, so I suspect something that only leaks when it's powered. Here's what I measured:

Board powered, encoder idle:
3V3 rail: 3.3V
A (GPIO21): ~0.6V
B (GPIO0): 1.6V (it was 2.1V earlier)

Board off:
A to GND: OL when idle, short when turning
A to 3V3: 10k when idle, ~4.9k when turning
B behaves the same way

No bridging between pins, no visible flux, and the old GPIO1 trace is cut and reads OL to A
My guesses are a bad encoder contact or damaged pins from the 5V mistake, but GPIO21 never saw 5V, so I'm not sure. Tomorrow I'll desolder just the encoder's middle leg to see if A and B go back to 3.3V.


r/esp32 • • 2d ago

You're maker, you like iot but powering your project is THE problem ?

0 Upvotes

Well all know deep sleep method with uc.

But reality is not the theory! Few mA when sleeping, depending on the board design.

I published a first post a few hours ago.

And if, together, we could find your solution for your problem?

What is your project? What would you like to do exactly?

Monthes on a single 18650... It can give other perspectives...

Let's talk about it?

https://www.youtube.com/@Enduro-ioT


r/esp32 • • 2d ago

Hardware help needed Issues getting thermal printer to print TTL on my esp

Thumbnail
gallery
43 Upvotes

Hi! I was inspired by the thermal printer projects on here and bought one on Ali Express. It was advertised as a TTL connection, along with RS232 and USB. I am able to power the printer, print the test page, print via USB, but NOT print via TTL connected to my ESP32. I have used a multimeter and confirmed the wires are making connection to the printer, and that voltages are ok. I have tried looking up code from online and Claude (to see if its a software issue) and it still wont print anything. Any help would be appreciated! I am concerned that when the test page printed, it says Interface USB&RS232, and not TTL? weird. Defected printer maybe?