Grok AI
1. Celkový koncept systému
Princip měření: Použiješ hydrostatický tlakový senzor připojený k trubce (jak jsi popsal). Se zvyšující se hladinou roste tlak na senzoru. To je spolehlivá metoda pro uzavřené nádrže, protože není ovlivněna pěnou nebo nečistotami na povrchu (na rozdíl od ultrazvukových senzorů). Pro maximální spolehlivost zvol senzor s výstupem 4-20 mA (odolný proti šumu) a přidej filtraci signálu v kódu.
Komunikace: ESP32-S3 s vestavěným WiFi pro odesílání dat do databáze (např. přes MQTT nebo HTTP POST).
Zobrazení: Na nádrži level indikátor (displej) ukazující aktuální hladinu + graf za poslední týden. Data ulož lokálně na ESP (v RTC paměti nebo SD kartě) pro zpětné zobrazení.
Automatizace: ESP může řídit relé pro pumpy/ventily na základě hladiny (např. zapnout čištění při nízké hladině).
Napájení: Trafo (transformer) pro AC-DC konverzi na 5V/3.3V, s ochranou proti přepětí.
Cena: Celkově pod 1000 Kč na prototyp (ESP ~200 Kč, senzor ~300 Kč, displej ~150 Kč, trafo ~200 Kč).
Spolehlivost: Použij watchdog timer v kódu, redundantní měření (průměr z více čtení), a krytí proti vlhkosti (IP67 box).
Systém bude monitorovat retenční a čistící nádrže, odesílat data do DB pro app, a lokálně zobrazovat historii.
2. Doporučené hardware komponenty
Na základě podobných projektů:
Mikrokontroler: ESP32-S3-DevKitC-1 (např. od LilyGO nebo Espressif, ~200-300 Kč). Má WiFi, Bluetooth, dostatek GPIO a je robustní pro IoT.
Tlakový senzor:
MPX5010DP (analogový, 0-10 kPa, ~300 Kč) – připoj přes ADC pin ESP. Pro hlubší nádrže zvol verzi s vyšším rozsahem (např. 0-100 kPa).
Alternativa: 4-20mA senzor jako z AliExpress (např. "submersible pressure sensor"), převeď signál přes rezistor na napětí pro ADC. Pro spolehlivost kalibruj podle hustoty kapaliny.
Displej pro level indikátor:
SSD1306 OLED 0.96" (128x64 pixelů, I2C, ~150 Kč) – nízká spotřeba, můžeš na něm kreslit graf hladiny za týden (např. 168 bodů pro hodinové průměry). Pro delší životnost e-ink displej (např. Waveshare 2.13", ~400 Kč), ale dražší.
Napájení:
Transformer 230V AC na 9-12V AC (~200 Kč), pak rectifier (diody) + kondenzátor + DC-DC converter (např. LM2596 na 5V) pro ESP. Alternativa: Hotový modul HLK-PM03 (AC-DC 3.3V, ~100 Kč) – kompaktní a bezpečný. Přidej fuse a varistor pro ochranu.
Další: Relé modul pro automatizaci (~100 Kč), SD karta pro lokální logování dat (~50 Kč), krytí (plastový box ~100 Kč).
Kup na AliExpress, Banggood nebo českých e-shopech jako SOS electronic.
3. Software a programování
Firmware na ESP: Použij Arduino IDE (jednoduché) nebo MicroPython (rychlejší prototypování). Čti senzor každých 5-10 min, vypočítej hladinu (hladina = tlak / (hustota * g)), ulož lokálně pro týdenní historii, odesílej přes WiFi.
Databáze:
Lokálně: Použij Home Assistant (na Raspberry Pi) pro snadnou integraci a grafy. ESP pošle data přes MQTT.
Cloud: Arduino IoT Cloud nebo Blynk (zdarma pro malé projekty), nebo vlastní MySQL na serveru. Pro app: Flutter nebo React Native, kde načteš data z DB.
Automatizace: V kódu if-else pro řízení relé (např. if hladina < 20% zapni pumpu).
Zobrazení historie: Na displeji použij knihovnu U8g2 pro kreslení grafu z pole dat (např. 7 dní * 24 hod = 168 hodnot, průměruj).
Příklad kódu (Arduino pro ESP32):
Tady je základní sketch pro čtení senzoru, zobrazení na OLED a odeslání dat přes WiFi (předpokládám HTTP POST do tvé DB). Uprav podle svého senzoru (předpokládám analogový na pin 34). Instaluj knihovny: WiFi, HTTPClient, Adafruit_SSD1306.
Kód: Vybrat vše
#include <WiFi.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const char* ssid = "TvojeWiFi";
const char* password = "Heslo";
const char* serverUrl = "http://tvoje-db-server.com/post-data"; // Nahraď svou DB endpoint
// Senzor pin a kalibrace
const int sensorPin = 34; // ADC pin
float zeroPressure = 0.5; // Napětí při 0 hladině (kalibruj)
float maxPressure = 4.5; // Napětí při max hladině
float maxHeight = 2.0; // Max výška nádrže v metrech
// Historie: pole pro 168 hodnot (7 dní po hodině)
float history[168];
int historyIndex = 0;
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C adresa
display.clearDisplay();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Připojuji k WiFi...");
}
Serial.println("Připojeno!");
}
void loop() {
// Čtení senzoru (průměr z 10 měření pro spolehlivost)
float sum = 0;
for (int i = 0; i < 10; i++) {
sum += analogRead(sensorPin) * (3.3 / 4095.0); // ESP32 ADC 12-bit
delay(10);
}
float voltage = sum / 10;
// Výpočet hladiny
float pressure = (voltage - zeroPressure) / (maxPressure - zeroPressure);
float height = pressure * maxHeight; // Přizpůsob podle hustoty a g
// Uložení do historie (každou hodinu - uprav timing)
if (millis() % 3600000 == 0) { // Každou hodinu
history[historyIndex] = height;
historyIndex = (historyIndex + 1) % 168;
}
// Zobrazení na displeji
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Hladina: ");
display.print(height, 1);
display.println(" m");
// Kreslení grafu historie
for (int i = 0; i < 128; i++) {
int idx = (historyIndex + i) % 168; // Mapuj na šířku displeje
int y = map(history[idx], 0, maxHeight, 63, 32); // Dolní část displeje
display.drawPixel(i, y, SSD1306_WHITE);
}
display.display();
// Odeslání dat do DB
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverUrl);
http.addHeader("Content-Type", "application/json");
String payload = "{\"height\":" + String(height) + ", \"timestamp\":" + String(millis()) + "}";
int httpCode = http.POST(payload);
if (httpCode > 0) {
Serial.println("Data odeslána: " + http.getString());
}
http.end();
}
delay(60000); // Měř každou minutu
}
Tento kód je základ – přidej watchdog (ESP.wdtEnable()), error handling a kalibraci. Pro testování ho nahraj přes Arduino IDE.
4. Další tipy a rizika
Testování: Začni s prototypem na breadboardu, pak PCB pro robustnost.
Bezpečnost: V nádržích s vodou zajisti izolaci, aby nedošlo k úrazu proudem.
Cena optimalizace: Kup v bulk z Číny, vynech zbytečnosti.
Alternativy: Pokud tlakový senzor selže, zvaž ultrasonic (JSN-SR04T) pro snadnější instalaci.