Если ты делаешь систему мониторинга воды (аквариум, гидропоника, пруд, лаборатория) — тебе нужен датчик pH. Подключив его к ESP32, ты можешь автоматически записывать показания в базу данных и отслеживать изменения в реальном времени.
Важно: pH-модуль работает от 3.3V, так что подключаем напрямую к ESP32.
ESP32 → pH-модуль 3.3V → VCC GND → GND GPIO34 → PO (аналоговый выход)
❗️ Если у тебя "висит" 4095 — значит, либо датчик не подключен, либо не настроен. Проверь:
Скопируй этот код в 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();
}
Создай файл 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();
?>
Создай таблицу в базе данных:
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
);
Это базовый, но рабочий IoT-проект. Ты можешь масштабировать его: добавить несколько датчиков, SMS-уведомления, облачные сервисы (ThingSpeak, Blynk, Node-RED). Главное — правильно калибровать датчик и следить за чистотой электродов.
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!