ArduinoMEGA-Řízení akvária

Arduino řízení akvária Projekt na pokračování

🐠 Projekt: inteligentní řízení akvária

Navrhl bych ho modulárně:

1               ┌──────────────────────┐
2               │ Arduino Mega 2560    │
3               └──────────┬───────────┘
4                          │
5    ┌─────────────┬───────┼────────┬──────────────┐
6    │             │       │        │              │
7 Teplota         pH    Hladina  RTC hodiny     Displej
8 DS18B20       sonda     vody     DS3231       TFT/LCD
9    │             │       │
10   └─────────────┴───────┘
11                 │
12         ŘÍDICÍ ALGORITMUS
13                 │
14   ┌─────────────┼─────────────┐
15   │             │             │
16 Topení     Osvětlení     Ventilátory
17   │             │             │
18   ├─────────────┼─────────────┤
19   │             │             │
20 Čerpadlo      Krmení        Alarm

1. Měření teploty

Použijeme DS18B20. Samotný čip používá sběrnici 1-Wire, umožňuje připojit více senzorů na jedinou sběrnici a má přesnost ±0,5 °C v rozsahu -10 až +85 °C. Použil bych klidně dva senzory:

  • T1: teplota akvária
  • T2: kontrolní teplota, například filtrace nebo krytu

Software by mohl porovnávat oba údaje a odhalit vadný senzor.


2. Automatické topení

Arduino nebude topné těleso napájet přímo. Bude pouze ovládat vhodný oddělený výkonový prvek. Třeba pomocí modulu s relé.

1    Teplota < 24,5 °C
2          │
3          ▼
4    zapnout topení
5          │
6          ▼
7   Teplota >= 25,0 °C
8          │
9          ▼
10   vypnout topení

Tím vznikne hystereze, takže topení nebude neustále spínat kolem jedné teploty. A hlavně bych sem přidal bezpečnost. Pokud čidlo začne vracet nesmyslnou hodnotu nebo přestane komunikovat, výchozí stav topení musí být VYPNUTO.

U akvária bych Arduino také nenechal jako jedinou ochranu před přehřátím. Samostatná hardwarová tepelná ochrana je rozumná pojistka.


3. 🌅 Simulace východu a západu slunce

Tahle část může projekt výrazně zatraktivnit.

LED osvětlení bych rozdělil například na:

  • bílý kanál,
  • teplou bílou,
  • modrou,
  • případně RGB.

Arduino potom nebude světlo jen zapínat a vypínat.

1    06:30     07:00            19:30      20:00
2      │         │                │          │
3      └─ VÝCHOD ─── DEN ─────────┴─ ZÁPAD ──┘
4       0 → 100 %                   100 → 0 %

Čas bude držel RTC modul DS3231, takže po restartu Arduina nedojde ke ztrátě denního režimu. Můžeme dokonce vytvořit několik světelných profilů:

NORMAL

1 ráno → den → večer → noc

CLOUD dočasné snížení výkonu LED

MOON slabé noční osvětlení

SERVICE 100% osvětlení při údržbě akvária.


4. 💧 Hlídání hladiny

Použil bych minimálně dva nezávislé body:

1   MAX ───────●──────── nouzová horní hladina
2 
3            voda
4 
5   MIN ───────●──────── dopustit vodu

Tady už může vzniknout automatické dopouštění odparu.

Je ale důležité oddělit měření od bezpečnosti. Dopouštění bych nikdy neudělal stylem:

  • senzor hlásí málo vody → čerpadlo běží libovolně dlouho.

Software musí mít maximální povolenou dobu dopouštění. Pokud se hladina v daném čase nezmění, systém dopouštění zastaví a vyhlásí alarm.

5. 🧪 Měření pH

pH sonda však není obyčejné analogové čidlo, které bych jednoduše připojil na A0. Signál elektrody je velmi slabý a snadno se ruší. Výrobce profesionálních sond Atlas Scientific přímo upozorňuje, že sonda může zachytávat elektrické napětí přenášené vodou a v takové situaci je nutné správné elektrické oddělení.

Pro trvale instalované akvárium bych tedy použil hotové měřicí rozhraní s galvanickým oddělením.

Akvárium je právě prostředí plné potenciálních zdrojů rušení:

  • LED zdroje,
  • čerpadla,
  • topení,
  • spínané zdroje.

6. 🍽️ Automatické krmítko

1        RTC
2         │
3         ▼
4       18:00
5         │
6         ▼
7       servo
8         │
9         ▼
10 otočení zásobníku
11        │
12        ▼
13   jedna dávka

Na displeji může být:

  • Poslední krmení: 18:00 a tlačítko:
  • KRMENÍ RUČNĚ

Software by měl zabránit například dvojímu automatickému krmení po restartu systému.


7. 📺 Barevný displej

Tady bych šel rovnou do pěkného TFT.

Hlavní obrazovka může vypadat třeba takto:

1   ┌─────────────────────────────────┐
2   │       AQUARIUM CONTROL          │
3   ├─────────────────────────────────┤
4   │                                 │
5   │       Teplota - 24,8 °C         │
6   │            pH - 7,12            │
7   │       Hladina - OK              │
8   │                                 │
9   │        Topení - OFF             │
10  │      Filtrace - ON              │
11  │     Osvětlení - 72 %            │
12  │                                 │
13  ├─────────────────────────────────┤
14  │  SVĚTLO   KRMENÍ   GRAF   MENU  │
15  └─────────────────────────────────┘

Další obrazovka by mohla zobrazovat graf:

1   26 °C │
2         │        ╭────╮
3   25 °C │    ╭───╯    ╰────╮
4         │ ╭──╯             ╰───
5   24 °C ├────────────────────────
6         00    06    12    18    24

Tím se z projektu stane skutečný řídicí panel akvária, ne jen Arduino s několika relé.


  1. 🚨 Alarmy

Události bych rozdělil minimálně na:

🟢 INFO Krmení provedeno

🟡 WARNING Nízká hladina vody

🔴 ALARM Přehřátí, chyba teplotního senzoru, příliš dlouhé dopouštění

Při kritické chybě může systém:

  • vypnout topení,
  • vypnout automatické dopouštění,
  • zapnout alarm,
  • zobrazit červenou výstrahu na displeji,
  • uložit událost do paměti.

  1. Celkově bych projekt rozdělil na moduly
    1  AKVARIUM CONTROLLER
    2  │
    3  ├── 01 Temperature
    4  │    ├── DS18B20 #1
    5  │    ├── DS18B20 #2
    6  │    └── Heater control
    7  │
    8  ├── 02 Lighting
    9  │    ├── PWM LED
    10 │    ├── Sunrise
    11 │    ├── Sunset
    12 │    └── Moonlight
    13 │
    14 ├── 03 Water
    15 │    ├── LOW sensor
    16 │    ├── HIGH sensor
    17 │    └── Automatic refill
    18 │
    19 ├── 04 Chemistry
    20 │    └── pH
    21 │
    22 ├── 05 Feeding
    23 │    └── Servo feeder
    24 │
    25 ├── 06 Interface
    26 │    ├── TFT
    27 │    ├── Buttons / touch
    28 │    └── Buzzer
    29 │
    30 ├── 07 Data
    31 │    ├── RTC
    32 │    ├── EEPROM
    33 │    └── SD card
    34 │
    35 └── 08 Safety
    36      ├── Sensor diagnostics
    37      ├── Maximum run times
    38      ├── Alarm handling
    39      └── Watchdog

    A právě Mega tady začíná dávat smysl

Arduino Mega 2560 má 256 KB Flash, 8 KB SRAM a 4 KB EEPROM, takže pro podobnou konstrukci poskytuje podstatně příjemnější prostor než Uno. Čtyři hardwarové UARTy jsou navíc velmi praktické při přidávání dalších komunikačních modulů.


Ideální finální verze

Arduino Mega + 2× DS18B20 + RTC DS3231 + TFT + pH + snímače hladiny + PWM LED + krmítko + SD karta + alarm + oddělené výkonové výstupy.

Projekt můžeme postupně rozšiřovat Nejprve teploměr → regulátor topení → hodiny → osvětlení → hladina → displej → pH → krmítko → logování → finální rozvaděč.