From blwiki
Jump to: navigation, search

ESP32 600px.jpg


  • Breakout board for the ESP32
    • ESP32 is socketed
    • Make sure board matches below version (ESP-WROOM-32)
  • 3.3V regulator
    • Jumper selectable
  • FTDI 6-pin connector
  • 6-pin SPIbus connector
    • Arduino compatible pinout (minus reset?)
  • I2C connector
  • I2C Hub - PCA9544APWR
    • 4 I2C port with support for 3.3V or 5V power on each port
    • Address selectable
    • Interrupt on each port
  • I/O Connectors on all pins
    • GVS (Ground Voltage and signal lines)
  • Flexible Input power options
    • 5V input from USB
    • 5V input terminal block
    • 5V input barrel connector
  • 5V power output
    • 2x8 header to provide external 5V (if required)

ESP32 card

  • There are various versions of ESP-32 boards
  • This design uses this version


Powering the card

  • Power choices are mutually exclusive
  • If USB is connected, the ESP32 module will be powered from the USB power
  • If there is no USB connected, the card can be powered from the FTDI connector (5V) or from the 5V connectors


H1 - Supply power from 3.3V regulator

  • Install to power from regulator
  • Remove to power from other source

J16 - Power from FTDI

  • Install 5V to center to power card 5V from FTDI power
  • Not recommended to install from 3.3V to center due to FTDI low current capacity
  • Remove to not power card from FTDI

5V/GND Header

  • 8 Vcc/8 GND pin pairs


  • Power 3.3V reg from USB

J4, J5, J6, J8 - I2C Power selection

  • 3.3V to center - 3.3V from ESP32-HUB Card
  • 5V to center - 5V from ESP32-HUB Card
  • Open - I2C ecternally powered

J2 - I2C Port (between ESP and Hub IC

  1. GND
  2. vCC
  3. SDA
  4. SCL
  5. INT* (D22 on ESP32)

J9, J10, J11, J12 - I2C Ports 0-3

  1. GND
  2. vCC
  3. SDA
  4. SCL
  5. INT*

A0-A2 - I2C Address

  • Install for '0'
  • Remove for '1'

P3 - SPI bus

  • Matches Arduino ISP header


  1. GND
  2. NC
  3. Power to J16 center
  4. Rx
  5. Tx
  6. NC

I2C Hub

Rev 3 Changes

  • I2C INT from pin 23 to ESP32 pin 5
  • Fixed I2C (to slave) pinouts


Rev 2 Checkout Notes

ESP32 wiki page

  • Installed jumpers
    • J4, J5, J6, J8 (in 3.3V to center) position
    • A0-A3 installed - slave address offset = 0x0
    • H7 power 3.3V reg from USB
    • H1 power card 3.3V from regulator
  • Installed ESP module
  • Power up with USB cable
  • Run PuTTY 115,200 baud
  • Dump from PuTTY
ets Jun  8 2016 00:22:57

configsip: 0, SPIWP:0xee
mode:DIO, clock div:2
entry 0x4008114c
I (412) cpu_start: Pro cpu up.
I (412) cpu_start: Single core mode
I (412) heap_init: Initializing. RAM available for dynamic allocation:
I (416) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (422) heap_init: At 3FFC0E38 len 0001F1C8 (124 KiB): DRAM
I (428) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM
I (434) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (441) heap_init: At 400915EC len 0000EA14 (58 KiB): IRAM
I (447) cpu_start: Pro cpu start user code
I (17) cpu_start: Starting scheduler on PRO CPU.
I (65) modsocket: Initializing
I (85) wifi: wifi driver task: 3ffcc504, prio:23, stack:3584, core=0
I (85) wifi: wifi firmware version: 7aac1f9
I (85) wifi: config NVS flash: enabled
I (95) wifi: config nano formating: disabled
I (95) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (105) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (135) wifi: Init dynamic tx buffer num: 32
I (135) wifi: Init data frame dynamic rx buffer num: 64
I (135) wifi: Init management frame dynamic rx buffer num: 64
I (135) wifi: Init static rx buffer size: 1600
I (135) wifi: Init static rx buffer num: 10
I (145) wifi: Init dynamic rx buffer num: 0
Started webrepl in normal mode
OSError: [Errno 2] ENOENT
MicroPython v1.10 on 2019-01-25; ESP32 module with ESP32
Type "help()" for more information.
  • EN switch resets module

Rev 2 Issues

  • I2C interrupt
    • Marked on board as P22
    • Connected on schematic to P23
  • I2C pinout is wrong on external I2C connectors

ESP chip

I2C ESP32 Chip.PNG

J7 I2C



  • Cut etches between ESP32 and J7
    • J7 pinout is now wrong
      • J1-1 = SCL
      • J1-2 = SDA
      • J1-3 = Open
import machine
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
  • Responds with
  • This is 0x70

Testing hub

  • Write/read pca9544 control register
>>> outBuff[0]=4
>>> i2c.writeto(0x70,outBuff)
>>> i2c.readfrom(0x70,1)

DSLogic Plus - I2C capture

I2C pca9544 I2CIO8.PNG

I2C connectors

  • I2C pin orders and silkscreen different

I2C Port 0.PNG

Parts List