I’ll replace the ESP32-C3 module interface with a simple pin header while preserving the existing signals for an external controller connection, then verify the schematic connectivity.
Module clock: common ESP32-WROOM-32 modules use a 40 MHz crystal.
Flash: module-dependent; common ESP32-WROOM-32 modules often include 4 MB SPI flash.
Power
ESP32 chip/module operating voltage: 3.0 V to 3.6 V, nominal 3.3 V.
ESP32 GPIO are not 5 V tolerant.
DevKit boards usually accept 5 V on USB/VIN and regulate it to 3.3 V.
Power supply must handle Wi-Fi current peaks; use a regulator capable of at least several hundred mA. Many references recommend designing for around 500 mA available to the module/board.
Digital I/O and Boot-Strap Warnings
ESP32 has many GPIOs, but not all are safe as general-purpose external I/O.
Important caution pins:
GPIO0: boot mode strap; affects flashing/boot.
GPIO2, GPIO4, GPIO5, GPIO12, GPIO15: strap or boot-sensitive pins depending on module/board.
GPIO6-GPIO11: commonly connected to SPI flash; do not use on WROOM modules.
GPIO34-GPIO39: input-only on classic ESP32.
For beginner-friendly external sensors, prefer board-recommended GPIOs such as GPIO21/22 for I2C and GPIO25/26/27/32/33 for general I/O/ADC where available.
Analog Input
ESP32 includes SAR ADC channels, commonly referred to as ADC1 and ADC2.
ADC nominal resolution is up to 12-bit.
ADC accuracy is not as linear as a precision external ADC; calibration is recommended.
ADC2 has restrictions when Wi-Fi is active on classic ESP32, so prefer ADC1 pins for analog sensing.
Communication Interfaces
I2C: flexible pin assignment. Common defaults are SDA=GPIO21 and SCL=GPIO22.
SPI: flexible pin assignment. Common VSPI defaults are MOSI=GPIO23, MISO=GPIO19, SCK=GPIO18, CS=GPIO5.
UART: multiple UARTs available; default programming UART usually uses GPIO1 TX0 and GPIO3 RX0.
PWM: LEDC peripheral can generate PWM on many output-capable GPIOs.
pH Sensor Interface Notes for This Project
If using ESP32 instead of Arduino Uno:
Power the ADS1115 module, DS18B20 pull-up, I2C pull-ups, and VBIAS divider from 3.3 V, not 5 V.
Do not feed 5 V I2C or 5 V DS18B20 data into ESP32 GPIO.
pH accuracy is not inherently worse at 3.3 V if the ADS1115 PGA range is configured correctly.
Recommended ADS1115 pH setting remains differential AIN0-AIN1 with a suitable PGA such as +/-1.024 V.
Bias midpoint becomes approximately 1.65 V instead of 2.5 V.
Compatibility With Current ADS1115 pH Project
ADS1115 Wiring Notes
ADS1115 Pin Functions Used in This pH Project
Table
ADS1115 Module Pin
Project Net
Function
VCC
VCC_5V or 3V3
ADC module supply. Use 5 V for Arduino Uno, 3.3 V for ESP32.
GND
GND
Common ground with the microcontroller and sensor board.
SDA
I2C_SDA
I2C data line. Needs pull-up to the microcontroller logic voltage.
SCL
I2C_SCL
I2C clock line. Needs pull-up to the microcontroller logic voltage.
ADDR
ADS_ADDR
Address select. Tie to GND, VCC, SDA, or SCL to choose the I2C address.
ALRT/RDY
ADS_ALERT
Optional alert/ready output. Can be left unused or connected to an interrupt-capable GPIO.
A0
ADC_PH_PLUS
Buffered pH probe signal.
A1
ADC_PH_MINUS
Buffered VBIAS reference. pH is measured differentially as A0 - A1.
A2
ADS_AIN2
Spare auxiliary analog input.
A3
ADS_AIN3
Spare auxiliary analog input.
Arduino Uno Wiring
Use this wiring when using Arduino Uno, Nano, or Mega style 5 V Arduino boards:
Table
Project Signal
Arduino Uno Pin
Notes
VCC_5V
5V
Powers ADS1115 module, op amp, bias network, and pull-ups.
GND
GND
Common ground.
I2C_SDA
A4 / SDA
Arduino Uno I2C data.
I2C_SCL
A5 / SCL
Arduino Uno I2C clock.
ADS_ALERT
Optional D2 or D3
Only needed if using ALERT/RDY interrupt mode. Otherwise leave unconnected.
ADS_ADDR
GND recommended
Gives the default ADS1115 address 0x48 on most ADS1115 libraries.
DS18B20_DATA
D2 or D3
Uses R11 = 4.7 kohm pull-up to 5 V in the current design.
AUX_SENSOR_AIN2_IN
External analog sensor output
Must stay between 0 V and 5 V.
AUX_SENSOR_AIN3_IN
External analog sensor output
Must stay between 0 V and 5 V.
Recommended Arduino Uno ADS1115 firmware settings:
Use I2C address 0x48 if ADS_ADDR is tied to GND.
Read pH in differential mode: A0 - A1.
Start with PGA = +/-1.024 V for pH because the pH signal is small.
Use a slow data rate such as 8 SPS or 16 SPS and average readings.
Do not read the pH probe with the Arduino Uno analog input; use the ADS1115 result.
ESP32 Wiring
Use this wiring when using ESP32-WROOM-32 / ESP32 DevKit style 3.3 V boards:
Table
Project Signal
ESP32 DevKit Pin
Notes
3V3 rail
3V3
The design must be converted from VCC_5V to 3.3 V for ESP32 use.
GND
GND
Common ground.
I2C_SDA
GPIO21 typical
I2C data. Pull up to 3.3 V only.
I2C_SCL
GPIO22 typical
I2C clock. Pull up to 3.3 V only.
ADS_ALERT
Optional GPIO25, GPIO26, GPIO27, GPIO32, or GPIO33
Use only if ALERT/RDY interrupt is required. Avoid boot-strap pins.
ADS_ADDR
GND recommended
Gives default ADS1115 address 0x48. Tie to 3.3 V/SDA/SCL only if another address is needed.
DS18B20_DATA
GPIO25, GPIO26, GPIO27, GPIO32, or GPIO33 typical
Pull up to 3.3 V only. Avoid 5 V pull-up.
AUX_SENSOR_AIN2_IN
0-3.3 V sensor output
Must never exceed 3.3 V unless level shifted/divided.
AUX_SENSOR_AIN3_IN
0-3.3 V sensor output
Must never exceed 3.3 V unless level shifted/divided.
ESP32 safety requirements:
ESP32 GPIO are not 5 V tolerant.
Do not connect the current 5 V I2C pull-ups directly to ESP32.
Do not connect DS18B20_DATA with a 5 V pull-up to ESP32.
If reusing this exact board with an ESP32, either revise the board to 3.3 V or add proper level shifting on I2C and DS18B20 data.
Avoid ESP32 GPIO6-GPIO11, which are usually connected to internal flash.
Avoid GPIO0 and other boot-strap pins for external sensor wiring unless you understand the boot requirements.
Recommended ESP32 ADS1115 firmware settings:
Use Wire.begin(21, 22) for common ESP32 SDA/SCL wiring, unless your board uses different pins.
Use I2C address 0x48 if ADS_ADDR is tied to GND.
Read pH in differential mode: A0 - A1.
PGA = +/-1.024 V is still suitable for pH at 3.3 V.
The pH bias midpoint should be approximately 1.65 V in a 3.3 V version.
Prefer ADS1115 over ESP32 internal ADC for pH because ESP32 ADC is not precision-linear without calibration.
Best for Arduino Uno/Nano/Mega
Use the current 5 V configuration:
VCC_5V -> Arduino 5V.
GND -> Arduino GND.
SDA/SCL -> Arduino I2C pins.
DS18B20_DATA -> any Arduino digital GPIO with R11 = 4.7 kohm pull-up to 5 V.
ADS1115 reads pH differentially on A0-A1.
Best for ESP32 / 3.3 V Arduino
Revise the project rails to 3.3 V:
Rename or treat VCC_5V as 3V3.
Pull I2C SDA/SCL to 3.3 V.
Pull DS18B20_DATA to 3.3 V.
Use VBIAS = 1.65 V from equal divider resistors.
Confirm the ADS1115 module supports 3.3 V operation.
Ensure any auxiliary AIN2/AIN3 sensors output 0-3.3 V only.
Practical Design Recommendation
For a beginner Arduino pH project, Arduino Uno + ADS1115 is simpler and safer because it matches the current 5 V through-hole design. If you want Wi-Fi/Bluetooth logging, ESP32 is better, but the board should be revised to a 3.3 V-safe version so no ESP32 GPIO ever sees 5 V.
Source Notes
Primary references used for this summary:
Espressif ESP32-WROOM-32 and ESP32 series datasheet information.
Arduino Uno Rev3 technical specifications / datasheet.
ESP32-C3 ADS1115 pH/ORP Sensor Validation and Firmware Handoff Report
Schematic-Level Design Review
Schematic and Documentation Reverification
Concise BOM - Part Name, Value, Designators
Circuit and Documentation Reverification
Assets
No assets added.
ESP32-C3 ADS1115 pH ORP Sensor Interface 4412
ESP32-C3 battery-powered pH and ORP probe interface using ADS1115 differential ADC, MCP6002 through-hole buffers, DS18B20 temperature compensation, and short net labels for firmware handoff.
Properties
Sensor
3.3
V
Arduino
I2C
Battery
Pricing & Availability
Distributor
Qty 1
Arrow
$8.74–$11.13
Digi-Key
$3.68
LCSC
$16.69–$17.39
Mouser
$11.45
TME
$6.21
Verical
$7.55–$15.85
Controls
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.