Blinking LED Circuit Design


Make a circuit that blinks a red LED once per second.
Power it with a 9V block battery through an on/off switch.
Use components that are easy to hand-solder.
I’ll build a hand-solderable 1 Hz red LED blinker using a 555 timer astable circuit, powered from a 9 V battery through a switch. I’ll pick through-hole parts, calculate the timing/LED resistor values, wire the schematic, then run checks and fix any issues.
Processing was stopped.
Use 555 timer
Add power switch
Calculate 1 Hz timing
Find LED parts

U1
C4
Capacitance
1 µF
C1
Capacitance
100 nF
C8
Capacitance
100 nF
C17
Capacitance
10µF
C2
Capacitance
100 nF
C18
Capacitance
100nF
C10
Capacitance
100 nF
C6
Capacitance
100 nF
C11
Capacitance
100 nF
C7
Capacitance
100 pF
C13
Capacitance
100 pF
C16
Capacitance
100 nF
C14
Capacitance
100 nF
C12
Capacitance
100 nF
C9
Capacitance
100 nF
C3
Capacitance
10 µF
C5
Capacitance
10 µF
C15
Capacitance
100 nF
R12
Resistance
1000000 Ω
R3
Resistance
1000000 Ω
R11
Resistance
4700 Ω
J1
R6
Resistance
1000 Ω
R5
Resistance
1000 Ω
R10
Resistance
1000 Ω
R9
Resistance
1000 Ω
R8
Resistance
10000 Ω
R14
Resistance
10000 Ω
R4
Resistance
1000 Ω
R13
Resistance
1000 Ω
R2
Resistance
100000 Ω
J5
R1
Resistance
100000 Ω
R15
Resistance
10Ω
R7
Resistance
10000 Ω
J3
J2
U2
U3
Firmware Architecture Handoff
Purpose
This file gives a firmware engineer or AI assistant the electrical context needed to write firmware for the current pH/ORP/temperature interface.
External Header J2

Table


J2 PinFirmware NameElectrical NetESP32 Use
13.3V3.3VSupply output/input from ESP32 board regulator
2GNDGNDCommon ground
3SDAADS1115 SDAESP32 I2C SDA GPIO
4SCLADS1115 SCLESP32 I2C SCL GPIO
5DQDS18B20 DQESP32 1-Wire GPIO
No debug pins are included. ADS1115 ADDR and ALERT are not routed to J2.
I2C ADC
  • Device: ADS1115 module U1.
  • Address: 0x48 because ADDR is pulled to GND through R14 = 10kΩ.
  • ALERT/RDY: unused/no-connect.
  • Power: FILTERED 3.3V.
  • SDA/SCL pull-ups: R7 and R8 are present only as optional 10kΩ DNP footprints to FILTERED 3.3V. Leave them unpopulated if the ADS1115 module already has onboard I2C pull-ups.
ADC Channel Map

Table


Firmware MeasurementADS1115 MUXCircuit Meaning
pH raw voltageAIN0 - AIN1pH signal buffer minus pH reference buffer
ORP raw voltageAIN2 - AIN3ORP signal buffer minus ORP reference buffer
Always use differential mode. Single-ended reads include the mid-supply bias and are not the intended measurement output.
Temperature Sensor
  • Sensor: DS18B20 connected through J3.
  • J3 pin 1: FILTERED 3.3V.
  • J3 pin 2: DS18B20 DQ.
  • J3 pin 3: GND.
  • R11 = 4.7kΩ pulls DQ to FILTERED 3.3V.
  1. Configure I2C bus for ADS1115 SDA/SCL pins selected by the user on the ESP32.
  2. Probe ADS1115 at address 0x48.
  3. Configure ADS1115 gain so the expected pH and ORP ranges fit without clipping.
  4. Read pH using differential A0-A1.
  5. Read ORP using differential A2-A3.
  6. Configure 1-Wire bus on DQ pin and read DS18B20 temperature.
  7. Apply calibration and filtering.
Signal Ranges from Simulation

Table


MeasurementExpected Differential RangeADC Pin Common-Mode Range
pH-0.414V to +0.414VA0 ≈ 1.236V to 2.064V, A1 ≈ 1.650V
ORP-1.000V to +1.000VA2 ≈ 0.650V to 2.650V, A3 ≈ 1.650V
Both ranges remain within the 0V to 3.3V supply rails in the simulation.
Analog Bandwidth and Sampling
The pH and ORP differential paths have a simulated -3 dB bandwidth of about 481.8 Hz. Chemical probe signals are much slower than this, so recommended firmware sampling is conservative:
  • ADS1115 data rate: low/medium rate, not maximum rate.
  • Take multiple samples per reading.
  • Use median filtering to reject spikes.
  • Average stable samples for final pH/ORP value.
  • Avoid taking critical calibration samples during ESP32 Wi-Fi burst activity if possible.

pH and ORP differential gain vs frequency

Power Noise Considerations
The analog rail is filtered by R15/C17/C18. High-frequency rail noise is attenuated substantially, but low-frequency rail movement mostly remains common-mode and is cancelled by differential ADC reads.

Table


Frequency3.3V-to-FILTERED 3.3V Attenuation
100 Hz-0.0716 dB
1 kHz-4.221 dB
10 kHz-22.18 dB
100 kHz-42.16 dB
Final simulation result: PASS. PH/ORP guard rings were modeled as tied to PH REF and ORP REF, not GND. They do not alter DC readings in the model and must remain separate from GND in layout.

Final 3.3V rail filter response

Calibration Model
pH
  • pH probe voltage is approximately temperature-dependent around the Nernst slope.
  • Firmware should perform at least two-point calibration using known pH buffers.
  • Store offset at pH 7 and slope from calibration.
  • Apply temperature compensation using DS18B20 temperature.
ORP
  • ORP is read directly as differential millivolts after calibration offset.
  • Store offset correction based on known ORP standard solution if needed.
Minimal Pseudocode

Text


init_i2c(SDA, SCL)
ads1115.begin(address=0x48)
ads1115.set_data_rate(low_or_medium)
ads1115.set_gain(range_that_covers_ORP)
init_onewire(DQ)

loop:
    temperature_c = ds18b20_read_c()
    ph_mv_samples = read_ads_diff_many(A0_A1)
    orp_mv_samples = read_ads_diff_many(A2_A3)
    ph_mv = median_then_average(ph_mv_samples)
    orp_mv = median_then_average(orp_mv_samples)
    ph = apply_ph_calibration(ph_mv, temperature_c)
    orp = apply_orp_calibration(orp_mv)
Firmware Cautions
  • Confirm ADS1115 gain range before reading ORP; ±1.0V ORP range can exceed small ADS gain ranges.
  • R7/R8 are optional DNP I2C pull-ups. If the ADS1115 module already has SDA/SCL pull-ups, keep R7/R8 unpopulated; do not jumper them.
  • If using ESP32 Wi-Fi, average readings and avoid calibrating during unstable supply conditions.
  • Purpose

  • External Header J2

  • I2C ADC

  • ADC Channel Map

  • Temperature Sensor

  • Recommended ESP32 Firmware Setup

  • Signal Ranges from Simulation

  • Analog Bandwidth and Sampling

  • Power Noise Considerations

  • Calibration Model

  • pH

  • ORP

  • Minimal Pseudocode

  • Firmware Cautions