Pro automat zalévání OSPy (zahrady), který zároveň používám na zalévání domácích rostlin jsem dodělal plugin pro měření množství vody v nádrži a vlhkosti půdy. Měření množství vody se provádí pomocí ultrazvukového čidla umístěného v nádrži ve víku (princip odrazu zvuku od hladiny) a zpracování pomocí ATmega 328 jako jeden obvod (jedna deska). Měření vlhkosti využívá tyto snímače (výstupem v závislosti na vlhkosti je frekvence) připojené na multiplexer 74HC151, který z 8 vstupů vytvoří jeden výstup, který je následně měřen pomocí ATmega 328 jako druhý obvod (druhá deska).
ZDARMA
- zdroj pro Arduino IDE,
DONATE
- desky spojů a gerber (Eagle)
FW pro ultrazvuk (Atmega 328)
Aktuální FW je 1.3
- změna 1.2 na 1.3 přidán zpět wdt reset, vlastní I2C knihovna (odolná proti zamrzání), LED bliká dokud se nenaplní průměrování, potom LED svítí
- změna 1.1 na 1.2 přidaná podpora pro parallax čidlo (má trig a echo na jednom vodiči), zrušeno: pokud nepřijde požadavek z I2C udělá se reset
- změna 1.0 na 1.1 I2C požadavek wdt na 30sec (pokud nepřijde pozadavek z I2C udělá se reset), pokud vše běží jak má, tak led bliká (po 50ms) tj. rychle, jinak svítí
Aktualizace 1.8.2019:
Plugin pro ultrazvuk umožňuje použít i čidlo JSN-SR04T-2.0.
Toto čidlo se dá sehnat okolo 50,- na Aliexpresu a umožní měřit hladinu vody až do 6 metrů. Čidlo je vodotěsné. Aktuálně plugin používám pro měření hladiny vody ve studni.
Schéma zapojení a deska spojů
V případě, že deska nefunguje (z desky ultrazvuku nic neleze ping =0) svítí zelená LED, pokud vše pracuje jak má LED bliká. Program očekává do 30 vteřin příkaz z OSPy po I2C na odeslání hodnoty do OSPy. Pokud příkaz nedojde - deska "Ping" se restartuje a opět se čeká 30 vteřin. Toto zabraňuje zamrznutí I2C sběrnice na straně ATMEGA328. Program má v sobě zahrnut i Watchdog pro hlídání chodu kódu.
V případě, že ze snímače "neleze" to pravé, nebojíme se pootočit trimrem (laditlná cívka) do doby, než se hodnoty ustálý a vše měří jak má. Z procesoru je na Tx pinu vyveden debug: ping=cm a hodnota po 30 průměrování hodnoty vzdálenosti.
Montáž snímače do studny... (měření teploty pomocí DS18B20 a hladiny pomocí ultrazvuku)
Aktualizace 30.7.2016:
Plugin pro ultrazvuk umožňuje použít i čidlo HC-SR04 namísto čidla Parallax - pozor deska nemá vyvedeny vývody trig a echo pro tuto úpravu (musí se napojit dráty přímo na vývody D2 a D3 procesoru!)
Aktualizace 25.2.2016:
Plugin je rozdělen na 2 oddělené obvody (jeden pro měření hladiny na adrese 0x04 a druhý pro měření vlhkosti na adrese 0x05 tj. 2x procesor) pro každý procesor je potřeba nahrát jiný program.
Hladina procesor na adrese 0x04
Procesor ATmega je připojen jako slave obvod na sběrnici I2C s adresou 0x04. Po oslovení master obvodem odešle slave zařízení (deska s procesorem ATmega328) zpět do masteru 2 byte následovně:
byte: 0, 1
0,1 = vzdálenost ultrazvuk
Příklad pro ultrazvuk:
byte 0= počet nad 255
byte 1= číslo od 0 do 255
ping = 300 bude byte 0=1, byte 1=45 (1*255+45 tedy 300), ping = 10 bude byte 0=0, byte 1 = 10 (0*255+10 tedy 10)
přijímací strana Python cm = data[1] + data[0]*255. Výsledná vzdálenost je v cm od snímače k hladině.
Vlhkost procesor na adrese 0x05
Procesor ATmega je připojen jako slave obvod na sběrnici I2C s adresou 0x05. Po oslovení master obvodem odešle slave zařízení (deska s procesorem ATmega328) zpět do masteru 24 byte následovně:
frekvence:
byte 0= posun 16
byte 1= posun 8
byte 2= 0-255
freq1 = byte[2] + (byte[1]<<8) + byte[0]<<16)
výsledná frekvence je v Hz funguje 0 - 2 000 000 Hz (víc jsem nezkoušel)
Ultrazvukový snímač pro měření vody v nádrži - Parallax (https://www.parallax.com/product/28015)
Rozsah měření 2cm až 3 metry. 3 vodiče pro připojení (+5V,0V,rxtx)
Kapacitní snímač vhlkosti (http://pihrt.com/elektronika/336-prevodnik-kapacita-frekvence)
Rozsah měření cca 100-500 KHz. 3 vodiče pro připojení (+5V,0V,frekvence)
Schéma zapojení desky pluginu pro měření hladiny ultrazvukem (slave 0x04 s ATmega 328)
Deska spojů pluginu pro měření hladiny ultrazvukem
Schéma zapojení první verze desky pluginu (slave 0x04, nebo 0x05 s ATmega 328) - dle programu ji lze použít pro měření frekvence, nebo hladiny (pro měření obojího současně potřebujeme tyto desky dvě, nebo jednu tuto desku a jednu desku pro ping).
Deska spojů
Desky pluginu jsou zapojeny přes I2C konektor do desky zalévače (+5V,SDA,SCL,0V) ze kterého jsou i napájeny.
Po připojení otevřeme prohlížeč, zadáme adresu zalévače a otevřeme plugin "system information" kde se zobrazí výpis I2C zařízení. Pokud se nám zobrazí adresa 0x04 je komunikace a deska pluginu pro měření hladiny OK. Deska měření vlhkosti má adresu 0x05.
Po otevření pluginu "Water tank and humidity monitor" vydíme toto okno (pracovní verze 25.2.2016)
Foto z osazení ultrazvukového čidla na nádrži z vodou, deska I2C pro plugin OSPy a pohled na starší verzy HW OSPy s připojením LCD...
Deska s adresou 0x04 pro měření hladiny
KOMPLET SESTAVA - pro domácí zalévání rostlin (asi ne úplně každý má na kytky toto běžně doma :-D )
Možnosti pluginu:
- měření hladiny vody v nárži ultrazvukem -> pokud je málo vody než je nastaveno tak plugin pošle email s informací, zablokuje scheduler a nastaví režim STOP zalévání
- měření vlhkosti půdy (stanice 1 - 8) na principu měření frekvence z čidel vlhkosti (čidla převádí změnu vhlkosti na změnu frekvence, která se dále zpracovává) a dle toho se upravuje čas potřebný pro sepnutí daného výstupu (stanice) dle klíče: 0% vlhkosti je 100% času programu, 100% vlhkosti je 0% času programu dané stanice.