Confused: Usable pins on ESP32-POE-ISO-WROVER-EA? (Also, board type for ESPHome)

Started by ethanjrt, January 31, 2025, 07:46:37 PM

Previous topic - Next topic

ethanjrt

Hi,

Excuse my ignorance but I am very new to ESP32s and I have searched as much as I can.

I am trying to understand which pins are available to me to use in the ESP32-POE-ISO-WROVER-EA. I got two from Olimex earlier this month. I am specifically trying to integrate it into Home Assistant via ESPHome, which I understand is its own thing but I'll ask about that later in this post in case anyone here has experience with this issue.

Pins: The product page provides this pin map, which shows the usable pins. Some are led out to the UEXT, and some are not (but are still marked as usable).

Questions about this:
  • Is there a version of this map for the WROVER module?
  • The product page says that in the WROVER module, GPIO16 and GPIO17 are not usable. However, there is a solderable contact marked as GPIO16... Is the silk screen incorrect? (And if not, why add a solderable contact for an unusable pin? I have noticed the other unusable pins are not exposed, except the GPIO0 Ethernet clock pin.)
  • Same question as above for GPIO34 and GPIO39. These are marked as not usable in the WROOM module, so I assume they are also not usable in the WROVER module? (But still have solderable contacts on the board.)
  • Is GPIO3 really a usable pin? I can't see anything in the documentation that says it is not usable, but when I tried to use it as the trigger pin for my HC-SR04 ultrasonic sensor, all I got was Undefined in my logs. I switched it to GPIO33 and it started working as expected. I wonder if it is related to this issue, in which an ESPHome user identified GPIO3 as being always high no matter what on the WT32 module. I also notice that in the ESP32-WROVER-IE datasheet, there is no GPIO3 listed at all. (Though the pin map on that datasheet totally different from the Olimex board, so maybe I am just thoroughly misunderstanding this documentation...) This issue may be due to ESPHome, but it persists whether I choose "esp32dev" or "esp32-poe-iso" as my board choice in the config (see question below).
  • Are there certain GPIO pins that cannot be used as inputs, only outputs? I have read in a few places (general WROVER board info and ESPHome) that 34, 35, 36, and 39 cannot be used as inputs, but I don't see this info repeated anywhere on the product page.



ESPHome Config: In my base config, for now I have chosen "board: esp32dev" for the board type. ESPHome requires me to choose from this list. I'm not totally sure what parameters are set by the board choice but it seems like pinout / available pins is one of them, and ESPHome stops me from making mistakes in my YAML updates if I try to use pins that are not meant to be used; I'd like to choose the correct board type so that this code verification feature works properly.

Questions about this:
  • Is "esp32dev" the correct choice?
  • Should I be using "esp32-poe-iso" instead even though it seems to be based on the WROOM chip?
  • Or would "esp-wrover-kit" or "upesy_wrover" be more accurate because of the different pins used by / available for use in WROVER?

Thank you in advance for your help!

LubOlimex

QuoteIs there a version of this map for the WROVER module?

No.

QuoteThe product page says that in the WROVER module, GPIO16 and GPIO17 are not usable. However, there is a solderable contact marked as GPIO16... Is the silk screen incorrect? (And if not, why add a solderable contact for an unusable pin? I have noticed the other unusable pins are not exposed, except the GPIO0 Ethernet clock pin.)

GPIO16 and GPIO17 are used for the PSRAM inside the WROVER module. These are not usable when using the WROVER version of the board (only when the board is populated with the WROOM module, that has no PSRAM).

We have the same PCB for both WROOM and WROVER version of ESP32-POE-ISO hence why GPIO16 is there, for when we populate the board with WROOM instead of WROVER.

QuoteSame question as above for GPIO34 and GPIO39. These are marked as not usable in the WROOM module, so I assume they are also not usable in the WROVER module? (But still have solderable contacts on the board.)

GPI35 and GPI39 are used for the battery measurement and external power sense features. These shouldn't be used for other purposes without hardware modifications. Refer to the schematic.

All pins we could led out to pads were led out, even if the pin is used for something, the pad can be used for measuring empirically with a tool.

QuoteIs GPIO3 really a usable pin? I can't see anything in the documentation that says it is not usable, but when I tried to use it as the trigger pin for my HC-SR04 ultrasonic sensor, all I got was Undefined in my logs. I switched it to GPIO33 and it started working as expected. I wonder if it is related to this issue, in which an ESPHome user identified GPIO3 as being always high no matter what on the WT32 module. I also notice that in the ESP32-WROVER-IE datasheet, there is no GPIO3 listed at all. (Though the pin map on that datasheet totally different from the Olimex board, so maybe I am just thoroughly misunderstanding this documentation...) This issue may be due to ESPHome, but it persists whether I choose "esp32dev" or "esp32-poe-iso" as my board choice in the config (see question below).

GPIO3 is connected to the USB-serial converter CH340T. If you are in doubt better use the pins at UEXT1 connector (GPIO4, GPI36, GPIO16, GPIO13, GPIO15, GPIO2, GPIO14, GPIO5). These are generally free.

QuoteAre there certain GPIO pins that cannot be used as inputs, only outputs? I have read in a few places (general WROVER board info and ESPHome) that 34, 35, 36, and 39 cannot be used as inputs, but I don't see this info repeated anywhere on the product page.

Yes. We have marked those as GPI on purpose. This is not becuase of the Olimex design this is because of the ESP32 chip specification. You have to look in the ESP32 chip documentation if you wish confirmation. But this is good place (look in the table what it says about pins 34-39):

https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/gpio.html
Technical support and documentation manager at Olimex

LubOlimex

About ESPHome config - if you use the config for ESP32-POE-ISO - the Ethernet won't work since the Ethernet clock pin is different. You would have to modify it manually. Refer to this:

https://esphome.io/components/ethernet.html

There is a note about the WROVER difference even:

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO17_OUT (GPIO0_OUT in your case)
  phy_addr: 0
  power_pin: GPIO12

Note WROVER version of Olimex POE cards change CLK to ping GPIO0, configuration must be clk_mode: GPIO0_OUT.

The esphome community is very familiar and experienced with our boards, maybe check in their forums for users that had similar woes.
Technical support and documentation manager at Olimex

ethanjrt

Thank you for the thorough answer and the link to the very helpful ESP32 doc!
Best,
Ethan