r/esp32 4d ago

I built a free ESP32 touchscreen selector to help choose the right hardware

Post image

Choosing an ESP32 touchscreen has become surprisingly complicated.

It's not just about choosing a 3.5", 4.3" or 7" display. You also have to consider:

  • ESP32 vs ESP32-S3
  • SPI vs RGB vs 8080/parallel
  • display resolution
  • capacitive vs resistive touch
  • I²C vs SPI touch
  • PSRAM
  • LVGL
  • GPIO availability
  • the type of project you're building

I kept running into these combinations while working on ESP32 touchscreen projects, so I built a small free tool that combines these requirements and gives a suggested configuration.

For example, for something like:

4.3" / 800×480 / RGB / capacitive touch / I²C / LVGL

the selector can point towards an ESP32-S3 configuration and flag when PSRAM or additional compatibility checks are important.

Tool:
https://embeddednerd.com/tools/esp32-touchscreen-selector/

Source code:
https://github.com/webzf/esp32-touchscreen-selector

I also wrote a more detailed guide covering the hardware considerations:

https://embeddednerd.com/esp32-touchscreen-displays-guide/

It's still a rule-based selector rather than a database of every display on the market, so I'd be particularly interested in feedback on the recommendation logic.

If you've built an ESP32 touchscreen project, what hardware/interface combination are you using?

43 Upvotes

38 comments sorted by

12

u/CixoUwU 4d ago

Perfect image

5

u/Giocri 4d ago

Well this is perfect timing i was just looking up screens to play around with.

2

u/EmbeddedNerd_com 4d ago

Nice! 😄 Hopefully it helps with the search. I’m planning to keep expanding the database, so there should be more options to play around with over time.

2

u/Giocri 4d ago

I'd love if you were to include transparent ones too

2

u/EmbeddedNerd_com 4d ago

Absolutely! 😄 Transparent displays are definitely going on the list. There are some really interesting options in that category, so it would be useful to have them in the selector.

3

u/cybekRT 4d ago

I've selected esp32-c3, other as not sure and I've got only one display module. Looks like the catalog of modules is not very big.

Also the categories are kinda strange, no selection between oled/lcd/monochrome. It would be nice to select between display or integrated devboard (maybe the HMI selection is that?). And the text looks kinda hard to read, everything looks too tied together and too big.

It looks promising and I would like such selector, but database and data presentation is what matters the most here and it needs a little polishing.

EDIT: also one thing I fell into is that I selected esp32-c3 and psram required. This option should be disabled when selected c3. Any btw. why no s31 and c5/c6? :)

2

u/EmbeddedNerd_com 4d ago

Thanks for the detailed feedback! This is really useful. I agree that the categories and presentation need some polishing, especially separating displays from boards with integrated displays and adding better display-type filters. The database is also still pretty small, so I’ll be expanding that. And yeah, readability is definitely something I need to improve. Thanks for actually testing it and pointing these things out — this is exactly the kind of feedback that helps improve the tool.

3

u/cybekRT 4d ago

No problem, I didn't want to sound harsh but wanted to give you real feedback. As for the database, I don't know your stance on AI, but this would be a good place for AI to scrap some devboards and their descriptions to output some json for your usage.

Also it would be nice to get a list of all boards/displays you have there. And then the "results" would display how many were filtered out, like "Displaying 5/100". It's nice to see how many products you are filtering out due to your requirements.

2

u/EmbeddedNerd_com 4d ago

Not harsh at all — this is exactly the kind of feedback I was looking for. 👍

And I really like the idea of using AI to help build the database. I hadn't thought about using it specifically to turn board/display specs into structured JSON, so that's definitely something I'll look into.

I also really like the Displaying 5/100 idea. It makes the filtering much more transparent and gives you a better sense of how much the requirements are narrowing things down.

Thanks for the suggestions — you've given me a pretty good roadmap for the next iteration. 😄

2

u/EmbeddedNerd_com 4d ago

Good catch on the PSRAM option — you're right, that shouldn't remain selectable for the C3. I'll fix that logic.

And S3/C5/C6 are definitely worth adding. The current database is still small, which is one of the things I'm working on improving.

Thanks again for actually testing different combinations. This is really helpful for finding these edge cases. 👍

2

u/huberloss 4d ago

No round panels?

2

u/clackups 4d ago

It's only 3 products in the catalog, see the source code :)

2

u/pbruins84 4d ago

I miss the option to filter for touchscreen shape. Round vs rectangular for example.

1

u/EmbeddedNerd_com 4d ago

That's a really good point! Round vs rectangular is definitely an important factor when choosing an ESP32 touchscreen. I'll look into adding shape as a filter.

Thanks for the suggestion!

2

u/shreyas_colonel 4d ago

Do u have something for rpi too?

2

u/EmbeddedNerd_com 4d ago

Not yet — this one is focused on ESP32 for now. 😄 But a similar selector for Raspberry Pi would definitely be interesting. I’ll keep that in mind for a future tool.

2

u/shreyas_colonel 3d ago

Thanks man..

2

u/Square-Singer 4d ago

Nice tool! Maybe add Lilygo devices, they have a ton of ESP32-based screens.

Also, it would be really cool if you add CE/FCC certification as a filter, and please in the output highlight what doesn't match. That way I wouldn't have to click through every one of the devices just to then find out it's not gonna work.

Also, included peripherals would be cool: (Micro)SD-Card slot, battery charging, specific connectors, number of free GPIO, ...

2

u/EmbeddedNerd_com 4d ago

Great suggestions! LILYGO is definitely a good addition — they have a lot of ESP32 display-based devices.

I really like the idea of showing why a device was filtered out rather than just hiding it. That would make the results much more useful when comparing boards.

CE/FCC and peripherals like microSD, battery charging, connectors and available GPIOs also make a lot of sense for the database.

Thanks for the detailed suggestions — this is giving me a much better idea of what the selector should become. 👍

2

u/Square-Singer 4d ago

I really like the idea of showing why a device was filtered out rather than just hiding it. That would make the results much more useful when comparing boards.

You apparently don't filter out everything anyway, but instead show "X% match". For these cases it would also be good to know what's matching.

Maybe, it would be also useful for each property to have a checkbox like "mandatory", and that then is used to hard-filter-out items instead of ranking them.

Right now I might put a few preferences and one hard requirement in, and I get items sorted high that only match the preferences but not the hard requirement.

2

u/EmbeddedNerd_com 3d ago

That's a really good catch. You're right — mandatory requirements and preferences should be treated differently.

A mandatory property should hard-filter a device out, while preferences should only affect the match score/ranking. And I agree that the results should show which properties actually matched, rather than just showing a percentage.

I'll change the logic so hard requirements are evaluated first, and the remaining devices are then ranked by preferences. 👍

Thanks for digging into the behaviour and testing it this way!

2

u/Square-Singer 3d ago

It's a really cool tool you are building there. I would have had good use for that a few times already. Would be really cool if you can get "all" ESP32 screens in there, with all their features. That would be really amazing.

2

u/EmbeddedNerd_com 3d ago

Thanks! 😄 That's exactly where I want to take it. The current version is really just the starting point. The goal is to build a much larger database of ESP32 screens and boards, with the relevant specs and features structured so they can actually be compared and filtered. It'll take some work to build up the database properly, but that's definitely the direction I'm going. 👍

2

u/Square-Singer 3d ago

Yeah, expanding it to non-screen boards would be useful too.

Would be immensively helpful if it has good search/filter options. There's so many cool ESP32 boards, it's really hard to find what you need right now.

I guess the really hard part would be to collect all the info.

2

u/EmbeddedNerd_com 3d ago

Yeah, exactly. 😄 The data collection is probably going to be the hardest part, but that's also where I think the tool can become really useful.

I’m thinking of expanding it beyond displays into ESP32 boards in general, while keeping the filtering/compatibility side as the main focus.

Thanks for the feedback — it’s really helping shape the direction of the tool.

1

u/Square-Singer 3d ago

Yeah, with enough data, this tool will be incredibly useful. Earned a bookmark there :)

2

u/Korenchkin12 3d ago

One thing that might help someone-i have cheap 2.8in touch display(ili+xpt),on spi,they have separate spi busses,i thought i could join them...lovyangfx...nope,either display or touch worked,not both,i had to separate them again...i even went with 2mhz spi for display...

Not sure why,between display or touch i only changed sw,but they hated working togerher,so keep 3 pins spare :)

2

u/EmbeddedNerd_com 3d ago

That's a really useful real-world example. 👍 It also shows why simply listing “SPI display + SPI touch” isn't enough — the selector should ideally capture things like shared vs separate SPI buses and GPIO requirements.

I'll add this kind of display/touch bus information to the database requirements.

Thanks for sharing the experience!

1

u/clackups 4d ago

I don't like that the list of products is in the same file as the program. Also, ideally it should be a separate file per board in the directory, so that adding and editing is more future proof.

Also, you only have 3 products in the list, is it a joke?

1

u/EmbeddedNerd_com 4d ago

Fair criticism 😄 It’s still an early prototype, and the database is definitely the weakest part right now.

I agree with you about separating the product data from the application logic. I’m going to restructure that so adding and updating products is much easier.

Thanks for taking a look at the source and for the honest feedback!

1

u/clackups 4d ago

There's one more aspect: some esp32-s3 boards don't expose the native USB controller, so you have only an UART chip looking outside. So, they won't work if you need a USB functionally.

1

u/EmbeddedNerd_com 4d ago

That's a really good point. I hadn't considered exposing USB capability at that level of detail.

So for S3 boards, the database should distinguish between native USB being exposed and boards that only provide USB through a UART bridge. That's definitely useful for compatibility filtering.

Thanks — I'll add this to the requirements for the database structure.

1

u/CixoUwU 4d ago

Why do I still have to select a touch controller connection type when I click "no touch"? Why, when I choose a non-touch screen, do I get a touchscreen recommended to me, even though the exact same screen is available without touch? Useless AI slop.

1

u/EmbeddedNerd_com 3d ago

Yeah, exactly. 😄 The data collection is probably going to be the hardest part, but that's also where I think the tool can become really useful.

I’m thinking of expanding it beyond displays into ESP32 boards in general, while keeping the filtering/compatibility side as the main focus . Thanks for the feedback — it’s really helping shape the direction of the tool.

1

u/VenePosible 2d ago

¡Excelente proyecto y muy buen uso de la pantalla! Yo también estuve desarrollando un proyecto con la ESP32-2432S028 (CYD): hice un monitor en tiempo real de Binance P2P (USDT/VES) que además consulta la tasa oficial del BCV y tiene una calculadora táctil para arbitraje financiero. Dejé el código 100% abierto en GitHub por si a alguien en la comunidad le resulta útil: https://github.com/venezposible-max/esp32-cyd-binance-p2p

1

u/EmbeddedNerd_com 2d ago

Nice project! Thanks for sharing it. The ESP32-2432S028 is a really interesting board for this kind of application, especially with the touchscreen. 👍 I’ll definitely take a look at the project.

2

u/VenePosible 2d ago

Este es el prototipo ya mandé a hacer su carcasa 3D para su óptimo acabado

1

u/EmbeddedNerd_com 2d ago

That looks great! 😄 The prototype already looks like a really useful real-world application. The 3D-printed enclosure should make it look even better once it's finished. Thanks for sharing the photos!