🎯 Cel projektu:
Stworzysz system do pomiaru czasu działania narzędzi, np. szlifierki, lutownicy, odkurzacza czy kompresora. Będzie on:
- mierzyć czas faktycznej pracy,
- zliczać liczbę cykli,
- zapisywać dane lokalnie lub w chmurze.
Dzięki temu możesz sprawdzić swoją efektywność, porównać dni pracy, a nawet zaplanować serwis sprzętu.
🧰 Poziom trudności:
🔧 Początkujący – Średni
⏱️ Czas wykonania:
1,5–2,5 godziny
🛠️ Lista komponentów:
Komponent | Opis | Koszt |
---|---|---|
ESP32 | Mikrokontroler z Wi-Fi | 20–30 zł |
Przekaźnik lub czujnik prądu (np. ACS712) | Wykrywa, czy narzędzie działa | 10–20 zł |
Wyświetlacz OLED (I2C) | Pokazuje czas pracy | 10–15 zł |
microSD (opcjonalnie) | Rejestruje dane lokalnie | 10 zł |
Zasilacz 5V / Powerbank | Zasilanie ESP32 | 10 zł |
📷 Schemat połączeń:
Wariant 1: z przekaźnikiem (ON/OFF)
- Wejście IN przekaźnika do GPIO 14
- Wyjście przekaźnika do zasilania narzędzia
- Zliczasz, kiedy przekaźnik jest aktywny
Wariant 2: z czujnikiem prądu ACS712
- Czujnik mierzy natężenie w przewodzie zasilającym narzędzie
- AOUT → GPIO 36
Wyświetlacz OLED
- SDA → GPIO 21
- SCL → GPIO 22
- VCC i GND jak zwykle
⏱️ Krok 1: Mierzenie aktywności narzędzia
Wariant uproszczony – wykrywanie działania:
cppKopiujEdytujint narzedziePin = 14;
bool pracuje = false;
unsigned long start, czas;
void setup() {
pinMode(narzedziePin, INPUT);
Serial.begin(115200);
}
void loop() {
if (digitalRead(narzedziePin) == HIGH && !pracuje) {
start = millis();
pracuje = true;
}
if (digitalRead(narzedziePin) == LOW && pracuje) {
czas = millis() - start;
Serial.print("Czas pracy: ");
Serial.println(czas / 1000);
pracuje = false;
}
delay(200);
}
🧠 Krok 2: Zliczanie sesji + AI (opcjonalnie)
Dodaj:
- licznik cykli dziennych,
- klasyfikację AI: „krótkie użycie”, „ciągła praca”, „nietypowe zachowanie”.
Trenuj model np. w Edge Impulse na podstawie długości sesji.
📟 Krok 3: Wyświetlanie na OLED
cppKopiujEdytujdisplay.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.print("Czas pracy:");
display.setCursor(0, 20);
display.print(czas / 1000);
display.display();
💾 Krok 4: Zapisywanie na kartę SD / chmurę
Zapis lokalny:
cppKopiujEdytujFile log = SD_MMC.open("/czas_pracy.csv", FILE_APPEND);
log.println(String(millis()) + "," + String(czas / 1000));
log.close();
Wysłanie online (np. do Google Sheets przez IFTTT):
cppKopiujEdytujhttp.begin("https://maker.ifttt.com/trigger/czas_pracy/with/key/TWÓJ_KLUCZ");
http.GET();
🔄 Krok 5: Reset dzienny i statystyki
- Raz dziennie licznik się zeruje (np. przez zegar RTC lub synchronizację NTP)
- Możesz zbudować dashboard z wykresami
✅ Efekt końcowy:
- ESP32 monitoruje, ile czasu używasz narzędzi
- Możesz śledzić efektywność dnia
- Zobaczysz czarno na białym, kiedy naprawdę działasz
- Można dodać AI do klasyfikacji pracy i awarii
📘 To genialny projekt dla tych, którzy chcą pracować mądrzej, nie więcej. Świetnie sprawdza się w warsztacie, drukarni, przy CNC, a nawet przy hobbystycznych projektach.