ESP32 S3 Arduino IDE

I’m planning to use a ‘bare bones’ ESP32 S3 in a project. Why the S3? primarily space constraints. The S3 has a native USB interface and I don’t need all the bells and whistles from a DEV board. I’ve read older posts about issues programming the S3 using the native USB port, which got me a bit concerned. Should I be worried or is it just as straight-forward as working with the old DEVKIT board (which I’ve been using for quite some time for prototyping) ?

In the list of boards in the IDE (V 2.3.8) is see ‘ESP32S2 native USB’, but no ‘ESP32S3 native USB’. I suppose that’s what I need? There is an ‘ESP32S3 DEV module’, which - I assume - is the same thing as a ‘bare bones’ S3, but mounted on breadboard-friendly hardware…

What are my options?

And which does have a USB socket on it.

It should be as straight forward, (mind you i don't own one) but with the USB connector missing you may run into something related to that.

What do you mean 'bare bones', the SoC or a module?

I understand. The plan is to use a separate PCB with a USB connector and 2 buttons for RST and BOOT (although I don’t think I’ll need teh BOOT btn, but just in case…) and connect that to my project board using a very small JST-type connector during programming and debugging.

Something like this:

Space is very limited, so the USB connector has to be ‘detachable’.

I don't think you need the reset button either but if it's detachable, i don't think it matters much.

For prototyping i would just use an old USB cable left-over with a USB-A plug and a 3.3v regulator with capacitors.

Mind you, the big tab at the bottom of the ESP is should also be connected to the heatsink, though i think if it's not covered by another PCB it is also OK.

If you gently solder the wires to the top of the pins of the ESP, you should be able to remove them easily enough and re-use the unit once you have decided on the design of the PCB.

probably a better (less flaky) way would be to use one of these

It should fit in there and give you good access to the pins (with i think the exception of GPIO 41 and all the pins on the back edge) and has a 3.3v regulator on there.

If i compare with the ESP32 pinout

, the GND, RST, EN pins are on the same pins and even the default pins for UART0 and connect to a USB to TTL.

Since that is a solderless option, i guess that would be preferred. Please do keep in mind that if you do get one, the marking on that 'shield' for the antenna is somewhat confusing. It refers to the placement of an ESP8266. The ESP32 should be placed in the same direction with the antenna facing in the opposite direction of the USB plug.

Again you can just solder some male header pins to a USB plug and plug into the corresponding female pins.
Make sure the spring pins are properly making contact and are not shorting with each other, they are really close to each other on the ESP32 header.

n.b. i did modify my version a little removing the automated boot mode upload function (by removing 1 of the transistors) because it was interfering with the upload of one of the boards, but since you are intending to use the USB+- pins for uploading that may not be really relevant. Also i added a couple of LED + resistor combos.

Everything should be debugged and tested before you even think about programming your little board.

I would connect the Reset, Boot, Rx and Tx and ground to the jst connector and use a simple external USB-UART bridge, like a FTDI board for programming.
Forget about USB, why complicate things.

Thanks for the advice. I have an S3 DEVkit coming my way, just to make sure the chip behaves the way I expect before I spend time and money on a custom PCB.

As I recommended

Everything should be debugged and tested before you even think about programming your little board.

Have you ever made a PCB before?

These Flexy Pin adaptors are handy for programming modules with castellated edges.

You need USB-CDC mode on boot.

You can use built-in function esp_rom_printf() if you are writing code for a bare metal. This function outputs to USB when in USB-CDC mode.

The devkit may not behave exactly the same as a barebones chip. To make sure that does, you need to make a prototype with a barebones chip (or somehow have it on a breadboard)

looks the same as the ESP32-S3 Devkit I have
I have managed to implement

  1. USB device - serial and composite device
  2. USB Host - Keyboard, Mouse and serial

what is your requirement USB device or Host?

Its not a barebones chip. Its a module (see pic in previous post).

I don’t really care. At least programming using Arduino IDE and serial comms using (preferably native) USB and minimal component count. I expect that the native USB on the S3 does all that. I understand that an FTDI programmer takes care of that using the UART on the S3. I want to explore how far I can get with native USB (similar to Teensy, isn’t it?).

So your program does not use USB, so why bother with it?
Why make things more complicated?

post #4 ? i call that a barebones chip. I haven't found anything more barebones than that for an ESP32-S3

Native USB is native USB, that means it can act as a USB device for MIDI, CAM ? , Mouse, keyboard Joystick etc.

But the question is really what to you want to actually do with it.,

I don't really care either what you want to do with it.