Категории

Как подключить pH-датчик к ESP32 и отправлять данные в базу через WiFi

2025-10-30 08:01:12 | Статья из категории: IOT умный дом

Как подключить pH-датчик к ESP32 и отправлять данные в базу через WiFi

Зачем это нужно?

Если ты делаешь систему мониторинга воды (аквариум, гидропоника, пруд, лаборатория) — тебе нужен датчик pH. Подключив его к ESP32, ты можешь автоматически записывать показания в базу данных и отслеживать изменения в реальном времени.

Что понадобится:

Подключение к ESP32

Важно: pH-модуль работает от 3.3V, так что подключаем напрямую к ESP32.

ESP32        → pH-модуль
3.3V         → VCC
GND          → GND
GPIO34       → PO (аналоговый выход)

❗️ Если у тебя "висит" 4095 — значит, либо датчик не подключен, либо не настроен. Проверь:

Код для ESP32 (Arduino IDE)

Скопируй этот код в Arduino IDE. Не забудь установить библиотеку WiFi (встроена), и замени SSID/пароль на свои.

#include <WiFi.h>  

const char* ssid = "ТВОЙ_ВАЙФАЙ";
const char* password = "ПАРОЛЬ";

const char* server = "ТВОЙ_СЕРВЕР.ИЛИ.IP"; // например: 192.168.1.100

#define pH_PIN 34

float Voltage, phValue;
int rawValue;

void setup() {
  Serial.begin(115200);
  pinMode(pH_PIN, INPUT);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi подключен!");
}

void loop() {
  rawValue = analogRead(pH_PIN);
  Voltage = rawValue * (3.3 / 4095.0);

  // Формула перевода напряжения в pH (примерная, калибровку делай по стандартам!)
  // Для модулей с усилителем: pH = 3.5 + (Voltage - 1.65) / 0.185
  phValue = 3.5 + (Voltage - 1.65) / 0.185;

  Serial.print("RAW: ");
  Serial.print(rawValue);
  Serial.print(" | Voltage: ");
  Serial.print(Voltage, 3);
  Serial.print("V | pH: ");
  Serial.println(phValue, 2);

  // Отправка данных на сервер
  sendToServer(phValue);

  delay(10000); // каждые 10 секунд
}

void sendToServer(float pH) {
  WiFiClient client;
  if (!client.connect(server, 80)) {
    Serial.println("Не удалось подключиться к серверу");
    return;
  }

  String url = "/ph_log.php?ph=" + String(pH, 2);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + server + "\r\n" +
               "Connection: close\r\n\r\n");

  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println("Таймаут запроса");
      client.stop();
      return;
    }
  }

  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  client.stop();
}

PHP-скрипт для записи в базу (ph_log.php)

Создай файл ph_log.php на своём сервере. Он будет принимать GET-запрос и записывать pH в таблицу MySQL.

connect_error) {
    die("Ошибка подключения: " . $conn->connect_error);
}

if (isset($_GET['ph'])) {
    $ph = floatval($_GET['ph']);
    $timestamp = date('Y-m-d H:i:s');

    $sql = "INSERT INTO ph_readings (ph_value, timestamp) VALUES (?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ds", $ph, $timestamp);
    $stmt->execute();

    echo "Данные записаны: pH = " . $ph;
} else {
    echo "Нет данных pH";
}

$stmt->close();
$conn->close();
?>

SQL-таблица (MySQL)

Создай таблицу в базе данных:

CREATE DATABASE ph_monitoring;
USE ph_monitoring;

CREATE TABLE ph_readings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ph_value FLOAT NOT NULL,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);

Как проверить работу

  1. Загрузи код в ESP32.
  2. Открой монитор порта — должен видеть RAW, Voltage, pH.
  3. Погрузи датчик в раствор с известным pH (например, уксус — pH ~3).
  4. Посмотри в базе данных — должна появиться запись.

Что дальше?

Вывод

Это базовый, но рабочий IoT-проект. Ты можешь масштабировать его: добавить несколько датчиков, SMS-уведомления, облачные сервисы (ThingSpeak, Blynk, Node-RED). Главное — правильно калибровать датчик и следить за чистотой электродов.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA