Moje Raspberry Pi - plugin OSPy vlhkost půdy a možství vody v nádrži

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ů

Seznam součástek - měření hladiny vody  (OSPy)    
         
Označení Hodnota Prodejce Cena ks Celkem
 R1 10K https://www.tme.eu/cz/details/m0.4w-10k/metalizovane-rezistory-tht-0-4w/royal-ohm/mff04ff1002a5/ 0,6 Kč 0,6 Kč
 R2,R3 4K7  http://www.tme.eu/cz/details/mf0204fte52-4k7/metalizovane-rezistory-tht-04w/yageo/mf0204fte52-4k7l/ 0,4 Kč 1,2 Kč
 R4 220  http://www.tme.eu/cz/details/m0.4w-220r/metalizovane-rezistory-tht-04w/royal-ohm/mff04ff2200a5/ 0,6 Kč 0,6 Kč
 LED1 LED 3 mm  http://www.tme.eu/cz/details/l-934hd/led-diody-tht-3mm/kingbright-electronic/ 4,2 Kč 4,2 Kč
 C1,C2 22 pF  http://www.tme.eu/cz/details/cc-22/keramicke-kondenzatory-tht-50v/sr-passives/ 0,3 Kč 0,6 Kč
 Q1 16 MHz  http://www.tme.eu/cz/details/16.00m-hc49-s/krystalove-rezonatory-tht/yic/ 15,0 Kč 15,0 Kč
 IC1 ATMEGA328  http://www.tme.eu/cz/details/atmega328-pu/mikroprocesory-atmel-avr-tht/microchip-atmel/ 52,0 Kč 52,0 Kč
 IC1 DIL28  http://www.tme.eu/cz/details/gold-28p-w/presne-patice/connfly/ds1001-01-28bt1nsf6s/ 23,4 Kč 23,4 Kč
 I2C 4ks 4 pin samec  http://www.tme.eu/cz/details/280371-1/signalove-konektory-raster-254mm/te-connectivity/ 25,7 Kč 103,0 Kč
         
Celkem cca 200,6 Kč

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)

ping

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)

cidlo

 

Schéma zapojení desky pluginu pro měření hladiny ultrazvukem (slave 0x04 s ATmega 328)

schemaping

Deska spojů pluginu pro měření hladiny ultrazvukem

deska

DSC 0008

DSC 0009

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).

schema

Deska spojů

deska

spoje

IMG 20160125 101154

IMG 20160128 130237

IMG 20160128 130245

IMG 20160128 130848

DSC 0001

 20160129 185039

 20160129 185106

 

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.

system

Po otevření pluginu "Water tank and humidity monitor" vydíme toto okno (pracovní verze 25.2.2016)

plug2

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...

DSC 0068

tank vysvetleni

DSC 0069

Deska s adresou 0x04 pro měření hladiny

DSC 0071

DSC 0070

DSC 0072

KOMPLET SESTAVA - pro domácí zalévání rostlin (asi ne úplně každý má na kytky toto běžně doma :-D )

DSC 0010

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.
Attachments:
Download this file (i2c_board.zip)FW 1.0, 1.2, 1.3[ ]1509 kB99 Downloads2020-08-31 07:34