Zpět na články

ESP32 + pH modul a sonda – měření kyselosti kapalin v Arduino IDE

Jak připojit pH modul PH4502C se sondou k ESP32 a měřit hodnoty pH vody, akvária nebo bazénu.

ESP32 + pH modul a sonda – měření kyselosti kapalin v Arduino IDE

Co je pH modul PH4502C?

pH modul PH4502C umožňuje ESP32 měřit kyselost nebo zásaditost kapalin na stupnici 0–14. Modul má vestavěné potenciometry pro kalibraci, digitální výstup (DO) pro prahové upozornění a analogový výstup (PO) pro přesné napěťové čtení, které lze převést na hodnoty pH.

Na samotném modulu se nachází dva trimry. Trimr umístěný blíže k BNC konektoru slouží ke kalibraci měření, kdy je možné využít dodávaný roztok jako referenci s hodnotou pH 7. Druhým trimrem pak můžeme nastavit hranici, při jejímž překročení se rozsvítí červená kontrolní LED dioda na modulu.

Tento modul se hodí pro orientační měření kyselosti vody – pro orientační měření je rozhodně přesnější než lakmusové papírky.

Hlavní vlastnosti

  • Rozsah měření pH 0–14
  • Analogový výstup pro kontinuální monitoring a digitální prahový výstup (DO) pro upozornění na vysoké nebo nízké pH
  • BNC konektor pro vyměnitelnou pH sondu
  • Napájení 5V
  • Kompatibilní s ESP32 a Arduino

Potřebné komponenty

  • ESP32
  • pH modul PH4502C
  • pH sonda s BNC konektorem
  • Kalibrační roztok pH 7 (nebo prášek pH 6,86 rozpuštěný ve 250 ml destilované vody)
  • Propojovací vodiče
⚠️ Přesnost měření závisí na správné kalibraci. Sondu skladujte v roztoku KCl, když se nepoužívá – nikdy ji nenechávejte suchou, jinak se poškodí membrána.

Zapojení

Pin V+ připojte na 5V, pin G na GND a pin Po na analogový pin ESP32. Použijte GPIO 34 – je určen pouze pro vstup a neruší ostatní periferie.

Pin Do (digitální výstup) připojte na GPIO 35 pokud chcete využít prahové upozornění.

pH sondu zasuňte do BNC konektoru na modulu.

⚠️ Výstup Po je napětí pH senzoru (-0,4V až 0,4V) zesílené 2×. Střední hodnota napětí pH senzoru 0V (pH 7) je posunutá pomocí potenciometru na cca 1V až 2,5V. Modul proto napájejte z 5V, ne z 3,3V – jinak bude rozsah měření zkrácený.

Kalibrace před prvním použitím

Před nahráním kódu proveďte mechanickou kalibraci trimrem:

  1. Připravte kalibrační roztok pH 7 (rozpusťte kalibrační prášek ve 250 ml destilované vody)
  2. Ponořte sondu do roztoku a počkejte 2–3 minuty
  3. Nahrájte Kód 1 níže a otevřete Serial Monitor
  4. Trimrem blíže k BNC konektoru otáčejte pomalu dokud Serial Monitor nezobrazí hodnotu 7.00
  5. Kalibrace je hotová – trimr už nenastavujte

Kód 1 – jednoduché čtení pH (pro kalibraci)

ph.ino
1#define PH_PIN 34 2 3// Kalibrační konstanta – upravte pokud hodnoty nesedí 4// Výchozí hodnota pro napájení 5V a střední napětí ~2.5V 5const float OFFSET = 0.0; 6 7float prectiPH() { 8 int suma = 0; 9 10 // průměr z 10 vzorků pro stabilnější hodnotu 11 for (int i = 0; i < 10; i++) { 12 suma += analogRead(PH_PIN); 13 delay(10); 14 } 15 16 float prumer = suma / 10.0; 17 18 // přepočet ADC hodnoty (0-4095) na napětí (0-3.3V) 19 float napeti = prumer * (3.3 / 4095.0); 20 21 // přepočet napětí na pH 22 // lineární vztah: pH = 7 + ((2.5 - napeti) / 0.18) 23 float ph = 7.0 + ((2.5 - napeti) / 0.18) + OFFSET; 24 25 return ph; 26} 27 28void setup() { 29 Serial.begin(115200); 30 Serial.println("pH metr připraven – kalibrujte trimrem na pH 7.00"); 31} 32 33void loop() { 34 float ph = prectiPH(); 35 36 Serial.print("Naměřené pH: "); 37 Serial.println(ph, 2); // 2 desetinná místa 38 39 delay(1000); 40}


Kód 2 – pH metr s hodnocením kvality vody

Po kalibraci použijte tento kód pro reálné měření s textovým hodnocením:

ph.ino
1#define PH_PIN 34 2#define DO_PIN 35 // digitální prahový výstup (volitelné) 3 4const float OFFSET = 0.0; // upravte po kalibraci 5 6float prectiPH() { 7 int suma = 0; 8 for (int i = 0; i < 10; i++) { 9 suma += analogRead(PH_PIN); 10 delay(10); 11 } 12 float prumer = suma / 10.0; 13 float napeti = prumer * (3.3 / 4095.0); 14 return 7.0 + ((2.5 - napeti) / 0.18) + OFFSET; 15} 16 17String hodnoceniPH(float ph) { 18 if (ph < 0 || ph > 14) return "Mimo rozsah – zkontrolujte sondu"; 19 if (ph < 4.0) return "Silně kyselé"; 20 if (ph < 6.0) return "Kyselé"; 21 if (ph < 6.5) return "Slabě kyselé"; 22 if (ph <= 7.5) return "Neutrální ✓"; 23 if (ph <= 8.5) return "Slabě zásadité"; 24 if (ph <= 10.0) return "Zásadité"; 25 return "Silně zásadité"; 26} 27 28void setup() { 29 Serial.begin(115200); 30 pinMode(DO_PIN, INPUT); 31 Serial.println("pH metr spuštěn."); 32 Serial.println("-------------------------"); 33} 34 35void loop() { 36 float ph = prectiPH(); 37 int prahovySignal = digitalRead(DO_PIN); 38 39 Serial.print("pH: "); 40 Serial.print(ph, 2); 41 Serial.print(" | "); 42 Serial.println(hodnoceniPH(ph)); 43 44 if (prahovySignal == LOW) { 45 Serial.println("⚠️ UPOZORNĚNÍ: pH překročilo nastavený práh!"); 46 } 47 48 Serial.println("-------------------------"); 49 delay(2000); 50}


Výstup v Serial Monitoru bude vypadat například takto:

terminal
1pH metr spuštěn. 2------------------------- 3pH: 7.02 | Neutrální ✓ 4------------------------- 5pH: 6.43 | Slabě kyselé 6------------------------- 7pH: 4.31 | Kyselé 8-------------------------


Jak to funguje

pH sonda generuje malé napětí v závislosti na koncentraci vodíkových iontů v kapalině. Výstup senzoru je zesílen 2× a střední hodnota (pH 7 = 0V) je posunutá pomocí potenciometru na rozsah 1V–2,5V, aby bylo možné signál číst na ADC pinu ESP32.

V kódu čteme 10 vzorků a průměrujeme je – ADC na ESP32 je citlivý na šum a bez průměrování by hodnoty skákaly. Napětí pak přepočítáváme na pH podle lineárního vzorce.

Přesnost tohoto modulu je přibližně ±0,5 pH po správné kalibraci – pro akvaristiku, hydroponii nebo monitoring bazénu zcela dostačující.

Časté problémy

Hodnoty skáčou nebo jsou nestabilní → Průměrujte více vzorků (zvyšte počet ze 10 na 20) → Napájejte modul ze stabilního 5V zdroje → Umístěte modul co nejblíže k sondě – dlouhé vodiče přidávají šum

Hodnoty nesedí ani po kalibraci trimrem → Upravte konstantu OFFSET v kódu (např. +0.5 nebo -0.3) → Ověřte čerstvost kalibračního roztoku – starý roztok zkresluje kalibraci

Sonda ukazuje stále stejnou hodnotu → Zkontrolujte BNC konektor – sonda musí být pevně zasunutá → Sonda mohla vyschnout – ponořte ji na hodinu do KCl roztoku nebo vody

Digitální výstup DO nefunguje → Nastavte druhý trimr na modulu pro požadovaný práh

Péče o sondu

Správné skladování výrazně prodlužuje životnost sondy:

  • Po měření vždy opláchněte sondu destilovanou vodou
  • Skladujte v roztoku KCl nebo v pH 7 kalibračním roztoku – nikdy suchou
  • Nikdy nesahat prsty na skleněnou membránu na špičce sondy
  • Před měřením nechte sondu aklimatizovat 2–3 minuty v kapalině

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.